geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ga...@apache.org
Subject svn commit: r580112 [2/2] - in /geronimo/server/trunk: assemblies/geronimo-jetty6-javaee5/ assemblies/geronimo-jetty6-javaee5/src/main/resources/var/config/ assemblies/geronimo-tomcat6-javaee5/ assemblies/geronimo-tomcat6-javaee5/src/main/resources/var...
Date Thu, 27 Sep 2007 17:35:20 GMT
Added: geronimo/server/trunk/modules/geronimo-cxf-ejb-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFEJBBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-cxf-ejb-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFEJBBuilder.java?rev=580112&view=auto
==============================================================================
--- geronimo/server/trunk/modules/geronimo-cxf-ejb-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFEJBBuilder.java
(added)
+++ geronimo/server/trunk/modules/geronimo-cxf-ejb-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFEJBBuilder.java
Thu Sep 27 10:35:15 2007
@@ -0,0 +1,53 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.cxf.builder;
+
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.jaxws.builder.EJBWebServiceFinder;
+import org.apache.geronimo.kernel.repository.Environment;
+
+public class CXFEJBBuilder extends CXFBuilder {
+
+    public CXFEJBBuilder() {
+        super(null);
+    }
+
+    public CXFEJBBuilder(Environment defaultEnvironment) {
+        super(defaultEnvironment);
+        this.webServiceFinder = new EJBWebServiceFinder();
+    }
+  
+    public static final GBeanInfo GBEAN_INFO;
+
+    static {
+        GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(CXFEJBBuilder.class,
NameFactory.MODULE_BUILDER);
+        infoBuilder.addInterface(WebServiceBuilder.class);
+        infoBuilder.addAttribute("defaultEnvironment", Environment.class, true, true);
+
+        infoBuilder.setConstructor(new String[]{"defaultEnvironment"});
+
+        GBEAN_INFO = infoBuilder.getBeanInfo();
+    }
+
+    public static GBeanInfo getGBeanInfo() {
+        return GBEAN_INFO;
+    }
+
+}

