You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by xu...@apache.org on 2011/01/13 06:58:15 UTC

svn commit: r1058412 - in /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config: DeploymentLoader.java DeploymentsResolver.java

Author: xuhaihong
Date: Thu Jan 13 05:58:15 2011
New Revision: 1058412

URL: http://svn.apache.org/viewvc?rev=1058412&view=rev
Log:
OPENEJB-1231 Webapp context.xml setting allows app to be ignored entirely by OpenEJB (Patch from Shawn Jiang)

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1058412&r1=1058411&r2=1058412&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Thu Jan 13 05:58:15 2011
@@ -611,9 +611,11 @@ public class DeploymentLoader implements
         ClassLoader webClassLoader = webModule.getClassLoader();
 
         // get include/exclude properties from context-param
-        Options contextParams = new Options(getContextParams(webModule.getWebApp().getContextParam()));
+        List<ParamValue> webAppContextParam = webModule.getWebApp() != null ? webModule.getWebApp().getContextParam() : Collections.<ParamValue> emptyList();
+        Options contextParams = new Options(getContextParams(webAppContextParam));
+
         String include = contextParams.get(CLASSPATH_INCLUDE, "");
-        String exclude = contextParams.get(CLASSPATH_EXCLUDE, ".*");
+        String exclude = contextParams.get(CLASSPATH_EXCLUDE, "");
         Set<RequireDescriptors> requireDescriptors = contextParams.getAll(CLASSPATH_REQUIRE_DESCRIPTOR, RequireDescriptors.CLIENT);
         boolean filterDescriptors = contextParams.get(CLASSPATH_FILTER_DESCRIPTORS, false);
         boolean filterSystemApps = contextParams.get(CLASSPATH_FILTER_SYSTEMAPPS, true);
@@ -654,6 +656,12 @@ public class DeploymentLoader implements
                 if (EjbModule.class.isAssignableFrom(moduleType) && loadingRequiredModuleTypes.contains(EjbModule.class)) {
                     logger.info("Found ejb module " + moduleType.getSimpleName() + " in war " + contextRoot);
 
+                    if (url.getProtocol().equals("file") && url.toString().endsWith("WEB-INF/classes/")) {
+                        //EJB found in /WEB-INF/classes, define the war as EJB module
+                        absolutePath = warPath;
+                        url = warUrl;
+                    }
+
                     EjbModule ejbModule = createEjbModule(url, absolutePath, webClassLoader, getModuleName());
                     appModule.getEjbModules().add(ejbModule);
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?rev=1058412&r1=1058411&r2=1058412&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java Thu Jan 13 05:58:15 2011
@@ -96,8 +96,8 @@ public class DeploymentsResolver impleme
             }
             return;
         }
-        
-        File raXml = new File(dir, "META-INF" + File.separator + "ra.xml"); 
+
+        File raXml = new File(dir, "META-INF" + File.separator + "ra.xml");
         if (raXml.exists()) {
             try {
                 if (!jarList.contains(dir.getAbsolutePath())) {
@@ -106,7 +106,7 @@ public class DeploymentsResolver impleme
             } catch (MalformedURLException ignore) {
             }
             return;
-        } 
+        }
 
         ////////////////////////////////
         //
@@ -222,7 +222,7 @@ public class DeploymentsResolver impleme
             } else if (size < 20) {
                 logger.debug("Inspecting classpath for applications: " + urls.size() + " urls.");
             } else {
-                // Has the user allowed some module types to be discoverable via scraping?                                                                  
+                // Has the user allowed some module types to be discoverable via scraping?
                 boolean willScrape = requireDescriptors.size() < RequireDescriptors.values().length;
 
                 if (size < 50 && willScrape) {
@@ -290,7 +290,7 @@ public class DeploymentsResolver impleme
      * The regular expressions involved in filtering can be costly
      * In the normal case we will not scan anyway, so if not
      * no point in optimizing the list of urls in the classpath
-     * 
+     *
      * @param include
      * @param exclude
      * @param requireDescriptors
@@ -380,24 +380,30 @@ public class DeploymentsResolver impleme
 
     private static void processUrls(List<URL> urls, ClassLoader classLoader, Set<RequireDescriptors> requireDescriptors, FileUtils base, List<URL> jarList) {
         for (URL url : urls) {
+
+            String urlProtocol = url.getProtocol();
+            //Currently, we only support jar and file protocol
+            boolean isValidURL = urlProtocol.equals("jar") || urlProtocol.equals("file");
+            if (!isValidURL) {
+                logger.warning("Unknown protocol " + urlProtocol);
+                continue;
+            }
+
             Deployments deployment;
-            String path;
+            String path = "";
             try {
                 Class<? extends DeploymentModule> moduleType = new DeploymentLoader().discoverModuleType(url, classLoader, requireDescriptors);
                 if (AppModule.class.isAssignableFrom(moduleType) || EjbModule.class.isAssignableFrom(moduleType) || PersistenceModule.class.isAssignableFrom(moduleType) || ConnectorModule.class.isAssignableFrom(moduleType) || ClientModule.class.isAssignableFrom(moduleType)) {
                     deployment = JaxbOpenejb.createDeployments();
-                    if (url.getProtocol().equals("jar")) {
+                    if (urlProtocol.equals("jar")) {
                         url = new URL(url.getFile().replaceFirst("!.*$", ""));
                         File file = toFile(url);
                         path = file.getAbsolutePath();
                         deployment.setJar(path);
-                    } else if (url.getProtocol().equals("file")) {
+                    } else if (urlProtocol.equals("file")) {
                         File file = toFile(url);
                         path = file.getAbsolutePath();
                         deployment.setDir(path);
-                    } else {
-                        logger.warning("Not loading " + moduleType.getSimpleName() + ".  Unknown protocol " + url.getProtocol());
-                        continue;
                     }
                     logger.info("Found " + moduleType.getSimpleName() + " in classpath: " + path);