解説


パフォーマンスの向上とXMLアプリケーション構築をサポート

次世代のAPサーバ「WebLogic Server 6.0」


伊藤敬
日本BEAシステムズ

2000/12/23

BEAのWebLogic Application Server(以下WebLogic Server)は、読者調査でも明らかなように、Enterprise JavaBeansなどに対応 した、Javaプログラマのあいだでも注目度の高いアプリケーション・サーバだ。 同製品は先日、WebLogic 6.0へのバージョンアップを発表した。ここでは、 実際の製品到着前に、この最新バージョンの新機能などについて、同社 マーケティング部の伊藤敬氏に紹介してもらう。(編集局)



内容
J2EE完全対応とEJB2.0への早期対応を実現
メッセージ・ドリブンBeanで何が可能になるのか?

EJB1.1のパフォーマンスと可用性を向上させる機能
クラスタ対応のJMS
Webベースの管理ツール
分散トランザクションマネージャを搭載
XMLアプリケーション構築をサポート

 BEAのWebLogic Serverは、3回目のメジャー・バージョンアップを迎えることになりました。

 これまでも、EJB1.0の実装やEJB1.0から1.1への更新、クラスタリング機能の実装やJMSの実装など、メジャー・バージョンアップごとに機能の追加を繰り返してきましたが、先日の製品発表会で公開された内容によると、 WebLogic Server 6.0はこれまでにもして多くの機能追加があります。また、今回のバージョンでようやく完全に日本語化されることも、大きな注目点です。

 本稿では、主にJ2EEとXMLに関する主要なポイントをまとめて解説します。


   J2EE完全対応とEJB 2.0への早期対応を実現

 現在JavaSoftが公開しているJ2EE仕様のカレント・バージョンは1.2ですが、WebLogic Serverはほぼ完全にその仕様に含まれるサービスを実装しています。以下にWebLogic Server 6.0が実装するJ2EEバージョン1.2のサービスをまとめた図を示します(図1)

図1 Java2 Enterprise Edition 1.2のサービス

 また、次期J2EE仕様であるバージョン1.3についても部分的に実装しています。中でも、今回の目玉ともいえるEJB2.0の実装は最も重要な追加機能です。EJB2.0はJavaSoftからの仕様もまだFinal Draftの状態ですが、最新の実装環境として製品が提供されます。EJB 2.0には第3のEJBといわれる「メッセージ・ドリブンBean」(図2)の仕様が定義されていますが、WebLogic Server 6.0はJavaアプリケーションサーバとして世界初のEJB2.0仕様の実装・実行環境です。

図2 EJB2.0では、セッションBean、エンティティBeanに加え、メッセージ・ドリブンBeanが追加された

 また、そのほかのサービスでは、JMX、JAAS(一部の機能のみ)、JAXPなどが実装されています。

 ところで、WebLogic Server 6.0には、2つのEJBコンテナが実装されています。前述のEJB2.0対応のコンテナと既存バージョンであるEJB1.1のコンテナです。EJB2.0対応のコンテナに関しては、まったく新規の実装ですので、メッセージ・ドリブンBeanに代表される多くの機能が提供されています。主な機能は以下の通りです。

  • メッセージ・ドリブンBeanのサポート
  • EJB-QLを含むCMPサービス
  • エンティティEJB Homeメソッドのサポート
  • EJB 2.0 XMLディプロイメント・ディスクリプタの対応

   メッセージ・ドリブンBeanで何が可能になるのか?

 ここで簡単にメッセージ・ドリブンBeanの動作について説明します。

 メッセージ・ドリブンBeanはWebLogic JMSのコンシューマの役割を持っており、JMSキューもしくはトピックからメッセージを受け取って、そのメッセージ・コンテンツをもとにビジネスロジックを実行します。EJBデプロイヤはデプロイ時にメッセージ・ドリブンBeanに対して任意のキューもしくはトピックを指定します。WebLogic Serverはメッセージを受け取った時点で自動的にメッセージ・ドリブンBeanのインスタンスを生成し、メッセージの実行時にそのインスタンスに処理を行わせます。メッセージ・ドリブンBeanはセッションBeanやエンティティBeanと違い、EJBクライアントを持ちません。JMSとのメッセージ通信のみで動作します(図3)

