初めての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を選択してダウンロード。
  • インストーラ形式になっているので、ダブルクリックしてインストール開始。特にインストールオプションなどは無いので、次へ押すだけでインストール完了です。

f:id:Hirohiro:20091226190246p:image

  • Macだとアプリケーションフォルダ配下に実行ファイルが登録されます。これをダブルクリックすればJava EE 6環境が組み込まれたEclipseが起動できます。超ラクチン!

f:id:Hirohiro:20091226190253p:image

HelloWorldServletを作ってみよう

  • では早速、JavaEE6に触れてみましょう。まずは基本であるServletですかね。
  • 動的Webプロジェクトを作ります。Project Explorerで右クリック-[New]-[Dynamic Web Project]を選択。

f:id:Hirohiro:20091226191410p:image

  • Proect nameに「helloworldと入力します。Configurationは「Default Configuration for GlassFish v3 Java EE 6」を選択して[Finish]ボタンをクリック。これでhelloworldプロジェクトが出来上がります。まだWTPServlet 3.0に正式対応していからか、Dynamic Web module versionが2.5(つまりServlet 2.5)となっていますが気にしなくてOKです。

f:id:Hirohiro:20091226191411p:image

f:id:Hirohiro:20091226191412p:image

  • ウィザードが起動するので、以下のように入力して[Finish]をクリックします。

f:id:Hirohiro:20091226192733p:image

/**
 * Servlet implementation class HelloWorld
 */
@WebServlet(name = "HelloWorld", urlPatterns = { "/HelloWorld" })
public class HelloWorld extends HttpServlet {
	private static final long serialVersionUID = 1L;

(省略)       
  • 試しにweb.xmlを見てみると、Servletの定義は一切なしです。
<?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]を選択します。

f:id:Hirohiro:20091226192734p:image

  • 使用するサーバを選択します。GlassFishを選択して[Finish]をクリックします。

f:id:Hirohiro:20091226192735p:image

f:id:Hirohiro:20091226192736p:image

  • 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.

  • ブラウザをリロードすると、ちゃんと修正が反映されて画面が表示されます。

f:id:Hirohiro:20091226194517p:image


それにしてもGlassFishは起動が速いですね。ログを見ると、起動は7秒くらいのようです。これでJTAEJBなども使えるとは。。。JBossASも頑張ってほしいなぁ。不要なサービスは外せるようなので、Webコンテナ+JTAだとかなり速くなるのではないでしょうか。

情報: GlassFish v3 (74.2) startup time : Felix(2688ms) startup services(4297ms) total(6985ms)