IK.AM

@making's tech note


tomee-maven-pluginで組み込みTomEE入りJava EE 6アプリを作る

🗃 {Middleware/AppServer/Tomee/1.6}
🏷 Java 🏷 Java EE 6 🏷 TomEE 
🗓 Updated at 2014-04-07T20:03:14Z  🗓 Created at 2014-04-07T20:03:14Z   🌎 English Page

ポータブルな、APサーバー入りjarが最近好き。java -jar xxx.jarで起動できるやつ。

Tomcat単品組み込みならspring-bootつかったり、tomcat7-maven-pluginで簡単に作れる。

Java EEでもできないかなと思ったが、Java EE 7のGlassFishやWildFlyだとできなさげ。

TomEEのMaven pluginならできそうだったので、TomEEを試してみた。

TomEEことはじめ

Maven Archetypeから雛形プロジェクト作成

$ mvn archetype:generate -DarchetypeGroupId=org.apache.openejb.maven -DarchetypeArtifactId=tomee-webapp-archetype

ビルド&ラン

$ mvn clean package tomee:run

http://localhost:8080 にアクセス

image

できた!

最新版を使用する

組み込みjarはtomee-maven-plugin 1.6.1(まだsnapshot)からサポートされている。そっちを使う場合は

$ mvn archetype:generate -DarchetypeGroupId=org.apache.openejb.maven -DarchetypeArtifactId=tomee-webapp-archetype -DarchetypeCatalog=http://repository.apache.org/content/groups/snapshots -DarchetypeVersion=1.6.1-SNAPSHOT

pom.xmlに以下を追加・・

  <pluginRepositories>
    <pluginRepository>
        <id>apache-snapshot</id>
        <name>Apache Snapshot Repository</name>
        <url>https://repository.apache.org/content/groups/snapshots/</url>
    </pluginRepository>
  </pluginRepositories>

$ mvn package tomee:exec

を実行するとtarget/<artifactId>-<version>-exec.jarができる。

あとはjava -jar target/<artifactId>-<version>-exec.jarで起動! ポータブルだ!

(※ Windowsでmvn tomee:execして作ったjarだと起動できなかった・・)

デフォルトではJava EE 6のWeb Profileのアプリが作られる。

JAX-RSを追加したい場合は、<tomeeClassifier>javarsを指定する。

<plugin>
    <groupId>org.apache.openejb.maven</groupId>
    <artifactId>tomee-maven-plugin</artifactId>
    <version>1.6.1-SNAPSHOT</version>
    <configuration>
        <context>ROOT</context>
        <tomeeClassifier>jaxrs</tomeeClassifier>
    </configuration>
</plugin>

JAX-WSやJMSも使いたい場合は、<tomeeClassifier>plusを指定する。

<plugin>
    <groupId>org.apache.openejb.maven</groupId>
    <artifactId>tomee-maven-plugin</artifactId>
    <version>1.6.1-SNAPSHOT</version>
    <configuration>
        <context>ROOT</context>
        <tomeeClassifier>plus</tomeeClassifier>
    </configuration>
</plugin>

違いはこちらを参照。

TomEEならWebSocket(JSR-356)も使えると思うから、Java EE 7じゃなくても少しは我慢できるかも!?

これで少しはJava EEでアプリ作る気が出てきた。


✒️️ Edit  ⏰ History  🗑 Delete