4.3.2. 移植 Seam 2.2 JPA 例程到 JBoss EAP 6

介绍

下面的任务列表总结了移植 Seam 2.2 JPA 例程到 JBoss EAP 6 所需的修改。这个例程可以在最新的 JBoss EAP 5.1 的 EAP5.x_HOME/jboss-eap-5.x/seam/examples/jpa/ 目录下找到。

重要

直接使用 Hibernate 的 Seam 2.2 应用程序可以使用包裹在应用程序里的一个 Hibernate 3 版本。而通过 JBoss EAP 6 的 org.hibernate 模块提供的 Hibernate 4,不被 Seam 2.2 支持。这个例子将帮助您在 JBoss EAp 6 运行应用程序。请注意,将 Hibernate 3 包裹在 Seam 2.2 应用程序不是被支持的配置。

过程 4.6. 移植 Seam 2.2 JPA 例程

  1. 删除 jboss-web.xml 文件

    jboss-seam-jpa.war/WEB-INF/ 目录删除 jboss-web.xml 文件。jboss-web.xml 里定义的类加载现在是默认的行为。
  2. 像下面这样修改 jboss-seam-jpa.jar/META-INF/persistence.xml 文件:

    1. 删除或注释 jboss-seam-jpa.war/WEB-INF/classes/META-INF/persistence.xml 文件里的 hibernate.cache.provider_class 属性:
      <!-- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->
      
    2. jboss-seam-booking.jar/META-INF/persistence.xml 文件里添加 Provider Module 属性:
      <property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" />
      
    3. 修改 jta-data-source 属性以使用默认的 JDBC 数据源 JNDI 名称:
      <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
      
  3. 添加 Seam 2.2 依赖关系

    从 Seam 2.2 的 SEAM_HOME/lib/ 目录复制下列 JAR 到 jboss-seam-jpa.war/WEB-INF/lib/ 目录:
    • antlr.jar
    • slf4j-api.jar
    • slf4j-log4j12.jar
    • hibernate-entitymanager.jar
    • hibernate-core.jar
    • hibernate-annotations.jar
    • hibernate-commons-annotations.jar
    • hibernate-validator.jar
  4. 创建一个 jboss-deployment-structure 文件来添加剩下的依赖关系

    jboss-seam-jpa.war/WEB-INF/ 目录里创建一个包含下列数据的 jboss-deployment-structure.xml 文件:
    <jboss-deployment-structure>
       <deployment>
            <exclusions>
              <module name="javax.faces.api" slot="main"/>
              <module name="com.sun.jsf-impl" slot="main"/>
              <module name="org.hibernate" slot="main"/>
            </exclusions>
            <dependencies>
              <module name="org.apache.log4j" />
              <module name="org.dom4j" />
              <module name="org.apache.commons.logging" />
              <module name="org.apache.commons.collections" />
              <module name="javax.faces.api" slot="1.2"/>
              <module name="com.sun.jsf-impl" slot="1.2"/>
            </dependencies>
        </deployment>
    </jboss-deployment-structure>
    
结果:

Seam 2.2 JPA 例程在 JBoss EAP 6 上成功部署和运行。