GlassFishアプリケーション サーバ の最新バージョンは、JavaEE 6 webプロファイル、改善されたOSGiサポート、クラスタリングと高可用性(HA)のフィーチャをサポートする。Oracleが最近リリースしたのは、商用版(Oracle GlassFish Server) とオープンソース版 (GlassFish Server Open Source Edition) のアプリケーション サーバーのバージョン3.1である。この新リリースは、また集中型の管理機能と改善されたJDBC監視機能を提供する。現在のIDEツールサポートには、NetBeansとEclipseプラグイン用の拡張機能が含まれており、Oracle Enterprise Pack for Eclipse の次リリースは、新しい GlassFish 3.1サーバー プラグインを含むようにアップデートされる。
クラスタリングとHAサポートにより、1ドメインに複数クライアントと1クラスタに1ドメインで100ヶまでの複数インスタンスの生成が、webベースのAdmin Console、あるいはコマンドライン インターフェース(CLI)を使って、可能である。 HTTP, EJB, IIOP, SSO, Web Services Reliable MessagingとSecure Conversationのセッション ステートがクラスタに、均等に複製される。全アドミン、管理、監視用データは、RESTful Webサービスでアクセスできる。webベースのアドミンコンソールは、同じRESTfulバックエンドを使っているので、開発者は、同じAPIのセットを使って、同様な機能をツールキットやIDEに統合できる。また、アプリケーションの複数バージョンが同時にデプロイできるので、違うバージョン間で切り替えできる。
OSGiサポート: Apache Felixがランタイムと一緒にバンドルされ、既定のシェルとして使われるが、GlassFishは、Equinox や Knopflerfish の上でも動く。OSGiサポートにより、ハイブリッドなアプリケーション開発ができ、OSGiのモジュール性とJava EEのプログラミングモデルの恩恵を活用できる。開発者は、Java EEアプリケーションからOSGiサービスを使うことができ、その逆もできる。このサポートは、Apache Felixランタイムをバージョン3.0.8にアップデートする。その中にはApache Gogo シェルが含まれている。
Active Redeploy: この新リリースは、 GlassFish Server 3.0 のActive Redeployフィーチャを拡張して、Stateful EJBとEJB Timer コンポーネントを含む。redeployコマンドを使って、アプリケーションが再デプロイされると、 GlassFishサーバーは、HTTPセッションやEJBステートを維持する 。Embedded APIには、完全なEJBフィーチャ サポートがある。
JDBC モニタリング: JDBCモニタリングが改善され、ステートメント リーク検知や再要求、すなわち自動的に、モニターし、ログを取り、そしてアプリケーションがデータベース カーソルの再要求に失敗した場合には、再要求する。このフィーチャにも、SQLクエリのトレース、アプリケーションベースの接続プールの監視、JDBC接続プール用のカスタム バリデーション テンプレートが含まれている。
アプリケーション スコープのリソース: このフィーチャによって、開発者はJDBCリソースのようなリソースを指定して、アプリケーションのデプロイの一部として生成できる。このために、開発者は、リソースのスコープをデプロイされたアプリケーションに限定できるため、アプリケーションを複数のGlassFishインスタンスに跨いで移植するのに、必要な外部デプロイ スクリプトが不要になる。
ユニット テスト: GlassFishサーバーは、Mavenプラグインを使って、ユニット テストの目的で、組込みモードで走らせることができる。開発者は、ライフサイクルにわたる稼働ができ、アプリケーションをデプロイし、GlassFish上にプログラムで、ランタイムの構成を実行できる。わざわざアプリケーション サーバーをインストールして、動かす必要がない。
上記のフィーチャに加えて、アプリケーション サーバーの商用版には、 GlassFish Server Controlに以下の付加価値のあるフィーチャが付いている。
- DASバックアップとリカバリ - 災害復旧ソリューションによって、管理者は既存のドメインをアーカイブにバックアップし、災害の際に復旧できる。
- パフォーマンス チューナー(オンライン ヘルプのみ) - 下層のインフラを解析して、無調整のパフォーマンスに対して最高で300%までパフォーマンスがアップする。
- 監視用スクリプティング クライアント - JavaScriptを使ってランタイムを分析して、カスタムなダッシュボードを作成できる
- Coherence Active Cache - Oracle Coherenceと統合でき、インメモリのセッション複製を Oracle Coherenceで置き換えられるので、セッション複製層と無関係に、アプリケーション層をスケールアウトできる。
- Oracle Access Managerとの統合 - OAMの認可・認証の委譲
- ロード バランサーとプラグイン インストーラ - Oracle Web Server上で走るリバース プロキシ エンジンが、どこにバックアップ セッションが存在するかを正確に知ることによって、賢いフェイルオーバーを提供する。
InfoQは、Oracleで Java EE と GlassFishを担当している、Arun Gupta氏とアプリケーション サーバーの新リリースについて話した。
クラスタリング フィーチャは、Shoalフレームワークを使ってますか? GlassFishサーバーのクラスタリングは、これまでのクラスタリングの実装とどう違いますか?
GlassFishのクラスタリングは、管理者向けのドメインが中心で、1つのサーバー インスタンスも作れますし、分散したマシンに跨いで、複数のインスタンスをまとめて作ることもできます。1つのドメインに、複数のクラスタを作れ、1つのクラスタに複数のインスタンスが作れ、1ドメインに最大100インスタンスまで作れます。複数のマシンをSSHを使って、リモートにプロビジョンし、管理できます。クラスタ内のインスタンスは、均一に構成されていて、webアプリケーションをクラスタに1クリックで配置できます。 GlassFish High Availabilityもまた、 HTTP, EJB, IIOP, SSO, そしてWeb Services Reliable Messaging と Secure Conversationのセッションレプリケーションを提供します。セッションレプリケーションは、全セッションか修正されたセッションのみかのどちらかに設定できる。
GlassFishの商用版、Oracle GlassFish Serverにも付加価値フィーチャがあり、インメモリのセッションレプリケーションを Oracle Coherenceで置き換えることができるので、レプリケーションを別の層に動かすことができる。これによって、セッションレプリケーション層と無関係に、アプリケーションをスケールアウトできる。
そうです。GlassFishは、Shoalを使っています。これは、実行時の動的クラスタリング フレームワークで、インメモリのレプリケーション モジュールの基盤になってます。Shoal GMS (Group Management Service) は、ライフサイクルのイベント通知に使われており、以前のリリースではJXTAでしたが、今回は、Grizzlyを使っているので、GlassFish v2よりも33%パフォーマンスが改善されました。
GlassFish v3.1ではOSGiのサポートが増えてますか?
GlassFish 3.1ですと、OSGi対応のJava EEアプリケーションをデプロイするのが非常に簡単です。このため典型的なOSGiによる恩恵を受けることができます。例えば、モジュール性、依存性管理、サービス ダイナミズムなどですが、それにJava EEからの典型的な便益である永続性、セキュリティ、トランザクション、他の同様なサービスが同じアプリケーションで手に入ります。GlassFish 3.1には、 OSGi R4.2 Enterprise Specificationsの幾つかのRFCを実装し、動くようにしました。なので、OSGiクライアントは、簡単にwebアプリケーションを呼び出し、webアプリケーションは、標準のJava EE APIとお決まりのコードを使って、 OSGiサービスを呼び出すことができます。
Active Redeployフィーチャについて、もっと詳しく話していただけませんか? これは、WebLogic 10.3にある"FastSwap"フィーチャ、と同じものですか?
Active Redeployフィーチャは、IDE(NetBeans かeclipse)とGlassFishの組合せによるもので、開発サイクル中に、開発者の生産性を向上させます。プロジェクトのどのファイルかが生成されたり、保存されると直ちに、webアプリケーションを下層のGlassFishサーバーに再配置します。JSPのような静的なファイルでもEJBやサーブレット クラスファイルのような動的なファイルでも全く同じように機能します。このフィーチャは、主に開発をターゲットにしていますので、運用で使われることは、意図していません。気をつけて欲しいのは、これは、完全にアプリケーションの配置に関することです。一方"FastSwap"は、監視して、変更のあったクラスのみを再ロードします。
開発、管理、監視の点で、新しいバージョンを使うためのツールサポートは、何ですか?
NetBeans, Eclipse, IntelliJは、すでに Java EE 6に関して包括的なツール サポートを提供しています。これらの内、 NetBeans 7.0 と Eclipse 3.6は、GlassFishプラグインにより、GlassFish 3.1を統合できます。これによって、これらのIDEを使って GlassFish Server 3.1にJava EE 6アプリケーションを開発、配置、デバッグできます。
アドミン、管理、監視用の全データは、RESTful Webサービスとして見えますので、お望みツールキットにシームレスに統合できます。 GlassFish webベース コンソールさえも、これらRESTful APIを使っています。"asadmin" CLIは、選んだオブジェクトの監視用スナップショットを提供します。たとえば、クエリ用の所定のプローブによって、webコンテナのスナップショットが取れます。監視データは、webベースのアドミン コンソールか RESTful Webサービスを使って、ブラウザで読み込めます。イベントもSolaris 10+上でDTraceを使って見えます。下層のフレームワークに拡張性があるので、GlassFishがやるように、アプリケーションさえも監視データを生成できます。そして、もっと一般的なものをお望みなら、JavaScriptプログラムを書けば、データを集め、処理できます。集中型のwebベースのアドミン コンソールは、CRUD クラスタ、アプリケーション バージョニング、パスワード エイリアシング や他のたくさんのフィーチャに全ての機能を提供します。
集中型のwebベースのアドミン コンソールは、CRUD クラスタ、アプリケーション バージョニング、パスワード エイリアシング や他のたくさんのフィーチャに全ての機能を提供します。
次のバージョン3.2とGlassFish一般の新しいフィーチャに関して、将来のアプリケーション サーバーのロードマップは、どのようなものですか?
GlassFish 3.2は、仮想化とPaaS能力の追加に集中します。GlassFish 4.0は、Java EE 7の実装への対応を目標にしています。一般に、GlassFishは、非常に安定して、Oracleにとって、戦略的なアプリケーション サーバーなのです。
GlassFishサーバーのオープンソース版から始めて、それから準備ができたらOracleから有償サポートを買えばいい。商用版 と オープンソース版 (API,チュートリアル、サンプルを含んで)Oracle GlassFish Server webサイトからダウンロードできる。
GlassFish Server 3.1の新リリースについて、もっと知りたければ、 "What's New in GlassFish 3.1" と "GlassFish 3.1 Clustering" ウェビナーを見て欲しい。