チュートリアル: 最初の Jakarta EE アプリケーション
このチュートリアルでは、IntelliJ IDEA でシンプルな Jakarta Enterprise Edition (EE) Web アプリケーションを作成する方法について説明します。アプリケーションには、Hello, World! を表示する単一の JSP ページと、同じく Hello, World! を表示する Java サーブレットへのリンクが含まれます。
Web アプリケーションテンプレートを使用して新しい Jakarta EE プロジェクトを作成し、アプリケーションサーバーの場所を IntelliJ IDEA に伝え、実行構成を使用してアーティファクトをビルドし、サーバーを起動して、アーティファクトをサーバーにデプロイします。
必要なものは次のとおりです。
関連するプラグイン | デフォルトでは、IntelliJ IDEA Ultimate には次の必要なプラグインがバンドルされ、有効になっています。何かが機能しない場合は、次のプラグインが有効になっていることを確認してください。
プラグインのインストールの説明に従って、GlassFish プラグインをインストールして有効にします。 |
Java SE Development Kit (JDK) バージョン 1.8 以降 | Java 開発キット (JDK) に従って IntelliJ IDEA から直接 JDK を取得するか、手動でダウンロードしてインストールできます (例: Oracle JDK(英語) または OpenJDK(英語))。 |
Tomcat | Tomcat(英語) アプリケーションサーバーバージョン 7 以降。 |
GlassFish | GlassFish(英語) アプリケーションサーバーバージョン 4.0 以降。公式リポジトリ(英語)から最新リリースを入手できます。このチュートリアルの目的には、Web プロファイルサブセットで十分です。 |
Web ブラウザー | Web アプリケーションを表示するには、Web ブラウザーが必要です。 |
新しい Jakarta EE プロジェクトを作成する
IntelliJ IDEA には、さまざまな Jakarta EE 実装に基づいて Jakarta Enterprise プロジェクトを作成するための専用ウィザードが含まれています。このチュートリアルでは、簡単な Web アプリケーションを作成します。
メインメニューで、に移動します。
新規プロジェクトダイアログで、Jakarta EE を選択します。
プロジェクトの名前を入力します:
JakartaEEHelloWorldWeb アプリケーションテンプレート、Maven をビルドツールとして選択し、Oracle OpenJDK 17 をプロジェクト SDK として使用します。アプリケーションサーバーを選択または追加しないでください。後で行います。
次へをクリックして続けます。

バージョンフィールドでは、このチュートリアルで使用する Tomcat 11 と互換性がある Jakarta EE 11 を選択します。
バージョンフィールドで Jakarta EE 9.1 を選択します。これは、このチュートリアルで使用する GlassFish 6.2.5 が互換性があるためです。
依存関係リストでは、Web アプリケーションテンプレートに仕様のサーブレットフレームワークのみが含まれていることがわかります。


作成をクリックします。
デフォルトのプロジェクト構造を調べる
IntelliJ IDEA は、正常にビルドおよびデプロイできる定型コードを使用してプロジェクトを作成します。
pom.xml は、プロジェクトのビルドに必要な依存関係やプラグインなど、Maven 構成情報を備えたプロジェクトオブジェクトモデルです。
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>JakartaEEHelloWorld</artifactId> <version>1.0-SNAPSHOT</version> <name>JakartaEEHelloWorld</name> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.target>21</maven.compiler.target> <maven.compiler.source>21</maven.compiler.source> <junit.version>5.11.0-M2</junit.version> </properties> <dependencies> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.4.0</version> </plugin> </plugins> </build> </project><?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>JakartaEEHelloWorld</artifactId> <version>1.0-SNAPSHOT</version> <name>JakartaEEHelloWorld</name> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.target>11</maven.compiler.target> <maven.compiler.source>11</maven.compiler.source> <junit.version>5.9.2</junit.version> </properties> <dependencies> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>5.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build> </project>index.jsp は、ルートディレクトリの URL にアクセスしたときに開くアプリケーションの開始ページです。
Hello World!と/hello-servletへのリンクをレンダリングします。<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <title>JSP - Hello World</title> </head> <body> <h1><%= "Hello World!" %> </h1> <p/> <a href="hello-servlet">Hello Servlet</a> </body> </html>HelloServletクラスはHttpServletを拡張し、@WebServletでアノテーションが付けられています。/hello-servletへのリクエストを処理します。GET リクエストは、Hello World!をレンダリングする HTML コードを返します。package com.example.demo; import java.io.*; import javax.servlet.http.*; import javax.servlet.annotation.*; @WebServlet(value = "/hello-servlet") public class HelloServlet extends HttpServlet { private String message; public void init() { message = "Hello World!"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html"); // Hello PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>" + message + "</h1>"); out.println("</body></html>"); } public void destroy() { } }
プロジェクトツールウィンドウを使用してプロジェクト内のファイルを参照して開くか、Ctrl+Shift+N を押してファイルの名前を入力します。
アプリケーションサーバーを構成する
IntelliJ IDEA に、GlassFish Tomcat アプリケーションサーバーが配置されている場所を知らせます。
Ctrl+Alt+S を押して設定を開き、を選択します。
をクリックし、GlassFish サーバー Tomcat を選択します。
GlassFish Tomcat サーバーのインストール場所へのパスを指定します。IntelliJ IDEA は、名前とバージョンを適切に検出して設定します。


