我认为我被这些想法所困扰。我正在尝试将liferay portlet从weblogic移动到WAS 8.在weblogic上,我一直在使用mojorra实现JSF 2.0和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 config E严重错误 部署期间: com.sun.faces.config.ConfigurationException:CONFIGURATION FAILED! factoryName'javax.faces.view.facelets.FaceletCacheFactory' 在com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:375) at 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实现的工厂查找器可能我应该在项目旁边添加其他依赖项(jsf-api,jsf-impl)?
将jsf库指定为共享库并指向它们作为我的战争的参考 - 初始化成功没有任何错误 - 其他问题是现在liferay抛出异常:
01:21:16,956 ERROR [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不起作用:(
答案 0 :(得分:1)
完全可以在WebSphere中使用一些自定义类加载器魔术。请在此处查看此主题: