[
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)