連載
» 2010年03月24日 00時00分 公開

企業システムの常識をJBossで身につける(7):クラウドで再注目の「分散コンピューティング」の常識 (4/4)

[上川伸彦,株式会社ビーブレイクシステムズ]
前のページへ 1|2|3|4       

クライアントを作成

 動作させるクライアントを作成します。ここでは、パッケージを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へ") + "」");
    }
}
SimpleClient.java

 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を起動します。

図10 サーバ起動中 図10 サーバ起動中

 次に、クライアントであるSimpleClientを起動します。クライアントからサーバのメソッドが呼び出され実行されます。処理後、クライアントはサーバからの戻り値を受信します。

図11 サーバの実行結果 図11 サーバの実行結果
図12 クライアントの実行結果 図12 クライアントの実行結果

 以上のようにして、クライアントからサーバのメソッドを呼び出し、サーバでの処理後に呼び出し元に戻り値が戻される動作が確認できました。

 通信処理に関しては、以下のように接続方法を記述する必要があります。

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
表 そのほかの接続方法
※1:サーバにHTTPを用いる場合は、tomcat-coyote.jar、tomcat-juli.jarがビルド・パスに必要
※2:Servletはサポートされているが、クライアントからの接続は内部でHTTPに変換されるのでサーバはHTTPで待ち受ける

 それでは、接続方法を変更したサーバとクライアントの実行をしてみます。まず、サーバであるSimpleServerを起動します。

図13 サーバ起動中 図13 サーバ起動中

 次に、クライアントであるSimpleClientを起動します。クライアントからサーバのメソッドが呼び出され実行されます。処理後、クライアントはサーバからの戻り値を受信します。

図14 サーバの実行結果 図14 サーバの実行結果
図15 クライアントの実行結果 図15 クライアントの実行結果

 以上のように接続方法を変更しても問題なく動作できました。

次回は、業務処理に必須のトランザクションについて

 今回は、分散コンピューティングについて説明しました。今後、読者の皆さんが分散コンピューティングの構築に携わることになったら、ここでの知識を少しでも生かしていただければと思います。

 次回は、分散コンピューティング環境の課題の1つとなる「トランザクション」についての常識を説明します。

筆者紹介

株式会社ビーブレイクシステムズ技術担当取締役。

上川 伸彦(かみかわ のぶひこ)

RDB製品の開発、各種業界団体におけるXML/EDI標準の策定やSOA基盤の設計などに従事。最近は、ITコンサル業よりも、業務システムの構築に携わることが多く、お客さまからの無理難題と向き合う日々を送っている。



前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。