実行構成の作成
IntelliJ IDEA は、アーティファクトを構築してアプリケーションサーバーにデプロイするための実行構成を必要とします。
メインメニューで、に移動します。
実行 / デバッグ構成ダイアログで、
をクリックし、GlassFish サーバー Tomcat サーバーノードを展開して、ローカルを選択します。
実行構成設定ダイアログの下部に表示される警告を修正します。

ほとんどの場合、以下を修正する必要があります。
サーバータブで、サーバードメインを
domain1に設定します。デプロイタブで、デプロイするアーティファクトを追加します:
JakartaEEHelloWorld:war exploded
サーバータブで、ルートリソースを指すように URL を設定します。
http://localhost:8080/JakartaEEHelloWorld_war_exploded/http://localhost:8080/JakartaEEHelloWorld-1.0-SNAPSHOT/

OK をクリックして、実行構成を保存します。
構成を実行するには、Alt+Shift+F10 を押して、作成したアプリケーションサーバー構成を選択します。
あるいは、上部のメインツールバーで実行構成を選択している場合は、メインツールバーの
をクリックするか、Shift+F10 を押して実行できます。
この実行構成は、アーティファクトを作成してから、GlassFish Tomcat サーバーを起動し、アーティファクトをサーバーにデプロイします。サービスツールウィンドウに対応する出力が表示されます。


これが完了すると、IntelliJ IDEA は指定された URL を Web ブラウザーで開きます。

そうでない場合は、自分で URL を開いてみてください: http://localhost:8080/JakartaEEHelloWorld_war_exploded/ http://localhost:8080/JavaEEHelloWorld-1.0-SNAPSHOT/
アプリケーションを変更する
アプリケーションのソースコードを変更するたびに、実行構成を再起動して変更を確認できます。ただし、特にサーバーを再起動できない場合は、これは必ずしも必要ではありません。ほとんどの変更はマイナーであり、アーティファクトの再構築、サーバーの再起動などは必要ありません。アプリケーションの JSP ページを変更してみましょう。
index.jsp を開き、グリーティングを
Hello WorldからA better greetingに変更します。サービスツールウィンドウで、
をクリックするか、Ctrl+F10 を押します。
JSP ページは静的リソースであるため、更新ダイアログでリソースの更新を選択します。OK をクリックします。
Web ブラウザーでアプリケーションの URL をリフレッシュして、新しい文字列を確認します:
A better greeting.
実行構成設定でデフォルトの更新アクションを構成できます。メインメニューのに移動します。GlassFish Tomcat 実行構成設定のサーバータブで '更新' アクション時オプションを変更します。


フレーム切り替え時オプションを使用すると、IntelliJ IDEA からフォーカスを変更するたびにサーバーを再デプロイして再起動することなく、リソースとクラスをリフレッシュするように構成できます。この場合、アプリケーションを更新アクションを使用する必要はなく、Web ブラウザーに切り替えてページをリフレッシュするだけです。
アプリケーションを WAR にパッケージ化し、実行中のサーバーにデプロイする
前の手順では、すべてのファイルが圧縮されていないデプロイされたアーティファクトを使用してアプリケーションをデプロイしました。これは、再デプロイせずに個々のリソースとクラスを更新できるため、開発の最初の段階で役立ちます。アプリケーションに満足し、リモートサーバーにデプロイして他のユーザーと共有する準備ができたら、圧縮 Web アーカイブ (WAR) 形式を使用することをお勧めします。
リモートグラスフィッシュ リモートトムキャット実行構成を追加して、WAR アーティファクトを実行中のサーバーにデプロイしましょう。これは、前の手順で実行中のサーバーを終了していないことを前提としています。
メインメニューで、に移動します。
実行 / デバッグ構成ダイアログで、
をクリックし、GlassFish サーバー Tomcat ノードを展開して、リモートを選択します。
区別できるように、この実行構成の名前を変更します (例:
Remote GlassFish 6.2.5Remote Tomcat 10.1.5)。デプロイタブを開き、デプロイするアーティファクトのテーブルの上にある
をクリックして、アーティファクトを選択します。
JakartaEEHelloWorld:warアーティファクトを選択し、OK をクリックします。

