POJOベースのドメインアプリケーションをWebサービスとして公開する
Apache Axis2とSpringを組み合わせたREST/SOAPベースのWebサービス
ダウンロード サンプルソース (5.0 MB)
サービスのテスト
サービスの最終的なテストを行うには、コンシューマ側から検証します。REST実装については、ブラウザから直接実行することで簡単に検証できます。図7に、REST起動時の入力および出力を示します。
アクセス先のURL:
- http://localhost:9080/AccountWeb/rest/Accountservice/getAccount?accountId=2

ここまで来れば、後は簡単なクライアントを作成することで、SOAP/HTTPを介したサービスの起動テストが行えます。ここでは単純なJavaプロジェクトを作成して、先に生成されたスタブを収めたクライアントjarを取り込みます。実際のアプリケーションでは通常、サービスプロバイダがこれらのファイル(またはコンシューマがスタブやメッセージレシーバの生成に使用するWSDL)を提供します。ここでは説明上の便宜的な措置として、ADBを使用してサービスを起動することにします。複雑なアプリケーションを扱う場合は、JiBXを利用して、Axis2に統合されているスキーマバインディングを行います。Axis2に付属するwsdl2javaというコマンドライン形式のユーティリティは、JiBXクライアントの生成をサポートしています。
SOAPサービスのテスト用クライアントとして使用するコードを次に示します。
AccountserviceStub stub = new AccountserviceStub( "http://localhost:9080/AccountWeb/services/Accountservice"); .. AccountserviceStub.GetAccount req = new AccountserviceStub.GetAccount(); req.setAccountId(accountId); AccountserviceStub.GetAccountResponse res = stub.getAccount(req); name = res.get_return().getFirstName() + " " + res.get_return().getLastName();
このクラスを実行してクライアントとサーバの間で交わされるTCP/IPトラフィックを監視すると、呼び出しが正常に行われた場合に、次のような情報が交換されることが確認できるはずです。これらの呼び出しはgetAccountメソッドに対するもので、パラメータaccountIdの値が2であるすべてのメソッドについて実施されています。
<?xml version="1.0" encoding="http://www.w3.org/2003/05/soap-envelope"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header/> <soapenv:Body> <ns2:getAccount xmlns:ns2="http://AccountManager.domain.account.corp.com/types"> <ns2:accountId>2</ns2:accountId> </ns2:getAccount> </soapenv:Body> </soapenv:Envelope>
<?xml version="1.0" encoding="http://www.w3.org/2003/05/soap-envelope"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header/> <soapenv:Body> <ns2:getAccountResponse xmlns:ns2="http://AccountManager.domain.account.corp.com/types"> <ns2:return> <ns6:accountId xmlns:ns6="http://bo.domain.account.corp.com/xsd"> 2 </ns6:accountId> <ns7:address xmlns:ns7="http://bo.domain.account.corp.com/xsd"> 2222, Lincoln Av, New York </ns7:address> <ns8:firstName xmlns:ns8="http://bo.domain.account.corp.com/xsd"> Jane </ns8:firstName> <ns9:lastName xmlns:ns9="http://bo.domain.account.corp.com/xsd"> Smith </ns9:lastName> <ns10:status xmlns:ns10="http://bo.domain.account.corp.com/xsd"> false </ns10:status> </ns2:return> </ns2:getAccountResponse> </soapenv:Body> </soapenv:Envelope>
将来的な展望
本稿では、既存ドメインに基づいてWebサービスを作成する基本的な方法を紹介しました。Webサービスを用いたより実用的なエンタープライズアプリケーションを構築する場合は、セキュリティやメッセージングの信頼性など、より複雑な問題に対処する必要があります。Axis2のアーキテクチャを利用すると、これらの機能を比較的簡単に、モジュール化された方法で実装できるというメリットがあります。このプロセスは大雑把に言えば、サービス記述子を編集して必要なモジュールへの参照を追加し、それぞれのポリシーを設定するという流れになります。
本稿では、J2EEアプリケーション内の既存のPOJOベースのドメイン機能を公開するための簡単な代替手段としてAxis2を紹介しました。このような形でAxis2を利用すると、これまでアプリケーションアーキテクチャに行ってきた投資を無駄にせず、コードの書き直しを最小限に抑えた上で、既存のPOJOベースのドメインアプリケーションをリモートから利用できる堅牢なWebサービスとして公開することができます。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- japan.internet.com翻訳記事連載記事一覧
- この記事の著者
-
japan.internet.com(ジャパンインターネットコム)
japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Ramanujam A. Rao(Ramanujam A. Rao)
ソフトウェア設計者兼エンジニアで、エンタープライズアプリケーションの設計と配備を専門とする。現在は、エンタープライズアプリケーションアーキテクチャの分野におけるコンサルティングおよび、J2EEプラットフォームを用いたスケーラブルな分散型アプリケーションの構築に関するサポートを行っている。連絡先はarrao@acm.org。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
