java - 在 JBoss v7.1 中使用 Seam v2.2.2.Final 和 JSF v1.2 – JSF 标签不会呈现 – 为什么?

标签 java jboss jboss7.x jsf-1.2 seam2

我目前正在将一个主要使用 Seam 2HibernateJSF 1.2 的较大项目从 JBoss 4.2.x 迁移到 JBoss 7.1 – 到目前为止,我已经成功解决了大多数问题。应用程序服务器启动得很好,并且部署我的 EAR 项目,目前没有错误。 JSF 1.2 和 Seam 2 接缝正确启动。

但是 - 一旦我尝试访问第一页(即 context/login.seam),浏览器就会加载我的 jsp 源而不是渲染的内容。到目前为止我不知道该往哪里走。为了使用此环境,是否更改了 web.xml、faces-config.xml 或任何相关设置文件?

<小时/>

简要总结到目前为止我对我的项目进行了以下更新:

WAR 中 web.xml 的一些行

<context-param>
    <param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>
    <param-value>Mojarra-1.2</param-value>
</context-param>

<listener>
    <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<filter>
    <filter-name>Seam Filter</filter-name>
    <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>Seam Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
    <servlet-name>Seam Resource Servlet</servlet-name>
    <servlet-class>
        org.jboss.seam.servlet.SeamResourceServlet
    </servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Seam Resource Servlet</servlet-name>
    <url-pattern>/seam/resource/*</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.seam</url-pattern>
</servlet-mapping>

EAR 中的 jboss-deployment-struct.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
    <deployment>
        <exclusions>
            <module name="javax.faces.api" slot="main" />
            <module name="com.sun.jsf-impl" slot="main" />
        </exclusions>
        <dependencies>

            <!-- Wir brauchen in jedem Fall Java Server Faces v1.2... nicht das aktuelle v2.0! -->
            <module name="javax.faces.api" slot="1.2" export="true" />
            <module name="com.sun.jsf-impl" slot="1.2" export="true" />

            <!-- Seam braucht einige Libraries, die der JBoss teilweise schon mitbringt... -->
            <module name="org.apache.commons.beanutils" export="true" />
            <module name="org.apache.commons.collections" export="true" />
            <module name="org.apache.commons.lang" export="true" />
            <module name="org.dom4j" export="true" />
            <module name="org.hibernate.validator" export="true" />

        </dependencies>
    </deployment>
</jboss-deployment-structure>

我还从 EAR 中删除了 JBoss v7.1 中已作为模块提供的所有 JAR,并修改了 MANIFEST.MF 文件。

我已经用 JBoss-Logging 替换了 Log4J,修复了一些过时的 FacesMessages 代码并暂时禁用了 @Service 和 @Management 类。

我的Oracle数据源也已添加到standalone.xml(使用ojdbc6.jar)并成功初始化。

<小时/>

PS:目前该项目无法选择用 Seam3 替换 Seam2。我还没有尝试使用 Seam2-JSF2-Branch (https://github.com/heyoulin/seam2jsf2) - 我想在评估替代方案之前了解我当前的问题。

最佳答案

我们在这方面花费了越来越多的时间,却没有取得真正的进展。所以我决定走另一条路,放弃 Seam,转而使用 CDI 和 EJB v3.1!我们在 Seam v2 中使用的大部分东西现在都已经过时了。这是一次巨大的迁移——但我认为它最终会得到返回。它应该减少总体内存使用并提高性能。看起来 Seam v2 和 JBoss v7 并不是一个好主意...

关于java - 在 JBoss v7.1 中使用 Seam v2.2.2.Final 和 JSF v1.2 – JSF 标签不会呈现 – 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9567290/

相关文章:

java - JBoss AS 7 Bean 查找 EJB

java - 升级到 gradle 插件 3.2.1 和 SDK 28 失败

java - 从 JBoss Wildfly 中的模块目录部署 SOAP Webservice 实现

java - JBoss EAP 6.2GA Managed Domain Exploded-Deployment

java - 如何设置 Wildfly 服务器日志的最大大小

java - jBoss 卡在 netbeans 中,永远不会启动

jakarta-ee - JBoss 7,java.lang.OutOfMemoryError : PermGen space

Java:运行处理 3.2.1 的 Raspberry Pi 上出现不满足的链接错误

java - 你需要了解 JSF 或 Spring 中的 JSTL

java - Folder.fetch 和 getmessages 之间的区别