从Jboss EAP 6.4迁移到EAP 7.1

POM

  • 升级JavaEE
    <dependency>
    <groupId>org.jboss.bom</groupId>
    <artifactId>jboss-eap-javaee7</artifactId>
    <version>7.1.1.GA</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.eap</groupId>
    <artifactId>wildfly-ejb-client-bom</artifactId>
    <version>7.1.1.GA-redhat-2</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.eap</groupId>
    <artifactId>wildfly-jms-client-bom</artifactId>
    <version>7.1.1.GA-redhat-2</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
  • 升级dependency
    <dependency>
    <groupId>org.jboss.spec.javax.servlet</groupId>
    <artifactId>jboss-servlet-api_3.1_spec</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.remoting</groupId>
    <artifactId>jboss-remoting</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.spec.javax.ejb</groupId>
    <artifactId>jboss-ejb-api_3.2_spec</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.spec.javax.jms</groupId>
    <artifactId>jboss-jms-api_2.0_spec</artifactId>
    <scope>provided</scope>
    </dependency>
    ...

    JSF 1.2

    EAP 7不支持JSF 1.2,可从EAP 6将JSF 1.2 Module(包含javax.faces.api,com.sun.jsf-impl,org.jboss.as.jsf-injection)迁移过来,module.xml内容无需更改,建议修改一下module版本urn:jboss:module:1.5
    如部署使用的ear包,在jboss-deployment-structure.xml中增加如下配置:

    <jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="javax.faces.api"/>
            <module name="com.sun.jsf-impl"/>
            <module name="org.jboss.as.jsf-injection"/>
        </exclusions>
        <dependencies>
            <module name="javax.faces.api" slot="1.2" export="true"/>
            <module name="com.sun.jsf-impl" slot="1.2" export="true"/>
            <module name="org.jboss.as.jsf-injection" slot="1.2" export="true"/>
        </dependencies>
    </deployment>
    <sub-deployment name="ejb.jar">
        <exclusions>
            <module name="javax.faces.api"/>
            <module name="com.sun.jsf-impl"/>
            <module name="org.jboss.as.jsf-injection"/>
        </exclusions>
        <dependencies>
            <module name="javax.faces.api" slot="1.2"/>
            <module name="com.sun.jsf-impl" slot="1.2"/>
            <module name="org.jboss.as.jsf-injection" slot="1.2"/>
        </dependencies>
    </sub-deployment>
    <sub-deployment name="web.war">
        <exclusions>
            <module name="javax.faces.api"/>
            <module name="com.sun.jsf-impl"/>
            <module name="org.jboss.as.jsf-injection"/>
        </exclusions>
        <dependencies>
            <module name="javax.faces.api" slot="1.2"/>
            <module name="com.sun.jsf-impl" slot="1.2"/>
            <module name="org.jboss.as.jsf-injection" slot="1.2"/>
        </dependencies>
    </sub-deployment>
    </jboss-deployment-structure>

    Hibernate 3.5

  • 强烈建议升级到Hibernate 5,如确实不能升级,需创建一个3.5 module,放入依赖包,module配置如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.5" name="org.hibernate" slot="3.5">
    <properties>
        <property name="jboss.api" value="unsupported"/>
    </properties>
    
    <resources>
        <resource-root path="hibernate-core-3.5.6-Final.jar"/>
        <resource-root path="hibernate-entitymanager-3.5.6-Final.jar"/>
        <resource-root path="hibernate-annotations-3.5.6-Final.jar"/>
        <resource-root path="hibernate-commons-annotations-3.2.0.Final.jar"/>
        <resource-root path="hibernate-validator-3.1.0.GA.jar"/>
        <resource-root path="cglib-2.2.jar"/>
    </resources>
    
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.annotation.api"/>
        <module name="javax.enterprise.api"/>
        <module name="javax.persistence.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.validation.api"/>
        <module name="javax.xml.bind.api"/>
        <module name="org.antlr"/>
        <module name="org.apache.commons.collections"/>
        <module name="org.dom4j"/>
        <module name="org.javassist" export="true"/>
        <module name="org.jboss.as.jpa.spi"/>
        <module name="org.jboss.jandex"/>
        <module name="org.jboss.logging"/>
        <module name="org.jboss.vfs"/>
        <module name="org.slf4j"/>      
    </dependencies>
    </module>
  • jboss-deployment-structure.xml中排除org.hibernate,引入3.5
    <jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="org.hibernate"/>
        </exclusions>
        <dependencies>
            <module name="org.hibernate" slot="3.5" export="true"/>
            <module name="org.antlr" export="true"/>
            <module name="org.javassist" export="true"/>
        </dependencies>
    </deployment>
    <sub-deployment name="ejb.jar">
        <exclusions>
            <module name="org.hibernate"/>
        </exclusions>
        <dependencies>
            <module name="org.hibernate" slot="3.5"/>
            <module name="org.javassist"/>
        </dependencies>
    </sub-deployment>
    </jboss-deployment-structure>
  • 修改persistence.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
    <persistence-unit name="schedule">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:jboss/datasources/scheduleDatasource</jta-data-source>
        <class>...</class>
        <properties>
            <property name="jboss.as.jpa.providerModule" value="org.hibernate:3.5"/>
                        <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
            ...
        </properties>
    </persistence-unit>
    </persistence>

    HornetQ

    EAP 7 使用了ActiveMQ Artemis取代了HornetQ,原Message-Driven Bean不需更改,需更改配置和客户端调用代码。

  • jms-destinations
    EAP 6中jms-destinations配置如下:
    <hornetq-server>
    ...
    <jms-destinations>
     <jms-queue name="testQueue">
        <entry name="queue/test"/>
         <entry name="java:jboss/exported/jms/queue/test"/>
      </jms-queue>
    </jms-destinations>
    ...
    </hornetq-server>

    更改为:

    <server name="default">
    ...
    <jms-queue name="testQueue" entries="queue/test java:jboss/exported/jms/queue/test"/>
    ...
    </server>
  • security
    如不启用security,增加如下配置:
    <server name="default">
    <security enabled="false"/>
    ...
    </server>
  • Dependency
    <dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>artemis-jms-client</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.spec.javax.jms</groupId>
    <artifactId>jboss-jms-api_2.0_spec</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.spec.javax.json</groupId>
    <artifactId>jboss-json-api_1.0_spec</artifactId>
    <scope>provided</scope>
    </dependency>
  • org.apache.activemq.artemis module取代org.hornetq
  • 修改客户端代码
    EAP 7,默认connector从remote改为http-remoting,默认remote connection port从4447改为8080,PROVIDER_URL要从remote://localhost:4447修改为http-remoting://localhost:8080。INITIAL_CONTEXT_FACTORY从org.jboss.naming.remote.client.InitialContextFactory修改为org.wildfly.naming.client.WildFlyInitialContextFactory。
    EAP 6:
    java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
    java.naming.provider.url=remote://localhost:4447

    EAP 7:

    java.naming.factory.initial=org.wildfly.naming.client.WildFlyInitialContextFactory
    java.naming.provider.url=http-remoting://localhost:8080

    EJB

  • POM dependency
    <dependency>
    <groupId>org.jboss</groupId>
    <artifactId>jboss-ejb-client</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.remoting</groupId>
    <artifactId>jboss-remoting</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.wildfly</groupId>
    <artifactId>wildfly-naming-client</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.spec.javax.ejb</groupId>
    <artifactId>jboss-ejb-api_3.2_spec</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.spec.javax.transaction</groupId>
    <artifactId>jboss-transaction-api_1.2_spec</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.marshalling</groupId>
    <artifactId>jboss-marshalling-river</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.xnio</groupId>
    <artifactId>xnio-api</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.jboss.xnio</groupId>
    <artifactId>xnio-nio</artifactId>
    <scope>provided</scope>
    </dependency>
  • jboss-ejb-client.properties
    EAP 6:
    remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
    remote.connections=default
    remote.connection.default.protocol=remote
    remote.connection.default.host=localhost
    remote.connection.default.port=4447
    remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

    EAP 7:

    remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
    remote.connections=default
    remote.connection.default.protocol=http-remoting
    remote.connection.default.host=localhost
    remote.connection.default.port=8080
    remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
  • 修改客户端代码
    EAP 6:
    java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
    java.naming.provider.url=remote://localhost:4447

    EAP 7:

    java.naming.factory.initial=org.wildfly.naming.client.WildFlyInitialContextFactory
    java.naming.provider.url=http-remoting://localhost:8080

    参考文档

    Jboss EAP 7.1 Migration Guide
    Using the JBoss Server Migration Tool
    Developing EJB Applications
    Configuring Messaging

猜你喜欢

转载自blog.51cto.com/7308310/2110378