第7回 J2EEと外部システムを連携する方法
樫山友一
2002/7/23
第6回「Webサイトの詳細設計」までで、基本的な設計の流れを一通り終えました。今回は、J2EEアプリケーションサーバを用いて、外部のシステムと連携させる方法について解説します。Webサイトのサービスは年々進化し、メインフレームと直接通信するシステムやほかの会社のシステムと連携しながら動作するWebサイトのシステムなどが多くなってきています。J2EEの世界では、どのように外部システムと連携させるのでしょう。
まず、接続する相手のシステムにはどのようなものがあるのでしょうか。以下に列挙してみます。
カテゴリ |
製品・技術 |
リレーショナル・データベース |
オラクル、DB2、SQL Serverなど |
オブジェクト指向データベース |
ObjectStore、Objectivity |
Windowsシステム |
COM、.NETなど |
OLTP |
TUXEDO、JP1など |
ファイル |
ワードドキュメント、PDFなど |
ミドルウェア製品 |
CORBA、DCEなど |
アプリケーションパッケージ |
ERP製品、CRM製品など |
グループウェア |
ロータス・ノーツ、Exchangeなど |
XMLによる連携 |
Webサービス、EAI製品 |
上記のリストは、ほんの一部にすぎません。システムを開発する場合には、接続する相手のシステムは、もっと多く存在します。接続相手ごとに最も良い選択をしなければなりません。そういう場合には、J2EEが標準でサポートしている接続方法を選択することが最も望ましいと思います。では、J2EEでサポートする接続方法とはどのようなものがあるのでしょうか。順に説明していきましょう。
|
JDBC(Java
Database Connectivity) |
- リレーショナル・データベースへの接続に用いられる。実際には、J2EEの仕様ではなく、Javaのスタンダード・エディションに含まれる
- トランザクションがサポートされる。また、複数のデータベースへのトランザクションを1つにするための2フェイズコミットなども利用することができる。トランザクションを管理するうえで最も良い手段である。最も多く使われているため品質が高い
- JDBCドライバは、J2EEアプリケーションサーバが内包している場合とデータベースベンダから提供される場合がある
|
図1 JDBCでの接続 |
|
JCA(J2EE Connector
Architecture) |
- アプリケーションパッケージ製品との接続のための仕様。各アプリケーションパッケージベンダからアダプタが提供される。これをJ2EEアプリケーションサーバに組み込んで接続を行う。トランザクション処理もサポートされる
- 利用方法はJDBCと近いため、比較的プログラミングがしやすい。ただし、提供しているベンダがまだ少なく、アダプタの価格も高めである
|
図2 JCAでの接続 |
|
Java RMI(Java
Remote Method Invocation) |
- Javaのリモートオブジェクト呼び出しのしくみ。Javaのスタンダード・エディションに含まれる。アプリケーションがRMIのインターフェイスを用意しているか、アプリケーションに合わせてRMIのインターフェイス部分を作成することで接続する
- アプリケーションごとにインターフェイスを決め、設計、コーディングをする必要がある。トランザクション管理はサポートされていないので、トランザクション処理が必要な場合は、トランザクションを考えた設計・コーディングが必要になる。すべてを開発するので、品質を保証するためのテストにかなりの手間がかかる。特にエラー処理を実装するための時間と労力がかかる。ただし、必要最低限の実装をすればよいので、接続要件によっては簡単に開発できる可能性がある
|
図3 RMIによる接続 |
|
CORBA
(Common Object Request Broker Architecture) |
- JavaからのCORBAの呼び出しは、いくつかの団体にて相互接続性が検証されている。J2EEアプリケーションサーバも標準でCORBAをサポートしているものが多い
- Javaが標準でサポートしているためにCORBAのIDLの情報を取得できれば比較的簡単に接続できる
|
図4 CORBAによる接続 |
|
JNI(Java Native
Interface) |
- Javaから、OSに依存するNativeのプログラムを呼び出すためのしくみ。OSに依存するNativeのプログラムがほかのシステムと通信をするような場合にJNIを利用して呼び出し、ほかのシステムと接続することが可能
- 接続先のシステムあるいはアプリケーションに接続するための手段として、特定のOSやプラットフォームに依存したNativeのプログラムしかない場合に利用する。接続手段がNativeコードのため接続自体のパフォーマンスは良いが、JNIの呼び出しにコストがかかるので、呼び出し回数が多い場合には注意が必要。また、JavaVM
がJNIでほかのプログラムを起動する場合には、Java VMが動作しているプロセスが確保しているメモリ領域と同じメモリ領域を確保するOSがあるために、J2EEアプリケーションサーバの動作環境によって呼び出し方法に工夫が必要。この場合は、JNI呼び出しを行う専用の機能をほかのJava
VMで動作させ、J2EEアプリケーションサーバからRMIなどを使って呼び出す
|
図5 JNIによる接続 |
|
JMS(Java Messaging
Service) |
- メッセージベースの通信を行うためのしくみ。ほかのメッセージシステムなどと連携して動作させることにより、ほかのシステムとの接続を行う
- J2EEアプリケーションサーバ内にあるJMSのサービスを利用する。接続するシステムまたはアプリケーションに非同期でメッセージを送る場合と、システムまたはアプリケーションからJ2EEアプリケーションサーバへ非同期でメッセージを送る場合が考えられる。両方とも接続先でJavaのインターフェイスを用いてJMSに接続する必要がある。または、JMSをサポートしたメッセージングパッケージなどを利用する
|
図6 JMSによる接続 |
- JavaからWebサービスを利用することが可能。J2EEアプリケーションサーバには、Webサービスを標準でサポートしているものが多く存在する
- Webサービスは、HTTPによる通信なのでファイアウォールを越えた接続が可能。また、システム統合では標準のインターフェイスとして用いられている可能性があり、多くのアプリケーションパッケージベンダがサポートを表明している
|
図7 Webサービスの利用 |
ここまでは、J2EEの範囲で考えられる接続方法ですが、システム関連系の連携を行うために提供されている製品もあります。
|
EAI(Enterprise
Application Integration)製品 |
- システム間の連携を可能にする。例えば、既存の受注システムと在庫管理システムを連携させて動作させたい場合などに利用する
- 製品によって構造は異なるが、主にXMLベースの製品とORB(Object Request Broker)ベースの製品に大別される。基本的には、アプリケーションからのメッセージをEAI製品が持つメッセージの形式に変換して、ほかのシステムへ送信するといった動作をする
- J2EEへのインターフェイスを持っているために、この製品を利用してJ2EEアプリケーションサーバとほかのシステムを連携させることができる
|
EII ( Enterprise
Information Integration )製品 |
- アプリケーション間の連携ではなく、データの統合に用いられる。データの所在やデータベースの種類、データが格納されるアプリケーションなどを隠ぺいして、統一的なインターフェイスを提供することができる
- J2EEアプリケーションサーバ上に実装されている製品があるので、データ連携であればこれらの製品を利用することができる(筆者の所属するイーズ・コミュニケーションのLinkmaxもこれに当たる)
さて、実際に接続するシステムがあった場合に、どのように接続方法を選択するのでしょうか。これには、実際の設計のしやすさ、プログラミングのしやすさのほかに接続手段を提供している会社からドライバやアダプタなどを購入した場合の価格、ネットワークの制限などいくつかの決定要因があります。選択の基準となる項目を以下に挙げます。
要件 |
適した選択 |
トランザクション管理は必要か? |
書き込みのロールバックが必須の場合は、トランザクションがサポートされている接続方法が望ましい。JDBCかJCAを選択 |
インターネットを経由した接続をしたい |
必ず間にファイアウォールが存在するためにWebサービスが最も適している。RMIプロトコルをHTTPとして通信することも可能 |
非同期の接続をしたい |
JMSが最も適する。JMSを利用できない場合は、独自に開発する必要がある |
接続方法は、J2EEアプリケーションベンダやアプリケーションパッケージベンダなどが情報を持っているのでまず問い合わせてみることをお勧めします。
◆
簡単にほかのシステムとの接続方法をまとめましたが、接続のための製品は日々新しいものがリリースされています。最新の情報をうまく取得して、最も良い方法を選択することが大切です。次回は、Webサイトの信頼性の確保と規模によるシステム構成について解説します。
■参考文献
「わかりやすいUML入門」オーム社
「Webサイトのわかる本」オーム社
プロフィール |
樫山友一(かしやま ゆういち)
大手電機メーカー研究所でオブジェクト指向によるシステム開発に従事する。1996年よりJavaへの取り組みをはじめ、J2EEアプリケーションサーバを活用したWebシステム構築のコンサルタントとして多数のプロジェクトを手掛ける。
2001年3月にイーズ・コミュニケーションズ株式会社の設立に参加し、最高技術責任者に就任。
著書に「わかりやすいUML入門」、「Webサイトがわかる本」(いずれもオーム社)がある。 |