【发布时间】:2012-07-16 00:09:24
【问题描述】:
我认为我受困于想法。我正在尝试将liferay portlet 从weblogic 移到WAS 8。在weblogic 上,我一直在使用JSF 2.0 的mojorra 实现和primefaces 作为组件库。我在 WAS 上安装了 primefaces,当我尝试移动 portlet 时,问题开始出现。
第一个问题是 WAS 不断尝试使用 myfaces 作为 JSF 实现 - 我知道这是因为 myfaces 抛出异常:
引起:java.lang.IllegalArgumentException: factoryName'javax.faces.view.facelets.FaceletCacheFactory' 在 javax.faces.FactoryFinder.checkFactoryName(FactoryFinder.java:383)
我在 maven pom.xml 文件中有以下依赖项:
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.2</version>
</dependency>
对于 WAS 应用程序,我将类加载器设置为首先加载我的类。但这没有帮助。为了确保我为服务器配置了新的类加载器 - 但情况再次重复。我的最后一个想法是将 mojarra jar 定义为共享库 - 但后来我得到了 ClassFormatException(我没有时间研究它)。
有什么想法吗?
将 mojorra 类添加到 WAR 并更改类加载器后,我遇到了异常:
[7/17/12 18:52:25:072 CEST] 0000002c 配置 E 严重错误 部署期间: com.sun.faces.config.ConfigurationException:配置失败! factoryName 'javax.faces.view.facelets.FaceletCacheFactory' 在 com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:375) 在 com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:225) 在 com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1649) 在 com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:410)
我跟踪了异常,发现只有 myfaces 实现中的 factoryfinder 可能我应该向项目添加其他依赖项,除了已经存在的依赖项(jsf-api、jsf-impl)?
在将 jsf 库指定为共享库并将它们作为对我的战争的引用之后 - 初始化成功,没有任何错误 - 另一个问题是现在 liferay 正在抛出异常:
01:21:16,956 错误 [LiferayFacesContext:61] 实例未初始化 -- 调用者可能是静态的 01:21:16,960 错误 [LiferayLocalePhaseListener:87] java.lang.NullPointerException 在 com.liferay.faces.portal.lifecycle.LiferayLocalePhaseListener.setLocale (LiferayLocalePhaseListener.java:67)
也许是因为我还应该将 liferay 库定义为共享库 - 我会在几秒钟内尝试。
以下例外是:
引起:java.lang.NullPointerException at com.liferay.faces.bridge.renderkit.html_basic.HeadRendererBridgeImpl.encodeBegin (HeadRendererBridgeImpl.java:133)
不知道这两个异常是否相互关联 - 但结果是我的 portlet 无法工作:(
【问题讨论】:
-
在我的情况下 PARENT_LAST 有帮助。通过将您的 mojarra 库包含在 web-inf/lib 下并为 ear 中的模块设置 PARENT_LAST,您有什么例外?您是否在 WAS8 中使用 RAD?
标签: primefaces liferay mojarra websphere-8