jakarta-ee - 如何在 Oracle Weblogic 12.1 中部署 JSF 2.1 webapp?

标签 jakarta-ee jsf-2 weblogic java-ee-6

我正在尝试将 JSF 2.1 web 应用程序部署到 Weblogic 12.1 应用程序服务器,但部署失败并出现以下异常

<javax.enterprise.resource.webcontainer.jsf.config> <BEA-000000> 
<Critical error during deployment:
 com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! 
    com.oracle.injection.integration.jsf.WeblogicFacesConfigResourceProvider
                     cannot be cast to com.sun.faces.spi.ConfigurationResourceProvider
    at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:377)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:223)
    at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:582)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    Truncated. see log file for complete stacktrace

我正在使用 Mojarra 实现版本 2.1.13 - 这是相应的 pom.xml入口:
<dependency>
  <groupId>com.sun.faces</groupId>
  <artifactId>jsf-api</artifactId> 
  <version>2.1.13</version>
</dependency>
<dependency>
  <groupId>com.sun.faces</groupId>
  <artifactId>jsf-impl</artifactId>
  <version>2.1.13</version>
</dependency>

我将以下行添加到 weblogic.xml防止 weblogic 服务器加载附带的 jsf 实现:
<container-descriptor>
    <prefer-web-inf-classes>false</prefer-web-inf-classes>
    <prefer-application-packages>
        <package-name>javax.faces.*</package-name>
        <package-name>com.sun.faces.*</package-name>
        <package-name>com.bea.faces.*</package-name>
    </prefer-application-packages>

    <prefer-application-resources>
        <resource-name>javax.faces.*</resource-name>
        <resource-name>com.sun.faces.*</resource-name>
        <resource-name>com.bea.faces.*</resource-name>
        <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
    </prefer-application-resources>
</container-descriptor>
WeblogicFacesConfigResourceProvider包含在 weblogic.jar 中.

那么这里出了什么问题呢? - 任何提示?

解决方案

好的,我找到了解决方案:您必须添加 META-INF/services/com.sun.faces.spi.FacesConfigResourceProviderprefer-application-resources -部分在weblogic.xml .这个配置对我有用:

错误的

javax.faces。
com.sun.faces。
com.bea.faces.*

    <prefer-application-resources>
        <resource-name>javax.faces.*</resource-name>
        <resource-name>com.sun.faces.*</resource-name>
        <resource-name>com.bea.faces.*</resource-name>
        <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
        <resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</resource-name>
    </prefer-application-resources>
</container-descriptor>

最佳答案

添加oehmiche提到的解决方案在他的问题中作为答案。

将 META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider 添加到 weblogic.xml 中的 preferred-application-resources-section。这个配置对我有用:false javax.faces。 com.sun.faces。 com.bea.faces.*

<prefer-application-resources>
    <resource-name>javax.faces.*</resource-name>
    <resource-name>com.sun.faces.*</resource-name>
    <resource-name>com.bea.faces.*</resource-name>
    <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
    <resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</resource-name>
</prefer-application-resources>

关于jakarta-ee - 如何在 Oracle Weblogic 12.1 中部署 JSF 2.1 webapp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12898076/

相关文章:

jakarta-ee - EJB 事务中的默认属性

spring - Spring Security session 如何工作?

java - 是否可以使用 ApplicationScoped bean 为 JSF 2 应用程序添加 richfaces 皮肤?

java - 问题-远程热部署、多模块Maven项目

java - weblogic.Deployer 多次运行时变慢

java - 如何在 Java EE 应用程序中添加 "Disable User"管理功能?

java - 当我启动我的 Tomcat 时,不是打开欢迎文件,而是下载它。有人可以帮我从这里出去吗。?

jsf - 如何管理下拉菜单之间的依赖关系?

eclipse - 使用 Weblogic (beadep) 时显示 "Run On Server"时未正确生成 application.xml

java - 使index.jsp重定向到其不带扩展名的url