SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

POJOベースのドメインアプリケーションをWebサービスとして公開する

Apache Axis2とSpringを組み合わせたREST/SOAPベースのWebサービス

ダウンロード サンプルソース (5.0 MB)

サービスのテスト

 サービスの最終的なテストを行うには、コンシューマ側から検証します。REST実装については、ブラウザから直接実行することで簡単に検証できます。図7に、REST起動時の入力および出力を示します。

 アクセス先のURL:

  • http://localhost:9080/AccountWeb/rest/Accountservice/getAccount?accountId=2
図7 RESTベースのサービスの起動とレスポンス
図7 RESTベースのサービスの起動とレスポンス

 ここまで来れば、後は簡単なクライアントを作成することで、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.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Ramanujam A. Rao(Ramanujam A. Rao)

ソフトウェア設計者兼エンジニアで、エンタープライズアプリケーションの設計と配備を専門とする。現在は、エンタープライズアプリケーションアーキテクチャの分野におけるコンサルティングおよび、J2EEプラットフォームを用いたスケーラブルな分散型アプリケーションの構築に関するサポートを行っている。連絡先はarrao@acm.org

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1334 2007/05/28 08:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー