Java EE 6/Glassfish V3についてのまとめ
そういやこれかいてなかったな。
JavaEE 6をずっとおってきて過去にいろいろと書きました。Servlet API 3.0はweb.xmlすらオプションになったり、自分で必要なものをフィルターやサーブレット等に設定するコードを自由に書けるようになったりしたのがでかいです。ELにメソッドが使えるようになったのもかなりきてますね。
まずはGlassfish V3をお試しあれ。最も軽いJava EEアプリケーションサーバーです。
高速なデプロイ
Glassfish V3はEclipse、NetBeans、IDEAともに対応していてすごい簡単に開発が出来るのがわかると思います。え?JavaEEサーバーは重いって?300msとかでデプロイできる環境が遅いというのならばそうなのでしょう。デプロイ時間はTomcatとかわりません。それどころかデプロイするファイルが減る可能性もありますので軽くなる場合もあります。たとえばTomcatはJSTLすらないですよね。それらはアップロードする必要はありません。
機能をつけたりはずしたり。管理ツールはすべてGUIも用意されています
また、Glassfish V3は非常にプラガブルになっています。いらないものをはずしたりつけたりすることがGUIで簡単に管理できます。もちろん、通常のアプリケーションの配備やJDBCやコネクションプーリングの設定、JavaMailの設定、セキュリティ等すべてGUIで設定可能です。もちろん、コマンドラインでコマンドを打つことによっても可能です。どちらでも好きなスタイルを選んでください。
Glassfish V3は2つダウンロードするものがあります。Java EE 6の全ての機能が入ったフルスペックのバージョンとWarファイルしか使えないバージョンです。個人的にはファイルサイズが小さいことも合って公社がオススメです。そして足りない機能は後から追加すればいいだけです。
最新のServletとEL、JTA、コネクションプーリング、GUIで操作可能な管理ツール、これだけでもTomcatから乗り換える理由になりますね。これらの機能がないからDIコンテナを使うということも多いでしょうが、これらの機能を使うように設定しておけば、アプリケーションにJDBCのIDとパスワードやコネクションの設定をする必要がありません。アプリケーションはポータブルになります。warアーカイブにDB接続情報が入っているのはあまり望ましくないと考えます。
再デプロイでセッションの維持
また、Glassfish V3は再デプロイ時にセッションを維持することが可能です。これはディレクトリデプロイでもwarデプロイでも同様です。「1」というものを「2」と間違って設定してしまったために、サーバーのセッションを破棄しなくてはならない、接続中のユーザーに迷惑をかけるということがなくなります。これは地味ながら便利な機能なはずです。
管理用はポートが分かれている
Glassfishは伝統的にアプリケーション用と管理ツール用とでポートが分かれています。特定のポートだけ外につなぐことによって社内からはGUIの管理ツールにアクセスが出来て、外からはアプリケーションしかアクセスできないようにすることが容易です。もちろん、ポートは増やすことが可能です。どのアプリケーションをどこにマッピングするかすべてGUIで管理可能です。
過去のJava EE 6/Glassfish V3エントリまとめ
- Servlet 3.0の新機能 動的サーブレット/フィルター登録
- Servlet 3.0の新機能 ファイルアップロード
- Servlet 3.0の新機能 非同期処理を試す
- Java EE 6 のEL(式言語)の新機能
- Servlet 3.0のweb-fragment
- Servlet 3.0のweb-fragmentと動的設定
- XMLを一切書かないですむことで有名なJSF 2.0を軽くさわる
- JSF 2.0の新機能AJAXサポートを試す
- 超簡単になったJSF 2.0をさらに試す
- 超簡単になったJSF 2.0でAjaxを試す
- JSF 2.0でforeach
- JSF 2.0のナビゲーションがシンプルすぎてよろしい
- JSF 2.0のGETサポート新コンポーネント
- JSF 2.0のGETパラメータの受け取り
- JSF 2.0のフラッシュ記憶
- JSF 2.0でコンポーネントのHotDeploy開発
- ui:repeatとEL Methodで世界が変わるJSF 2.0
- JSF 2.0で作るWebアプリケーション 前編
- JSF 2.0で作るWebアプリケーション 中編
- JSF 2.0で作るWebアプリケーション 後編
- JSF 2.0 のコンバータ
- JSF 2.0 で一歩先行く軽いAJAXを
- JSF 2.0 Ajaxの通信監視 と jQuery
- JSF 2.0AjaxサポートとjQueryの連携
- JSF 2.0 Ajaxによるナビゲーション
- Google App Engine でJSF 2.0を動かす
- JSF 2 のスキャンパッケージのルート指定
- JSF 1とJSF 2の違い
- JSF 2.0のテンプレート機能を使う
- JPA 2.0のデータベース接続情報
- JPA 2.0の新機能 悲観的ロックを試す
- JPA 2.0の新機能 Timestampリテラル
- JPA 2.0の新機能 CASE文を試す
- JPA 2.0の新機能 IN コレクションを試す
- JPA 2.0の新機能 TypedQueryを試す
- はじめてのCDI(旧名WebBeans)
- CDI(旧名WebBeans)入門 その1
- CDI(旧名WebBeans)入門 その2
- CDI(旧名WebBeans)入門 その3
- CDI(旧名WebBeans)入門 その4
- CDI(旧名WebBeans)入門 その5
- CDI(旧名WebBeans)入門 その6
- T2FrameworkとCDIを組み合わせる
ふう、まとめるのちかれた。たぶん、もれがあるのでそういうのは後で追加する。
JPA 2.0ネタは見事に途中ですな。正式版が出てなかったのでというのもあるけど。
見出しをわかりやすく全部変えようと思ったけど大変なので途中でやめた。
オススメ記事は「ELの新機能」と「ui:repeatとEL Methodで世界が変わるJSF 2.0」、「JSF 2.0で作るWebアプリケーション」、「Servlet 3.0の新機能動的サーブレット/フィルター登録」、「JPA 2.0の新機能 悲観的ロックを試す」あたり。
JAX-RSはアノテーションの名前や使い方がJava EE 6に含まれる1.1では多少変わっているので注意。プロデュースやコンシューマアノテーションではmimeにあわせて結果を自動で取得/変換するのは面白いと思う。ユーザーがXMLで送るのかJSONで受け取るのかそのへんの変換は全自動だからだ。開発者はBeanを作るってそれをわたすだけ。GAEでも動くはずなのでGWT等でRESTな通信をやりたいのなら選択肢としてかなり有望。HTMLはVelocity等を使って出力するしかないけど。
ちなみにSOAPであるJAX-WSはすでにJavaSEに含まれているので、もっと使われてもいい気がする。これがあの面倒だったSOAPかと思うはず。Axisとか固有の製品使う人はもういないと思うけど。