2.4. クイックスタートサンプルの検証
2.4.1. helloworld クイックスタート
helloworld
クイックスタートは JBoss EAP に単純なサーブレットをデプロイする方法を示します。ビジネスロジックは CDI (Contexts and Dependency Injection: コンテキストと依存関係の挿入) Bean として提供されるサービスにカプセル化され、サーブレットに挿入されます。このクイックスタートに基づいて、サーバーを適切に設定および起動することができます。
コマンドラインを使用してこのクイックスタートをビルドしデプロイする手順の詳細については、helloworld
クイックスタートディレクトリーのルートにある README.html
ファイルを参照してください。このトピックでは、Red Hat CodeReady Studio を使用してクイックスタートを実行する方法を説明します (Red Hat CodeReady Studio がインストールされ、Maven が設定された状態で helloworld
クイックスタートがインポートされ、正常に実行されたことを前提とします)。
前提条件
- Red Hat CodeReady Studio をインストールします。手順については、Red Hat CodeReady StudioInstallation Guideの Installing CodeReady Studio stand-alone using the Installer を参照してください。
-
helloworld
クイックスタートを実行します。手順は Red Hat Developer Studio でのクイックスタートの実行 を参照してください。 -
Web ブラウザーを開いて、
http://localhost:8080/helloworld
でアプリケーションにアクセスし、helloworld クイックスタートが正常に JBoss EAP にデプロイされたことを確認します。
ディレクトリー構造の確認
helloworld
クイックスタートのコードは QUICKSTART_HOME/helloworld/
ディレクトリーにあります。helloworld
クイックスタートはサーブレットと CDI Bean によって設定されます。また、バージョン番号が 1.1 であり、bean-discovery-mode
が all
であるアプリケーションの WEB-INF
ディレクトリーに beans.xml
ファイルが含まれます。このマーカーファイルにより、WAR が Bean アーカイブとして識別され、JBoss EAP がこのアプリケーションで Bean を検索し、CDI をアクティベートするよう指示されます。
src/main/webapp/
ディレクトリーにクイックスタートのファイルが含まれます。このサンプルのすべての設定ファイルは、src/main/webapp/
内の WEB-INF/
ディレクトリーにあり、beans.xml
ファイルが含まれます。src/main/webapp/
ディレクトリーには index.html
ファイルも含まれています。このファイルは簡単なメタリフレッシュ (meta refresh) を使用して、ユーザーのブラウザーを http://localhost:8080/helloworld/HelloWorld にあるサーブレットにリダイレクトします。このクイックスタートには web.xml
ファイルは必要ありません。
コードの確認
パッケージの宣言とインポートはこれらのリストからは除外されています。完全リストはクイックスタートのソースコードで確認できます。
HelloWorldServlet
コードを確認します。HelloWorldServlet.java
ファイルはsrc/main/java/org/jboss/as/quickstarts/helloworld/
ディレクトリーにあります。このサーブレットが情報をブラウザーに送ります。例: HelloWorldServlet クラスコード
42 @SuppressWarnings("serial") 43 @WebServlet("/HelloWorld") 44 public class HelloWorldServlet extends HttpServlet { 45 46 static String PAGE_HEADER = "<html><head><title>helloworld</title></head><body>"; 47 48 static String PAGE_FOOTER = "</body></html>"; 49 50 @Inject 51 HelloService helloService; 52 53 @Override 54 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 55 resp.setContentType("text/html"); 56 PrintWriter writer = resp.getWriter(); 57 writer.println(PAGE_HEADER); 58 writer.println("<h1>" + helloService.createHelloMessage("World") + "</h1>"); 59 writer.println(PAGE_FOOTER); 60 writer.close(); 61 } 62 63 }
表2.1 HelloWorldServlet の詳細 行 注記 43
必要な作業は
@WebServlet
アノテーションを追加し、サーブレットにアクセスするために使用する URL にマッピングを提供するだけです。46〜48
各 Web ページには適切な形式の HTML が必要になります。本クイックスタートは静的な文字列を使用して最低限のヘッダーとフッターの出力を書き出します。
50〜51
これらの行は、実際のメッセージを生成する HelloService CDI Bean を挿入します。HelloService の API を変更しない限り、ビューレイヤーを変更せずに HelloService の実装を後で変更することが可能です。
58
この行はサービスを呼び出し、Hello World というメッセージを生成して HTTP 要求へ書き出します。
HelloService
コードを確認します。HelloService.java
ファイルはsrc/main/java/org/jboss/as/quickstarts/helloworld/
ディレクトリーにあります。このサービスは単にメッセージを返します。XML やアノテーションの登録は必要ありません。例: HelloService クラスコード
public class HelloService { String createHelloMessage(String name) { return "Hello " + name + "!"; } }