Migrating a JBoss EAP Application's Maven Project (EAP BOMs) to EAP 8

Updated

App Migration Issue(s) Description

When migrating an application’s Maven project to JBoss EAP 8.0, which uses JBoss EAP BOMs to manage dependencies, it may be required to update the pom.xml files, due to significant changes introduced with the JBoss EAP 8.0 BOMs:

  1. The “JBoss EAP Jakarta EE8” BOM was renamed to “JBoss EAP EE”, and its Maven Coordinates changed too, from org.jboss.bom:jboss-eap-jakartaee8 to org.jboss.bom:jboss-eap-ee
  2. The “JBoss EAP Jakarta EE8 With Tools” BOM was renamed to “JBoss EAP EE With Tools”, and its Maven Coordinates changed too, from org.jboss.bom:jboss-eap-jakartaee8-with-tools to org.jboss.bom:jboss-eap-ee-with-tools
  3. The “JBoss Jakarta EE8 APIs” BOMs are no longer distributed with JBoss EAP 8.0
  4. The “JBoss EAP Runtime” BOM is no longer distributed with JBoss EAP 8.0
  5. Several Jakarta EE and JBoss APIs artifacts, which were provided by the JBoss EAP BOMs, have changed Maven Coordinates, or were replaced by other artifacts:
  • com.sun.activation:jakarta.activation
  • org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec
  • org.jboss.spec.javax.security.auth.message:jboss-jaspi-api_1.0_spec
  • org.jboss.spec.javax.security.jacc:jboss-jacc-api_1.5_spec
  • org.jboss.spec.javax.batch:jboss-batch-api_1.0_spec
  • org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec
  • org.jboss.spec.javax.el:jboss-el-api_3.0_spec
  • org.jboss.spec.javax.enterprise.concurrent:jboss-concurrency-api_1.0_spec
  • org.jboss.spec.javax.faces:jboss-jsf-api_2.3_spec
  • org.jboss.spec.javax.interceptor:jboss-interceptors-api_1.2_spec
  • org.jboss.spec.javax.jms:jboss-jms-api_2.0_spec
  • com.sun.mail:jakarta.mail
  • org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec
  • org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec
  • org.jboss.spec.javax.servlet.jsp:jboss-jsp-api_2.3_spec
  • org.apache.taglibs:taglibs-standard-spec
  • org.jboss.spec.javax.transaction:jboss-transaction-api_1.3_spec
  • org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec
  • org.jboss.spec.javax.xml.ws:jboss-jaxws-api_2.3_spec
  • javax.jws:jsr181-api
  • org.jboss.spec.javax.websocket:jboss-websocket-api_1.1_spec
  • org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec →
  • org.jboss.spec.javax.xml.soap:jboss-saaj-api_1.4_spec
  • org.hibernate:hibernate-core
  • org.hibernate:hibernate-jpamodelgen
  • org.jboss.narayana.xts:jbossxts

What happens if the app is migrated to EAP 8 without any change (e.g. deploy fails, unable to debug, maven build fails)?

  • The application will not be built with the correct dependencies and may fail to deploy on JBoss EAP 8.0.

How to identify the App Migration issue(s) in an app (e.g. pom.xml has dependency foo:bar, import/usage of java package/class)?

  1. A Maven project (pom.xml) imports the “JBoss EAP Jakarta EE8” BOM on its dependency management.
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.jboss.bom</groupId>
           <artifactId>jboss-eap-jakartaee8</artifactId>
           <version>${version.bom}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
  1. A Maven project (pom.xml) imports the “JBoss EAP Jakarta EE8 With Tools” BOM on its dependency management.
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.jboss.bom</groupId>
           <artifactId>jboss-eap-jakartaee8-with-tools</artifactId>
           <version>${version.bom}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
  1. A Maven project (pom.xml) imports a “JBoss Jakarta EE8 APIs” BOM on its dependency management.
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.jboss.spec</groupId>
           <artifactId>jboss-jakartaee-8.0</artifactId>
           <version>${version.bom}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
       <dependency>
           <groupId>org.jboss.spec</groupId>
           <artifactId>jboss-jakartaee-web-8.0</artifactId>
           <version>${version.bom}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
  1. A Maven project (pom.xml) imports the “JBoss EAP Runtime” BOM on its dependency management.
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.jboss.bom</groupId>
           <artifactId>eap-runtime-artifacts</artifactId>
           <version>${version.bom}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
  1. A Maven Project (pom.xml) depends on one or more of the changed/replaced/unsupported artifacts.
   <dependencies>
       <dependency>
           <groupId>org.jboss.spec.javax.ejb</groupId>
           <artifactId>jboss-ejb-api_3.2_spec</artifactId>
           <scope>provided</scope>
       </dependency>
   </dependencies>

