[ 
https://issues.apache.org/jira/browse/OWB-1123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15435779#comment-15435779
 ] 

Adam Cornett commented on OWB-1123:
-----------------------------------

Versions (snapshots pulled down at Aug 24 20:30 UTC)
 - TomEE Plus 7.0.2-SNAPSHOT
 - OWB 1.6.4-SNAPSHOT
 - MyFaces 2.2.11-SNAPSHOT

I have native tomcat clustering/session replication setup and when accessing a 
page with a @ViewScoped bean I get the following error on the system which is 
receiving the session update:

{noformat}
2016-08-24 21:43:02.322 [Tribes-Task-Receiver[test.local-Channel]-6] ERROR 
org.apache.catalina.ha.session.DeltaManager - Manager []: Unable to receive 
message through TCP channel
java.io.NotSerializableException: Failure during de-serialisation: Cannot load 
Bean with passivationId 
org.apache.myfaces.cdi.view.ViewScopeContextExtension@71bc6914Base Type : class 
org.apache.myfaces.cdi.view.
ApplicationContextBean,Type Closures : null,Annotations : 
[@javax.enterprise.context.ApplicationScoped()]OWB_DEFAULT_KEY
        at 
org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.readResolve(NormalScopedBeanInterceptorHandler.java:127)
        at sun.reflect.GeneratedMethodAccessor153.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1148)
        at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1817)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
        at 
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942)
        at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
        at 
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942)
        at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
        at java.util.HashMap.readObject(HashMap.java:1404)
        at sun.reflect.GeneratedMethodAccessor156.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909)
        at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
        at 
org.apache.webbeans.context.PassivatingContext.readExternal(PassivatingContext.java:54)
        at 
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1849)
        at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1806)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
        at 
org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.readExternal(DeltaRequest.java:387)
        at 
org.apache.catalina.ha.session.DeltaRequest.readExternal(DeltaRequest.java:277)
        at 
org.apache.catalina.ha.session.DeltaManager.deserializeDeltaRequest(DeltaManager.java:573)
        at 
org.apache.catalina.ha.session.DeltaManager.handleSESSION_DELTA(DeltaManager.java:1245)
        at 
org.apache.catalina.ha.session.DeltaManager.messageReceived(DeltaManager.java:1189)
        at 
org.apache.catalina.ha.session.DeltaManager.messageDataReceived(DeltaManager.java:929)
        at 
org.apache.catalina.ha.session.ClusterSessionListener.messageReceived(ClusterSessionListener.java:77)
        at 
org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:783)
        at 
org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:764)
        at 
org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:300)
        at 
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:83)
        at 
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:83)
        at 
org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor.messageReceived(ThroughputInterceptor.java:91)
        at 
org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:83)
        at 
org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelCoordinator.java:276)
        at 
org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(ReceiverBase.java:244)
        at 
org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel(NioReplicationTask.java:213)
        at 
org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicationTask.java:101)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
{noformat}

So it looks like the @ApplicationScoped MyFaces ApplicationContextBean isn't 
showing up in the passivationBeans map of the remote BeanManagerImpl when OWB 
is trying to de-serialize the incoming data.  
I'd be glad to provide more testing assistance or try patches if needed.

> NPE at NormalScopeProxyFactory.createNormalScopeProxy during deserialization
> ----------------------------------------------------------------------------
>
>                 Key: OWB-1123
>                 URL: https://issues.apache.org/jira/browse/OWB-1123
>             Project: OpenWebBeans
>          Issue Type: Bug
>    Affects Versions: 1.6.2
>         Environment: TomEE 7.0.0.M2
>            Reporter: Bauke Scholtz
>            Assignee: Mark Struberg
>
> Imagine a session scoped bean which has an application scoped bean injected 
> as property and it's being referenced in {{readObject()}}.
> {code}
> @SessionScoped
> public class SessionScopedBean {
>     @Inject
>     private ApplicationScopedBean appBean;
>     private void readObject(ObjectInputStream input) throws IOException, 
> ClassNotFoundException {
>         appBean.doSomething();
>     }
> }
> {code}
> OWB 1.6.2 as used in TomEE 7.0.0.M2 throws below exception when TomEE is 
> restarted with session persistence (and above bean is created during that 
> session):
> {code}
> java.lang.NullPointerException
>     at 
> org.apache.webbeans.proxy.NormalScopeProxyFactory.createNormalScopeProxy(NormalScopeProxyFactory.java:121)
>     at 
> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.readResolve(NormalScopedBeanInterceptorHandler.java:125)
> {code}
> It works fine in all Weld 2.x versions I tested so far (WF8/9/10, PY4 and 
> "plain" Tomcat8+Weld 2.3.0).
> Work around would be to use a static method on application scoped bean, but 
> this is not nice.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to