Propchange: geronimo/server/trunk/modules/geronimo-cxf-ejb-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFEJBBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/modules/geronimo-cxf-ejb/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-cxf-ejb/pom.xml?rev=580112&view=auto
==============================================================================
--- geronimo/server/trunk/modules/geronimo-cxf-ejb/pom.xml (added)
+++ geronimo/server/trunk/modules/geronimo-cxf-ejb/pom.xml Thu Sep 27 10:35:15 2007
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<!-- $Rev: 565798 $ $Date: 2007-08-14 11:08:05 -0400 (Tue, 14 Aug 2007) $ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>modules</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>geronimo-cxf-ejb</artifactId>
+    <name>Geronimo :: CXF EJB</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.geronimo.modules</groupId>
+            <artifactId>geronimo-cxf</artifactId>
+            <version>${version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.modules</groupId>
+            <artifactId>geronimo-openejb</artifactId>
+            <version>${version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-interceptor_3.0_spec</artifactId>
+        </dependency>
+
+    </dependencies>
+
+</project>
+

Propchange: geronimo/server/trunk/modules/geronimo-cxf-ejb/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: geronimo/server/trunk/modules/geronimo-cxf/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-cxf/pom.xml?rev=580112&r1=580111&r2=580112&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-cxf/pom.xml (original)
+++ geronimo/server/trunk/modules/geronimo-cxf/pom.xml Thu Sep 27 10:35:15 2007
@@ -45,10 +45,9 @@
             <version>${version}</version>
         </dependency>
 
-        <!-- g-naming, g-transaction come from this -->
         <dependency>
             <groupId>org.apache.geronimo.modules</groupId>
-            <artifactId>geronimo-openejb</artifactId>
+            <artifactId>geronimo-transaction</artifactId>
             <version>${version}</version>
         </dependency>
 
@@ -67,10 +66,6 @@
             <artifactId>geronimo-annotation_1.0_spec</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-interceptor_3.0_spec</artifactId>
-        </dependency>
     </dependencies>
 
 </project>

Modified: geronimo/server/trunk/modules/geronimo-jaxws-builder/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jaxws-builder/pom.xml?rev=580112&r1=580111&r2=580112&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-jaxws-builder/pom.xml (original)
+++ geronimo/server/trunk/modules/geronimo-jaxws-builder/pom.xml Thu Sep 27 10:35:15 2007
@@ -40,10 +40,9 @@
             <version>${version}</version>
         </dependency>
 
-        <!-- g-namimg-builder comes from this -->
         <dependency>
             <groupId>org.apache.geronimo.modules</groupId>
-            <artifactId>geronimo-openejb-builder</artifactId>
+            <artifactId>geronimo-naming-builder</artifactId>
             <version>${version}</version>
         </dependency>
 

Modified: geronimo/server/trunk/modules/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java?rev=580112&r1=580111&r2=580112&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java
(original)
+++ geronimo/server/trunk/modules/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java
Thu Sep 27 10:35:15 2007
@@ -17,22 +17,12 @@
 
 package org.apache.geronimo.jaxws.builder;
 
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
-import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
-import javax.jws.WebService;
-import javax.xml.ws.WebServiceProvider;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.geronimo.common.DeploymentException;
@@ -53,24 +43,22 @@
 import org.apache.geronimo.jaxws.annotations.AnnotationHolder;
 import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
 import org.apache.geronimo.kernel.GBeanNotFoundException;
-import org.apache.geronimo.kernel.classloader.JarFileClassLoader;
 import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.geronimo.openejb.deployment.EjbModule;
-import org.apache.geronimo.xbeans.javaee.ServletMappingType;
-import org.apache.geronimo.xbeans.javaee.ServletType;
-import org.apache.geronimo.xbeans.javaee.WebAppType;
-import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
-import org.apache.xbean.finder.ClassFinder;
 
 public abstract class JAXWSServiceBuilder implements WebServiceBuilder {
     private static final Log LOG = LogFactory.getLog(JAXWSServiceBuilder.class);
 
     protected final Environment defaultEnvironment;
+    protected WebServiceFinder webServiceFinder;
 
     public JAXWSServiceBuilder(Environment defaultEnvironment) {
         this.defaultEnvironment = defaultEnvironment;
     }
 
+    protected void setWebServiceFinder(WebServiceFinder finder) {
+        this.webServiceFinder = finder;        
+    }
+    
     protected String getKey() {
         return getClass().getName();
     }
@@ -103,201 +91,12 @@
                                                       boolean isEJB,
                                                       Map correctedPortLocations)
             throws DeploymentException {
-        Map<String, PortInfo> map = new HashMap<String, PortInfo>();        
-        if (isEJB) {            
-            discoverEJBWebServices(module, correctedPortLocations, map);
-        } else {          
-            discoverPOJOWebServices(module, correctedPortLocations, map);
-        }        
-        return map;
-    }
-    
-    private void discoverPOJOWebServices(Module module,
-                                         Map correctedPortLocations,
-                                         Map<String, PortInfo> map) 
-        throws DeploymentException {
-        ClassLoader classLoader = module.getEarContext().getClassLoader();
-        WebAppType webApp = (WebAppType) module.getSpecDD();
-
-        // find web services
-        ServletType[] servletTypes = webApp.getServletArray();
-
-        if (webApp.getDomNode().getChildNodes().getLength() == 0) {
-            // web.xml not present (empty really), discover annotated
-            // classes and update DD
-            List<Class> services = discoverWebServices(module.getModuleFile(), false);
-            String contextRoot = ((WebModule) module).getContextRoot();
-            for (Class service : services) {
-                // skip interfaces and such
-                if (!JAXWSUtils.isWebService(service)) {
-                    continue;
-                }
-
-                LOG.debug("Discovered POJO Web Service: " + service.getName());
-                
-                // add new <servlet/> element
-                ServletType servlet = webApp.addNewServlet();
-                servlet.addNewServletName().setStringValue(service.getName());
-                servlet.addNewServletClass().setStringValue(service.getName());
-
-                // add new <servlet-mapping/> element
-                String location = "/" + JAXWSUtils.getServiceName(service);
-                ServletMappingType servletMapping = webApp.addNewServletMapping();
-                servletMapping.addNewServletName().setStringValue(service.getName());
-                servletMapping.addNewUrlPattern().setStringValue(location);
-
-                // map service
-                PortInfo portInfo = new PortInfo();
-                portInfo.setLocation(contextRoot + location);
-                map.put(service.getName(), portInfo);
-            }
-        } else {
-            // web.xml present, examine servlet classes and check for web
-            // services
-            for (ServletType servletType : servletTypes) {
-                String servletName = servletType.getServletName().getStringValue().trim();
-                if (servletType.isSetServletClass()) {
-                    String servletClassName = servletType.getServletClass().getStringValue().trim();
-                    try {
-                        Class servletClass = classLoader.loadClass(servletClassName);
-                        if (JAXWSUtils.isWebService(servletClass)) {
-                            LOG.debug("Found POJO Web Service: " + servletName);
-                            PortInfo portInfo = new PortInfo();
-                            map.put(servletName, portInfo);
-                        }
-                    } catch (Exception e) {
-                        throw new DeploymentException("Failed to load servlet class "
-                                                      + servletClassName, e);
-                    }
-                }
-            }
-
-            // update web service locations
-            for (Map.Entry entry : map.entrySet()) {
-                String servletName = (String) entry.getKey();
-                PortInfo portInfo = (PortInfo) entry.getValue();
-
-                String location = (String) correctedPortLocations.get(servletName);
-                if (location != null) {
-                    portInfo.setLocation(location);
-                }
-            }
-        }
-    }       
-                   
-    private void discoverEJBWebServices(Module module,
-                                        Map correctedPortLocations,
-                                        Map<String, PortInfo> map) 
-        throws DeploymentException {
-        ClassLoader classLoader = module.getEarContext().getClassLoader();
-        EjbModule ejbModule = (EjbModule) module;
-        for (EnterpriseBeanInfo bean : ejbModule.getEjbJarInfo().enterpriseBeans) {
-            if (bean.type != EnterpriseBeanInfo.STATELESS) {
-                continue;
-            }            
-            try {
-                Class ejbClass = classLoader.loadClass(bean.ejbClass);
-                if (JAXWSUtils.isWebService(ejbClass)) {
-                    LOG.debug("Found EJB Web Service: " + bean.ejbName);
-                    PortInfo portInfo = new PortInfo();
-                    String location = (String) correctedPortLocations.get(bean.ejbName);
-                    if (location == null) {
-                        // set default location, i.e. /@WebService.serviceName/@WebService.name
-                        location = "/" + JAXWSUtils.getServiceName(ejbClass) + "/" + JAXWSUtils.getName(ejbClass);
-                    }
-                    portInfo.setLocation(location);
-                    map.put(bean.ejbName, portInfo);
-                }
-            } catch (Exception e) {
-                throw new DeploymentException("Failed to load ejb class "
-                                              + bean.ejbName, e);
-            }
-        }
-    }
-    
-    /**
-     * Returns a list of any classes annotated with @WebService or
-     * @WebServiceProvider annotation.
-     */
-    private List<Class> discoverWebServices(JarFile moduleFile,
-                                            boolean isEJB)                              
                       
-            throws DeploymentException {
-        LOG.debug("Discovering web service classes");
-
-        File tmpDir = null;
-        List<URL> urlList = new ArrayList<URL>();
-        if (isEJB) {
-            File jarFile = new File(moduleFile.getName());
-            try {
-                urlList.add(jarFile.toURL());
-            } catch (MalformedURLException e) {
-                // this should not happen
-                throw new DeploymentException(e);
-            }
-        } else {
-            /*
-             * Can't get ClassLoader to load nested Jar files, so
-             * unpack the module Jar file and discover all nested Jar files
-             * within it and the classes/ directory.
-             */
-            try {
-                tmpDir = DeploymentUtil.createTempDir();
-                /*
-                 * This is needed becuase DeploymentUtil.unzipToDirectory()
-                 * always closes the passed JarFile.
-                 */
-                JarFile module = new JarFile(moduleFile.getName());
-                DeploymentUtil.unzipToDirectory(module, tmpDir);
-            } catch (IOException e) {
-                if (tmpDir != null) {
-                    DeploymentUtil.recursiveDelete(tmpDir);
-                }
-                throw new DeploymentException("Failed to expand the module archive", e);
-            }
-
-            // create URL list
-            Enumeration<JarEntry> jarEnum = moduleFile.entries();
-            while (jarEnum.hasMoreElements()) {
-                JarEntry entry = jarEnum.nextElement();
-                String name = entry.getName();
-                if (name.equals("WEB-INF/classes/")) {
-                    // ensure it is first
-                    File classesDir = new File(tmpDir, "WEB-INF/classes/");
-                    try {
-                        urlList.add(0, classesDir.toURL());
-                    } catch (MalformedURLException e) {
-                        // this should not happen, ignore
-                    }
-                } else if (name.startsWith("WEB-INF/lib/")
-                        && name.endsWith(".jar")) {
-                    File jarFile = new File(tmpDir, name);
-                    try {
-                        urlList.add(jarFile.toURL());
-                    } catch (MalformedURLException e) {
-                        // this should not happen, ignore
-                    }
-                }
-            }
+        if (this.webServiceFinder == null) {
+            throw new DeploymentException("WebServiceFinder not configured");
         }
-        
-        URL[] urls = urlList.toArray(new URL[] {});
-        JarFileClassLoader tempClassLoader = new JarFileClassLoader(null, urls, this.getClass().getClassLoader());
-        ClassFinder classFinder = new ClassFinder(tempClassLoader, urlList);
-
-        List<Class> classes = new ArrayList<Class>();
-
-        classes.addAll(classFinder.findAnnotatedClasses(WebService.class));
-        classes.addAll(classFinder.findAnnotatedClasses(WebServiceProvider.class));     
 
-
-        tempClassLoader.destroy();
-
-        if (tmpDir != null) {
-            DeploymentUtil.recursiveDelete(tmpDir);
-        }
-
-        return classes;
+        return this.webServiceFinder.discoverWebServices(module, isEJB, correctedPortLocations);
     }
-
+                               
     protected abstract Map<String, PortInfo> parseWebServiceDescriptor(InputStream
in,
                                                                        URL wsDDUrl,
                                                                        JarFile moduleFile,

Added: geronimo/server/trunk/modules/geronimo-jaxws-ejb-builder/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jaxws-ejb-builder/pom.xml?rev=580112&view=auto
==============================================================================
--- geronimo/server/trunk/modules/geronimo-jaxws-ejb-builder/pom.xml (added)
+++ geronimo/server/trunk/modules/geronimo-jaxws-ejb-builder/pom.xml Thu Sep 27 10:35:15 2007
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<!-- $Rev: 500959 $ $Date: 2007-01-29 03:07:35 -0500 (Mon, 29 Jan 2007) $ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    
+    <parent>
+        <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>modules</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>geronimo-jaxws-ejb-builder</artifactId>
+    <name>Geronimo :: JAXWS :: EJB Builder</name>
+    
+    <dependencies>
+
+        <dependency>
+            <groupId>org.apache.geronimo.modules</groupId>
+            <artifactId>geronimo-jaxws-builder</artifactId>
+            <version>${version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.modules</groupId>
+            <artifactId>geronimo-openejb-builder</artifactId>
+            <version>${version}</version>
+        </dependency>
+
+    </dependencies>
+
+</project>

Propchange: geronimo/server/trunk/modules/geronimo-jaxws-ejb-builder/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/modules/geronimo-jaxws-ejb-builder/src/main/java/org/apache/geronimo/jaxws/builder/EJBWebServiceFinder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jaxws-ejb-builder/src/main/java/org/apache/geronimo/jaxws/builder/EJBWebServiceFinder.java?rev=580112&view=auto
==============================================================================
--- geronimo/server/trunk/modules/geronimo-jaxws-ejb-builder/src/main/java/org/apache/geronimo/jaxws/builder/EJBWebServiceFinder.java
(added)
+++ geronimo/server/trunk/modules/geronimo-jaxws-ejb-builder/src/main/java/org/apache/geronimo/jaxws/builder/EJBWebServiceFinder.java
Thu Sep 27 10:35:15 2007
@@ -0,0 +1,74 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.jaxws.builder;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.j2ee.deployment.Module;
+import org.apache.geronimo.jaxws.JAXWSUtils;
+import org.apache.geronimo.jaxws.PortInfo;
+import org.apache.geronimo.openejb.deployment.EjbModule;
+import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
+
+public class EJBWebServiceFinder implements WebServiceFinder {
+
+    private static final Log LOG = LogFactory.getLog(EJBWebServiceFinder.class);
+    
+    public Map<String, PortInfo> discoverWebServices(Module module, 
+                                                     boolean isEJB,
+                                                     Map correctedPortLocations)
+            throws DeploymentException {
+        Map<String, PortInfo> map = new HashMap<String, PortInfo>();
+        discoverEJBWebServices(module, correctedPortLocations, map);
+        return map;
+    }
+
+    private void discoverEJBWebServices(Module module,
+                                        Map correctedPortLocations,
+                                        Map<String, PortInfo> map) 
+        throws DeploymentException {
+        ClassLoader classLoader = module.getEarContext().getClassLoader();
+        EjbModule ejbModule = (EjbModule) module;
+        for (EnterpriseBeanInfo bean : ejbModule.getEjbJarInfo().enterpriseBeans) {
+            if (bean.type != EnterpriseBeanInfo.STATELESS) {
+                continue;
+            }            
+            try {
+                Class ejbClass = classLoader.loadClass(bean.ejbClass);
+                if (JAXWSUtils.isWebService(ejbClass)) {
+                    LOG.debug("Found EJB Web Service: " + bean.ejbName);
+                    PortInfo portInfo = new PortInfo();
+                    String location = (String) correctedPortLocations.get(bean.ejbName);
+                    if (location == null) {
+                        // set default location, i.e. /@WebService.serviceName/@WebService.name
+                        location = "/" + JAXWSUtils.getServiceName(ejbClass) + "/" + JAXWSUtils.getName(ejbClass);
+                    }
+                    portInfo.setLocation(location);
+                    map.put(bean.ejbName, portInfo);
+                }
+            } catch (Exception e) {
+                throw new DeploymentException("Failed to load ejb class "
+                                              + bean.ejbName, e);
+            }
+        }
+    }
+}

Propchange: geronimo/server/trunk/modules/geronimo-jaxws-ejb-builder/src/main/java/org/apache/geronimo/jaxws/builder/EJBWebServiceFinder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: geronimo/server/trunk/modules/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/pom.xml?rev=580112&r1=580111&r2=580112&view=diff
==============================================================================
--- geronimo/server/trunk/modules/pom.xml (original)
+++ geronimo/server/trunk/modules/pom.xml Thu Sep 27 10:35:15 2007
@@ -103,9 +103,12 @@
         <module>geronimo-axis2</module>
         <module>geronimo-axis2-builder</module>
         <module>geronimo-cxf</module>
+        <module>geronimo-cxf-ejb</module>
         <module>geronimo-cxf-builder</module>
+        <module>geronimo-cxf-ejb-builder</module>
         <module>geronimo-jaxws</module>
         <module>geronimo-jaxws-builder</module>
+        <module>geronimo-jaxws-ejb-builder</module>
         <module>geronimo-jetty6</module>
         <module>geronimo-jetty6-builder</module>
         <module>geronimo-jetty6-clustering-builder-wadi</module>



Mime
View raw message