簡體   English   中英

在Websphere 6.1上運行Primefaces(JSF2)應用程序

[英]Running Primefaces (JSF2) application on Websphere 6.1

我一直在嘗試使基於Primefaces的Web應用程序在客戶的WAS 6.1.0.23計算機上運行。 我已經嘗試了JSF2的參考實現和Myfaces實現,后者均具有在此特定服務器版本( http://wiki.apache.org/myfaces/Websphere_Installation )上的安裝說明。

我在應用程序的.war文件中包含了必要的庫(下面分別列出了每個實現)。

參考實現

  • primefaces-5.0.jar
  • jstl-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實施

  • commons-beanutils-1.8.3.jar
  • commons-collections-3.2.jar
  • commons-codec-1.3.jar
  • commons-digester-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-bundle-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

因此,我的問題是,是否有人成功獲得了基於JSF2的(Primefaces)Web應用程序以在WAS 6.1上運行,並且逐步說明是什么? 非常感謝您的幫助。

另外,請注意,此應用程序可用於支持JSF2的所有Apache Tomcat版本。

WebSphere Application Server僅支持Java 5,但是該錯誤表明JSF實現( com.sun.faces.config.ConfigureListener )需要Java 6,因為它試圖使用java.util.ServiceLoader ,而該java.util.ServiceLoader僅在該版本中添加。 您可能需要選擇一個較舊的JSF實現或一個較新的WebSphere Application Server版本(請注意6.1從2013年開始停止服務)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM