我们在weblogic 12c版本中部署新的核心SDM模块(战争)时遇到了问题。新的SDM核心模块(wb-tss-core-sdm-web-war-0.9.1.war)使用JSF,SeamListeners& FacesServlet(版本1.2罐)我们发现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应用程序/ war使用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监听器问题的部署再次失败,因为&#34; jsf-impl-1.2_04_P02.jar&#34; jar已经是(wb-tss-core-sdm-web-war-0.9.1.war)战争的一部分。
尝试在weblogic,xml中添加以下条目,以强制应用程序使用作为应用程序war文件一部分的特定于应用程序的jar /类。
<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.
我们如何解决这个问题?
答案 0 :(得分:2)
在将JBoss Seam应用程序从Weblogic 10.3.3迁移到Weblogic 12.1.1期间,我们遇到了同样的问题。
通过切换到Weblogic的默认JSF 2.1.14并将Seam版本更新为2.3来解决此问题
希望这会有所帮助。
答案 1 :(得分:0)
不确定您是否在这个问题上看到了更长时间的讨论: Migrating JSF-Application to Weblogic 12
这在分析类似的库迁移问题时帮助了我(hibernate在我的列表中)。