Hi,
Session replication is still not working. Just tested my application(JSF 2.0,
EJB, CDI, CODI) and got exception after TomEE has tried to replicate the
session.
I would like to reproduce this exception in test app, but have no idea how to
do it.
Could you also please summarize, which properties in system.properties should I
set, to get replication working?
SEVERE: Manager [/CDP_v10]: Unable to receive message through TCP channel
java.lang.RuntimeException: by java.lang.NoClassDefFoundError:
org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/spi/EditableWindowContext
at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:515)
at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:492)
at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:428)
at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:420)
at
javassist.util.proxy.SerializedProxy.readResolve(SerializedProxy.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1091)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1780)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at
java.util.concurrent.ConcurrentHashMap.readObject(ConcurrentHashMap.java:1557)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at
java.util.concurrent.ConcurrentHashMap.readObject(ConcurrentHashMap.java:1557)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at
java.util.concurrent.ConcurrentHashMap.readObject(ConcurrentHashMap.java:1557)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at
org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.readExternal(DeltaRequest.java:378)
at
org.apache.catalina.ha.session.DeltaRequest.readExternal(DeltaRequest.java:268)
at
org.apache.catalina.ha.session.DeltaManager.deserializeDeltaRequest(DeltaManager.java:604)
at
org.apache.catalina.ha.session.DeltaManager.handleSESSION_DELTA(DeltaManager.java:1346)
at
org.apache.catalina.ha.session.DeltaManager.messageReceived(DeltaManager.java:1293)
at
org.apache.catalina.ha.session.DeltaManager.messageDataReceived(DeltaManager.java:1014)
at
org.apache.catalina.ha.session.ClusterSessionListener.messageReceived(ClusterSessionListener.java:92)
at
org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:924)
at
org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:905)
at
org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:278)
at
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:84)
at
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:84)
at
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageReceived(TcpFailureDetector.java:114)
at
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:84)
at
org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelCoordinator.java:253)
at
org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(ReceiverBase.java:287)
at
org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel(NioReplicationTask.java:212)
at
org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicationTask.java:101)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: javassist.CannotCompileException: by java.lang.NoClassDefFoundError:
org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/spi/EditableWindowContext
at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:170)
at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:507)
... 95 more
Caused by: java.lang.NoClassDefFoundError:
org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/spi/EditableWindowContext
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javassist.util.proxy.FactoryHelper.toClass2(FactoryHelper.java:182)
at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:164)
... 96 more
Caused by: java.lang.ClassNotFoundException:
org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.EditableWindowContext
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 103 more
-----Ursprüngliche Nachricht-----
Von: Romain Manni-Bucau [mailto:[email protected]]
Gesendet: Freitag, 4. Januar 2013 15:57
An: [email protected]
Betreff: Re: AW: Passivation capable CDI beans replication across cluster does
not work
this issue should be fixed on trunk + it should work without the wrapper
property now
Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau
2013/1/4 <[email protected]>:
> Just tested with snapshot 1.5.2-20130104.041348-22:
> -Dtomee.session-context.wrapper=http only - no effect both
> -Dtomee.session-context.wrapper=http and -Dopenejb.session-context=http - got
> exception:
>
> java.lang.ClassCastException: java.lang.String cannot be cast to
> javax.enterprise.context.spi.Contextual
>
> org.apache.tomee.catalina.cdi.SessionContextBackedByHttpSession.key(SessionContextBackedByHttpSession.java:62)
>
> org.apache.tomee.catalina.cdi.SessionContextBackedByHttpSession.access$000(SessionContextBackedByHttpSession.java:21)
>
> org.apache.tomee.catalina.cdi.SessionContextBackedByHttpSession$HttpSessionMap.get(SessionContextBackedByHttpSession.java:223)
>
> org.apache.tomee.catalina.cdi.SessionContextBackedByHttpSession$HttpSessionMap.putIfAbsent(SessionContextBackedByHttpSession.java:249)
>
> org.apache.tomee.catalina.cdi.SessionContextBackedByHttpSession$HttpSessionMap.putIfAbsent(SessionContextBackedByHttpSession.java:164)
>
> org.apache.webbeans.context.AbstractContext.createContextualBag(AbstractContext.java:82)
>
> org.apache.webbeans.context.AbstractContext.initContextualBag(AbstractContext.java:72)
>
> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.initiateBeanBag(NormalScopedBeanInterceptorHandler.java:73)
>
> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.<init>(NormalScopedBeanInterceptorHandler.java:62)
>
> org.apache.webbeans.proxy.ProxyFactory.createInterceptorHandler(ProxyFactory.java:282)
>
> org.apache.webbeans.proxy.ProxyFactory.createNormalScopedBeanProxy(ProxyFactory.java:225)
>
> org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:850)
>
> org.apache.webbeans.container.InjectableBeanManager.getReference(InjectableBeanManager.java:135)
>
> org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider.getReference(BeanManagerProvider.java:216)
>
> org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider.getContextualReference(BeanManagerProvider.java:176)
>
> org.apache.myfaces.extensions.cdi.jsf2.impl.listener.phase.CodiLifecycleWrapper.broadcastBeforeFacesRequestEvent(CodiLifecycleWrapper.java:157)
>
> org.apache.myfaces.extensions.cdi.jsf2.impl.listener.phase.CodiLifecycleWrapper.execute(CodiLifecycleWrapper.java:81)
> javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
>
> -----Ursprüngliche Nachricht-----
> Von: Romain Manni-Bucau [mailto:[email protected]]
> Gesendet: Freitag, 4. Januar 2013 14:00
> An: [email protected]
> Betreff: Re: AW: Passivation capable CDI beans replication across
> cluster does not work
>
> did you try adding:
>
> -Dtomee.session-context.wrapper=http?
>
> Romain Manni-Bucau
> Twitter: @rmannibucau
> Blog: http://rmannibucau.wordpress.com/
> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> Github: https://github.com/rmannibucau
>
>
>
> 2013/1/4 <[email protected]>:
>> But Apache CODI uses session to save its Conversation and Window Scopes (and
>> I can see relevant attributes in session of first node which are not
>> replicated to second node).
>> Furthermore CODI scopes are replicated in another application servers which
>> uses same technology stack(like IBM Websphere 8).
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Romain Manni-Bucau [mailto:[email protected]]
>> Gesendet: Donnerstag, 3. Januar 2013 21:41
>> An: [email protected]
>> Betreff: Re: AW: Passivation capable CDI beans replication across
>> cluster does not work
>>
>> Only the sessionscoped beans are replicated through tomcat session...other
>> scoped are not (depend on the impl which probably doesnt use the session to
>> store instances) Le 3 janv. 2013 19:49, <[email protected]> a
>> écrit :
>>
>>> Hi,
>>>
>>> I have just uploaded test project reproducing the problem:
>>> https://github.com/eiskonzept/tomee/
>>> I have not reproduced exception, but WindowScoped beans are not
>>> replicated(without exception)
>>>
>>> To reproduce the problem:
>>> 1. Start two tomee instances:
>>> mvn clean package tomee:start -P node1
>>> mvn clean package tomee:start -P node2 2. Open index.xhtml
>>> in test application context:
>>> http://localhost:8080/tomee_replication-1.0/index.xhtml
>>> 3. Check created session in manager application of first node:
>>> http://localhost:8080/manager/html/sessions
>>>
>>> There is parameter with something like this in its name:
>>> "org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.EditableWindowContextManagerProxy"
>>> 4. Check replicated session in manager application of second node:
>>> http://localhost:8081/manager/html/sessions
>>>
>>> There is no such parameter.
>>>
>>>
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Romain Manni-Bucau [mailto:[email protected]]
>>> Gesendet: Donnerstag, 3. Januar 2013 15:38
>>> An: [email protected]
>>> Betreff: Re: Passivation capable CDI beans replication across
>>> cluster does not work
>>>
>>> Hi,
>>>
>>> is it possible for you to share a project reproducing it?
>>>
>>> the best would be a maven project with the tomee maven plugin
>>> configured
>>>
>>> about failoverservice it is off by default and can be configured on
>>> trunk (
>>> https://issues.apache.org/jira/browse/TOMEE-698)
>>>
>>> Romain Manni-Bucau
>>> Twitter: @rmannibucau
>>> Blog: http://rmannibucau.wordpress.com/
>>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>>> Github: https://github.com/rmannibucau
>>>
>>>
>>>
>>> 2013/1/2 <[email protected]>:
>>> > cannot load the class
>>>