You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2011/11/01 15:49:31 UTC
svn commit: r1196032 [1/2] - in /geronimo/server/trunk: ./
framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/
plugins/j2ee/geronimo-j2ee/
plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/annotation/
plugin...
Author: xuhaihong
Date: Tue Nov 1 14:49:29 2011
New Revision: 1196032
URL: http://svn.apache.org/viewvc?rev=1196032&view=rev
Log:
GERONIMO-6204 Decouple OpenWebBeans from web container
Added:
geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationName.java
- copied, changed from r1195653, geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java
geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebModuleEvent.java
- copied, changed from r1195653, geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java
geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebModuleListener.java
- copied, changed from r1195653, geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java
geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansHolderInterceptor.java
geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansSystemInitializer.java
geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansWebAppContext.java
geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansWebModuleListener.java
geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/WebApplicationNameBasedSingletonService.java
- copied, changed from r1195653, geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java
geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/WebBeansConfigurationListener.java
- copied, changed from r1195653, geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/WebBeansConfigurationListener.java
Removed:
geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java
geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/WebBeansConfigurationListener.java
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/OWBBeforeAfter.java
Modified:
geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/pom.xml
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/annotation/Holder.java
geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationConstants.java
geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/main/java/org/apache/geronimo/jetty8/deployment/JettyModuleBuilder.java
geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/pom.xml
geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java
geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/GeronimoWebAppContext.java
geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/IntegrationContext.java
geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java
geronimo/server/trunk/plugins/jetty8/jetty8-deployer/src/main/plan/plan.xml
geronimo/server/trunk/plugins/jetty8/jetty8/pom.xml
geronimo/server/trunk/plugins/myfaces/geronimo-myfaces/src/main/java/org/apache/geronimo/myfaces/GeronimoFactoryFinderProvider.java
geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/GeronimoSingletonService.java
geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/OpenWebBeansWebInitializer.java
geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/ThreadSingletonServiceAdapter.java
geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/pom.xml
geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/src/main/java/org/apache/geronimo/openwebbeans/deployment/OpenWebBeansModuleBuilderExtension.java
geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/src/test/java/org/apache/geronimo/openwebbeans/deployment/BasicTest.java
geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/pom.xml
geronimo/server/trunk/plugins/openwebbeans/openwebbeans-deployer/pom.xml
geronimo/server/trunk/plugins/openwebbeans/openwebbeans-deployer/src/main/plan/plan.xml
geronimo/server/trunk/plugins/openwebbeans/openwebbeans/pom.xml
geronimo/server/trunk/plugins/openwebbeans/openwebbeans/src/main/plan/plan.xml
geronimo/server/trunk/plugins/openwebbeans/pom.xml
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/pom.xml
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/TomcatContainer.java
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/TomcatEJBWebServiceContext.java
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/TomcatInstanceManager.java
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/WebApplicationIdentityBeforeAfter.java
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/test/java/org/apache/geronimo/tomcat/AbstractWebModuleTest.java
geronimo/server/trunk/plugins/tomcat/tomcat7/pom.xml
geronimo/server/trunk/plugins/wink/geronimo-wink-builder/src/main/java/org/apache/geronimo/wink/deployment/WinkModuleBuilderExtension.java
geronimo/server/trunk/pom.xml
Modified: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java Tue Nov 1 14:49:29 2011
@@ -59,7 +59,7 @@ public final class JarUtils {
private static final boolean jarUrlRewrite;
static {
//Why not always set this with true ? Online deployer also lock the jar files
- jarUrlRewrite = new Boolean(System.getProperty("org.apache.geronimo.kernel.util.JarUtils.jarUrlRewrite", "true"));
+ jarUrlRewrite = Boolean.valueOf(System.getProperty("org.apache.geronimo.kernel.util.JarUtils.jarUrlRewrite", "true"));
try {
DUMMY_JAR_FILE = FileUtils.createTempFile(false);
new JarOutputStream(new FileOutputStream(JarUtils.DUMMY_JAR_FILE), new Manifest()).close();
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/pom.xml?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/pom.xml (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/pom.xml Tue Nov 1 14:49:29 2011
@@ -68,21 +68,6 @@
<groupId>org.apache.geronimo.components</groupId>
<artifactId>geronimo-transaction</artifactId>
</dependency>
-
- <dependency>
- <groupId>org.apache.openwebbeans</groupId>
- <artifactId>openwebbeans-impl</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.openwebbeans</groupId>
- <artifactId>openwebbeans-spi</artifactId>
- </dependency>
- <!--TODO can this be optional? -->
- <dependency>
- <groupId>org.apache.geronimo.bundles</groupId>
- <artifactId>scannotation</artifactId>
- </dependency>
<dependency>
<groupId>org.apache.servicemix.bundles</groupId>
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/annotation/Holder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/annotation/Holder.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/annotation/Holder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/annotation/Holder.java Tue Nov 1 14:49:29 2011
@@ -17,7 +17,6 @@
* under the License.
*/
-
package org.apache.geronimo.j2ee.annotation;
import java.io.Serializable;
@@ -29,11 +28,11 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import javax.naming.Context;
import javax.naming.NamingException;
-import org.apache.webbeans.inject.OWBInjector;
import org.apache.xbean.recipe.ConstructionException;
import org.apache.xbean.recipe.ObjectRecipe;
import org.apache.xbean.recipe.Option;
@@ -44,14 +43,19 @@ import org.slf4j.LoggerFactory;
* @version $Rev$ $Date$
*/
public class Holder implements Serializable {
+
private static final Logger log = LoggerFactory.getLogger(Holder.class);
+
public static final Holder EMPTY = new Holder() {
};
private Map<String, Set<Injection>> injectionMap;
+
private Map<String, LifecycleMethod> postConstruct;
+
private Map<String, LifecycleMethod> preDestroy;
+ private List<Interceptor> interceptors = new CopyOnWriteArrayList<Interceptor>();
public Holder() {
}
@@ -150,9 +154,7 @@ public class Holder implements Serializa
}
public boolean isEmpty() {
- return (injectionMap == null || injectionMap.isEmpty())
- && (postConstruct == null || postConstruct.isEmpty())
- && (preDestroy == null || preDestroy.isEmpty());
+ return (injectionMap == null || injectionMap.isEmpty()) && (postConstruct == null || postConstruct.isEmpty()) && (preDestroy == null || preDestroy.isEmpty());
}
public Object newInstance(String className, ClassLoader classLoader, Context context) throws IllegalAccessException, InstantiationException {
@@ -163,7 +165,7 @@ public class Holder implements Serializa
try {
clazz = classLoader.loadClass(className);
} catch (ClassNotFoundException e) {
- throw (InstantiationException)new InstantiationException("Can't load class " + className + " in classloader: " + classLoader).initCause(e);
+ throw (InstantiationException) new InstantiationException("Can't load class " + className + " in classloader: " + classLoader).initCause(e);
}
List<NamingException> problems = new ArrayList<NamingException>();
while (clazz != Object.class) {
@@ -177,14 +179,15 @@ public class Holder implements Serializa
try {
result = objectRecipe.create(classLoader);
} catch (ConstructionException e) {
- throw (InstantiationException)new InstantiationException("Could not construct object").initCause(e);
+ throw (InstantiationException) new InstantiationException("Could not construct object").initCause(e);
}
- // TODO we likely don't want to create a new one each time -- investigate the destroy() method
- OWBInjector beanInjector = new OWBInjector();
+ InvocationContext invocationContext = new InvocationContext(context, result);
try {
- beanInjector.inject(result);
- } catch (Exception e) {
- throw (InstantiationException)new InstantiationException("web beans injection problem").initCause(e);
+ for (Interceptor interceptor : interceptors) {
+ interceptor.instancerCreated(invocationContext);
+ }
+ } catch (InterceptorException e) {
+ throw (InstantiationException) new InstantiationException("Interceptor invocation failed").initCause(e);
}
if (getPostConstruct() != null) {
@@ -245,4 +248,57 @@ public class Holder implements Serializa
}
}
+ public boolean addInterceptor(Interceptor interceptor) {
+ return interceptors.add(interceptor);
+ }
+
+ public boolean removeInterceptor(Interceptor interceptor) {
+ return interceptors.remove(interceptor);
+ }
+
+ public static interface Interceptor {
+
+ public void instancerCreated(InvocationContext context) throws InterceptorException;
+
+ public void instanceDestoryed(InvocationContext context) throws InterceptorException;
+
+ public void postConstructInvoked(InvocationContext context) throws InterceptorException;
+ }
+
+ public static class InterceptorException extends Exception {
+
+ public InterceptorException(Throwable cause) {
+ super(cause);
+ }
+
+ public InterceptorException(String message) {
+ super(message);
+ }
+
+ public InterceptorException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ }
+
+ public static class InvocationContext {
+
+ private final Context context;
+
+ private final Object instance;
+
+ public InvocationContext(Context context, Object instance) {
+ this.context = context;
+ this.instance = instance;
+ }
+
+ public Context getContext() {
+ return context;
+
+ }
+
+ public Object getInstance() {
+ return instance;
+ }
+ }
}
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationConstants.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationConstants.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationConstants.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationConstants.java Tue Nov 1 14:49:29 2011
@@ -33,12 +33,14 @@ public class WebApplicationConstants {
public static final String WEB_APP_INFO = "WEB_APP_INFO";
public static final String WEB_APP_NAME = "WEB_APP_NAME";
-
+
public static final String WEB_APPLICATION_STAGE = "org.apache.geronimo.webapplication.stage";
-
+
public static final String WEB_APPLICATION_PRODUCTION_STAGE = "PRODUCTION";
-
+
public static final String WEB_APPLICATION_DEVELOPMENT_STAGE = "DEVELOPMENT";
-
+
public static final String WEB_APPLICATION_GET_REAL_PATH_SUPPORT = "org.apache.geronimo.webapplication.getrealpath.support";
+
+ public static final String WEB_MODULE_LISTENERS = "org.apache.geronimo.webapplication.web_modue_listeners";
}
Copied: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationName.java (from r1195653, geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationName.java?p2=geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationName.java&p1=geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java&r1=1195653&r2=1196032&rev=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationName.java Tue Nov 1 14:49:29 2011
@@ -20,15 +20,15 @@ package org.apache.geronimo.web;
/**
* @version $Rev$ $Date$
*/
-public class WebApplicationIdentity {
+public class WebApplicationName {
- private static ThreadLocal<String> IDENTITY = new ThreadLocal<String>();
+ private static ThreadLocal<String> NAME = new ThreadLocal<String>();
- public static void setIdentity(String identity) {
- IDENTITY.set(identity);
+ public static void setName(String name) {
+ NAME.set(name);
}
- public static String getIdentity() {
- return IDENTITY.get();
+ public static String getName() {
+ return NAME.get();
}
}
Copied: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebModuleEvent.java (from r1195653, geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebModuleEvent.java?p2=geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebModuleEvent.java&p1=geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java&r1=1195653&r2=1196032&rev=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebModuleEvent.java Tue Nov 1 14:49:29 2011
@@ -17,18 +17,23 @@
package org.apache.geronimo.web;
+import javax.servlet.ServletContext;
+
+import org.apache.geronimo.management.geronimo.WebModule;
+
/**
* @version $Rev$ $Date$
*/
-public class WebApplicationIdentity {
+public class WebModuleEvent extends java.util.EventObject {
- private static ThreadLocal<String> IDENTITY = new ThreadLocal<String>();
+ private final ServletContext servletContext;
- public static void setIdentity(String identity) {
- IDENTITY.set(identity);
+ public WebModuleEvent(WebModule module, ServletContext servletContext) {
+ super(module);
+ this.servletContext = servletContext;
}
- public static String getIdentity() {
- return IDENTITY.get();
+ public ServletContext getServletContext() {
+ return servletContext;
}
}
Copied: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebModuleListener.java (from r1195653, geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebModuleListener.java?p2=geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebModuleListener.java&p1=geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java&r1=1195653&r2=1196032&rev=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebApplicationIdentity.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebModuleListener.java Tue Nov 1 14:49:29 2011
@@ -17,18 +17,28 @@
package org.apache.geronimo.web;
+import javax.servlet.ServletContext;
+
/**
+ * ServletContextListener is good choice for those components, which are required to be initialized in the starting process of
+ * the target applications. While it sometimes brings issues, e.g. those codes in other ServletContextListener hopes to do
+ * something, and order of the listeners may be undefined.
+ *
* @version $Rev$ $Date$
*/
-public class WebApplicationIdentity {
+public interface WebModuleListener {
- private static ThreadLocal<String> IDENTITY = new ThreadLocal<String>();
+ /**
+ * This method will be invoked before all Java EE supported components are initialized
+ * @param module
+ * @param context
+ */
+ public void moduleInitialized(ServletContext servletContext);
- public static void setIdentity(String identity) {
- IDENTITY.set(identity);
- }
+ /**
+ * This method will be invoked after all Java EE supported components are destroyed
+ * @param event
+ */
+ public void moduleDestoryed(ServletContext servletContext);
- public static String getIdentity() {
- return IDENTITY.get();
- }
}
Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/main/java/org/apache/geronimo/jetty8/deployment/JettyModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/main/java/org/apache/geronimo/jetty8/deployment/JettyModuleBuilder.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/main/java/org/apache/geronimo/jetty8/deployment/JettyModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/main/java/org/apache/geronimo/jetty8/deployment/JettyModuleBuilder.java Tue Nov 1 14:49:29 2011
@@ -25,7 +25,6 @@ import java.net.URL;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.LinkedHashSet;
import java.util.Map;
import java.util.jar.JarFile;
@@ -73,7 +72,6 @@ import org.apache.geronimo.kernel.util.J
import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
import org.apache.geronimo.naming.deployment.GBeanResourceEnvironmentBuilder;
import org.apache.geronimo.naming.deployment.ResourceEnvironmentSetter;
-import org.apache.geronimo.openejb.cdi.SharedOwbContext;
import org.apache.geronimo.schema.ElementConverter;
import org.apache.geronimo.schema.NamespaceElementConverter;
import org.apache.geronimo.schema.SchemaConversionUtils;
@@ -517,14 +515,14 @@ public class JettyModuleBuilder extends
webModuleData.setAttribute("compactPath", Boolean.TRUE);
}
- LinkedHashSet<Module<?, ?>> submodules = module.getModules();
+ /*LinkedHashSet<Module<?, ?>> submodules = module.getModules();
for (Module<?, ?> subModule: submodules) {
if (subModule.getSharedContext().get(SharedOwbContext.class) != null) {
GBeanData data = (GBeanData) subModule.getSharedContext().get(SharedOwbContext.class);
AbstractName name = data.getAbstractName();
webModuleData.setReferencePattern("SharedOwbContext", name);
}
- }
+ }*/
//Save Deployment Attributes
Map<String, Object> deploymentAttributes = new HashMap<String, Object>();
deploymentAttributes.put(WebApplicationConstants.META_COMPLETE, webApp.isMetadataComplete());
Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/pom.xml?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/pom.xml (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/pom.xml Tue Nov 1 14:49:29 2011
@@ -61,12 +61,6 @@
<artifactId>geronimo-web</artifactId>
<version>${project.version}</version>
</dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.modules</groupId>
- <artifactId>geronimo-openejb</artifactId>
- <version>${project.version}</version>
- </dependency>
<dependency>
<groupId>org.apache.openwebbeans</groupId>
Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java Tue Nov 1 14:49:29 2011
@@ -17,10 +17,12 @@
package org.apache.geronimo.jetty8;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -54,15 +56,12 @@ import org.apache.geronimo.management.J2
import org.apache.geronimo.management.J2EEServer;
import org.apache.geronimo.management.geronimo.WebContainer;
import org.apache.geronimo.management.geronimo.WebModule;
-import org.apache.geronimo.openejb.cdi.OpenWebBeansWebInitializer;
-import org.apache.geronimo.openejb.cdi.SharedOwbContext;
import org.apache.geronimo.security.jacc.ApplicationPolicyConfigurationManager;
import org.apache.geronimo.security.jacc.RunAsSource;
import org.apache.geronimo.transaction.GeronimoUserTransaction;
import org.apache.geronimo.web.WebApplicationConstants;
import org.apache.geronimo.web.info.ErrorPageInfo;
import org.apache.geronimo.web.info.WebAppInfo;
-import org.apache.webbeans.config.WebBeansContext;
import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.security.SecurityHandler;
import org.eclipse.jetty.server.SessionManager;
@@ -136,7 +135,6 @@ public class WebAppContextWrapper implem
@ParamReference(name = "J2EEApplication") J2EEApplication application,
@ParamReference(name = "ContextSource") ContextSource contextSource,
@ParamReference(name = "TransactionManager") TransactionManager transactionManager,
- @ParamReference(name = "SharedOwbContext") SharedOwbContext sharedOwbContext,
@ParamAttribute(name = "deploymentAttributes") Map<String, Object> deploymentAttributes
) throws Exception {
@@ -222,8 +220,9 @@ public class WebAppContextWrapper implem
}
}
- IntegrationContext integrationContext = new IntegrationContext(componentContext, unshareableResources, applicationManagedSecurityResources, trackedConnectionAssociator, userTransaction, bundle, holder, servletContainerInitializerMap, abName.toString());
- webAppContext = new GeronimoWebAppContext(securityHandler, sessionHandler, servletHandler, null, integrationContext, classLoader, modulePath, webAppInfo, policyContextID, applicationPolicyConfigurationManager);
+ IntegrationContext integrationContext = new IntegrationContext(componentContext, unshareableResources, applicationManagedSecurityResources, trackedConnectionAssociator, userTransaction, bundle, holder, servletContainerInitializerMap, abName.getNameProperty(NameFactory.J2EE_NAME));
+ List<String> webModuleListenerClassNames = (List<String>) deploymentAttributes.get(WebApplicationConstants.WEB_MODULE_LISTENERS);
+ webAppContext = new GeronimoWebAppContext(securityHandler, sessionHandler, servletHandler, null, integrationContext, classLoader, modulePath, webAppInfo, policyContextID, applicationPolicyConfigurationManager, webModuleListenerClassNames == null ? Collections.<String>emptyList() : webModuleListenerClassNames);
webAppContext.setContextPath(contextPath);
//See Jetty-386. Setting this to true can expose secured content.
webAppContext.setCompactPath(compactPath);
@@ -303,24 +302,8 @@ public class WebAppContextWrapper implem
}
//supply web.xml to jasper
webAppContext.setAttribute(JASPER_WEB_XML_NAME, originalSpecDD);
- WebBeansContext webBeansContext;
- if (sharedOwbContext == null) {
- webBeansContext = OpenWebBeansWebInitializer.newWebBeansContext(null);
- } else {
- webBeansContext= sharedOwbContext.getOWBContext();
- }
- Thread thread = Thread.currentThread();
- ClassLoader cl = thread.getContextClassLoader();
- thread.setContextClassLoader(classLoader);
- try {
- OpenWebBeansWebInitializer.initializeServletContext(webBeansContext, webAppContext.getServletContext());
- } finally {
- thread.setContextClassLoader(cl);
- }
- integrationContext.setOwbContext(webBeansContext);
}
-
public String getObjectName() {
return objectName;
}
Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/GeronimoWebAppContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/GeronimoWebAppContext.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/GeronimoWebAppContext.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/GeronimoWebAppContext.java Tue Nov 1 14:49:29 2011
@@ -23,11 +23,13 @@ package org.apache.geronimo.jetty8.handl
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.EventListener;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -50,12 +52,12 @@ import org.apache.geronimo.osgi.web.WebA
import org.apache.geronimo.security.jacc.ApplicationPolicyConfigurationManager;
import org.apache.geronimo.security.jacc.ComponentPermissions;
import org.apache.geronimo.web.WebApplicationConstants;
-import org.apache.geronimo.web.WebApplicationIdentity;
+import org.apache.geronimo.web.WebApplicationName;
+import org.apache.geronimo.web.WebModuleListener;
import org.apache.geronimo.web.assembler.Assembler;
import org.apache.geronimo.web.info.WebAppInfo;
import org.apache.geronimo.web.security.SpecSecurityBuilder;
import org.apache.geronimo.web.security.WebSecurityConstraintStore;
-import org.apache.webbeans.config.WebBeansContext;
import org.apache.xbean.osgi.bundle.util.BundleUtils;
import org.eclipse.jetty.security.SecurityHandler;
import org.eclipse.jetty.server.Request;
@@ -71,12 +73,16 @@ import org.eclipse.jetty.webapp.WebAppCo
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @version $Rev$ $Date$
*/
public class GeronimoWebAppContext extends WebAppContext {
+ private static final Logger logger = LoggerFactory.getLogger(GeronimoWebAppContext.class);
+
private final IntegrationContext integrationContext;
private final String modulePath;
private final ClassLoader classLoader;
@@ -87,6 +93,7 @@ public class GeronimoWebAppContext exten
private ServiceRegistration serviceRegistration;
boolean fullyStarted = false;
private String webModuleName;
+ private final List webModuleListeners;
public GeronimoWebAppContext(SecurityHandler securityHandler,
SessionHandler sessionHandler,
@@ -95,7 +102,10 @@ public class GeronimoWebAppContext exten
IntegrationContext integrationContext,
ClassLoader classLoader,
String modulePath,
- WebAppInfo webAppInfo, String policyContextId, ApplicationPolicyConfigurationManager applicationPolicyConfigurationManager) {
+ WebAppInfo webAppInfo,
+ String policyContextId,
+ ApplicationPolicyConfigurationManager applicationPolicyConfigurationManager,
+ List<String> webModuleListenerClassNames) {
super(sessionHandler, securityHandler, servletHandler, errorHandler);
_scontext = new Context();
this.integrationContext = integrationContext;
@@ -130,6 +140,24 @@ public class GeronimoWebAppContext exten
boolean annotationScanRequired = true;
webSecurityConstraintStore = new WebSecurityConstraintStore(webAppInfo, integrationContext.getBundle(), annotationScanRequired, _scontext);
+ if (webModuleListenerClassNames != null && webModuleListenerClassNames.size() > 0) {
+ webModuleListeners = new ArrayList(webModuleListenerClassNames.size());
+ for (String webModuleListenerClassName : webModuleListenerClassNames) {
+ try {
+ Class<?> cls = classLoader.loadClass(webModuleListenerClassName);
+ Object webModuleListener = cls.newInstance();
+ webModuleListeners.add(webModuleListener);
+ } catch (ClassNotFoundException e) {
+ logger.warn("Unable to load the listener class" + webModuleListenerClassName, e);
+ } catch (InstantiationException e) {
+ logger.warn("Unable to create the listener instance " + webModuleListenerClassName, e);
+ } catch (IllegalAccessException e) {
+ logger.warn("Unable to create the listener instance " + webModuleListenerClassName, e);
+ }
+ }
+ } else {
+ webModuleListeners = Collections.emptyList();
+ }
}
public void setWebModuleName(String webModuleName) {
@@ -156,9 +184,17 @@ public class GeronimoWebAppContext exten
boolean txActive = integrationContext.isTxActive();
SharedConnectorInstanceContext newContext = integrationContext.newConnectorInstanceContext(null);
ConnectorInstanceContext connectorContext = integrationContext.setConnectorInstance(null, newContext);
- WebBeansContext oldOwbContext = integrationContext.contextEntered();
+ String oldApplicationName = WebApplicationName.getName();
+ WebApplicationName.setName(integrationContext.getWebApplicationIdentity());
try {
setRestrictListeners(false);
+ for (Object webModuleListener : webModuleListeners) {
+ if (webModuleListener instanceof WebModuleListener) {
+ ((WebModuleListener) webModuleListener).moduleInitialized(getServletContext());
+ } else {
+ logger.warn("Invalid WebModuleListener " + webModuleListener.getClass().getName());
+ }
+ }
try {
Assembler assembler = new Assembler();
assembler.assemble(getServletContext(), webAppInfo);
@@ -202,9 +238,9 @@ public class GeronimoWebAppContext exten
integrationContext.restoreConnectorContext(connectorContext, null, newContext);
}
} finally {
- integrationContext.contextExited(oldOwbContext);
integrationContext.restoreContext(context);
integrationContext.completeTx(txActive, null);
+ WebApplicationName.setName(oldApplicationName);
}
}
@@ -214,15 +250,25 @@ public class GeronimoWebAppContext exten
boolean txActive = integrationContext.isTxActive();
SharedConnectorInstanceContext newContext = integrationContext.newConnectorInstanceContext(null);
ConnectorInstanceContext connectorContext = integrationContext.setConnectorInstance(null, newContext);
+ String oldApplicationName = WebApplicationName.getName();
+ WebApplicationName.setName(integrationContext.getWebApplicationIdentity());
try {
try {
super.doStop();
} finally {
integrationContext.restoreConnectorContext(connectorContext, null, newContext);
}
+ for (Object webModuleListener : webModuleListeners) {
+ if (webModuleListener instanceof WebModuleListener) {
+ ((WebModuleListener) webModuleListener).moduleDestoryed(getServletContext());
+ } else {
+ logger.warn("Invalid WebModuleListener " + webModuleListener.getClass().getName());
+ }
+ }
} finally {
integrationContext.restoreContext(context);
integrationContext.completeTx(txActive, null);
+ WebApplicationName.setName(oldApplicationName);
}
}
@@ -232,9 +278,8 @@ public class GeronimoWebAppContext exten
boolean txActive = integrationContext.isTxActive();
SharedConnectorInstanceContext newContext = integrationContext.newConnectorInstanceContext(baseRequest);
ConnectorInstanceContext connectorContext = integrationContext.setConnectorInstance(baseRequest, newContext);
- WebBeansContext owbContext = integrationContext.contextEntered();
- String oldApplicationIdentity = WebApplicationIdentity.getIdentity();
- WebApplicationIdentity.setIdentity(integrationContext.getWebApplicationIdentity());
+ String oldApplicationName = WebApplicationName.getName();
+ WebApplicationName.setName(integrationContext.getWebApplicationIdentity());
try {
try {
super.doScope(target, baseRequest, request, response);
@@ -242,10 +287,9 @@ public class GeronimoWebAppContext exten
integrationContext.restoreConnectorContext(connectorContext, baseRequest, newContext);
}
} finally {
- integrationContext.contextExited(owbContext);
integrationContext.restoreContext(context);
integrationContext.completeTx(txActive, baseRequest);
- WebApplicationIdentity.setIdentity(oldApplicationIdentity);
+ WebApplicationName.setName(oldApplicationName);
}
}
Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/IntegrationContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/IntegrationContext.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/IntegrationContext.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/handler/IntegrationContext.java Tue Nov 1 14:49:29 2011
@@ -37,8 +37,6 @@ import org.apache.geronimo.connector.out
import org.apache.geronimo.connector.outbound.connectiontracking.TrackedConnectionAssociator;
import org.apache.geronimo.j2ee.annotation.Holder;
import org.apache.geronimo.naming.java.RootContext;
-import org.apache.geronimo.openejb.cdi.GeronimoSingletonService;
-import org.apache.webbeans.config.WebBeansContext;
import org.eclipse.jetty.server.Request;
import org.osgi.framework.Bundle;
@@ -56,7 +54,6 @@ public class IntegrationContext {
private final Holder holder;
private final Map<ServletContainerInitializer, Set<Class<?>>> servletContainerInitializerMap;
private final String webApplicationIdentity;
- private WebBeansContext owbContext;
public IntegrationContext(Context componentContext, Set<String> unshareableResources, Set<String> applicationManagedSecurityResources, TrackedConnectionAssociator trackedConnectionAssociator, UserTransaction userTransaction, Bundle bundle, Holder holder, Map<ServletContainerInitializer, Set<Class<?>>> servletContainerInitializerMap, String webApplicationIdentity) {
this.componentContext = componentContext;
@@ -180,21 +177,4 @@ public class IntegrationContext {
public Map<ServletContainerInitializer, Set<Class<?>>> getServletContainerInitializerMap() {
return servletContainerInitializerMap;
}
-
-
- public WebBeansContext contextEntered() {
- return GeronimoSingletonService.contextEntered(owbContext);
- }
-
- public void contextExited(WebBeansContext oldOWBContext) {
- GeronimoSingletonService.contextExited(oldOWBContext);
- }
-
- public void setOwbContext(WebBeansContext owbContext) {
- this.owbContext = owbContext;
- }
-
- public WebBeansContext getOWBContext() {
- return owbContext;
- }
}
Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java Tue Nov 1 14:49:29 2011
@@ -70,7 +70,6 @@ import org.apache.geronimo.transaction.m
import org.apache.geronimo.web.WebApplicationConstants;
import org.apache.geronimo.web.info.ServletInfo;
import org.apache.geronimo.web.info.WebAppInfo;
-import org.apache.webbeans.config.WebBeansFinder;
import org.eclipse.jetty.security.Authenticator;
import org.eclipse.jetty.security.IdentityService;
import org.eclipse.jetty.security.LoginService;
@@ -117,7 +116,6 @@ public class AbstractWebModuleTest exten
}
protected WebAppContextWrapper setUpAppContext(String securityRealmName, SecurityHandlerFactory securityHandlerFactory, String policyContextId, RunAsSource runAsSource, String uriString, WebAppInfo webAppInfo) throws Exception {
- WebBeansFinder.clearInstances(getClass().getClassLoader());
ApplicationPolicyConfigurationManager applicationPolicyConfigurationManager = null;
//Setup default JSP Factory
Class.forName("org.apache.jasper.compiler.JspRuntimeContext");
@@ -187,7 +185,6 @@ public class AbstractWebModuleTest exten
null,
contextSource,
transactionManager,
- null,
deploymentAttributes
);
app.doStart();
Modified: geronimo/server/trunk/plugins/jetty8/jetty8-deployer/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/jetty8-deployer/src/main/plan/plan.xml?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/jetty8-deployer/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/jetty8/jetty8-deployer/src/main/plan/plan.xml Tue Nov 1 14:49:29 2011
@@ -922,7 +922,6 @@
<type>car</type>
</dependency>
</dependencies>
- <import-package>org.apache.webbeans.config</import-package>
</environment>
</xml-attribute>
</gbean>
Modified: geronimo/server/trunk/plugins/jetty8/jetty8/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/jetty8/pom.xml?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/jetty8/pom.xml (original)
+++ geronimo/server/trunk/plugins/jetty8/jetty8/pom.xml Tue Nov 1 14:49:29 2011
@@ -71,12 +71,12 @@
<version>${project.version}</version>
</dependency>
- <dependency>
+ <!--dependency>
<groupId>org.apache.geronimo.configs</groupId>
<artifactId>openejb</artifactId>
<version>${project.version}</version>
<type>car</type>
- </dependency>
+ </dependency-->
<dependency>
<groupId>org.apache.geronimo.configs</groupId>
Modified: geronimo/server/trunk/plugins/myfaces/geronimo-myfaces/src/main/java/org/apache/geronimo/myfaces/GeronimoFactoryFinderProvider.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/myfaces/geronimo-myfaces/src/main/java/org/apache/geronimo/myfaces/GeronimoFactoryFinderProvider.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/myfaces/geronimo-myfaces/src/main/java/org/apache/geronimo/myfaces/GeronimoFactoryFinderProvider.java (original)
+++ geronimo/server/trunk/plugins/myfaces/geronimo-myfaces/src/main/java/org/apache/geronimo/myfaces/GeronimoFactoryFinderProvider.java Tue Nov 1 14:49:29 2011
@@ -41,7 +41,7 @@ import javax.faces.render.RenderKitFacto
import javax.faces.view.ViewDeclarationLanguageFactory;
import javax.faces.view.facelets.TagHandlerDelegateFactory;
-import org.apache.geronimo.web.WebApplicationIdentity;
+import org.apache.geronimo.web.WebApplicationName;
import org.apache.myfaces.spi.FactoryFinderProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -54,7 +54,7 @@ import org.slf4j.LoggerFactory;
*/
public class GeronimoFactoryFinderProvider implements FactoryFinderProvider {
-
+
private static final Logger logger = LoggerFactory.getLogger(GeronimoFactoryFinderProvider.class);
public static final String APPLICATION_FACTORY = "javax.faces.application.ApplicationFactory";
@@ -148,13 +148,13 @@ public class GeronimoFactoryFinderProvid
Map<String, List<String>> factoryClassNames = null;
Map<String, Object> factoryMap = null;
- String webApplicationIdentity = WebApplicationIdentity.getIdentity();
- if(webApplicationIdentity == null) {
+ String webApplicationName = WebApplicationName.getName();
+ if(webApplicationName == null) {
throw new IllegalStateException("No web identity is attached to current request thread " + Thread.currentThread().getName());
}
synchronized (_registeredFactoryNames) {
- factoryClassNames = _registeredFactoryNames.get(webApplicationIdentity);
+ factoryClassNames = _registeredFactoryNames.get(webApplicationName);
if (factoryClassNames == null) {
String message = "No Factories configured for this Application. This happens if the faces-initialization "
@@ -170,11 +170,11 @@ public class GeronimoFactoryFinderProvid
throw new IllegalArgumentException("no factory " + factoryName + " configured for this application.");
}
- factoryMap = _factories.get(webApplicationIdentity);
+ factoryMap = _factories.get(webApplicationName);
if (factoryMap == null) {
factoryMap = new HashMap<String, Object>();
- _factories.put(webApplicationIdentity, factoryMap);
+ _factories.put(webApplicationName, factoryMap);
}
}
@@ -260,7 +260,7 @@ public class GeronimoFactoryFinderProvid
}
checkFactoryName(factoryName);
- String webApplicationIdentity = WebApplicationIdentity.getIdentity();
+ String webApplicationIdentity = WebApplicationName.getName();
if(webApplicationIdentity == null) {
throw new IllegalStateException("No web identity is attached to current request thread " + Thread.currentThread().getName());
}
@@ -286,14 +286,14 @@ public class GeronimoFactoryFinderProvid
factoryClassNames.put(factoryName, classNameList);
}
classNameList.add(implName);
- if (logger.isDebugEnabled()) {
+ if (logger.isDebugEnabled()) {
logger.debug("Factory map of web application [" + webApplicationIdentity + "] is " + factoryClassNames);
}
}
}
public void releaseFactories() throws FacesException {
- String webApplicationIdentity = WebApplicationIdentity.getIdentity();
+ String webApplicationIdentity = WebApplicationName.getName();
if(webApplicationIdentity == null) {
throw new IllegalStateException("No web identity is attached to current request thread " + Thread.currentThread().getName());
}
@@ -310,7 +310,7 @@ public class GeronimoFactoryFinderProvid
if (factoryClassNames != null) {
factoryClassNames.clear();
}
- _registeredFactoryNames.remove(webApplicationIdentity);
+ _registeredFactoryNames.remove(webApplicationIdentity);
}
}
Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/GeronimoSingletonService.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/GeronimoSingletonService.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/GeronimoSingletonService.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/GeronimoSingletonService.java Tue Nov 1 14:49:29 2011
@@ -30,17 +30,25 @@ import org.osgi.framework.Bundle;
*/
public class GeronimoSingletonService implements SingletonService<WebBeansContext> {
+ private static final GeronimoSingletonService INSTANCE = new GeronimoSingletonService();
+
private static final ThreadLocal<WebBeansContext> contexts = new ThreadLocal<WebBeansContext>();
private static Bundle bundle;
-
+
private static final WebBeansContext noContext = new WebBeansContext();
+ private SingletonService<WebBeansContext> webApplicationSingletonService;
+
public static void init(Bundle owbBundle) {
bundle = owbBundle;
- WebBeansFinder.setSingletonService(new GeronimoSingletonService());
+ WebBeansFinder.setSingletonService(INSTANCE);
}
- public GeronimoSingletonService() {
+ private GeronimoSingletonService() {
+ }
+
+ public static GeronimoSingletonService getInstance() {
+ return INSTANCE;
}
public static WebBeansContext contextEntered(WebBeansContext newContext) {
@@ -55,20 +63,29 @@ public class GeronimoSingletonService im
@Override
public WebBeansContext get(Object key) {
- return getContext();
- }
-
- private WebBeansContext getContext() {
WebBeansContext context = contexts.get();
+ if (context == null && webApplicationSingletonService != null) {
+ context = webApplicationSingletonService.get(key);
+ if (context != null) {
+ return context;
+ }
+ }
if (context == null) {
contexts.set(noContext);
}
return context;
}
+ public SingletonService<WebBeansContext> getWebApplicationSingletonService() {
+ return webApplicationSingletonService;
+ }
+
+ public void setWebApplicationSingletonService(SingletonService<WebBeansContext> webApplicationSingletonService) {
+ this.webApplicationSingletonService = webApplicationSingletonService;
+ }
+
@Override
public void clear(Object key) {
- getContext().clear();
+ get(key).clear();
}
-
}
Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/OpenWebBeansWebInitializer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/OpenWebBeansWebInitializer.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/OpenWebBeansWebInitializer.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/OpenWebBeansWebInitializer.java Tue Nov 1 14:49:29 2011
@@ -23,6 +23,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
+import java.util.concurrent.ScheduledExecutorService;
import javax.servlet.ServletContext;
@@ -99,35 +100,35 @@ public class OpenWebBeansWebInitializer
webBeansContext.registerService(ContainerLifecycle.class, lifecycle);
WebBeansContext oldContext = GeronimoSingletonService.contextEntered(webBeansContext);
+ //from OWB's WebBeansConfigurationListener
try {
- //from OWB's WebBeansConfigurationListener
- try {
- if (startup == null) {
- //this should only be used for servlet tests
- StartupObject startupObject = new StartupObject(new AppContext("none", SystemInstance.get(), Thread.currentThread().getContextClassLoader(), null, null, true), new AppInfo(),
- Collections.<BeanContext> emptyList());
- lifecycle.startApplication(startupObject);
- //lifecycle.startServletContext((ServletContext)startup);
- } else if (startup instanceof StartupObject) {
- lifecycle.startApplication(startup);
- //((StartupObject)startup).getAppContext().setWebBeansContext(webBeansContext);
- }
- } catch (Exception e) {
- //logger.error(OWBLogConst.ERROR_0018, event.getServletContext().getContextPath());
- WebBeansUtil.throwRuntimeExceptions(e);
+ if (startup == null) {
+ //this should only be used for servlet tests
+ StartupObject startupObject = new StartupObject(new AppContext("none", SystemInstance.get(), Thread.currentThread().getContextClassLoader(), null, null, true), new AppInfo(),
+ Collections.<BeanContext> emptyList());
+ lifecycle.startApplication(startupObject);
+ //lifecycle.startServletContext((ServletContext)startup);
+ } else if (startup instanceof StartupObject) {
+ lifecycle.startApplication(startup);
+ //((StartupObject)startup).getAppContext().setWebBeansContext(webBeansContext);
}
-
+ } catch (Exception e) {
+ //logger.error(OWBLogConst.ERROR_0018, event.getServletContext().getContextPath());
+ WebBeansUtil.throwRuntimeExceptions(e);
} finally {
GeronimoSingletonService.contextExited(oldContext);
}
return webBeansContext;
}
- public static void initializeServletContext(WebBeansContext webBeansContext, ServletContext servletContext) {
+ public static ScheduledExecutorService initializeServletContext(WebBeansContext webBeansContext, ServletContext servletContext) {
WebBeansContext oldContext = GeronimoSingletonService.contextEntered(webBeansContext);
try {
OpenEJBLifecycle lifecycle = (OpenEJBLifecycle) webBeansContext.getService(ContainerLifecycle.class);
- lifecycle.startServletContext(servletContext);
+ //lifecycle.startServletContext(servletContext);
+ //startServletContext will eventually call the static method initializeServletContext, which will return a ThreadPool reference
+ //We do need to keep that reference to prevent the thread leak
+ return OpenEJBLifecycle.initializeServletContext(servletContext, webBeansContext);
} finally {
GeronimoSingletonService.contextExited(oldContext);
}
Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/ThreadSingletonServiceAdapter.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/ThreadSingletonServiceAdapter.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/ThreadSingletonServiceAdapter.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/ThreadSingletonServiceAdapter.java Tue Nov 1 14:49:29 2011
@@ -29,7 +29,7 @@ import org.apache.webbeans.config.WebBea
*/
public class ThreadSingletonServiceAdapter implements ThreadSingletonService {
- private final GeronimoSingletonService geronimoSingletonService = new GeronimoSingletonService();
+ private final GeronimoSingletonService geronimoSingletonService = GeronimoSingletonService.getInstance();
public ThreadSingletonServiceAdapter() {
super();
@@ -75,4 +75,8 @@ public class ThreadSingletonServiceAdapt
public void clear(Object key) {
geronimoSingletonService.clear(key);
}
+
+ public GeronimoSingletonService getGeronimoSingletonService() {
+ return geronimoSingletonService;
+ }
}
Modified: geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/pom.xml?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/pom.xml (original)
+++ geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/pom.xml Tue Nov 1 14:49:29 2011
@@ -51,7 +51,13 @@
<artifactId>geronimo-openejb</artifactId>
<version>${project.version}</version>
</dependency>
-
+
+ <dependency>
+ <groupId>org.apache.geronimo.modules</groupId>
+ <artifactId>geronimo-openwebbeans</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
<dependency>
<groupId>org.apache.geronimo.modules</groupId>
<artifactId>geronimo-naming-builder</artifactId>
Modified: geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/src/main/java/org/apache/geronimo/openwebbeans/deployment/OpenWebBeansModuleBuilderExtension.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/src/main/java/org/apache/geronimo/openwebbeans/deployment/OpenWebBeansModuleBuilderExtension.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/src/main/java/org/apache/geronimo/openwebbeans/deployment/OpenWebBeansModuleBuilderExtension.java (original)
+++ geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/src/main/java/org/apache/geronimo/openwebbeans/deployment/OpenWebBeansModuleBuilderExtension.java Tue Nov 1 14:49:29 2011
@@ -23,7 +23,6 @@ import java.lang.reflect.Member;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -53,10 +52,14 @@ import org.apache.geronimo.j2ee.deployme
import org.apache.geronimo.j2ee.deployment.NamingBuilder;
import org.apache.geronimo.j2ee.deployment.WebModule;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
import org.apache.geronimo.kernel.Naming;
import org.apache.geronimo.kernel.config.ConfigurationStore;
import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.geronimo.openejb.cdi.WebBeansConfigurationListener;
+import org.apache.geronimo.openwebbeans.OpenWebBeansWebAppContext;
+import org.apache.geronimo.openwebbeans.OpenWebBeansWebModuleListener;
+import org.apache.geronimo.openwebbeans.WebBeansConfigurationListener;
+import org.apache.geronimo.web.WebApplicationConstants;
import org.apache.geronimo.web.info.WebAppInfo;
import org.apache.openejb.jee.WebApp;
import org.apache.xbean.finder.AbstractFinder;
@@ -89,6 +92,8 @@ public class OpenWebBeansModuleBuilderEx
//this is the geronimo copy
private static final String CONTEXT_LISTENER_NAME = WebBeansConfigurationListener.class.getName();
+ private static final String WEB_MODULE_LISTENER_NAME = OpenWebBeansWebModuleListener.class.getName();
+
public OpenWebBeansModuleBuilderExtension(
@ParamAttribute(name = "defaultEnvironment") Environment defaultEnvironment,
@ParamAttribute(name = "jsfPluginEnvironment") Environment jsfPluginEnvironment,
@@ -100,13 +105,12 @@ public class OpenWebBeansModuleBuilderEx
public void createModule(Module module, Bundle bundle, Naming naming, ModuleIDBuilder idBuilder)
throws DeploymentException {
- if (!(module instanceof WebModule) /*|| !hasBeanXml(module)*/) {
+ if (!(module instanceof WebModule)) {
// not a web module, nothing to do
return;
}
-
- EnvironmentBuilder.mergeEnvironments(module.getEnvironment(), defaultEnvironment);
if(hasBeanXml(module)){
+ EnvironmentBuilder.mergeEnvironments(module.getEnvironment(), defaultEnvironment);
EnvironmentBuilder.mergeEnvironments(module.getEnvironment(), jsfPluginEnvironment);
}
}
@@ -114,13 +118,12 @@ public class OpenWebBeansModuleBuilderEx
public void createModule(Module module, Object plan, JarFile moduleFile, String targetPath, URL specDDUrl,
Environment environment, Object moduleContextInfo, AbstractName earName, Naming naming,
ModuleIDBuilder idBuilder) throws DeploymentException {
- if (!(module instanceof WebModule) /*|| !hasBeanXml(module)*/) {
+ if (!(module instanceof WebModule)) {
// not a web module, nothing to do
return;
- }
-
- EnvironmentBuilder.mergeEnvironments(module.getEnvironment(), defaultEnvironment);
+ }
if(hasBeanXml(module)){
+ EnvironmentBuilder.mergeEnvironments(module.getEnvironment(), defaultEnvironment);
EnvironmentBuilder.mergeEnvironments(module.getEnvironment(), jsfPluginEnvironment);
}
}
@@ -138,23 +141,30 @@ public class OpenWebBeansModuleBuilderEx
// not a web module, nothing to do
return;
}
+ if (!hasBeansXml(bundle)) {
+ return;
+ }
WebModule webModule = (WebModule) module;
-
-// if (!hasBeansXml(bundle)) {
-// return;
-// }
-
EARContext moduleContext = module.getEarContext();
Map sharedContext = module.getSharedContext();
- //add the ServletContextListener to the web app context
+
GBeanData webAppData = (GBeanData) sharedContext.get(WebModule.WEB_APP_DATA);
- // add myfaces listener
+ Map<String, Object> deploymentAttributes = (Map<String, Object>)webAppData.getAttribute("deploymentAttributes");
+ List<String> webModuleListenerClassNames = (List<String>) deploymentAttributes.get(WebApplicationConstants.WEB_MODULE_LISTENERS);
+ if (webModuleListenerClassNames == null) {
+ webModuleListenerClassNames = new ArrayList<String>();
+ deploymentAttributes.put(WebApplicationConstants.WEB_MODULE_LISTENERS, webModuleListenerClassNames);
+ }
+ webModuleListenerClassNames.add(WEB_MODULE_LISTENER_NAME);
+
+
+ // add OpenWebBeans Lifcycle listener
WebAppInfo webAppInfo = (WebAppInfo) webAppData.getAttribute("webAppInfo");
if (webAppInfo != null && !webAppInfo.listeners.contains(CONTEXT_LISTENER_NAME)) {
webAppInfo.listeners.add(0, CONTEXT_LISTENER_NAME);
}
- AbstractName moduleName = moduleContext.getModuleName();
+ AbstractName moduleName = module.getModuleName();
Map<EARContext.Key, Object> buildingContext = new HashMap<EARContext.Key, Object>();
buildingContext.put(NamingBuilder.GBEAN_NAME_KEY, moduleName);
@@ -170,18 +180,20 @@ public class OpenWebBeansModuleBuilderEx
webModule.setClassFinder(classFinder);
namingBuilders.buildNaming(webApp, geronimoWebApp, webModule, buildingContext);
webModule.setClassFinder(originalFinder);
-
-// AbstractName webBeansGBeanName = moduleContext.getNaming().createChildName(moduleName, "webbeans-lifecycle", "webbeans");
-// GBeanData providerData = new GBeanData(webBeansGBeanName, OpenWebBeansGBean.class);
-// try {
-// moduleContext.addGBean(providerData);
-// } catch (GBeanAlreadyExistsException e) {
-// throw new DeploymentException("Duplicate webbean config gbean in web module", e);
-// }
-
- //make the web app start second after the webbeans machinery
-// webAppData.addDependency(webBeansGBeanName);
+ AbstractName openWebBeansWebAppContextGBeanName = moduleContext.getNaming().createChildName(moduleName, "OpenWebBeansWebAppContext", "OpenWebBeansWebAppContext");
+ GBeanData openWebBeansWebAppContextGBean = new GBeanData(openWebBeansWebAppContextGBeanName, OpenWebBeansWebAppContext.class);
+ try {
+ openWebBeansWebAppContextGBean.setAttribute("holder", holder);
+ AbstractName sharedOwbContextName = EARContext.APPINFO_GBEAN_NAME_KEY.get(earContext.getGeneralData());
+ if (sharedOwbContextName != null) {
+ openWebBeansWebAppContextGBean.setReferencePattern("SharedOwbContext", sharedOwbContextName);
+ }
+ moduleContext.addGBean(openWebBeansWebAppContextGBean);
+ webAppData.addDependency(openWebBeansWebAppContextGBeanName);
+ } catch (GBeanAlreadyExistsException e) {
+ throw new DeploymentException("Duplicate webbean config gbean in web module", e);
+ }
}
private boolean hasBeansXml(Bundle bundle) {
@@ -214,7 +226,7 @@ public class OpenWebBeansModuleBuilderEx
ServiceReference reference = bundle.getBundleContext().getServiceReference(PackageAdmin.class.getName());
try {
PackageAdmin packageAdmin = (PackageAdmin) bundle.getBundleContext().getService(reference);
-
+
//1. Generated the jar file list, which contains META-INF/beans.xml file
final Set<String> annotationScanRequiredJarFiles = new HashSet<String>();
String moduleNamePrefix = webModule.isStandAlone() ? "" : webModule.getTargetPath() + "/";
@@ -252,7 +264,7 @@ public class OpenWebBeansModuleBuilderEx
return true;
}
});
-
+
final String webInfClassesFolder = moduleNamePrefix + "WEB-INF/classes/";
final boolean webInfClassesScanRequired = bundle.getEntry(moduleNamePrefix + "WEB-INF/beans.xml") != null;
@@ -260,7 +272,7 @@ public class OpenWebBeansModuleBuilderEx
BundleAnnotationFinder bundleAnnotationFinder = new BundleAnnotationFinder(packageAdmin, bundle, new ResourceDiscoveryFilter() {
@Override
- public boolean directoryDiscoveryRequired(String directory) {
+ public boolean directoryDiscoveryRequired(String directory) {
return directory.equals(webInfClassesFolder) && webInfClassesScanRequired;
}
@@ -305,5 +317,5 @@ public class OpenWebBeansModuleBuilderEx
bundle.getBundleContext().ungetService(reference);
}
}
-
+
}
Modified: geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/src/test/java/org/apache/geronimo/openwebbeans/deployment/BasicTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/src/test/java/org/apache/geronimo/openwebbeans/deployment/BasicTest.java?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/src/test/java/org/apache/geronimo/openwebbeans/deployment/BasicTest.java (original)
+++ geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans-builder/src/test/java/org/apache/geronimo/openwebbeans/deployment/BasicTest.java Tue Nov 1 14:49:29 2011
@@ -20,11 +20,7 @@
package org.apache.geronimo.openwebbeans.deployment;
-import java.util.Collections;
-
import junit.framework.TestCase;
-import org.apache.geronimo.gbean.GBeanInfo;
-import org.apache.geronimo.j2ee.deployment.NamingBuilderCollection;
/**
* @version $Rev: 741679 $ $Date: 2009-02-06 11:07:17 -0800 (Fri, 06 Feb 2009) $
Modified: geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/pom.xml?rev=1196032&r1=1196031&r2=1196032&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/pom.xml (original)
+++ geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/pom.xml Tue Nov 1 14:49:29 2011
@@ -34,122 +34,31 @@
<name>Geronimo Plugins, OpenWebBeans :: Core</name>
<dependencies>
-
<dependency>
<groupId>org.apache.geronimo.modules</groupId>
- <artifactId>geronimo-j2ee</artifactId>
+ <artifactId>geronimo-web</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.framework</groupId>
- <artifactId>geronimo-naming</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.geronimo.framework</groupId>
- <artifactId>geronimo-security</artifactId>
+ <groupId>org.apache.geronimo.modules</groupId>
+ <artifactId>geronimo-openejb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-annotation_1.1_spec</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-atinject_1.0_spec</artifactId>
</dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-el_2.2_spec</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-interceptor_1.1_spec</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jaxws_2.2_spec</artifactId>
- </dependency>
<dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jcdi_1.0_spec</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jpa_2.0_spec</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jsp_2.2_spec</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jta_1.1_spec</artifactId>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-servlet_3.0_spec</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-validation_1.0_spec</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.bundles</groupId>
- <artifactId>myfaces-bundle</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.bundles</groupId>
- <artifactId>jstl</artifactId>
- </dependency>
-
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.servicemix.bundles</groupId>
- <artifactId>org.apache.servicemix.bundles.commons-codec</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.bundles</groupId>
- <artifactId>commons-digester</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.bundles</groupId>
- <artifactId>commons-discovery</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.servicemix.bundles</groupId>
- <artifactId>org.apache.servicemix.bundles.dom4j</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.servicemix.bundles</groupId>
- <artifactId>org.apache.servicemix.bundles.javassist</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.bundles</groupId>
- <artifactId>scannotation</artifactId>
</dependency>
<dependency>
@@ -171,15 +80,16 @@
<groupId>org.apache.openwebbeans</groupId>
<artifactId>openwebbeans-impl</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.openwebbeans</groupId>
- <artifactId>openwebbeans-jsf</artifactId>
- </dependency>
+
<dependency>
<groupId>org.apache.openwebbeans</groupId>
<artifactId>openwebbeans-ee</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-loader</artifactId>
+ </dependency>
</dependencies>
<build>
<plugins>
@@ -188,7 +98,7 @@
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
- <Export-SPI-Provider>org.apache.geronimo.openejb.cdi.WebBeansConfigurationListener</Export-SPI-Provider>
+ <Export-SPI-Provider>org.apache.geronimo.openwebbeans.WebBeansConfigurationListener</Export-SPI-Provider>
</instructions>
</configuration>
</plugin>
Added: geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansHolderInterceptor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansHolderInterceptor.java?rev=1196032&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansHolderInterceptor.java (added)
+++ geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansHolderInterceptor.java Tue Nov 1 14:49:29 2011
@@ -0,0 +1,55 @@
+/**
+ * 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.openwebbeans;
+
+import org.apache.geronimo.j2ee.annotation.Holder;
+import org.apache.geronimo.j2ee.annotation.Holder.InterceptorException;
+import org.apache.geronimo.j2ee.annotation.Holder.InvocationContext;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.inject.OWBInjector;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class OpenWebBeansHolderInterceptor implements Holder.Interceptor {
+
+ private final WebBeansContext webBeansContext;
+
+ public OpenWebBeansHolderInterceptor(WebBeansContext webBeansContext) {
+ this.webBeansContext = webBeansContext;
+ }
+
+ @Override
+ public void instancerCreated(InvocationContext context) throws InterceptorException {
+ OWBInjector beanInjector = new OWBInjector(webBeansContext);
+ try {
+ beanInjector.inject(context.getInstance());
+ } catch (Exception e) {
+ throw new InterceptorException("web beans injection problem", e);
+ }
+ }
+
+ @Override
+ public void instanceDestoryed(InvocationContext context) throws InterceptorException {
+ }
+
+ @Override
+ public void postConstructInvoked(InvocationContext context) throws InterceptorException {
+ }
+
+}
Added: geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansSystemInitializer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansSystemInitializer.java?rev=1196032&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansSystemInitializer.java (added)
+++ geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansSystemInitializer.java Tue Nov 1 14:49:29 2011
@@ -0,0 +1,60 @@
+/**
+ * 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.openwebbeans;
+
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.openejb.cdi.ThreadSingletonServiceAdapter;
+import org.apache.openejb.cdi.ThreadSingletonService;
+import org.apache.openejb.loader.SystemInstance;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@GBean(name = "OpenWebBeansSystemInitializer")
+public class OpenWebBeansSystemInitializer implements GBeanLifecycle {
+
+ @Override
+ public void doFail() {
+ try {
+ doStop();
+ } catch (Exception e) {
+ }
+ }
+
+ @Override
+ public void doStart() throws Exception {
+ ThreadSingletonServiceAdapter adapter = getThreadSingletonServiceAdapter();
+ if (adapter != null) {
+ adapter.getGeronimoSingletonService().setWebApplicationSingletonService(new WebApplicationNameBasedSingletonService());
+ }
+ }
+
+ @Override
+ public void doStop() throws Exception {
+ ThreadSingletonServiceAdapter adapter = getThreadSingletonServiceAdapter();
+ if (adapter != null) {
+ adapter.getGeronimoSingletonService().setWebApplicationSingletonService(null);
+ }
+ }
+
+ private ThreadSingletonServiceAdapter getThreadSingletonServiceAdapter() {
+ ThreadSingletonService threadSingletonService = SystemInstance.get().getComponent(ThreadSingletonService.class);
+ return (threadSingletonService instanceof ThreadSingletonServiceAdapter) ? (ThreadSingletonServiceAdapter) threadSingletonService : null;
+ }
+}
Added: geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansWebAppContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansWebAppContext.java?rev=1196032&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansWebAppContext.java (added)
+++ geronimo/server/trunk/plugins/openwebbeans/geronimo-openwebbeans/src/main/java/org/apache/geronimo/openwebbeans/OpenWebBeansWebAppContext.java Tue Nov 1 14:49:29 2011
@@ -0,0 +1,121 @@
+/**
+ * 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.openwebbeans;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.ParamReference;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.j2ee.annotation.Holder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.openejb.cdi.OpenWebBeansWebInitializer;
+import org.apache.geronimo.openejb.cdi.SharedOwbContext;
+import org.apache.webbeans.config.WebBeansContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@GBean(name = "OpenWebBeansContext")
+public class OpenWebBeansWebAppContext implements GBeanLifecycle {
+
+ private static final Logger logger = LoggerFactory.getLogger(OpenWebBeansWebAppContext.class);
+
+ private static final Map<String, OpenWebBeansWebAppContext> OPENWEBBEANS_WEBAPP_CONTEXTS = new ConcurrentHashMap<String, OpenWebBeansWebAppContext>();
+
+ private final Holder holder;
+
+ private final SharedOwbContext sharedOwbContext;
+
+ private final AbstractName abName;
+
+ private WebBeansContext webBeansContext;
+
+ private final boolean shareableWebBeansContext;
+
+ public OpenWebBeansWebAppContext(@ParamAttribute(name = "holder") Holder holder,
+ @ParamReference(name = "SharedOwbContext") SharedOwbContext sharedOwbContext,
+ @ParamSpecial(type = SpecialAttributeType.abstractName) AbstractName abName) {
+ this.holder = holder;
+ this.sharedOwbContext = sharedOwbContext;
+ webBeansContext = sharedOwbContext == null ? null : sharedOwbContext.getOWBContext();
+ if (webBeansContext == null) {
+ if (logger.isDebugEnabled()) {
+ if (sharedOwbContext == null) {
+ logger.debug("SharedOwbContext is null, web application {} will create its own WebBeansContext", abName.toString());
+ } else {
+ logger.debug("No WebBeansContext is configured in SharedOwbContext, web application {} will create its own WebBeansContext", abName.toString());
+ }
+ }
+ shareableWebBeansContext = false;
+ webBeansContext = OpenWebBeansWebInitializer.newWebBeansContext(null);
+ } else {
+ shareableWebBeansContext = true;
+ }
+ this.abName = abName;
+ }
+
+ @Override
+ public void doFail() {
+ try {
+ doStop();
+ } catch (Exception e) {
+ }
+ }
+
+ @Override
+ public void doStart() throws Exception {
+ OPENWEBBEANS_WEBAPP_CONTEXTS.put(getWebModuleName(), this);
+ }
+
+ @Override
+ public void doStop() throws Exception {
+ OPENWEBBEANS_WEBAPP_CONTEXTS.remove(getWebModuleName());
+ }
+
+ public Holder getHolder() {
+ return holder;
+ }
+
+ public SharedOwbContext getSharedOwbContext() {
+ return sharedOwbContext;
+ }
+
+ public String getWebModuleName() {
+ return abName.getNameProperty(NameFactory.WEB_MODULE);
+ }
+
+ public WebBeansContext getWebBeansContext() {
+ return webBeansContext;
+ }
+
+ public boolean isShareableWebBeansContext() {
+ return shareableWebBeansContext;
+ }
+
+ public static OpenWebBeansWebAppContext getOpenWebBeansWebAppContext(String moduleName) {
+ return OPENWEBBEANS_WEBAPP_CONTEXTS.get(moduleName);
+ }
+}