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