クラウドで再注目の「分散コンピューティング」の常識:企業システムの常識をJBossで身につける(7)(4/4 ページ)
企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
クライアントを作成
動作させるクライアントを作成します。ここでは、パッケージを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 |
表 そのほかの接続方法 |
※2:Servletはサポートされているが、クライアントからの接続は内部でHTTPに変換されるのでサーバはHTTPで待ち受ける
それでは、接続方法を変更したサーバとクライアントの実行をしてみます。まず、サーバであるSimpleServerを起動します。
次に、クライアントであるSimpleClientを起動します。クライアントからサーバのメソッドが呼び出され実行されます。処理後、クライアントはサーバからの戻り値を受信します。
以上のように接続方法を変更しても問題なく動作できました。
次回は、業務処理に必須のトランザクションについて
今回は、分散コンピューティングについて説明しました。今後、読者の皆さんが分散コンピューティングの構築に携わることになったら、ここでの知識を少しでも生かしていただければと思います。
次回は、分散コンピューティング環境の課題の1つとなる「トランザクション」についての常識を説明します。
筆者紹介
株式会社ビーブレイクシステムズ技術担当取締役。
上川 伸彦(かみかわ のぶひこ)
RDB製品の開発、各種業界団体におけるXML/EDI標準の策定やSOA基盤の設計などに従事。最近は、ITコンサル業よりも、業務システムの構築に携わることが多く、お客さまからの無理難題と向き合う日々を送っている。
- 急速なビジネスの変化に対応できる「BRMS」の常識
- 「全体を見る」ためのビジネスプロセス・BPMの常識
- 内部統制に効く! ID管理・シングルサインオンの常識
- 社内システムのセキュリティとアクセス制御の常識
- 悲観もあれば楽観もある「トランザクション」の常識
- クラウドで再注目の「分散コンピューティング」の常識
- いまさら聞けない「Webサービス」の常識
- 非同期処理と疎結合ができる「メッセージング」の常識
- 企業でも情報整理で利用が進む「ポータル」の常識
- DI(依存性の注入)×AOP(アスペクト指向)の常識
- “全部入り”のEclipseで学ぶ統合開発環境の常識
- 企業向けアプリの常識を学び、JBossの環境構築
Copyright © ITmedia, Inc. All Rights Reserved.