0

我有一个工作的 JSF2 应用程序,它通常在 Tomcat6/7 上运行。由于它现在还需要在 weblogic 上运行,所以我对 projectsetup 进行了一些更改,包括将 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 中一切仍然完美,但此设置在 wls 中失败:

[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

有没有人遇到过类似的问题?

4

2 回答 2

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>
于 2012-05-04T11:31:30.673 回答
0

我不确定这是否是正确的做事方式。在我看来,您缺少 WLS 的 DI 绑定。如果您比较 wlserver_10.3\common\deployable-libraries\jsf-2.0.war\WEB-INF\lib\ 中的可部署库,您会看到在升级到 JSF2 的战争中必须提供什么。最值得注意的是,您的设置中缺少 DI 绑定。

试试看。

于 2012-05-04T06:50:58.070 回答