我有一个工作的JSF2应用程序,通常在Tomcat6 / 7上运行。 由于现在还需要在weblogic上运行,我对项目设置进行了一些更改,包括将el-impl-2.2.jar添加到我的战争的WEB-INF / lib中。
我还添加到web.xml:
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
weblogic.xml部署描述符包含:
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
虽然在Tomcat中仍然可以完美地运行,但这个设置在以下情况下失败:
[HTTP:101216]Servlet: "Faces Servlet" failed to preload on startup in Web application: "app.war". java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key severe.no_factory_backup_failed at
java.util.ResourceBundle.getObject(ResourceBundle.java:393) at
java.util.ResourceBundle.getString(ResourceBundle.java:353) at
javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1002) at
javax.faces.FactoryFinder.getFactory(FactoryFinder.java:316) at
javax.faces.webapp.FacesServlet.init(FacesServlet.java:302) at
weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:299) at
weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:250) at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at
weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) at
weblogic.servlet.internal.StubSecurityHelper.initServletInstance(StubSecurityHelper.java:94) at
weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:82) at
weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:74)
at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:60) at
weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:34) at
weblogic.servlet.internal.ServletStubImpl.initStubLifecycleHelper(ServletStubImpl.java:638)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:579) at
之前是否有人遇到类似的问题?
答案 0 :(得分:1)
事实证明,将el-api.jar和el-impl.jar包含在我的项目中是一个解决方案。另外,我必须在weblogic.xml中指定这些包需要首先从我的战争加载,如下所示:
<prefer-application-packages>
<package-name>com.sun.el.*</package-name>
<package-name>javax.el.*</package-name>
</prefer-application-packages>
答案 1 :(得分:0)
我不确定这是否是正确的做事方式。对我来说,似乎你错过了WLS的DI绑定。如果比较wlserver_10.3 \ common \ deployable-libraries \ jsf-2.0.war \ WEB-INF \ lib \中的可部署库,您会看到在战争中必须提供的内容才能升级到JSF2。最值得注意的是,您的设置中缺少DI绑定。
试一试。