Java EE 7 検証環境構築(10) JBoss Tools で作成した EARプロジェクトをJava EE 6 から 7 に変更する

  1. Java EE 7 検証環境構築(1) WildFly + JBoss Tools で EARプロジェクトを作成し Arquillian で ユニットテストをグリーンにするところまで
  2. Java EE 7 検証環境構築(2) WildFly に DataSourceを作成
  3. Java EE 7 検証環境構築(3) JPAからMySQLに接続するユニットテストをArquillianで実行
  4. Java EE 7 検証環境構築(4) Java EE での DI(Dependency Injection) および CDI(Contexts and Dependency Injection)をながめる
  5. Java EE 7 検証環境構築(5) JBoss Toolsが生成したサンプルソースのCDIを確認する
  6. Java EE 7 検証環境構築(6) JPA エンティティの作成と挿入
  7. Java EE 7 検証環境構築(7) JPA 問い合わせ(1) 名前付きクエリを使ってみる。テストでトランザクションも意識する
  8. Java EE 7 検証環境構築(8) JPA 問い合わせ(2) 動的クエリとCriteria API を試す
  9. Java EE 7 検証環境構築(9) jBatch 概要をおさえる
  10. Java EE 7 検証環境構築(10) JBoss Tools で作成した EARプロジェクトをJava EE 6 から 7 に変更する
  11. Java EE 7 検証環境構築(11) jBatch用 プロジェクトの作成を行う
  12. Java EE 7 検証環境構築(12) jBatch 簡易サンプル作成と Arquillian でユニットテスト
  13. Java EE 7 検証環境構築(13) jBatch REST サービス経由で実行する
  14. Java EE 7 検証環境構築(14) WildFly の管理をGUIで行う
  15. Java EE 7 検証環境構築(15) WildFly を サービスとして設定する(Windows/Linux)
  16. Java EE 7 検証環境構築(16) WildFly と Apache を mod_jk で連携させる(Widows)

Java EE 7 といいつつ、ここまでは、JBoss Tools を使って作成した、EARプロジェクト(Java EE 6)で確認してきたが、jBatch の確認を行うにあたって、EARプロジェクトをJava EE 7 に更新したい。

さてどうすればよいのかなと、JBoss Tools の最新のNightly ビルドとかインストールして 試してみるが、JBoss Central から作成される、EARプロジェクトは依然として Java EE 6 のままだった。

まぁ、JBoss Tools 自体とは別で提供されているだろうので、わずかな期待はしていたがしょうがない。

ということで、ググって、以下のサイトを発見!

WildFly 用の Java EE 7 maven アーキタイプだそう。

言われたとおりにしてみる。

Java EE 7 maven archetypes for WildFly

Using the Java EE EAR Project as a template you will need to do the following.

  1. In the parent POM modify the JBoss version properties for WildFly: version.jboss.maven.plugin : 8.0.0.Final, version.jboss.bom : 8.0.0.Final, version.jboss.as : 8.0.0.Final.
  2. Also in the parent POM dependency management you will need to replace the javaee-6.0 BOMs with the WildFly javaee-7.0 equivalents. Replace org.jboss.bom : jboss-javaee-6.0-with-tools : ${version.jboss.bom} : pom [import] with org.wildfly.bom : jboss-javaee-7.0-with-tools : ${version.jboss.bom} : pom [import]. Replace org.jboss.bom : jboss-javaee-6.0-with-hibernate : ${version.jboss.bom} : pom [import] with org.wildfly.bom : jboss-javaee-7.0-with-hibernate : ${version.jboss.bom} : pom [import].
  3. In the ejb module POM you will need to modify each of the managed dependencies to use the WildFly javaee-7.0 BOM managed versions. For example replace org.jboss.spec.javax.ejb : jboss-ejb-api_3.1_spec with org.jboss.spec.javax.ejb : jboss-ejb-api_3.2_spec.
  4. In the web module POM you will need to modify each of the managed dependencies to use the WildFly javaee-7.0 BOM managed versions. For example replace org.jboss.spec.javax.ws.rs : jboss-jaxrs-api_1.1_spec with org.jboss.resteasy : jaxrs-api.

You may find these links helpful: https://github.com/wildfly/wildfly/blob/master/spec-api/pom.xml, https://github.com/wildfly/boms/tree/master/jboss-javaee-7.0-with-tools,https://github.com/wildfly/boms/tree/master/jboss-javaee-7.0-with-hibernate.

I hope this helps.

プロジェクトの構成

project_structure

親POMの修正

