将基于 JSF 1.2 的 Web 应用程序部署到 JBoss EAP 7.0

Posted

技术标签:

【中文标题】将基于 JSF 1.2 的 Web 应用程序部署到 JBoss EAP 7.0【英文标题】:Deploying JSF 1.2 based web application to JBoss EAP 7.0 【发布时间】:2018-01-01 14:41:05 【问题描述】:

我有一个基于 JSF 1.2 的 Web 应用程序。 JSF jar 打包在 WAR 库中。我们尝试在 JBoss EAP 7.0 中部署战争,战争成功部署但应用程序没有运行。

我发现 JBoss EAP 7.0 不支持 JSF 1.2 。我的 Web 应用程序不是 JSF 2.0 投诉。如果有人可以列出这样做的步骤,那将是非常有帮助的。

谢谢

【问题讨论】:

你有 JSF 1.2 的模块吗? 不,我没有 JSF 1.2 的模块。我在哪里得到它。提前致谢。 【参考方案1】:

请尝试以下步骤:

    将 deployment-structure.xml 添加到您的项目(WEB-INF/jboss-deployment-structure.xml 到 WAR 或 META-INF/jboss-deployment-structure.xml 到 EAR),并排除:

        <exclusions>
            <module name="javax.faces.api" slot="main" />
            <module name="com.sun.jsf-impl" slot="main" />
            <module name="org.jboss.as.jsf-injection" slot="main" />
        </exclusions>
    

    导入 pom.xml 中的所有依赖,jsf 需要的。像这样:

    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>1.2-b19</version>
    </dependency>
    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>1.2-b19</version>
    </dependency>
    <dependency>
        <groupId>com.sun.facelets</groupId>
        <artifactId>jsf-facelets</artifactId>
        <version>1.1.11</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.1.0</version>
    </dependency>
    

【讨论】:

【参考方案2】:

实际上,这种组合在 EAP 7 版本的 JBOSS 7.1.5 服务器上对我有用。 这样我就能够从我的 WEB-INF/lib 文件夹中加载 jsf1.2 jar,而不是 JBOSS 7.1.5 提供的。 我有一个包含 WAR 文件的 EAR 文件。

Web.xml:

 <context-param>  
        <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>  
        <param-value>true</param-value>  
 </context-param>  

入耳META-INF/jboss-deployment-structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
 <ear-subdeployments-isolated>true</ear-subdeployments-isolated>
    <deployment>
        <exclusions>
            <module name="javax.faces.api" slot="main" />
            <module name="com.sun.jsf-impl" slot="main" />
        </exclusions>
    </deployment>


    <sub-deployment name="yourwarfilename.war">
        <exclusions>
            <module name="javax.faces.api" slot="main" />
            <module name="com.sun.jsf-impl" slot="main" />
        </exclusions>
    </sub-deployment>
</jboss-deployment-structure>

【讨论】:

以上是关于将基于 JSF 1.2 的 Web 应用程序部署到 JBoss EAP 7.0的主要内容,如果未能解决你的问题,请参考以下文章

JSF 2.3 基于表单的登录和 ViewExpiredException

JSF 1.2 和 JSF 2.x 之间的 JSTL xmlns 命名空间差异?

使用 JBoss 4.x 实现 JSF 2.0

将基于 Maven 的 JSF 项目部署到 Tomcat 会导致 java.lang.ClassNotFoundException:javax.faces.webapp.FacesServlet [重

JBoss 6 上的 JSF 1.2 和 EL 表达式未解决

<t:inputFileUpload> 将 JSF 1.2 迁移到 JSF 2.2 后不再工作