4.14. SOAP バインディングと CBR、XSLT エンジンの利用

4.14.1. 概要

SOAPクライアントからSOAP BCに接続し、CBR SEを介してメッセージの<arg0>によりSOAP BCかXSLT SEか転送します。
返答をSOAPクライアントに返信します。


図4.14.1-1



  1. SOAP BC(Inbound)はSOAPクライアントからメッセージを受信します。
  2. SOAP BC(Inbound)は取得したメッセージをCBR SEに送信します。
  3. CBR SEは取得したメッセージの<arg0>によりSOAP BCかXSLT SEかに転送します。
  4. SOAP BC(outbound)/XSLT SEはメッセージ処理を行って、CBR SEに返信します。
  5. CBR SEは応答をSOAP BCに転送します。
  6. SOAP BCはSOAPクライアントに返信します。

4.14.2. 構成

ファイル名 説明
14_SOAPInbound_CBR_XSLT_SOAP.zip SOAPクライアントからメッセージを受け取り処理するサービスアセンブリです。
14_SoapService.war ESBからデータを受け取るWebアプリケーションです。
14_TestData.xml SOAPクライアントが送信するテストデータです。
proj_14_SOAPInbound_CBR_XSLT_SOAP.zip サービスアセンブリのプロジェクトファイルです。
proj_14_SoapService.zip Webアプリケーションのプロジェクトファイルです。
proj_14_WSDL.zip WSDLファイルを提供するためのプロジェクトファイルです。
run.bat WindowsでSOAPクライアントを実行するバッチファイルです。
run.sh UnixでSOAPクライアントを実行するシェルスクリプトです。
SoapClient.java SOAPクライアントのソースファイルです。

4.14.3. 実行手順

実行環境の構築を行い、サンプルを実行します。実行後には環境のクリアを行います。

環境構築
実行環境の構築を行います。
バッチファイル・シェルスクリプトの実行には、環境変数にJavaのパス([Javaのインストールディレクトリ]/bin)を設定する必要があります。
JDK1.7.0のパスを設定する例: 設定するパスは環境によって異なりますのでご注意ください。

起動状況確認
otxadminでドメインとコンポーネントの起動状況を確認します。
  1. コマンドプロンプトからotxadminを起動します。
    C:\>otxadmin
  2. list-domainsコマンドを実行しドメインの起動状況を確認します。
    otxadmin> list-domains
     domain1 running
     WebOTXAdmin running
    
    domain1がrunningとなっていればドメインは起動しています。
    もしdomain1がnot runningの場合は、start-domainコマンドでdomain1を起動します。
    otxadmin> start-domain domain1
  3. ドメインの起動を確認できたら、loginコマンドでログインを行います。
    otxadmin> login --user <ユーザ名> --password <パスワード>
    domain1を6212ポート以外で運用している場合は、portオプションでポート番号を指定してください。
  4. ログイン後、list-jbi-binding-componentsコマンドで各コンポーネントの起動状況を確認します。
    otxadmin> list-jbi-binding-components
    
     ================================
     List of Binding Components
     ================================
     Name : CORBABinding
     State: Started
     --------------------------------
     Name : FTPBinding
     State: Started
     --------------------------------
     Name : HTTPBinding
     State: Started
     --------------------------------
     (中略)
     --------------------------------
     Name : SOAPBinding
     State: Started
     --------------------------------
    
    SOAPBindingがstartedになっていることを確認します。
    もしStoppedになっている場合は、start-jbi-componentコマンドで起動します。
    otxadmin> start-jbi-component SOAPBinding
  5. list-jbi-service-enginesコマンドで各サービスエンジンの起動状況を確認します。
    otxadmin> list-jbi-service-engines
    
    ================================
    List of Service Engines
    ================================
    Name : CBREngine
    State: Started
    --------------------------------
    Name : SequencingEngine
    State: Started
    --------------------------------
    Name : UserProcessorEngine
    State: Started
    --------------------------------
    Name : XSLTEngine
    State: Started
    --------------------------------
    
    CBREngine、XSLTEngineがstartedになっていることを確認します。
    もしStoppedになっている場合は、start-jbi-componentコマンドで起動します。
    otxadmin> start-jbi-component CBREngine

配備
14_SOAPInbound_CBR_XSLT_SOAP.zip14_SoapService.warの配備を行います。

配備には環境に応じて以下の3種類の方法があります。
  1. WebOTX Developer's Studioが利用できる場合
  2. WebOTX Developer's Studioがなく、統合運用管理ツールが利用できる場合
  3. WebOTX Developer's Studio、統合運用管理ツールいずれも利用できない場合
