この付録では、WebLogic Server 7.0とOracle Application Server 10g の比較情報について補足します。ここで説明する内容は次のとおりです。
JAX-RPCが必須のJ2EE 1.4 APIとして正式に標準化されるまで、WebサービスはJava仕様では標準化されていませんでした。アプリケーション・サーバーの各ベンダーは、Webサービス(サーバーとクライアントの両方)を独自の方法でプログラミングしていました。Apache Axisは、通常、異なるベンダー間での移植が可能です。これは、Apache AxisがJ2EE 1.3準拠のすべてのコンテナで実行できる単純なライブラリであるためです。 Axisは、WS-*標準には対応していませんが、広く採用されています。 Apache Axisを使用してWebLogic Webサービスが記述されている場合は、ほとんど変更せずにOracle Application Server 10g リリース3(10.1.3.1.0)にデプロイできます。
理想としては、JAX-RPCは標準で移植可能になります。実装クラス、サービス・エンドポイント・インタフェースおよびWSDLは、異なるアプリケーション・サーバー間でWebサービスをデプロイする要件を十分に満たしています。しかし、SOAPのシリアライズ/デシリアライズは複雑であるため、多くの場合、Webサービスをトップダウンで再アセンブルする必要があります。Oracle Application Serverでは、このタスクを簡単に行うユーティリティが提供されています。WebServicesAssemblerユーティリティで、WSDLを受け入れ、genInterface
コマンドを使用して、必要なサービス・エンドポイント・インタフェース(SEI)を作成します。これによって、Javaクラスなどの任意の必要なアーキテクチャに対してWebサービスを実装できます。サービスをアセンブルするには、topDownAssemble
コマンドでこのユーティリティを起動します。EARファイルが生成されます。
シームレスな移行が理想的な解決方法である場合でも、Webサービスを記述しなおす操作が複雑になるとはかぎりません。特に注意が必要なのは、ビジネス・ロジックが含まれている実装クラスおよびそのビジネス・ロジックをWebサービスとして公開するWSDLです。 WebServicesAssemblerユーティリティでトップダウン方式を使用すると、Oracle Application Server用のWSDLからWebサービスのEARファイルを生成できます。
関連項目: WebServicesAssemblerでトップダウン方式を使用する方法の詳細は、『Oracle Application Server Web Services開発者ガイド』を参照してください。 |
J2EE 1.4仕様に準拠したWebサービスをOracle Application Serverに移行する場合は、独自のWebLogic Server APIへの変更のみを行う必要があります。SEIおよびImpl
クラスは、変更せずに使用できます。通常、WebLogic Serverの独自のAPIとは、Webサービスの実装オブジェクトからHTTPリクエストにアクセスする場合などにデータまたはオブジェクトを検索するAPIです。 この独自のAPIのパッケージ名は、通常weblogic.*
で始まります。これらのパッケージ名は、対応するOracle APIに置き換える必要があります。
Oracle Application Server 10g ではJMS 1.1、WebLogic Server 7.0ではJMS 1.0.2がサポートされています。表A-1に、両方のアプリケーション・サーバーでサポートされている主要JMS機能の一部を示します
機能 | Oracle Application Server 10g |
WebLogic Server 7.0 |
---|---|---|
プラッガブルJMSプロバイダ |
サポートされている |
サポートされている |
メッセージの保存および問合せ機能 |
サポートされている |
サポートされている |
JMSメッセージの永続性 |
サポートされている |
サポートされている |
永続化されたJMSメッセージのフェイルオーバー |
サポートされている |
サポートされていない |
メッセージ・ペイロード: 構造化データ型、非構造化データ型、リレーショナル・データ、テキスト、XML、オブジェクト、マルチメディア・データ |
サポートされている |
サポートされている |
メッセージ・トランスポート: SOAP、Oracle Net |
サポートされている |
サポートされている |
保護アクセス |
サポートされている |
サポートされている |
簡単にメンテナンス可能な表へのビジネス・ロジック、ルールおよびルーティングの抽象化 |
サポートされている |
サポートされていない |
保証付きの配信 |
サポートされている |
サポートされていない |
高可用性構成でのクラスタリング機能 |
サポートされている |
サポートされていない |
JavaクライアントおよびJava以外のクライアントとのインタフェース |
サポートされている |
サポートされていない |
Oracle Application Serverでは、JMSが次のようにサポートされています。
高速、軽量、準拠: Oracle Application Serverでは、そのまま使用可能な2種類のJMS実装が提供されています。
その1つは、OracleJMSです。OracleJMSは、Oracleデータベースの統合アドバンスト・キューイング(AQ)を使用することで、保護されたトランザクション形式のリカバリ可能な保証付きのメッセージ配信を実現します。また、Oracle Application Serverには、高速で軽量のメモリー内JMSもあります。メモリー内JMSは、中間層でのアプリケーション間のメッセージ交換に使用できます。対照的に、WebLogicでは、単純なJMS実装が提供されています。
プラッガブルJMSプロバイダ: Oracle Application ServerのJ2EEアプリケーションでは、JMS APIを使用してキューおよびトピックにアクセスできます。これらのアプリケーションは、Oracle Application Server固有のJNDIネームスペースを使用して、JMSのConnectionFactories
およびDestinations
を検索します。
Oracle Application Serverでは、メッセージ・プロバイダをプラグインするためのResourceProvider
インタフェースが定義されます。また、Oracleアドバンスト・キューイング用の実装クラスおよびMQSeries、SonicMQ、SwiftMQなどのサード・パーティ製メッセージ・システム用の実装クラスが提供されています。ResourceProvider
インタフェースによって、メッセージ・プロバイダ間の切替えをJMSクライアントに対して透過的に行うことができます。JMSクライアントは、同じアプリケーションで複数のメッセージ・システムからのメッセージを併用し、ソース・コードは変更せずにJNDIマッピングを変更するのみで、それらのメッセージを切り替えることができます。
WebLogicでは、他のJMSプロバイダのプラグインに対するサポートが十分ではありません。WebLogicでIBM MQ Seriesをサポートする場合の方法は複雑です。開発者は、MQ Seriesをプラグインするために、個別のクラス・ライブラリであるBEA WebLogic MQ Series JMSクラスを使用する必要があります。一方、Oracle Application Serverでは、プラグイン操作が非常に簡単で、DataSource
と同じくらい単純です。
Oracle Application Server 10g リリース3(10.1.3.1.0)の特長を次に示します。
JMS 1.1のサポート。
汎用JMS JCA 1.5リソース・アダプタが装備されています。このアダプタの仕様は次のとおりです。
WebSphereMQ、Tibco JMS、SonicMQのサポート
MDBの完全サポート
XAの完全サポート
JMXベースの動的構成。
Destination
およびConnectionFactory
の作成または削除を行う場合、サーバーの再起動が不要です。
JMSサーバーのプロパティを変更する場合、サーバーの再起動が不要です。
Oracle Application ServerのJMSルーターでは、Oracle JMS、OracleAS JMS、WebSphereMQ、Tibco JMS、SonicMQ用のブリッジが提供されます。
メッセージのルーティング時のメッセージ・フィルタリングのサポート。
OJMSは、Oracleデータベースの統合アドバンスト・キューイング(AQ)に対するJavaフロントエンドで、保護されたトランザクション形式のリカバリ可能な保証付きのメッセージ配信を実現します。
アドバンスト・キューイングには、多くの重要な機能があります。OJMSでは、Oracleデータベースの堅牢性、問合せ機能とDML操作、スケーラビリティと高可用性、およびメッセージ・ペイロードでのすべてのデータ型(リレーショナル・データ、テキスト、XML、マルチメディアなど)のサポートが利用されます。
次に、一般的な機能について説明します。
メッセージの保存および問合せ機能: OJMSでは、メッセージ・システムとOracleデータベースを統合することで、データベースの堅牢性が利用され、メッセージの保存と監査/追跡が保証されます。また、メッセージ・システムとデータベースの間で2台のPCで操作を行う必要がなくなります。さらに、キューがOracleデータベースに格納されているため、標準SQLを使用してそれらのキューを問い合せることができます。
メッセージ・ペイロード: OJMSでは、様々な構造化データ型および非構造化データ型を、リレーショナル・データ、テキスト、XML、オブジェクト、マルチメディア・データなどのメッセージ・ペイロードとしてサポートできます。
メッセージ・トランスポート: OJMSでは、SOAP、Oracle Netなどの様々なトランスポートを介して、信頼性が高く1回のみ実行される、順序に従ったメッセージ配信がサポートされています。また、MQ-Seriesなどの他のメッセージ・プロバイダをトランスポートに使用することもできます。
保護アクセス: OJMSでは、データベースのACLメカニズムを使用して、個々のキューおよびメッセージに対する厳密なアクセス制御が提供されています。
WebLogic Serverには、Oracle Messaging(JMS)では提供されている次の機能がありません。
簡単にメンテナンス可能な表へのビジネス・ロジック、ルールおよびルーティングの抽象化: OJMSには、拡張ルール機能があります。ルールを使用して、メッセージを効率的にルーティングできます。ルールは、サブスクリプションを定義する際にSQL式として指定できます。ルール・エンジンによって、効率的なルール評価が実行されます。これらのSQL式には、他のPL/SQL、CまたはJavaの関数を含めることができます。Oracle9i Database(リリース2)の場合は、ルールセットでルールを構成し、メッセージ・キューイングとは関係なくルール機能を使用することもできます。
保証付きの配信: OJMSでは、保証された1回のみの配信が行われます。これはOJMS固有の機能です。キュー内のメッセージは、SQLビューを使用して監視できます。単一のSQL文を作成して、メッセージの正確な位置を調べることができます。
高可用性構成でのクラスタリング機能: Oracleアドバンスト・キューイングを使用すると、Real Application Clusters(RAC)による永続性、高可用性およびスケーラビリティなどのOracleスタック全体のメリットを利用できます。
一方、BEA WebLogicのJMSクラスタリングは、OJMSほど堅牢ではありません。JMSを選択する場合の主要な注意事項の1つに信頼性があります。WebLogic Serverでは、サーバー障害に関連する永続メッセージのフェイルオーバーは提供されていません。また、フェイルオーバーは、JMS宛先に対してのみ提供されています。ただし、これらのJMS宛先はレプリケートされません。たとえば、クラスタのすべてのノードにわたって、同じJNDI名で複数の永続キューをデプロイできます。クライアントは1つのノードにのみ到達し、そのノードに障害が発生した時点で、クラスタによって、次に使用可能なノード/キューに透過的にフェイルオーバーされます。
ただし、最初のキューに格納されていた内容は、そのノードを再度起動するまで永続性が保持されるため、最初のキューに残ります。そうでない場合は、メッセージを取得するメカニズムを各自で見つける必要があります。一方、Oracle Application ServerおよびOracle AQでは、Oracle9i RACの高可用性機能を利用して、この問題を回避することができます。
JavaクライアントおよびJava以外のクライアントとのインタフェース: WebLogic ServerのJMS実装では、Java以外のクライアントにメッセージを送信することはできません。Oracle Application ServerのJMSでは、Oracle AQを介して4つのAPI(PL/SQL、Java(JMS)、CおよびXML)が提供されています。このため、任意の言語でエンキューしたメッセージを別の任意の言語でデキューできます。これによって、レガシー・システムを含む様々な異機種間システムとの柔軟な統合が可能となります。
エンタープライズJava環境での最大の問題の1つは、ビジネス・オブジェクトおよびビジネス・コンポーネントをリレーショナル・データベース(RDB)に格納する操作です。Oracle TopLinkを使用すると、Javaオブジェクトをリレーショナル・データベースにマップする、使いやすいマッピング・ワークベンチが提供され、アプリケーション開発の最も困難な側面の1つであるデータベースでの情報の保持が簡略化されて、アプリケーション開発の生産性が向上します。開発者は、Oracle TopLinkを使用して、必要なアプリケーション設計またはデータベースの整合性にほとんど影響を与えることなく、オブジェクトとEnterprise JavaBeansをリレーショナル・データベース・スキーマに柔軟にマップできます。その結果、開発者は、インフラストラクチャの構築ではなく、ビジネス・ニーズへの対応に集中できます。Oracle TopLinkは、JDBCに基づいており、JDBC準拠のすべてのデータベース(Oracleデータベース、DB2、SQL Server、Sybase、Informix、Microsoft Accessなど)に移植できます。
Oracle TopLinkソリューションには、次の3つの主要なメリットがあります。
完成度が増した設計、柔軟性およびパフォーマンス: Oracle TopLinkには、パフォーマンスの最適化機能およびスケーラビリティ機能が豊富に備えられています。パフォーマンスに対しては、JDBCおよびデータベースで提供される最適化機能を常に利用してデータベースおよびネットワークの通信量を最小化するキャッシュ技術で対応しています。
簡略化されたアプリケーション開発: Oracle TopLinkを使用すると、Javaオブジェクトをリレーショナル・データベースにマップする、使いやすいマッピング・ワークベンチが提供され、アプリケーション開発の最も困難な側面の1つであるデータベースでの情報の保持が簡略化されて、アプリケーション開発の生産性が向上します。
リソースの最適化: Oracle TopLinkを使用すると、アプリケーション開発チームは、インフラストラクチャの構築ではなく、アプリケーションの構築に集中できます。
本質的に、Oracle TopLinkは、Javaからリレーショナル・データベースのオブジェクトへのリレーショナル・マッピングを実行するソリューションとしては市場で最も優れています。Oracle TopLinkによって、オラクル社は、可能なかぎりの最良の方法でJavaの世界とリレーショナル・データベースの世界を融合しました。また、JavaオブジェクトとエンティティBeanをリレーショナル・データベースに生産的にマップするという、J2EEの開発者が直面する最大の問題の1つを解決しました。
Oracle Application Server 10g では、Oracle TopLinkがOracle Application Serverの統合コンポーネントとなっています。具体的には、Oracle TopLinkのフレームワークはOracle Containers for J2EEと統合され、Oracle TopLink WorkbenchはOracle JDeveloperと統合されています。