初めてのJava EE 6 (セットアップ〜Servlet)
ふと、Java EE 6ってもうリリースされてるんだなぁと思い、ちょこっと触ってみた。Java EE 6を今触るならNetBeansの方が良さそうだけど、今回は使い慣れているEclipseでチャレンジです。
Eclipseで今Java EE 6を触ってみるなら、GlassFishのプラグインを使うのが簡単でオススメと思われます。すでに、Eclipse3.4/3.5の環境がある人は個別にこのプラグインを入れると良い。EclipseではじめるJava EE 6 - しんさんの出張所 はてな編などで説明されてます。
自分はPython用のEclipse環境しか持っていないので、今回はGlassFishがバンドルされたEclipseである、「GlassFish Tools Bundle for Eclipse 」なるものを使います。Sun Microsystems、EclipseバンドルのGlassFishをリリース | エンタープライズ | マイナビニュースなんかで過去に記事で紹介されてますが、要はGlassFish入りEclipseです。GlassFishは追っかけていなかったので存在を知りませんでした。
セットアップ
- 2009/12/26時点で最新の、GlassFish Tools Bundle for Eclipse v1.2をインストールしました。
- GlassFish Tools Bundle For Eclipse - Downloadsからダウンロードします。自分はMacなのでMac OSX Intelを選択してダウンロード。
- インストーラ形式になっているので、ダブルクリックしてインストール開始。特にインストールオプションなどは無いので、次へ押すだけでインストール完了です。
HelloWorldなServletを作ってみよう
- では早速、JavaEE6に触れてみましょう。まずは基本であるServletですかね。
- 動的Webプロジェクトを作ります。Project Explorerで右クリック-[New]-[Dynamic Web Project]を選択。
- Proect nameに「helloworldと入力します。Configurationは「Default Configuration for GlassFish v3 Java EE 6」を選択して[Finish]ボタンをクリック。これでhelloworldプロジェクトが出来上がります。まだWTPがServlet 3.0に正式対応していからか、Dynamic Web module versionが2.5(つまりServlet 2.5)となっていますが気にしなくてOKです。
- Servletを作ります。作成したhelloworldプロジェクトを選択し、右クリック-[New]-[Web Servlet (Java EE 6)]を選択します。
- ウィザードが起動するので、以下のように入力して[Finish]をクリックします。
- Java package: org.example
- Class name: HelloWorld
- これで以下のようなコードのServletクラスができあがります。
- @WebServletというアノテーションが、Java EE 6 (のServlet 3.0) の新機能ですね。このアノテーションを付けるだけで、今まで必要だったweb.xmlの設定が不要になります。
/** * Servlet implementation class HelloWorld */ @WebServlet(name = "HelloWorld", urlPatterns = { "/HelloWorld" }) public class HelloWorld extends HttpServlet { private static final long serialVersionUID = 1L; (省略)
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>helloworld</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
- 早速動かしてみましょう。HelloWorldクラスを選択し、右クリック-[Run AS]-[Run on Server]を選択します。
- 使用するサーバを選択します。GlassFishを選択して[Finish]をクリックします。
- GlassFishの起動&アプリケーションのデプロイが行われます。起動完了後、自動的にEclipse内でブラウザが開き、「http://localhost:8084/helloworld/HelloWorld」にアクセスされてServletが動きます。
- GlassFishはホットデプロイにも対応しています。試しに、HelloWorld.javaで画面を生成している部分を書き換えてみます。以下のように(Hot Deploy)と挿入し、保存します。
out.println("<html>"); out.println("<head>"); out.println("<title>Servlet HelloWorld</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>(Hot Deploy) Servlet HelloWorld at " + request.getContextPath() + "</h1>"); out.println("</body>"); out.println("</html>");
- すると即座にGlassFishが反応し、リデプロイが行われます。EclipseのConsoleビューでserver.logを見ることができるので、切り替えると以下のようにリデプロイされたことを確認できます。
情報: Loading application helloworld at /helloworld
情報: Loading application helloworld at /helloworld
情報: Loading application helloworld at /helloworld
情報: helloworld was successfully deployed in 277 milliseconds.
- ブラウザをリロードすると、ちゃんと修正が反映されて画面が表示されます。
それにしてもGlassFishは起動が速いですね。ログを見ると、起動は7秒くらいのようです。これでJTA、EJBなども使えるとは。。。JBossASも頑張ってほしいなぁ。不要なサービスは外せるようなので、Webコンテナ+JTAだとかなり速くなるのではないでしょうか。
情報: GlassFish v3 (74.2) startup time : Felix(2688ms) startup services(4297ms) total(6985ms)