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) {