カテゴリ: Jakarta EE 更新日: 2026/02/01

WARとEARの違いとは?Jakarta EEでの構築と自動配置の基本をマスターしよう

WAR/EARの構築と配置の自動化
WAR/EARの構築と配置の自動化

先生と生徒の会話形式で理解しよう

生徒

「Jakarta EEでWARとかEARってよく聞くんですけど、違いとか使い分けってあるんですか?」

先生

「いい質問ですね。WARとEARは、Jakarta EEでのアプリケーション配布形式の違いを表しています。それぞれの役割と構成の特徴を理解することで、自動構築や自動デプロイの流れも見えてきますよ。」

生徒

「それってMavenとかGradleでも設定できるんですか?」

先生

「もちろんです。Jakarta EEではビルドツールと連携して、WARやEARを自動生成し、そのままサーバーに自動配置することも可能です。では、WARとEARの違いから順番に見ていきましょう。」

1. WARとEARの違いを理解しよう

1. WARとEARの違いを理解しよう
1. WARとEARの違いを理解しよう

Jakarta EEのアプリケーションを配布する際には、主に2つの形式があります。それがWAR(Web Application Archive)とEAR(Enterprise Application Archive)です。

WARファイルは、主にServletやJSP、REST APIなどのWebアプリケーションで使用され、WEB-INF配下にweb.xmlclasseslibが配置されます。

EARファイルは、EJB(Enterprise Java Beans)や複数のWARを統合するような大規模なエンタープライズアプリケーションで用いられ、application.xmlを中心に、.war.jarファイルを一括で含みます。

要するに、WARは単独でWebアプリケーションを動かす形式、EARは複数モジュールを統合管理するパッケージです。

2. Jakarta EEでWAR構成を作る基本

2. Jakarta EEでWAR構成を作る基本
2. Jakarta EEでWAR構成を作る基本

WARファイルは、Jakarta EEでWebアプリケーションを構成する上での基本です。Mavenを使えば、自動的にwarパッケージを作成できます。プロジェクトの構成は以下のようになります。


my-webapp/
├── src/
│   └── main/
│       ├── java/
│       ├── resources/
│       └── webapp/
│           └── WEB-INF/
│               └── web.xml
├── pom.xml

pom.xmlには<packaging>war</packaging>と指定することで、MavenがWARをビルドします。

3. EAR構成で大規模アプリを構築

3. EAR構成で大規模アプリを構築
3. EAR構成で大規模アプリを構築

EARは複数のWARやJARモジュールを統合するため、Mavenではearモジュールを親プロジェクトとして設定します。

例えば、以下のようなマルチモジュール構成にすることで、アプリ全体をEARとしてまとめることができます。


enterprise-app/
├── web-module/       (WAR)
├── ejb-module/       (JAR)
├── ear-module/       (EAR)
│   └── application.xml
├── pom.xml

EARはapplication.xmlを使って各モジュールの定義を行い、Jakarta EEのアプリケーションサーバー(例:Payara, WildFly)に一括でデプロイできます。

4. MavenでWAR/EARのビルドを自動化する

4. MavenでWAR/EARのビルドを自動化する
4. MavenでWAR/EARのビルドを自動化する

WARやEARの構築は手作業でも可能ですが、Mavenのビルドプロセスを使えば自動化できます。

WARなら、Mavenプロジェクトのpom.xmlに次のような記述を追加するだけで、ビルド時に自動生成されます。


<packaging>war</packaging>

EARの場合は、maven-ear-pluginを使用して以下のように定義します。


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ear-plugin</artifactId>
    <version>3.0.2</version>
    <configuration>
        <defaultLibBundleDir>lib</defaultLibBundleDir>
    </configuration>
</plugin>

これにより、コマンドひとつでEARファイルを生成できます。

5. Jakarta EEサーバーへの自動デプロイ

5. Jakarta EEサーバーへの自動デプロイ
5. Jakarta EEサーバーへの自動デプロイ

ビルドされたWARやEARをJakarta EEのアプリケーションサーバーに自動配置することも可能です。たとえば、Payara Serverではautodeployフォルダに配置するだけでアプリケーションが展開されます。

GradleやMavenと連携して、この配置処理も自動化することができます。

例:MavenでPayaraに自動配置


<plugin>
    <groupId>fish.payara.maven.plugins</groupId>
    <artifactId>payara-micro-maven-plugin</artifactId>
    <version>1.0.5</version>
    <configuration>
        <deployWar>true</deployWar>
        <artifact>${project.build.finalName}.war</artifact>
    </configuration>
</plugin>

これで、mvn payara-micro:startを実行すれば、WARがサーバーにデプロイされ起動まで自動化できます。

6. WARとEARの使い分けとベストプラクティス

6. WARとEARの使い分けとベストプラクティス
6. WARとEARの使い分けとベストプラクティス

基本的に、小規模~中規模のアプリケーションではWAR形式で十分です。シンプルで管理が楽だからです。

一方、大規模システムや複数モジュールを一括管理したい場合にはEARが適しています。

現在のJakarta EEではモジュール分離やクラウドネイティブなアプローチが主流となりつつあるため、EARの使用頻度は減ってきているものの、レガシーシステムの保守や移行時には理解が不可欠です。

7. Jakarta EEでのCI/CDに向けた第一歩

7. Jakarta EEでのCI/CDに向けた第一歩
7. Jakarta EEでのCI/CDに向けた第一歩

WARやEARのビルドと自動デプロイの流れを理解することで、Jakarta EEのCI/CD(継続的インテグレーション・継続的デリバリー)へとステップアップできます。

JenkinsなどのCIツールと組み合わせることで、ビルドからテスト、サーバーへの配置まで全てを自動化できます。

これにより、Jakarta EEのプロジェクト管理や運用が効率化され、開発速度と品質が大幅に向上します。

カテゴリの一覧へ
新着記事
New1
Jakarta EE
Jakarta EEとクラウドネイティブ開発の相性とは?初心者向けにわかりやすく解説
New2
Jakarta EE
JakartaEE JSPのリクエスト属性とスコープの基本を徹底解説!初心者向け入門ガイド
New3
Play Framework
Play Frameworkのビューテストを徹底解説!Twirlテンプレートの品質を高める方法
New4
Jakarta EE
JakartaEE フィルタで認証と認可を実装する方法を初心者向けに解説!サーブレットのセキュリティ入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.2
Java&Spring記事人気No2
Play Framework
Play Frameworkのビューを共通化!テンプレート間のインクルード方法を徹底解説
No.3
Java&Spring記事人気No3
Play Framework
Play Frameworkプロジェクト作成直後にやるべき初期設定ガイド!初心者でも安心
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.5
Java&Spring記事人気No5
Play Framework
Play Frameworkで多言語対応(i18n)を徹底解説!Twirlテンプレートでの使い方
No.6
Java&Spring記事人気No6
Jakarta EE
Jakarta EEの標準仕様とAPI一覧を完全解説!初心者でもわかるエンタープライズJavaの基本
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識
No.8
Java&Spring記事人気No8
Play Framework
Play FrameworkでCSSやJavaScriptを読み込む方法を徹底解説!静的リソースの組み込みガイド