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



我目前正在将一个主要使用Seam2HibernateJSF 1.2的较大项目从JBoss4.2.x迁移到jboss7.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-structure.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中剥离了JBossv7.1作为模块附带的所有JAR,并修改了MANIFEST.MF文件。

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

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


附言:目前无法选择将Seam2替换为Seam3。我还没有尝试使用Seam2-JSF2-分支(https://github.com/heyoulin/seam2jsf2)-在评估备选方案之前,我想了解我目前的问题。

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

最新更新