Once the issue is identified, which changes may be done to the app to solve the issue (e.g. replace maven dependency, use new API)?

  1. The Maven project (pom.xml) should instead import the new “JBoss EAP EE” BOM to its dependency management:
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.jboss.bom</groupId>
           <artifactId>jboss-eap-ee</artifactId>
           <version>${version.bom}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
  1. The Maven project (pom.xml) should instead import the new “JBoss EAP EE With Tools” BOM to its dependency management:
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.jboss.bom</groupId>
           <artifactId>jboss-eap-ee-with-tools</artifactId>
           <version>${version.bom}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
  1. The Maven project (pom.xml) should instead import the new “JBoss EAP EE” BOM to its dependency management:
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.jboss.bom</groupId>
           <artifactId>jboss-eap-ee</artifactId>
           <version>${version.bom}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
  1. The Maven project (pom.xml) should instead import the new “JBoss EAP EE” BOM to its dependency management:
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.jboss.bom</groupId>
           <artifactId>jboss-eap-ee</artifactId>
           <version>${version.bom}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
  1. The Maven Project (pom.xml) should update the dependency’s Maven Coordinates, in case the artifact was changed/replaced, or remove the dependency in the case the artifact is no longer supported.
<dependencies>
   <!-- replaces com.sun.activation:jakarta.activation -->
   <dependency>
       <groupId>jakarta.activation</groupId>
       <artifactId>jakarta.activation-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec -->
   <dependency>
       <groupId>jakarta.annotation</groupId>
       <artifactId>jakarta.annotation-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.security.auth.message:jboss-jaspi-api_1.0_spec -->
   <dependency>
       <groupId>jakarta.authentication</groupId>
       <artifactId>jakarta.authentication-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.security.jacc:jboss-jacc-api_1.5_spec -->
   <dependency>
       <groupId>jakarta.authorization</groupId>
       <artifactId>jakarta.authorization-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.batch:jboss-batch-api_1.0_spec -->
   <dependency>
       <groupId>jakarta.batch</groupId>
       <artifactId>jakarta.batch-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec -->
   <dependency>
       <groupId>jakarta.ejb</groupId>
       <artifactId>jakarta.ejb-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.el:jboss-el-api_3.0_spec -->
   <dependency>
       <groupId>org.jboss.spec.jakarta.el</groupId>
       <artifactId>jboss-el-api_5.0_spec</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.enterprise.concurrent:jboss-concurrency-api_1.0_spec -->
   <dependency>
       <groupId>jakarta.enterprise.concurrent</groupId>
       <artifactId>jakarta.enterprise.concurrent-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.faces:jboss-jsf-api_2.3_spec -->
   <dependency>
       <groupId>jakarta.faces</groupId>
       <artifactId>jakarta.faces-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.interceptor:jboss-interceptors-api_1.2_spec -->
   <dependency>
       <groupId>jakarta.interceptor</groupId>
       <artifactId>jakarta.interceptor-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.jms:jboss-jms-api_2.0_spec  -->
   <dependency>
       <groupId>jakarta.jms</groupId>
       <artifactId>jakarta.jms-api</artifactId>
   </dependency>
   <!-- replaces com.sun.mail:jakarta.mail -->                               
   <dependency>
       <groupId>jakarta.mail</groupId>
       <artifactId>jakarta.mail-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec -->                               
   <dependency>
       <groupId>jakarta.resource</groupId>
       <artifactId>jakarta.resource-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec -->
   <dependency>
       <groupId>jakarta.servlet</groupId>
       <artifactId>jakarta.servlet-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.servlet.jsp:jboss-jsp-api_2.3_spec -->
   <dependency>
       <groupId>jakarta.servlet.jsp</groupId>
       <artifactId>jakarta.servlet.jsp-api</artifactId>
   </dependency>
   <!-- replaces org.apache.taglibs:taglibs-standard-spec -->
   <dependency>
       <groupId>jakarta.servlet.jsp.jstl</groupId>
       <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.transaction:jboss-transaction-api_1.3_spec  -->
   <dependency>
       <groupId>jakarta.transaction</groupId>
       <artifactId>jakarta.transaction-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec  -->
   <dependency>
       <groupId>jakarta.xml.bind</groupId>
       <artifactId>jakarta.xml.bind-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.xml.ws:jboss-jaxws-api_2.3_spec and javax.jws:jsr181-api -->                               
   <dependency>
       <groupId>org.jboss.spec.jakarta.xml.ws</groupId>
       <artifactId>jboss-jakarta-xml-ws-api_4.0_spec</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.websocket:jboss-websocket-api_1.1_spec -->
   <dependency>
       <groupId>jakarta.websocket</groupId>
       <artifactId>jakarta.websocket-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec -->
   <dependency>
       <groupId>jakarta.ws.rs</groupId>
       <artifactId>jakarta.ws.rs-api</artifactId>
   </dependency>
   <!-- replaces org.jboss.spec.javax.xml.soap:jboss-saaj-api_1.4_spec -->
   <dependency>
       <groupId>org.jboss.spec.jakarta.xml.soap</groupId>
       <artifactId>jboss-saaj-api_3.0_spec</artifactId>
   </dependency>
   <!-- replaces org.hibernate:hibernate-core -->
   <dependency>
       <groupId>org.hibernate.orm</groupId>
       <artifactId>hibernate-core</artifactId>
   </dependency>
   <!-- replaces org.hibernate:hibernate-jpamodelgen -->
   <dependency>
       <groupId>org.hibernate.orm</groupId>
       <artifactId>hibernate-jpamodelgen</artifactId>
   </dependency>
   <!-- replaces org.jboss.narayana.xts:jbossxts -->
   <dependency>
       <groupId>org.jboss.narayana.xts</groupId>
       <artifactId>jbossxts-jakarta</artifactId>
       <classifier>api</classifier>
   </dependency>
</dependencies>
Category
Components
Article Type