(1)Developer's Studioによる配備
  1. Developer's Studioを起動します。
  2. ヘルプメニューからヘルプ目次をクリックします。
  3. 目次から、WebOTX Guide(Enterprise Service Bus) > サンプル集を開きます。
    表からproj_14_SOAPInbound_CBR_XSLT_SOAPproj_14_SoapServiceをそれぞれクリックすることで、
    プロジェクトをインポートします。
  4. WebOTXのWebサーバのポートが80ではない場合、SOAP BCの設定を変更する必要があります。
    パッケージ・エクスプローラからSOAPSU(Inbound)をダブルクリックしてSUエディタを開き、エンドポイントを選択します。
    外部に公開するエンドポイントURLを適切に修正してください。


    図4.14.3-1



    パッケージ・エクスプローラからSOAPSU(Outbound)をダブルクリックしてSUエディタを開き、エンドポイントを選択します。
    外部WebサービスのエンドポイントURLを適切に修正してください。


    図4.14.3-2



  5. パッケージエクスプローラからプロジェクトを右クリックし、実行 > サーバーで実行 を選択します。
  6. 配備先のサーバーを選択し、配備を行います。
  7. 同様にしてインポートした全てのプロジェクトを配備します。
次へ

(2)統合運用管理ツールによる配備
  1. 14_SOAPInbound_CBR_XSLT_SOAP.zip14_SoapService.warを適当なディレクトリに保存します。
  2. 統合運用管理ツールを起動します。
  3. domain1を右クリックし接続を選択します。ユーザ名、パスワードを入力し接続ボタンをクリックします。
  4. domain1配下のアプリケーションを右クリックしコンポーネントの配備を選択します。
  5. コンポーネントタイプをWebコンポーネントに変更し、参照ボタンから14_SoapService.warを選択します。
    配備ボタンをクリックすると配備が実行されます。
  6. domain1配下のアプリケーションサーバ > ESB > サービスアセンブリを右クリックしサービスアセンブリの配備を選択します。
  7. 参照ボタンから14_SOAPInbound_CBR_XSLT_SOAP.zipを選択します。
    WebOTX AS Standard/Enterpriseのアドバンスドモードの場合は、アプリケーショングループとプロセスグループを指定します。
    配備ボタンを押すと配備が実行されます。
    ただしポートが適切ではない場合は配備ボタンでなく次へボタンを押します。
    SOAPSU(Inbound)SOAPSU(Outbound)のエンドポイントを選択し、エンドポイントURLを修正してください。


    図4.14.3-3




    図4.14.3-4



次へ

(3)otxadminによる配備
  1. 14_SoapService.war14_SOAPInbound_CBR_XSLT_SOAP.zipを適当なディレクトリに保存します。
  2. otxadminを起動し、ログインします。
  3. deployコマンドで14_SoapService.warを配備します。
    WebOTX AS Express、もしくはWebOTX AS Standard/Enterpriseのスタンダードモードの場合は以下を実行します。
    otxadmin> deploy <14_SoapService.warへのパス>
    WebOTX AS Standard/Enterpriseのアドバンスドモードの場合は、
    アプリケーショングループとプロセスグループを指定する必要があるため以下を実行します。
    otxadmin> deploy --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> <14_SoapService.warへのパス>
  4. 同様にdeploy-jbi-service-assemblyコマンドで14_SOAPInbound_CBR_XSLT_SOAP.zipの配備を行います。
    WebOTX AS Express、もしくはWebOTX AS Standard/Enterpriseのスタンダードモードの場合は以下を実行します。
    otxadmin> deploy-jbi-service-assembly <14_SOAPInbound_CBR_XSLT_SOAP.zipへのパス>
    WebOTX AS Standard/Enterpriseのアドバンスドモードの場合は以下を実行します。
    otxadmin> deploy-jbi-service-assembly --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> <14_SOAPInbound_CBR_XSLT_SOAP.zipへのパス>
    ただしポートが適切ではない場合はmodifyオプションをtrueにし、SOAPSU(Inbound)SOAPSU(Outbound)のエンドポイントURLを修正してください。
サービスアセンブリの起動
統合運用管理ツールもしくはotxadminから、配備したサービスアセンブリを起動します。

(1)統合運用管理ツールによる起動
  1. アプリケーションサーバ > ESB > サービスアセンブリ > 14_SOAPInbound_CBR_XSLT_SOAPを右クリックし起動を選択します。
(2)otxadminによる起動
  1. start-jbi-service-assemblyコマンドを実行します。
    otxadmin> start-jbi-service-assembly 14_SOAPInbound_CBR_XSLT_SOAP

実行
SOAP BCにメッセージを送信し、応答を確認します。実行には環境に応じて以下の2種類の方法があります。
  1. WebOTX Developer's Studioが利用できる場合
  2. WebOTX Developer's Studioが利用できない場合
