You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/12/19 21:55:45 UTC

svn commit: r1424103 - in /openejb/trunk/openejb/tomee: tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java

Author: rmannibucau
Date: Wed Dec 19 20:55:45 2012
New Revision: 1424103

URL: http://svn.apache.org/viewvc?rev=1424103&view=rev
Log:
TOMEE-669 TOMEE-670 TOMEE-668 custom skipped context for webservice without web associated + respecting FORCE_LOAD/SKIP var in our classtransformer + system property to skip an app + J2EEx var of tomcat

Modified:
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
    openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1424103&r1=1424102&r2=1424103&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Wed Dec 19 20:55:45 2012
@@ -168,8 +168,11 @@ public class TomcatWebAppBuilder impleme
     private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB.createChild("tomcat"), "org.apache.openejb.util.resources");
 
     private static final Digester CONTEXT_DIGESTER = createDigester();
+
+    public static final String DEFAULT_J2EE_SERVER = "Apache TomEE";
     public static final String OPENEJB_WEBAPP_MODULE_ID = "openejb.webapp.moduleId";
     public static final String TOMEE_EAT_EXCEPTION_PROP = "tomee.eat-exception";
+    public static final String TOMEE_INIT_J2EE_INFO = "tomee.init-J2EE-info";
 
     /**
      * Context information for web applications
@@ -218,6 +221,7 @@ public class TomcatWebAppBuilder impleme
     private Set<CatalinaCluster> clusters = new HashSet<CatalinaCluster>();
 
     private ClassLoader parentClassLoader;
+    private boolean initJEEInfo = true;
 
     /**
      * Creates a new web application builder
@@ -225,6 +229,7 @@ public class TomcatWebAppBuilder impleme
      */
     public TomcatWebAppBuilder() {
         SystemInstance.get().setComponent(WebAppBuilder.class, this);
+        initJEEInfo = "true".equalsIgnoreCase(SystemInstance.get().getProperty(TOMEE_INIT_J2EE_INFO, "true"));
 
         // TODO: re-write this bit, so this becomes part of the listener, and we register this with the mbean server.
 
@@ -692,6 +697,10 @@ public class TomcatWebAppBuilder impleme
         // just adding a carriage return to get logs more readable
         logger.info("-------------------------\nTomcatWebAppBuilder.init " + finalName(standardContext.getPath()));
 
+        final String name = standardContext.getName();
+
+        initJ2EEInfo(standardContext);
+
         File warFile = warPath(standardContext);
         if (!warFile.isDirectory()) {
             try {
@@ -708,7 +717,7 @@ public class TomcatWebAppBuilder impleme
         standardContext.setCrossContext(SystemInstance.get().getOptions().get(OPENEJB_CROSSCONTEXT_PROPERTY, false));
         standardContext.setNamingResources(new OpenEJBNamingResource(standardContext.getNamingResources()));
 
-        String sessionManager = SystemInstance.get().getOptions().get(OPENEJB_SESSION_MANAGER_PROPERTY + "." + standardContext.getName(), (String) null);
+        String sessionManager = SystemInstance.get().getOptions().get(OPENEJB_SESSION_MANAGER_PROPERTY + "." + name, (String) null);
         if (sessionManager == null) {
             sessionManager = SystemInstance.get().getOptions().get(OPENEJB_SESSION_MANAGER_PROPERTY, (String) null);
         }
@@ -749,7 +758,7 @@ public class TomcatWebAppBuilder impleme
 
         // force manually the namingContextListener to merge jndi in an easier way
         final NamingContextListener ncl = new NamingContextListener();
-        ncl.setName(standardContext.getName());
+        ncl.setName(name);
         standardContext.setNamingContextListener(ncl);
         standardContext.addLifecycleListener(ncl);
         standardContext.addLifecycleListener(new TomcatJavaJndiBinder());
@@ -758,6 +767,26 @@ public class TomcatWebAppBuilder impleme
         standardContext.addContainerListener(new TomEEContainerListener());
     }
 
+    public void initJ2EEInfo(final StandardContext standardContext) {
+        if (initJEEInfo) {
+            standardContext.setJ2EEServer(DEFAULT_J2EE_SERVER);
+
+            final ContextInfo contextInfo = getContextInfo(standardContext);
+            if (contextInfo == null || contextInfo.appInfo == null || contextInfo.appInfo.path == null) {
+                standardContext.setJ2EEApplication(standardContext.getName());
+            } else {
+                standardContext.setJ2EEApplication(shortName(contextInfo.appInfo.path));
+            }
+        }
+    }
+
+    private String shortName(final String path) {
+        if (path.contains("/")) {
+            return path.substring(path.lastIndexOf('/'), path.length());
+        }
+        return path;
+    }
+
     private static String finalName(final String path) {
         if (isRoot(path)) {
             return "";
@@ -1489,7 +1518,23 @@ public class TomcatWebAppBuilder impleme
         // see http://tomcat.apache.org/tomcat-5.5-doc/config/context.html#Context_Parameters
         return standardContext.getServletContext().getAttribute(IGNORE_CONTEXT) != null
                 || standardContext.getServletContext().getInitParameter(IGNORE_CONTEXT) != null
-                || standardContext instanceof IgnoredStandardContext;
+                || standardContext instanceof IgnoredStandardContext
+                || isExcludedBySystemProperty(standardContext);
+    }
+
+    private static boolean isExcludedBySystemProperty(final StandardContext standardContext) {
+        String name = standardContext.getName();
+        if (name == null) {
+            name = standardContext.getPath();
+            if (name == null) { // possible ?
+                name = "";
+            }
+        }
+
+        if (name.startsWith("/")) {
+            name = name.substring(1);
+        }
+        return "true".equalsIgnoreCase(SystemInstance.get().getProperty(name + ".tomcat-only", "false"));
     }
 
     /**

Modified: openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java?rev=1424103&r1=1424102&r2=1424103&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java (original)
+++ openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java Wed Dec 19 20:55:45 2012
@@ -33,6 +33,7 @@ import org.apache.catalina.core.Standard
 import org.apache.catalina.deploy.LoginConfig;
 import org.apache.catalina.deploy.SecurityCollection;
 import org.apache.catalina.deploy.SecurityConstraint;
+import org.apache.openejb.assembler.classic.WebAppBuilder;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.server.httpd.HttpListener;
 import org.apache.openejb.server.webservices.WsRegistry;
@@ -40,6 +41,7 @@ import org.apache.openejb.server.webserv
 import org.apache.tomee.catalina.IgnoredStandardContext;
 import org.apache.tomee.catalina.OpenEJBValve;
 import org.apache.tomee.catalina.TomEERuntimeException;
+import org.apache.tomee.catalina.TomcatWebAppBuilder;
 import org.apache.tomee.loader.TomcatHelper;
 
 import java.net.URI;
@@ -170,7 +172,7 @@ public class TomcatWsRegistry implements
         // build contexts
         // - old way (/*)
         if (WEBSERVICE_OLDCONTEXT_ACTIVE) {
-            deployInFakeWebapp(path, classLoader, authMethod, transportGuarantee, realmName, host, httpListener, addresses);
+            deployInFakeWebapp(path, classLoader, authMethod, transportGuarantee, realmName, host, httpListener, addresses, webContext);
         }
 
         // - new way (/<webappcontext>/webservices/<name>) if webcontext is specified
@@ -190,24 +192,26 @@ public class TomcatWsRegistry implements
                     addServlet(host, webAppContext, WEBSERVICE_SUB_CONTEXT + path, httpListener, path, addresses, false);
                 }
             } else if (!WEBSERVICE_OLDCONTEXT_ACTIVE) { // deploying in a jar
-                deployInFakeWebapp(path, classLoader, authMethod, transportGuarantee, realmName, host, httpListener, addresses);
+                deployInFakeWebapp(path, classLoader, authMethod, transportGuarantee, realmName, host, httpListener, addresses, webContext);
             }
         }
         return addresses;
     }
 
-    private void deployInFakeWebapp(String path, ClassLoader classLoader, String authMethod, String transportGuarantee, String realmName, Container host, HttpListener httpListener, List<String> addresses) {
-        final Context context = createNewContext(path, classLoader, authMethod, transportGuarantee, realmName);
+    private void deployInFakeWebapp(String path, ClassLoader classLoader, String authMethod, String transportGuarantee, String realmName, Container host, HttpListener httpListener, List<String> addresses, String name) {
+        final Context context = createNewContext(path, classLoader, authMethod, transportGuarantee, realmName, name);
         host.addChild(context);
         addServlet(host, context, "/*", httpListener, path, addresses, true);
     }
 
-    private static Context createNewContext(String path, ClassLoader classLoader, String authMethod, String transportGuarantee, String realmName) {
+    private static Context createNewContext(String path, ClassLoader classLoader, String authMethod, String transportGuarantee, String realmName, String name) {
         final StandardContext context = new IgnoredStandardContext();
         context.setPath(path);
         context.setDocBase("");
         context.setParentClassLoader(classLoader);
         context.setDelegate(true);
+        context.setName(name);
+        ((TomcatWebAppBuilder) SystemInstance.get().getComponent(WebAppBuilder.class)).initJ2EEInfo(context);
 
         // Configure security
         if (authMethod != null) {