JSF1.2 seam2 websphere 8.5.5 NullPointerException

问题描述 投票:0回答:1

我们在 WebSphere 7 上部署了应用程序。我们想将其迁移到 8.5.5.18。

我们在 2.0.2 版本中使用 JSF 1.2 和 Seam Framework。在 WebSphere 的 jsp/jsf 配置中,我们在应用程序中设置了 SunRI 1.2(就像之前在 was7 上的配置一样)。

当我们的应用程序启动时,我们从我们班级之一得到错误:

org.jboss.seam.InstantiationException:无法实例化 Seam 组件:myComponentName 在 org.jboss.seam.Component.newInstance(Component.java:1986) 在 org.jboss.seam.contexts.Contexts.startup(Contexts.java:304) 在 org.jboss.seam.contexts.Contexts.startup(Contexts.java:278) 在 org.jboss.seam.contexts.ServletLifecycle.endInitialization(ServletLifecycle.java:95)
在 com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892) 引起原因:java.lang.NullPointerException 在 com.test.MyComponentName_$$_javassist_1.init(MyComponentName_$$_javassist_1.java)

我们的组件由以下注释组成:

@Startup 
@Name("myComponentName") 
@Scope(ScopeType.APPLICATION) 

Public class MyComponentName

当我们调试时,我们注意到在应用程序范围实例化(应用程序启动)期间抛出异常:

public Object wrap(Object bean, MethodHandler interceptor) throws Exception { 
    ProxyObject proxy = (ProxyObject)this.getProxyFactory().newInstance(); 
    proxy.setHandler(interceptor); 
    return proxy; 
} 

调用 newInstance() 时,我们会得到错误消息“Method throw ‘java.lang.NullPinterException’ exception。无法评估 com.test.MyComponentName__$$__javassist_1.toString()”

我们知道我们的代码没有错误,因为它适用于 Was7。当调用 ConversationalIdGenerator 时,会话范围也会发生这种情况。

00000178 webapp E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[Faces Servlet]: java.lang.NullPointerException 在 org.jboss.seam.core.ConversationIdGenerator_$$javassist_3.getNextId(ConversationIdGenerator$$_javassist_3.java) 在 org.jboss.seam.util.Id.nextId(Id.java:10) 在 org.jboss.seam.core.Manager.generateInitialConversationId(Manager.java:536) 在 org.jboss.seam.faces.FacesManager.generateInitialConversationId(FacesManager.java:134) 在 org.jboss.seam.core.Manager.initializeTemporaryConversation(Manager.java:528) 在 org.jboss.seam.web.PatchedExceptionFilter.endWebRequestAfterException(PatchedExceptionFilter.java:105) 在 org.jboss.seam.web.PatchedExceptionFilter.doFilter(PatchedExceptionFilter.java:73)

调试时,我们注意到带有@BypassInterceptors 注释的类工作正常,因此我们假设问题出在无法实例化的 javassist 代理对象上。

我们尝试从 websphere 7 添加 javassist.jar。我们尝试添加 javassist.jar 作为独立的类加载器(有和没有改变 applicationClassLoadingMode PARENT_FIRST/PARENT_LAST)。

我们还在 Was7 和 Was8.5.5 中保存到生成的 javassist_$$ 类型为 javassist.bytecode.ClassFile 的 .class 文件,反编译后我们比较它们。没有发现差异。

在 WAS8 中,我们尝试将库从 seam 框架复制到我们的应用程序库文件夹中。

我们还通过添加 -Dibm.cl.verbose 更改了日志以扩展类加载器日志记录,但它没有提供任何其他信息。

websphere-8 jsf-1.2 javassist seam2
1个回答
0
投票

按照此 IBM KC 主题 中的说明将服务器配置为使用 JSF 的实现,而不是服务器随附的实现,特别是该主题的最后一段。

© www.soinside.com 2019 - 2024. All rights reserved.