Запуск приложения Primefaces (JSF2) в Websphere 6.1

Я пытался запустить свое веб-приложение на основе Primefaces на клиентской машине WAS 6.1.0.23. Я пробовал как эталонную, так и Myfaces-реализации JSF2, у последней из которых есть инструкции по установке на этой конкретной версии сервера (http://wiki.apache.org/myfaces/Websphere_Installation).

Я включил необходимые библиотеки (перечислены ниже для каждой реализации отдельно) в файле .war приложения.

Эталонная реализация

  • простые лица-5.0.jar
  • jstl-api.jar
  • jstl-impl.jar (оба 1.2.2)
  • эль-апи-2.2.jar
  • эль-импл-2.2.jar
  • эль-ри-1.0.jar
  • javax.faces.jar
  • JDK 1.5

Реализация Myfaces

  • Commons-beanutils-1.8.3.jar
  • Commons-коллекции-3.2.jar
  • общий кодек-1.3.jar
  • Commons-дайджестер-1.8.jar
  • commons-el.jar/(el-api-2.2.jar, el-impl-2.2.jar, el-ri-1.0.jar) [пробовал оба, похоже, распознается только последний]
  • мои лица API-2.1.1
  • myfaces-bundle-2.1.17.jar
  • myfaces-импл-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 привело к запуску приложения и перехвату NameNotFoundException в пространстве имен JSTL.

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, которое изменилось на использование предоставленной реализации языка выражений. За ним следует дамп System out.

<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) для работы на WAS 6.1, и каковы пошаговые инструкции для этого? Спасибо большое за помощь.

Также Н.Б. известно, что это приложение работает со всеми версиями Apache Tomcat, поддерживающими JSF2.


person hipbranch    schedule 10.07.2015    source источник


Ответы (1)


WebSphere Application Server поддерживает только Java 5, но ошибка указывает на то, что для реализации JSF (com.sun.faces.config.ConfigureListener) требуется Java 6, поскольку он пытается использовать java.util.ServiceLoader, который был добавлен только в этой версии. Вам нужно будет либо выбрать более старую реализацию JSF, либо более новую версию WebSphere Application Server (обратите внимание, что 6.1 была прекращена в 2013 году).

person Brett Kail    schedule 12.07.2015
comment
К сожалению, если бы у меня был выбор, я бы не стал использовать эту версию (или любую версию, если уж на то пошло) WebSphere, но это не тот случай. - person hipbranch; 13.07.2015
comment
Тогда вам придется выбрать более старую реализацию JSF. Я не думаю, что есть другие варианты, извините. - person Brett Kail; 18.07.2015