在Websphere 6.1

时间:2015-07-10 18:34:29

标签: java jsf-2 primefaces websphere websphere-6.1

我一直试图让基于Primefaces的Web应用程序在客户的WAS 6.1.0.23计算机上运行。我已经尝试了JSF2的引用和Myfaces实现,后者有关于在这个特定服务器版本(http://wiki.apache.org/myfaces/Websphere_Installation)上安装的说明。

我在应用程序的.war文件中包含了必要的库(下面列出了每个实现)。

参考实现

  • primefaces-5.0.jar
  • JS​​TL-api.jar文件
  • jstl-impl.jar(均为1.2.2)
  • el-api-2.2.jar
  • el-impl-2.2.jar
  • el-ri-1.0.jar
  • javax.faces.jar
  • JDK 1.5

Myfaces实现

  • 公地BeanUtils的-1.8.3.jar
  • 公地集合-3.2.jar
  • 公地编解码器-1.3.jar
  • 公地消化器-1.8.jar
  • commons-el.jar /(el-api-2.2.jar,el-impl-2.2.jar,el-ri-1.0.jar)[尝试了两者,只有后者似乎得到认可]
  • MyFaces的-API-2.1.1
  • MyFaces的束-2.1.17.jar
  • MyFaces的-IMPL-2.1.17.jar
  • JDK 1.5

我已将应用程序设置为首先加载类应用程序。

Enterprise Applications > MyWebApp_war > Manage Modules > MyWebApp.war
Class loader order:
Classes loaded with application class loader first

当使用引用实现时,我逐渐将必要的库添加到.war文件中,直到我得到一个我无法解决的异常。

[7/9/15 16:09:42:909 EDT] 00001183 WebApp        E   Exception caught while initializing context
java.lang.RuntimeException: java.lang.NoClassDefFoundError: java/util/ServiceLoader
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:280)
at com.ibm.ws.wswebcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:652)
at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish(WebApp.java:355)
at com.ibm.ws.wswebcontainer.webapp.WebApp.initialize(WebApp.java:292)
at com.ibm.ws.wswebcontainer.webapp.WebGroup.addWebApplication(WebGroup.java:92)
at com.ibm.ws.wswebcontainer.VirtualHost.addWebApplication(VirtualHost.java:157)
at com.ibm.ws.wswebcontainer.WebContainer.addWebApp(WebContainer.java:671)
at com.ibm.ws.wswebcontainer.WebContainer.addWebApplication(WebContainer.java:624)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:335)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:551)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1274)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1138)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:569)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:817)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:921)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$1.run(ApplicationMgrImpl.java:1461)
at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:4132)
at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:4229)
at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:245)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:1466)
at sun.reflect.GeneratedMethodAccessor789.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:36)
at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:243)
at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1073)
at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:954)
at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1106)
...

使用Myfaces实现,遵循相同的过程。但是,它无法使用commons-el.jar启动应用程序。因此,将其切换为el-api-2.2.jar,el-impl-2.2.jar和el-ri-1.0.jar会产生应用程序启动的结果,并在JSTL名称空间上捕获NameNotFoundException

Warning: The page /template/common/commonLayout.xhtml declares namespace http://xmlns.jcp.org/jsf/core and uses the tag f:view , but no TagLibrary associated to namespace.

以下代码段是WEB-INF / web.xml的补充,更改为使用提供的表达式语言实现。接下来是系统输出转储。

<context-param>
    <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>

抱歉,SystemOut.log太长,无法直接粘贴:http://pastebin.com/JQ2br2Dq

所以,我的问题是,有没有人成功获得在WAS 6.1上运行的基于JSF2(Primefaces)的Web应用程序,以及这样做的逐步说明是什么?非常感谢你的帮助。

另外,N.B。这个应用程序在所有支持JSF2的Apache Tomcat版本上都是已知的。

1 个答案:

答案 0 :(得分:0)

WebSphere Application Server仅支持Java 5,但该错误表明JSF实现(com.sun.faces.config.ConfigureListener)需要Java 6,因为它试图使用java.util.ServiceLoader,该版本仅在该版本中添加。您需要选择较旧的JSF实现或较新的WebSphere Application Server版本(请注意,截至2013年,6.1已停止服务)。