OK をクリックして、リモート実行構成を保存します。
index.jsp を開き、グリーティングを
Hello from WAR!に変更します。メインツールバーで新しい実行構成を選択し、
をクリックするか、Shift+F10 を押します。

新しい構成では、WAR アーティファクトが構築され、実行中のサーバーにデプロイされます。URL をリフレッシュして、新しい挨拶を確認してください: Hello from WAR!
トラブルシューティング
Jakarta EE との互換性
404 エラーが発生した場合は、プロジェクトの作成時に GlassFish のバージョンと互換性のある Jakarta EE 仕様バージョンを選択したことを確認してください。
詳細については、GlassFish のバージョンの互換性(英語)を参照してください。
Tomcat に接続できません
リモート Tomcat サーバーにアプリケーションをデプロイしようとしたときに Unable to connect to the localhost:1099 のようなエラーメッセージが表示された場合は、次の手順を試してください。
Tomcat サーバーが実行されていることを確認してください。例: 上記で説明したローカル Tomcat 実行構成を起動します。
JMX 認証を構成するか、(運用環境ではない場合) アプリケーションをデプロイするサーバーを実行する前に
-Dcom.sun.management.jmxremote.authenticate=falseVM オプションを渡して JMX 認証を無効にします。
古い IntelliJ IDEA バージョン
IntelliJ IDEA バージョン 2020.2.2 以前を使用している場合、新規プロジェクトウィザードは Tomcat に必要なすべての依存関係を追加しません。この場合、pom.xml を開き、次の依存関係を追加します。
例: バージョン 2020.2.3 では、生成された pom.xml は次のようになります。
次の作業
このチュートリアルでは、シンプルな Jakarta EE アプリケーションを作成してデプロイしました。この知識を拡張するには、チュートリアル: 初めての RESTful Web サービスに従って RESTful Web サービスを作成します。
関連ページ:
プラグインのインストール
プラグインは IntelliJ IDEA のコア機能を拡張します。例: プラグインをインストールして、次の機能を取得します。バージョン管理システム、課題追跡システム、ビルド管理サーバー、その他のツールとの統合。さまざまな言語とフレームワークのコーディング支援サポート。ショートカットのヒント、ライブプレビュー、ファイルウォッチャーなど。新しいプログラミング言語を学ぶのに役立つコーディング演習。プラグイン設定を開くを押して設定を開き、を選択します。マーケットプレースタブを使用して、JetBrains...
SDK
ソフトウェア開発キットまたは SDK は、特定のソフトウェアフレームワーク用のアプリケーションを開発するために必要なツールのコレクションです。例: Java でアプリケーションを開発するには、Java SDK(JDK) が必要です。SDK には、バイナリ、バイナリのソースコード、ソースコードのドキュメントが含まれています。JDK ビルドにはアノテーションも含まれています。一般に、SDK はグローバルです。つまり、1 つの SDK を複数のプロジェクトやモジュールで使用できます。新しいプロジェクトを作...
チュートリアル: 初めての RESTful Web サービス
このチュートリアルでは、IntelliJ IDEA で単純な RESTful Web サービスを作成し、それを TomcatGlassFish アプリケーションサーバーにデプロイする方法について説明します。Web ブラウザーから特定の URL にアクセスするか、この URL に GET リクエストを送信すると、サービスはを出力します。別のアプリケーションサーバーの手順については、このページの上部にあるスイッチャーを使用してください。新しい Java Enterprise プロジェクトを作成し、必要な...
Jakarta EE
IntelliJ IDEA は、Jakarta EE(旧称 Java EE) に基づくエンタープライズ Java アプリケーションの開発をサポートします。IntelliJ IDEA Ultimate では、必要なすべてのプラグインがバンドルされ、デフォルトで有効になっています。主なプラグインは、専用のプロジェクトウィザードなどのコアプラットフォームサポート用の Jakarta EE プラットフォームです。名前が Jakarta EE で始まるその他のプラグインは、JPA、JAX-RS などのさまざまな...