NetBeans6.7RC2とGlassfish v3 previewを使ってServlet3.0を試してみます。
NetBeansのダウンロード
NetBeans6.7RC2は、ここから「Java」対応版をダウンロードします。
http://download.netbeans.org/netbeans/6.7/rc2/
RC2なので、インストーラーを使わず、プラットフォームに「OSに依存しないZIP」を使うことをおすすめします。
以降、NetBeansをインストール・解凍したフォルダをNETBEANS_HOMEとします。
Glassfishのダウンロード
Glassfish v3 previewはここから。たぶんフルサポート版でもWeb Profileでも大丈夫。
https://glassfish.dev.java.net/downloads/v3-preview.html
これもNetBeansから使うだけであればZipのほうがいいと思います。
以降、Glassfish v3をインストール・解凍したフォルダをGLASSFISH_HOMEとします。
NetBeansの設定
初期状態では、Glassfish v3は使えない状態になるので、プラグインで「Glassfish v3 enabler」をインストールするか、NETBEANS_HOME/etc/netbeans.confのnetbeans_default_optionsに次の設定を追加します。
-J-Dorg.glassfish.v3.enableExperimentalFeatures=true
そうすると、サーバー登録の選択肢にGlassfish v3が現れます。
netbeans.confを変更する場合は、次の設定も加えておくと、Glassfish v3が登録されます。
-J-Dorg.glassfish.v3ee6.installRoot=
ここに説明があります。
http://blogs.sun.com/vkraemer/entry/7_0_and_glassfish_v3
http://blogs.sun.com/vkraemer/entry/experimental_features_marker
プロジェクト作成
メニューから「ファイル > 新規プロジェクト」を選択して、新規プロジェクトダイアログでJava WebカテゴリからWebアプリケーションを選択して「次へ」ボタンを押します。
「名前と場所」は通常通り入力して、「サーバーと設定」では次のようにGlassfishを選択します。画像では見えてませんが、Java EEバージョンには「Java EE 5」を選択しておきます。
サーブレット作成
プロジェクトができたら、サーブレットを作ってみます。ここで、新規作成するときに「サーブレット」ではなく「Java クラス」にしてみましょう。
適当なパッケージと名前でクラスを作成してみてください。
クラスには、@WebServletアノテーションをつけて、HttpServletクラスを継承します。
それから、doGetメソッドをオーバーライドして次のようなクラスを作成します。import文は[ctrl]+[shift]+[i]で自動的に作成させます。
@WebServlet(urlPatterns="/hoge") public class NewServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=UTF-8"); PrintWriter out = resp.getWriter(); out.println("<html>"); out.println("<h1>Servlet</h1>"); out.println("やあ<br>"); out.println("</html>"); out.close(); } }
プロジェクトで右クリックしてメニューから「実行」をすると、Glassfishが起動してプロジェクトが配備され、ブラウザが開きます。
ここで、WebServletアノテーションのurlPatternsに指定したURLを指定すると、サーブレットの処理結果が表示されます。
ひとつのサーブレットについて、ひとつのクラスで設定もまとめれるので、作業がやりやすいです。
これで、表示されたら、こんどは表示メッセージの部分を次のように変えてみます。
out.println("<html>"); out.println("<h1>Servlet</h1>"); out.println("やあやあ<br>"); //ここを変更 out.println("</html>");
変更したら、[Ctrl]+[S]で保存したあと、そのままブラウザでリロードしてみます。すると、変更が反映されたことがわかります。
コンパイルや配備のことを意識する必要が全くありません。ORマッピングなどを使うと、再配備への時間は増えていくのかもしれませんが、この手軽さはいいです。
EJBの作成
ついでに、EJBも作ってみましょう。適当なパッケージと名前でクラスを作って@Statelessアノテーションをつけ、次のようなsayHelloメソッドを作成します。
package server; import javax.ejb.Stateless; @Stateless public class NewBean { public String sayHello(String msg){ return msg + "こんにちは"; } }
@WebServlet(urlPatterns="/hoge") public class NewServlet extends HttpServlet{ @EJB NewBean bean;//EJBのインスタンスを保持 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=UTF-8"); PrintWriter out = resp.getWriter(); out.println("<html>"); out.println("<h1>Servlet</h1>"); out.println(bean.sayHello("きみたち") + "<br>");//EJBのメソッド呼び出し out.println("やあやあ<br>"); out.println("</html>"); out.close(); } }
まとめ
これが「あの」EJBかというくらい、簡単に気軽に使うことができます。ここまで、最初に起動したとき以外は、ファイルを作成して保存しただけです。
実際に開発するときにどうかという話はあるものの、少し試すためならここまで簡単になったというのは、いいことです。