動作させるクライアントを作成します。ここでは、パッケージをremoting.client.testとします。simpleJBossRemotingClient/src配下に以下のクライアントアプリケーションのクラスを作成します。
SimpleClient.java package remoting.client.test; import org.jboss.remoting.Client; import org.jboss.remoting.InvokerLocator; /** * サーバに対してメッセージを送信し、サーバからのメッセージを受信します。 */ public class SimpleClient { public static void main(String args[]) throws Throwable { InvokerLocator myLocator = new InvokerLocator("socket://127.0.0.1:8888"); Client myClient = new Client(myLocator, "simpleSystem"); myClient.connect(); System.out.println("response:「" + myClient.invoke("ClientからServerへ") + "」"); } }
SimpleClientSocketクラスでは、まず以下で接続方法を定義しています。
InvokerLocator myLocator = new InvokerLocator("socket://127.0.0.1:8888");
サーバに対して接続を行います。
Client myClient = new Client(myLocator, "simpleSystem"); myClient.connect();
サーバのメソッドを呼び出し、処理を実行します。実行後の戻り値をコンソールに出力しています。
System.out.println("response:「" + myClient.invoke("ClientからServerへ") + "」");
まず、サーバであるSimpleServerを起動します。
次に、クライアントであるSimpleClientを起動します。クライアントからサーバのメソッドが呼び出され実行されます。処理後、クライアントはサーバからの戻り値を受信します。
以上のようにして、クライアントからサーバのメソッドを呼び出し、サーバでの処理後に呼び出し元に戻り値が戻される動作が確認できました。
通信処理に関しては、以下のように接続方法を記述する必要があります。
InvokerLocator myLocator = new InvokerLocator("socket://127.0.0.1:8888");
今回使用したSocketがどのような処理を必要とするか、どのように通信しているのかを知らなくても問題なく、クライアントは、ローカルのメソッドを呼び出すかのようにサーバのメソッドを実行できました。サーバも通信を意識することなく処理を記述するだけで実装できました。
次に、別の接続方法を使って接続してみます。先ほどのサンプルではSocketを用いて接続を行いました。次はSocketをRMIに変更して動作させてみたいと思います。SocketをRMIに変更するには、接続方法を定義しているInvokerLocatorクラスに与える文字列の記述を以下のように変更するだけです。
InvokerLocator myLocator = new InvokerLocator("rmi://127.0.0.1:8888");
これは、InvokerLocatorクラスによるものです。このInvokerLocatorクラスは、与えられている文字列を元にして自動的に接続を組み立てます。従って、InvokerLocatorの記述を変えるだけで接続方法を容易に変更できます。そのほかの接続方法に関しては、以下の表のように記述することで接続方法を変更できます。
接続方法 | InvokerLocatorに与える文字列(Server) | InvokerLocatorに与える文字列(Client) |
---|---|---|
Bisocket | bisocket://127.0.0.1:8888 | bisocket://127.0.0.1:8888 |
HTTP(※1) | http://127.0.0.1:8888 | http://127.0.0.1:8888 |
Servlet | http://127.0.0.1:8888(※2) | servlet://127.0.0.1:8888 |
表 そのほかの接続方法 |
それでは、接続方法を変更したサーバとクライアントの実行をしてみます。まず、サーバであるSimpleServerを起動します。
次に、クライアントであるSimpleClientを起動します。クライアントからサーバのメソッドが呼び出され実行されます。処理後、クライアントはサーバからの戻り値を受信します。
以上のように接続方法を変更しても問題なく動作できました。
今回は、分散コンピューティングについて説明しました。今後、読者の皆さんが分散コンピューティングの構築に携わることになったら、ここでの知識を少しでも生かしていただければと思います。
次回は、分散コンピューティング環境の課題の1つとなる「トランザクション」についての常識を説明します。
株式会社ビーブレイクシステムズ技術担当取締役。
上川 伸彦(かみかわ のぶひこ)
RDB製品の開発、各種業界団体におけるXML/EDI標準の策定やSOA基盤の設計などに従事。最近は、ITコンサル業よりも、業務システムの構築に携わることが多く、お客さまからの無理難題と向き合う日々を送っている。
Copyright © ITmedia, Inc. All Rights Reserved.