図3 メッセージ・ドリブンBeanは、非同期のメッセージング・システムを実現する。コンポーネントベースのためシステムの更新が容易であるメリットを提供する

 この新しいEJBによって、EJBベースの分散型のメッセージングシステムの実現が可能になります。それはこれまでにない、コンポーネント・ベースでかつシステムの更新が非常に容易な非同期メッセージ・システムです。

 さらに、CMPサービスおよびEJB-QLについて簡単に触れておきましょう。EJB-QLはEJB2.0の仕様に記載されているCMPに関するSQL文の記述に関する書式です。これを利用することによって、任意のSQL文をEJBデプロイヤが指定でき、データベースへの柔軟なアクセスが可能になります。

   EJB1.1のパフォーマンスと可用性を向上させる機能

 EJB1.1のコンテナに関しては、パフォーマンスと可用性を向上させるために新たに機能が追加されています。その主な新機能は以下の通りです。

  • エンティティBeanのデータベース排他制御オプション
  • クラスタリング機能の改良 - ステートフル・セッションBeanのインメモリ・レプリケーション
  • 自動デプロイ機能

 エンティティBeanのデータベース排他制御オプションは、主に可用性を向上させる機能です。これまでのエンティティBeanは1つのインスタンスがトランザクションを開始するとレコードにロックがかかり、そのトランザクションがレコードを開放しないかぎりほかのインスタンスやメソッドからのアクセスはできませんでした。この仕様は、単一のEJBインスタンスがマップされるレコードの信頼性を高め、ほかからのデータ更新が可能である場合に必要となるインスタンスを持つフィールドデータのリフレッシュを行わずに済ますことができるというメリットはあります。しかしコンカレント性が必要とされる、高負荷・高速な処理の場合にはボトルネックになりかねません。

 新しいメカニズムでは、WebLogic Serverはインスタンスをキャッシュし続けますがコンテナはインスタンスがトランザクションを処理している間のキャッシングを行いません。その代わりに、トランザクション開始時にWebLogic Server自身がその時点でのインスタンスデータの保持を目的にそのインスタンスのejbLoad()メソッドを呼び出します。

 ステートフル・セッションBeanへのクラスタリング機能の提供はフェイル・オーバを実現します。ステートフル・セッションBeanがデプロイされるとWebLogic Serverは独自のCluster-awareなEJBHomeスタブとReplica-awareなEJBObjectスタブを生成します。EJBObjectスタブはプライマリのWebLogic ServerインスタンスとEJBインスタンス、およびそれらのセカンダリとなるレプリカの状態に関する情報を保持します。クライアントがEJBのトランザクション処理をコミットすると、WebLogic Serverがレプリカ上にあるEJBのトランザクションを処理しステートを一致させます。このレプリカのEJBステート情報はメモリ上に展開されており、パフォーマンスは劣化しません。

 この状態でプライマリ・サーバのインスタンスがダウンすると、クライアントからのメソッド呼び出しは自動的にセカンダリ・サーバに振られます。そしてこのサーバがプライマリ・サーバとして機能するようになります。さらにあらかじめ決められた順番でセカンダリ・サーバへのレプリケーションが開始されます。

コラム
WebLogic Serverはサン・マイクロシステムズが実施しているJ2EE Certification Testに独立系ベンダとして最初に認可されています。サンのJ2EE CTS(Certification Test Suite)は6000を超えるテスト項目を持ち、1つのベンダのJ2EEブランドのコンフィグレーションで実行可能なEJBコンポーネント、JSPおよびServletがほかのJ2EE製品でも動作するかを確認するための認定制度です。WebLogic ServerはそのJ2EEに関する6000を超えるテストをパスし、その製品自身の品質の高さが証明されています。



   クラスタ対応のJMS

 WebLogic JMSアーキテクチャは複数サーバを用いたクラスタリングに対応しました。JMSメッセージのハンドリングを行うJMSファクトリがクラスタとして分散処理されます。クラスタを構成するための情報はデータベース、ファイル、キャッシュに保存することができます。また、クラスタの保証についてはトランザクショナルに保証することもできますし、無保証にすることもできます。クラスタ間の同期にはマルチキャストかRMIを選択することができます。

   Webベースの管理ツール

 WebLogic Server 6.0は新しいWebベースの管理コンソールを提供します。管理コンソールはWebLogic Serverの管理サービスを管理するためのユーザー用ウィンドウです。JMX(Java Management Extension)ベースの管理サービスはユーザーにWebLogic Serverのリソースを管理する機能を提供します。管理コンソールはリソースの属性、コンポーネントやアプリケーションの配布状況、サーバの稼働状況やJVMのメモリ利用状況、データベースのコネクション・プールの利用状況に関するワーニングやメッセージの発生状況監視、システムログの参照、サーバのシャットダウン、そのほかの管理機能を実行できます。

 完全に日本語化されたWebべースの管理コンソールが管理を容易にする

