You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/05/15 08:40:03 UTC
svn commit: r1482692 -
/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Author: rmannibucau
Date: Wed May 15 06:40:03 2013
New Revision: 1482692
URL: http://svn.apache.org/r1482692
Log:
TOMEE-937 eager init of local bean proxies in ear webapps to ensure deserialization can work
Modified:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1482692&r1=1482691&r2=1482692&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Wed May 15 06:40:03 2013
@@ -1111,22 +1111,7 @@ public class TomcatWebAppBuilder impleme
appContext = a.createApplication(contextInfo.appInfo, classLoader);
// todo add watched resources to context
- for (final BeanContext deployment : appContext.getBeanContexts()) {
- if (deployment.isLocalbean() && !deployment.isDynamicallyImplemented()) { // init proxy eagerly otherwise deserialization of serialized object can't work
- final List<Class> interfaces = new ArrayList<Class>(2);
- interfaces.add(Serializable.class);
- interfaces.add(IntraVmProxy.class);
- final BeanType type = deployment.getComponentType();
- if (BeanType.STATEFUL.equals(type) || BeanType.MANAGED.equals(type)) {
- interfaces.add(BeanContext.Removable.class);
- }
- try {
- LocalBeanProxyFactory.createProxy(deployment.getBeanClass(), classLoader, interfaces.toArray(new Class<?>[interfaces.size()]));
- } catch (final Exception e) {
- // no-op: as before
- }
- }
- }
+ eagerInitOfLocalBeanProxies(appContext.getBeanContexts(), classLoader);
} catch (Exception e) {
logger.error("Unable to deploy collapsed ear in war " + standardContext, e);
undeploy(standardContext, contextInfo);
@@ -1237,6 +1222,7 @@ public class TomcatWebAppBuilder impleme
new CdiBuilder().build(contextInfo.appInfo, appContext, beanContexts, webContext);
assembler.startEjbs(true, beanContexts);
assembler.bindGlobals(appContext.getBindings());
+ eagerInitOfLocalBeanProxies(beanContexts, standardContext.getLoader().getClassLoader());
}
// jndi bindings
@@ -1273,6 +1259,25 @@ public class TomcatWebAppBuilder impleme
}
}
+ private static void eagerInitOfLocalBeanProxies(final Collection<BeanContext> beans, final ClassLoader classLoader) {
+ for (final BeanContext deployment : beans) {
+ if (deployment.isLocalbean() && !deployment.isDynamicallyImplemented()) { // init proxy eagerly otherwise deserialization of serialized object can't work
+ final List<Class> interfaces = new ArrayList<Class>(2);
+ interfaces.add(Serializable.class);
+ interfaces.add(IntraVmProxy.class);
+ final BeanType type = deployment.getComponentType();
+ if (BeanType.STATEFUL.equals(type) || BeanType.MANAGED.equals(type)) {
+ interfaces.add(BeanContext.Removable.class);
+ }
+ try {
+ LocalBeanProxyFactory.createProxy(deployment.getBeanClass(), classLoader, interfaces.toArray(new Class<?>[interfaces.size()]));
+ } catch (final Exception e) {
+ // no-op: as before
+ }
+ }
+ }
+ }
+
private static Reference createReference(final ResourceBase resource) {
final Reference ref;
if (resource instanceof ContextResource) {