(1)Developer's Studioによる実行
Webサービスエクスプローラを用いWSDL定義からメッセージ送受信します。
  1. サンプル集からプロジェクトproj_14_WSDLをインポートします。
  2. パッケージ・エクスプローラからproj_14_WSDLService.wsdlを右クリックし、
    webサービス > webサービスエクスプローラーでテスト を選択します。


    図4.14.3-5



  3. WebサービスエクスプローラのナビゲータからWSDL操作をクリックしてアクション画面を開き、エンドポイントを選択します。


    図4.14.3-6



    ただしWebOTXのWebサーバのポートが80ではない場合、適切なエンドポイントを追加する必要があります。
    ナビゲータからWSDLバインディングをクリックしてアクション画面を開き、追加ボタンをクリックし、
    エンドポイントを入力しチェックし、Goボタンをクリックしてエンドポイントを追加します。
    ナビゲータからWSDL操作のアクション画面を戻して、追加したエンドポイントを選択します。


    図4.14.3-7



  4. WSDL操作のアクション画面に、arg0に整数を入力し、他のargに追加ボタンをクリックし、テスト文字列を入力しチェックし、
    Goボタンをクリックします。


    図4.14.3-8



  5. arg0の値が100により小さい場合と大きい場合、レスポンスの文字列が違うことを確認します。


    図4.14.3-9




    図4.14.3-10



(2)Developerが利用できない場合
用意するSOAPクライアントアプリケーションからメッセージ送受信します。
  1. 下記のファイルを適当なディレクトリに保存します:run.batrun.shSoapClient.java14_TestData.xml
  2. SOAPクライアントアプリケーションを実行します。
    Windows環境で、run.batのURLを確認します。WebOTXのWebサーバのポートが80ではない場合、適切に修正してください。
    確認した後run.batを実行します。
    > run.bat
    UNIX環境で、run.shの環境変数AS_INSTALLとURLを確認します。WebOTXのインストールディレクトリが/opt/WebOTXではない場合、
    WebOTXのWebサーバのポートが8080ではない場合、適切に修正してください。
    確認した後run.shを実行します。
    > chmod 777 run.sh
     > ./run.sh
  3. 出力の内容を確認します。
    <?xml version="1.0"
    encoding="UTF-8"?><ns2:opr_14_SOAPInbound_CBR_XSLT_SOAP_006Response
    xmlns:ns2="http://www.nec.com"><return>'88','Chris','1405
    , Park Street, Freemont ,
    CA'</return></ns2:opr_14_SOAPInbound_CBR_XSLT_SOAP_006Response>
  4. 14_TestData.xmlの<arg0>の値を111に変更し、再度SOAPクライアントアプリケーションを実行し、出力の内容を確認します。
    <?xml version="1.0"
    encoding="UTF-8"?><response><return>name="Chris",age="111",CurrentAddress="1405
    , Park Street, Freemont , CA"</return></response>

メッセージログの確認
メッセージログを確認し、送信されたメッセージを確認します。
メッセージログ機能については2.16. メッセージログ機能の利用を参照してください。

環境クリア
配備したWebサービスとサービスアセンブリを配備解除します。
配備解除には環境に応じて以下の3種類の方法があります。

(1)Developer's Studioによる配備解除
  1. ウィンドウ > ビューの表示 > サーバー を選択します。
  2. 表示されたサーバーのビューから配備したWebサービスを右クリックし、除去を選択します。
  3. 同様に配備したサービスアセンブリを右クリックし、除去を選択します。
(2)統合運用管理ツールによる配備解除
  1. アプリケーション > Webモジュール > 14_SoapServiceを右クリックし、配備解除を選択します。
  2. アプリケーションサーバ > ESB > サービスアセンブリ > 14_SOAPInbound_CBR_XSLT_SOAPを右クリックし、
    シャットダウンを選択します。
  3. シャットダウン完了後、再び14_SOAPInbound_CBR_XSLT_SOAPを右クリックし配備解除を選択します。
(3)otxadminによる配備解除
  1. undeployコマンドで14_SoapServiceを配備解除します。
    otxadmin> undeploy 14_SoapService
  2. shut-down-jbi-service-assemblyコマンドで14_SOAPInbound_CBR_XSLT_SOAPをシャットダウンします。
    otxadmin> shut-down-jbi-service-assembly 14_SOAPInbound_CBR_XSLT_SOAP
  3. undeploy-jbi-service-assemblyコマンドで14_SOAPInbound_CBR_XSLT_SOAPを配備解除します。
    otxadmin> undeploy-jbi-service-assembly 14_SOAPInbound_CBR_XSLT_SOAP

4.14.4. 注意事項

  1. WebOTXインストールパス取得のエラー
    run.batを実行した際に、レジストリからWebOTXインストールパスを取得できなかった場合、
    以下のように表示されます。
    「指定されたレジストリキーまたは値が見つかりませんでした」
    その際にはバッチファイル内の1行目の先頭に@remを追加しコメントアウトしてください。
    AS_INSTALLにWebOTXインストールパスを手動で設定した後、バッチファイルを再度実行してください。
    set AS_INSTALL=C:\WebOTX