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

Bauke Scholtz commented on OWB-1123:
------------------------------------

I've finally nailed it. It's not caused by OWB, but by MyFaces. Its 
[ViewScopeContextualStorage|http://grepcode.com/file_/repo1.maven.org/maven2/org.apache.myfaces.core/myfaces-impl/2.2.8/org/apache/myfaces/cdi/view/ViewScopeContextualStorage.java/?v=source
 is stored in session, but it has a non-transient BeanManager property. The 
BeanManager interface is not declared to be Serializable. In Weld, the 
BeanManagerImpl is Serializable, but not in OWB. So I gather this is a bug in 
MyFaces. If you agree this is a bug in MyFaces, I will report over there.

I've boiled down the smallest possible reproducer: just have a {{@Named 
@javax.faces.view.ViewScoped}} bean and reference it in a JSF page.

{code}
@Named
@ViewScoped
public class Bean implements Serializable {}
{code}

{code}
<!DOCTYPE html>
#{bean}
{code}

> 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