以下に管理コンソールの特徴をまとめます。

  • すべての機能をブラウザ上で実行可能
  • ユーザー/セキュリティ管理機能の集約化
  • 複数サーバ・複数クラスタの一元管理が可能
  • オープン・スタンダードの管理APIであるJMXの採用によって独自開発あるいはサード・パーティ製管理ツールとの接続が可能
  • 既存のweblogic.propaties(テキストファイル)で管理していた項目をすべてコンソールに吸収
  • 集約化したアプリケーション・リポジトリの提供
  • クラスタの運用状況、ユーザーセッションの状況など、各種サーバ・ステータス情報の提供
   分散トランザクションマネージャを搭載

 WebLogic Serverは分散トランザクションと2フェーズ・コミット・プロトコルをサポートしています。分散トランザクションは複数のデータベースなどのリソースマネージャを調整しながら実行できるトランザクションです。2フェーズ・コミット・プロトコルは、複数のリソースマネージャの処理を実行できる単一のトランザクションを実現します。この手法は関連するデータベースの個々のトランザクションによるデータのアップデートとコミット、あるいはトランザクション開始前の状態に全体をロールバックすることによってデータの完全性を保証します。WebLogic Serverの2フェーズ・コミットは、XA準拠のリソースすべてに対応しており、XA準拠のJDBCドライバを利用できるRDBMS、メッセージ・キューイング・システム(MQseries、WebLogic JMS)などを利用できます。特にOracleに関しては、WebLogic独自のXA準拠JDBCドライバを提供しています。

   XMLアプリケーション構築をサポート

 XMLはJ2EEプラットフォームにとって重要なコンポーネントの1つです。J2EEはXMLを使ったBtoBベースのデータ交換のフレームワークを提供しようとしています。現在、JSPフレームワークはサーバ間もしくはサーバ・クライアント間でXMLデータの生成と受け渡しに利用されています。さらに、EJBアーキテクチャではデプロイメント・プロパティにXMLが利用され、EJB自身が持つデータのポータビリティを実現しています。WebLogic Server 6.0はJSP用のXSL処理タグをサポートしています。また、新しい管理コンソールで管理されるDTD用のXMLスキーマ・リポジトリを提供しています。これらの新機能はすべて「XMLコンポーネント」としてWebLogic Serverに実装されています。以下にその構成を示します(図4)

図4 WebLogic Server 6.0に搭載されるXMLコンポーネント群

 図4に示されたWebLogic Server Components(図4右)は、XMLアプリケーションを開発・実行する上で必要な、基本的な機能群です。以下に主なコンポーネントについて概要を示します。

  • Built-in XML Parser
    WebLogic Server 6.0は、以前のバージョンで同梱していたJavaSoftのProjectXパーサに変えて、ApacheのXercesパーサをバンドルしています。デフォルトの設定でXercesパーサがXMLドキュメントをパーシングします。任意のパーサを使用したい場合には、XMLレジストリの内容を変更することによってパーサの変更が可能になります。

  • WebLogic XML Registry
    XMLレジストリはXML管理と制御を簡素化します。このレジストリは多様なパーサの変更に対応して各種の外部XMLアプリケーションなどと連携します。

  • WebLogic XML Registry Management
    XMLレジストリ管理はWebLogic Server管理コンソールに統合されています。

  • WebLogic Integrated JAXP 1.0
    JAXP (Java API for XML Parsing ) 1.0 はJava標準のパーサに独立したAPIを提供します。JAXPを使用することで特定のパーサに依存するアプリケーションをコントロールする目的でWebLogic XMLレジストリを利用することができるようになります。JAXPはSAX 1.0およびDOMレベル1.0に準拠したXMLドキュメントをサポートしています。

  • WebLogic DOMlet/Doclet Attributes
    WebLogic Serverは特別なXML属性をサポートしており、サーブレットからのXMLへのアクセス(SAX、DOMを介して)を可能にしています。また、SAXイベントを処理できるようにするためのSAXハンドラをセットできます。これらの追加属性はXMLへのアクセスに必須ではありません。

 XML Express Components(図4左)は、XMLアプリケーションの利用と開発を促進するためのコンポーネント群やツール群で構成されています。

  • XML parser/JAXP 1.0
    XML ExpressはApache Xercesパーサの最新版が同梱されています。

  • WebLogic Parser Generator
    カスタム・パーシングのパフォーマンスを達成するためにBEAが開発したものですが、ドキュメント・タイプがDTDで表現された、カスタマイズされたSAXパーサを生成することができます。

  • XSLT Processor
    WebLogic Serverは最新のApache Xalan-Java XSLT processorを同梱しています。

  • WebLogic XSLT JSP Tag Library
    JSPタグライブラリはXMLドキュメントに変換する処理の仕組みをJSPページに組み込むことになります。

 WebLogic Server 6.0はこれらの最新機能と合わせて、Webサーバとしての実行環境も強化されています。現在ベータ版のバージョン2が公開されており、まもなく正式版が出荷開始の予定です。また、今回はそのおよそ1カ月半後に完全に日本語化された日本語版WebLogic Server 6.0が販売開始になる予定です。 

[関連記事]
BEA、J2EE 1.3実装のWebLogic最新版を発表(@IT News)
EJBアーキテクチャの基礎(@IT Java Solution)
サーバーサイドJavaテクノロジの重点キーワード「EJB」(@IT Java Solution)




Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間