【发布时间】:2014-02-01 03:39:08
【问题描述】:
在 weblogic 12c 版本中部署新的核心 SDM 模块(战争)时遇到问题。新的 SDM 核心模块 (wb-tss-core-sdm-web-war-0.9.1.war) 使用 JSF ,SeamListeners & FacesServlet (版本 1.2 jars),我们发现 JSF 1.2 版本不直接兼容weblogic 12c 版本。因此,应用程序部署失败并出现user defined listener conflict 问题
"WebLogic Server 12.1.1 增强了对 JSF 和 JSTL 的支持。在此 发布,JSF 2.x 和 JSTL 1.2 已直接并入 服务器的类路径。部署到 WebLogic Server 的应用程序可以 无缝使用 JSF 2.x 和 JSTL 1.2,而不需要您 部署和引用单独的共享库,就像在 以前的版本。为了向后兼容,WebLogic Server 提供可以被部署和引用的 JSF 和 JSTL 库 应用程序。请参阅部署 JSF 1.2 和 JSTL 库。 "
我们尝试根据文档在 weblogic 服务器路径中显式安装 JSF 1.2 战争以支持向后兼容性,并通过在 weblogic 中添加以下条目来强制 SDM 应用程序/战争使用 JSF 1.2 版本 jar。 xml。
<wls:library-ref>
<wls:library-name>jsf</wls:library-name>
<wls:specification-version>1.2</wls:specification-version>
<wls:implementation-version>1.2</wls:implementation-version>
<wls:exact-match>false</wls:exact-match>
</wls:library-ref>
但是由于 FacesServlet 侦听器问题,部署再次失败,因为“jsf-impl-1.2_04_P02.jar”jar 已经是 (wb-tss-core-sdm-web-war-0.9.1.war) 战争的一部分.
尝试在 weblogic,xml 中添加以下条目,以强制应用程序使用应用程序特定的 jars/classes,它们是应用程序 war 文件的一部分。
<wls:prefer-application-packages>
<wls:package-name>javax.faces.*</wls:package-name>
<wls:package-name>com.sun.faces.*</wls:package-name>
<wls:package-name>com.bea.faces.*</wls:package-name>
<wls:package-name>com.sun.facelets.*</wls:package-name>
</wls:prefer-application-packages>
添加以上条目后,应用部署成功完成,但在控制台发现如下错误:
<BEA-101162> <User defined listener com.sun.faces.config.ConfigureListener failed: javax.faces.FacesException: org.jboss.seam.jsf.SeamApplicationFactory.
javax.faces.FacesException: org.jboss.seam.jsf.SeamApplicationFactory
由于上述错误,一些 Jasper 文件上传 SDM 屏幕无法访问,并且由于此错误而失败:
java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.render.RenderKitFactory. Attempting to find backup.
我们如何克服这个问题?
【问题讨论】:
-
请帮帮我。我无法找到任何解决方案。
标签: weblogic12c