カテゴリ: 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
Play Framework
Play Frameworkでクッキーを守る!Secure属性とHttpOnly属性の設定方法を徹底解説
New2
Play Framework
マイクロサービス時代におけるPlay Frameworkの位置付けを徹底解説!初心者でもわかる最新Javaフレームワークの役割
New3
Play Framework
Play Frameworkとは?特徴と歴史を初心者向けにわかりやすく解説
New4
Jakarta EE
Jakarta EEのServletフィルタとは?仕組みと役割を初心者向けにやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識
No.2
Java&Spring記事人気No2
Jakarta EE
Jakarta サーブレットのdoGetとdoPostの違いと使い分けを徹底解説!初心者でもわかるHTTPリクエスト処理
No.3
Java&Spring記事人気No3
Jakarta EE
Jakarta EEとは?Java EEからの移行の歴史をやさしく解説
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta EE JAX-RSインターセプタの仕組みを完全解説 初心者でも理解できるReaderInterceptorとWriterInterceptorの使い方
No.5
Java&Spring記事人気No5
Play Framework
Play Frameworkのセッション固定攻撃対策!Javaで安全なログイン機能を実装する方法
No.6
Java&Spring記事人気No6
Play Framework
Play Frameworkでセッション管理と認証を連携!Java初心者向けログイン実装ガイド
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EEを支えるEclipse Foundationの役割とは?初心者向けにわかりやすく解説
No.8
Java&Spring記事人気No8
Jakarta EE
Jakarta EE JSON-PとJSON-Bの違いと役割を徹底解説 初心者でも理解できるJSON処理の基本