我目前正在将一个主要使用Seam 2、Hibernate和JSF 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-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 中剥离了 JBoss v7.1 中已经作为模块和修改的 MANIFEST.MF 文件附带的所有 JAR。
我已经用 JBoss-Logging 替换了 Log4J,修复了一些过时的 FacesMessages 代码并暂时禁用了 @Service 和 @Management 类。
我的 Oracle 数据源也已添加到standalone.xml(使用 ojdbc6.jar)并成功初始化。
PS:这个项目目前没有用Seam3替换Seam2的选项。我还没有尝试使用 Seam2-JSF2-Branch (https://github.com/heyoulin/seam2jsf2) - 我想在评估替代方案之前了解我当前的问题。