上記プロジェクト構成例では、tallarico の pom.xml の以下の点を修正する。

WildFly用、JBoss version プロパティ

  • version.jboss.maven.plugin を 8.0.0.Final に修正
  • version.jboss.bom を 8.0.0.Final に 修正
  • version.jboss.as を 8.0.0.Final に修正

dependency management の groupId と artifactId をそれぞれ以下に

  • org.wildfly.bom : jboss-javaee-7.0-with-tools : ${version.jboss.bom}
  • org.wildfly.bom : jboss-javaee-7.0-with-hibernate : ${version.jboss.bom}

あと、上記サイトに記述はないが、maven.compiler のパラメータを、1.6 から 1.7 にしておく。

Java EE 7 では、Java SE 7 に対応している。

※修正箇所(および親要素)のみ抜粋(コメントアウトが初期値、コメントアウト行直下のが修正後の値)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <properties>
        <!-- <version.jboss.maven.plugin>7.4.Final</version.jboss.maven.plugin>  -->
        <version.jboss.maven.plugin>8.0.0.Final</version.jboss.maven.plugin>

        <!-- <version.jboss.bom>1.0.7.Final</version.jboss.bom>  -->
        <version.jboss.bom>8.0.0.Final</version.jboss.bom>
        
        <!-- version.jboss.as>7.2.0.Final</version.jboss.as>  -->
        <version.jboss.as>8.0.0.Final</version.jboss.as>
        <!-- 
        <maven.compiler.target>1.6</maven.compiler.target>
        <maven.compiler.source>1.6</maven.compiler.source>
        -->
        <maven.compiler.target>1.7</maven.compiler.target>
        <maven.compiler.source>1.7</maven.compiler.source>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- 
                <artifactId>jboss-javaee-6.0-with-tools</artifactId>  
                <groupId>org.jboss.bom</groupId>
                -->
                <groupId>org.wildfly.bom</groupId>
                <artifactId>jboss-javaee-7.0-with-tools</artifactId>
                <version>${version.jboss.bom}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <!-- 
                <groupId>org.jboss.bom</groupId>
                <artifactId>jboss-javaee-6.0-with-hibernate</artifactId>  
                -->
                <groupId>org.wildfly.bom</groupId>
                <artifactId>jboss-javaee-7.0-with-hibernate</artifactId>
                <version>${version.jboss.bom}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

EJBモジュールのPOM修正

dependency management の artifactId をそれぞれ以下に

  • org.jboss.spec.javax.ejb : jboss-ejb-api_3.2_spec
  • hibernate-jpa-2.1-api

※hibernateの記述は上記サイトにはない

※修正箇所(および親要素)のみ抜粋(コメントアウトが初期値、コメントアウト行直下のが修正後の値)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <dependencies>
        <dependency>
            <groupId>org.jboss.spec.javax.ejb</groupId>
            <!-- 
            <artifactId>jboss-ejb-api_3.1_spec</artifactId>
            -->
            <artifactId>jboss-ejb-api_3.2_spec</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <!-- <artifactId>hibernate-jpa-2.0-api</artifactId>  -->
            <artifactId>hibernate-jpa-2.1-api</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

WebモジュールPOM修正

dependency management の groupId と artifactId をそれぞれ以下に

  • org.jboss.resteasy : jaxrs-api
  • org.jboss.spec.javax.faces: jboss-jsf-api_2.2_spec
  • org.hibernate.javax.persistence : hibernate-jpa-2.1-api

※修正箇所(および親要素)のみ抜粋(コメントアウトが初期値、コメントアウト行直下のが修正後の値)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <dependencies>
      <dependency>
      	 <!-- 
         <groupId>org.jboss.spec.javax.ws.rs</groupId>
         <artifactId>jboss-jaxrs-api_1.1_spec</artifactId>
      	  -->
         <groupId>org.jboss.resteasy</groupId>
         <artifactId>jaxrs-api</artifactId>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>org.jboss.spec.javax.faces</groupId>
         <!-- <artifactId>jboss-jsf-api_2.1_spec</artifactId>  -->
         <artifactId>jboss-jsf-api_2.2_spec</artifactId>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>org.hibernate.javax.persistence</groupId>
            <!-- <artifactId>hibernate-jpa-2.0-api</artifactId>  -->
            <artifactId>hibernate-jpa-2.1-api</artifactId>
         <scope>provided</scope>
      </dependency>
   </dependencies>
</project>

上記編集後、プロジェクトのコンテキストメニューから、Maven - Update Project を実行する。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です