Weblogic 11g(10.3.5.0)上的JSF2后备工厂失败

时间:2012-05-02 11:35:47

标签: jsf weblogic el

我有一个工作的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

之前是否有人遇到类似的问题?

2 个答案:

答案 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绑定。

试一试。