クラウドで再注目の「分散コンピューティング」の常識:企業システムの常識をJBossで身につける(7)(2/4 ページ)
企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
Java標準の分散オブジェクト技術「Java-RMI」とは
Java-RMIとは、Java Remote Method Invocationの略称で、ネットワークを意識せずにネットワークを介したアプリケーション間でのプログラム呼び出しを可能とするAPIです。前述したCORBAと同じ設計思想ですが、すべてをJavaで記述できるのでCORBAで必要となったIDLなどの別の言語を使う必要がありません。これは、JDK 1.1以降に標準で付属されています。
動作には、クライアント側にスタブモジュール、サーバ側にスケルトンモジュールが必要であり、流れは以下のようになります。
- クライアントがサーバのメソッドを呼び出す
- スタブによって、自動的に引数がストリームに変換される
- このストリームを、サーバ側のスケルトンが受け取ることでオブジェクトのメソッドを呼び出し、処理が実行される
- 処理が実行されたことによる返却値は、逆にサーバのオブジェクト⇒スケルトン⇒スタブ⇒クライアントの流れで戻される
上記がJava-RMIの基本的な流れですが、Javaのバージョンも上がりJava SE 5からはスタブやスケルトンは不要になっています。従って、Java SE 5以上を用いる場合は、スケルトンやスタブの生成は必要がなく、通常のJavaプログラムを作成する手順のみでRMIのプログラムを作成できるようになっています。
さまざまな接続方法を選べる「JBoss Remoting」とは
これまでに説明したCORBAやJava-RMIなど、分散コンピューティングにはさまざまなプロトコルが存在します。どのプロトコルを使うかはネットワーク構成などの環境に依存する部分が大きくあります。
ここからは、JBossにおける分散オブジェクトのための機能である「JBoss Remoting」に焦点を当てます。
JBoss Remotingとは、JBossにおける分散オブジェクトのための機能です。サーバに合わせた接続方法を用いることができるように、接続にはSocketやRMI、HTTP、Servlet、Bisocketを使うことができます。そのため、異なるネットワーク環境で実行されているアプリケーション同士でも接続可能です。
分散コンピューテイングを体感するサンプル
では、実際にサンプルを動作させてみましょう。異なるJVMで動作しているクライアントとサーバの間でのやりとりが分かると思います。通信には、まずSocketを用いてみます。JBoss Remotingのサンプルの概要は、下図の通りです。
- クライアントはInvokerLocatorを用いてSocketにてサーバに接続
- クライアントはサーバのメソッドを呼び出す
- サーバは呼び出されたメソッドを実行
- サーバは戻り値をクライアントへ返却
サンプルは、以上のような流れで実行されます。実際にサンプルを作成してみましょう。開発を行う環境については、これまでの連載を参考にしてください。
サーバとクライアントで別のプロジェクトを作成
サーバのプロジェクトを作成
Eclipse上で[ファイル]→[新規]→[プロジェクト]を選択します。
[新規プロジェクト]のダイアログで、[Web]→[動的Webプロジェクト]を選択し、[次へ]をクリックします。
[新規動的Webプロジェクト]ダイアログを以下のように入力し、[完了]をクリックします。
- [プロジェクト名]simpleJBossRemotingServer
- [Target Runtime]JBoss 5.0 Runtime
- [動的Webモジュールバージョン]2.5
- [構成]JBoss 5.0 Runtime デフォルト構成
次ページでは、クライアントのプロジェクトを作成しサンプルを実装し始めます。
Copyright © ITmedia, Inc. All Rights Reserved.