第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による接続

   Web サービス
  • 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サイトがわかる本」(いずれもオーム社)がある。


Java Solution全記事一覧



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

注目のテーマ

Java Agile 記事ランキング

本日 月間