サービスのテスト
サービスの最終的なテストを行うには、コンシューマ側から検証します。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サービスとして公開することができます。
