Author: rmannibucau
Date: Wed Dec 19 20:03:51 2012
New Revision: 1424067
URL: http://svn.apache.org/viewvc?rev=1424067&view=rev
Log:
TOMEE-668 custom skipped context for webservice without web associated +
respecting FORCE_LOAD/SKIP var in our classtransformer
Added:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
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/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java?rev=1424067&r1=1424066&r2=1424067&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
Wed Dec 19 20:03:51 2012
@@ -17,6 +17,8 @@
package org.apache.openejb.persistence;
+import org.apache.openejb.util.classloader.URLClassLoaderFirst;
+
import javax.persistence.SharedCacheMode;
import javax.persistence.ValidationMode;
import javax.persistence.spi.ClassTransformer;
@@ -325,6 +327,17 @@ public class PersistenceUnitInfoImpl imp
// not the shouldSkip() method from UrlClassLoaderFirst since we skip more
here
// we just need JPA stuff so all the tricks we have for the server part
are useless
public static boolean isServerClass(final String name) {
+ for (String prefix : URLClassLoaderFirst.FORCED_SKIP) {
+ if (name.startsWith(prefix)) {
+ return true;
+ }
+ }
+ for (String prefix : URLClassLoaderFirst.FORCED_LOAD) {
+ if (name.startsWith(prefix)) {
+ return false;
+ }
+ }
+
if (name.startsWith("java.")) return true;
if (name.startsWith("javax.")) return true;
if (name.startsWith("sun.")) return true;
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java?rev=1424067&r1=1424066&r2=1424067&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
Wed Dec 19 20:03:51 2012
@@ -36,8 +36,8 @@ public class URLClassLoaderFirst extends
private static final boolean SKIP_COMMONS_NET =
skipLib("org.apache.commons.net.pop3.POP3Client");
// - will not match anything, that's the desired default behavior
- private static final Collection<String> FORCED_SKIP = new
ArrayList<String>();
- private static final Collection<String> FORCED_LOAD = new
ArrayList<String>();
+ public static final Collection<String> FORCED_SKIP = new
ArrayList<String>();
+ public static final Collection<String> FORCED_LOAD = new
ArrayList<String>();
static {
reloadConfig();
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java?rev=1424067&r1=1424066&r2=1424067&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
Wed Dec 19 20:03:51 2012
@@ -89,8 +89,12 @@ public class GlobalListenerSupport imple
public void lifecycleEvent(LifecycleEvent event) {
Object source = event.getSource();
if (source instanceof StandardContext) {
- StandardContext standardContext = (StandardContext) source;
- String type = event.getType();
+ final StandardContext standardContext = (StandardContext) source;
+ if (standardContext instanceof IgnoredStandardContext) {
+ return;
+ }
+
+ final String type = event.getType();
if (INIT_EVENT.equals(type) ||
Lifecycle.BEFORE_INIT_EVENT.equals(type)) {
contextListener.init(standardContext);
Added:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java?rev=1424067&view=auto
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java
(added)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java
Wed Dec 19 20:03:51 2012
@@ -0,0 +1,41 @@
+/**
+ *
+ * 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.tomee.catalina;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.Lifecycle;
+import org.apache.catalina.LifecycleEvent;
+import org.apache.catalina.LifecycleListener;
+import org.apache.catalina.core.StandardContext;
+
+public class IgnoredStandardContext extends StandardContext {
+ public IgnoredStandardContext() {
+ // Tomcat has a stupid rule where a life cycle listener must set
+ // configured true, or it will treat it as a failed deployment
+ addLifecycleListener(new LifecycleListener() {
+ public void lifecycleEvent(LifecycleEvent event) {
+ Context context = (Context) event.getLifecycle();
+ if (event.getType().equals(Lifecycle.START_EVENT)
+ || event.getType().equals(Lifecycle.BEFORE_START_EVENT)
+ ||
event.getType().equals(Lifecycle.CONFIGURE_START_EVENT)) {
+ context.setConfigured(true);
+ }
+ }
+ });
+ }
+}
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java?rev=1424067&r1=1424066&r2=1424067&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
Wed Dec 19 20:03:51 2012
@@ -207,7 +207,7 @@ public class TomcatJndiBuilder {
TomcatWebAppBuilder.ContextInfo contextInfo = null;
if (builder != null) {
contextInfo = builder.getContextInfo(standardContext);
- if (webContext == null && contextInfo.appInfo != null) { // can
happen if deployed from apps/
+ if (webContext == null && contextInfo != null &&
contextInfo.appInfo != null) { // can happen if deployed from apps/
for (WebAppInfo webAppInfo : contextInfo.appInfo.webApps) {
if (webAppInfo.path != null &&
webAppInfo.path.equals(standardContext.getDocBase())) {
webContext = cs.getWebContext(webAppInfo.moduleId);
@@ -292,10 +292,8 @@ public class TomcatJndiBuilder {
if (webContext != null) {
comp.rebind("BeanManager",
webContext.getAppContext().getBeanManager());
- } else { // possible?
- comp.rebind("BeanManager", cs.getAppContext(
- ((TomcatWebAppBuilder)
SystemInstance.get().getComponent(WebAppBuilder.class))
-
.getContextInfo(standardContext).appInfo.appId).getBeanManager());
+ } else if (contextInfo != null) {
+ comp.rebind("BeanManager",
cs.getAppContext(contextInfo.appInfo.appId).getBeanManager());
}
} catch (Exception ignored) {
ignored.printStackTrace();
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=1424067&r1=1424066&r2=1424067&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:03:51 2012
@@ -687,6 +687,8 @@ public class TomcatWebAppBuilder impleme
*/
@Override
public void init(final StandardContext standardContext) {
+ if (isIgnored(standardContext)) return;
+
// just adding a carriage return to get logs more readable
logger.info("-------------------------\nTomcatWebAppBuilder.init " +
finalName(standardContext.getPath()));
@@ -1485,7 +1487,9 @@ public class TomcatWebAppBuilder impleme
// useful to disable web applications deployment
// it can be placed in the context.xml file, server.xml, ...
// 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;
+ return
standardContext.getServletContext().getAttribute(IGNORE_CONTEXT) != null
+ ||
standardContext.getServletContext().getInitParameter(IGNORE_CONTEXT) != null
+ || standardContext instanceof IgnoredStandardContext;
}
/**
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=1424067&r1=1424066&r2=1424067&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:03:51 2012
@@ -21,9 +21,6 @@ import org.apache.catalina.Container;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
-import org.apache.catalina.Lifecycle;
-import org.apache.catalina.LifecycleEvent;
-import org.apache.catalina.LifecycleListener;
import org.apache.catalina.Service;
import org.apache.catalina.Wrapper;
import org.apache.catalina.authenticator.BasicAuthenticator;
@@ -40,6 +37,7 @@ import org.apache.openejb.loader.SystemI
import org.apache.openejb.server.httpd.HttpListener;
import org.apache.openejb.server.webservices.WsRegistry;
import org.apache.openejb.server.webservices.WsServlet;
+import org.apache.tomee.catalina.IgnoredStandardContext;
import org.apache.tomee.catalina.OpenEJBValve;
import org.apache.tomee.catalina.TomEERuntimeException;
import org.apache.tomee.loader.TomcatHelper;
@@ -53,7 +51,6 @@ import java.util.Map;
import java.util.TreeMap;
import static org.apache.tomee.catalina.BackportUtil.getServlet;
-import static org.apache.tomee.catalina.TomcatWebAppBuilder.IGNORE_CONTEXT;
public class TomcatWsRegistry implements WsRegistry {
private static final String WEBSERVICE_SUB_CONTEXT =
forceSlash(SystemInstance.get().getOptions().get("tomee.jaxws.subcontext",
"/webservices"));
@@ -206,29 +203,12 @@ public class TomcatWsRegistry implements
}
private static Context createNewContext(String path, ClassLoader
classLoader, String authMethod, String transportGuarantee, String realmName) {
- StandardContext context = new StandardContext();
+ final StandardContext context = new IgnoredStandardContext();
context.setPath(path);
context.setDocBase("");
context.setParentClassLoader(classLoader);
context.setDelegate(true);
- // Tomcat has a stupid rule where a life cycle listener must set
- // configured true, or it will treat it as a failed deployment
- context.addLifecycleListener(new LifecycleListener() {
- public void lifecycleEvent(LifecycleEvent event) {
- Context context = (Context) event.getLifecycle();
-
- if (event.getType().equals(Lifecycle.BEFORE_START_EVENT)) {
- context.getServletContext().setAttribute(IGNORE_CONTEXT,
"true");
- }
-
-
- if (event.getType().equals(Lifecycle.START_EVENT) ||
event.getType().equals(Lifecycle.BEFORE_START_EVENT) ||
event.getType().equals("configure_start")) {
- context.setConfigured(true);
- }
- }
- });
-
// Configure security
if (authMethod != null) {
authMethod = authMethod.toUpperCase();