Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 受付・アダプタ定義編


2.9.1 フォルトが発生した場合にフォルト電文を返す例

サービス部品の呼び出しでフォルトが発生したあと,サービスリクエスタにフォルト電文を返す場合を例に,WSDLファイルの作成方法について説明します。

〈この項の構成〉

(1) ビジネスプロセスの例

WSDLの作成の例として使用するビジネスプロセスを次の図に示します。

図2‒10 WSDLの作成の例として使用するビジネスプロセス

[図データ]

  1. サービスリクエスタがビジネスプロセスにサービス部品の実行を要求します。

  2. サービス部品の実行要求では,XMLの要求電文(ボディ)が送付されます。

  3. ビジネスプロセスはXMLの要求電文を受付1という受付アクティビティで受け取ります。このときのオペレーション名はoperation1です。

  4. 受付1には変数RequestMessageを割り当て,要求電文を規定する電文フォーマットとしてRequest.xsdが指定されています。

  5. ビジネスプロセスからサービス部品を呼び出します。フォルトが発生した場合は項番10.でフォルトが返されます。

  6. ビジネスプロセスが,サービス部品の実行結果をXMLの応答電文として構成し,応答1という応答アクティビティで返します。

  7. 応答1には変数ResponseMessageを割り当て,応答電文を規定する電文フォーマットとしてResponse.xsdが指定されています。

  8. サービスリクエスタへの応答が返されます。

  9. サービスリクエスタへの応答では,XMLの応答電文(ボディ)が送付されます。

  10. 項番5.でフォルトが発生した場合,応答2という応答アクティビティからfault1というフォルトが返されます。

  11. 応答2には変数FaultMessageを割り当て,フォルト電文を規定する電文フォーマットとしてFault.xsdが指定されています。

  12. サービスリクエスタにフォルト電文が送付されます。

(2) 電文フォーマットの内容の例

図2-10 WSDLの作成の例として使用するビジネスプロセス」に示すビジネスプロセスで利用する電文フォーマットの例を次に示します。

Request.xsd
  • XMLスキーマソース

    文字列の値を持つ単一の要素<Request1>を規定する要求電文用の電文フォーマットです。

    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema targetNamespace="http://www.example.org/request"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:element name="Request1" type="xsd:string" />
    </xsd:schema>
  • この電文フォーマットの規定に従って送付されるXML

    <Request1>Sample request message</Request1>
Response.xsd
  • XMLスキーマソース

    boolean値を持つ単一の要素<Response1>を規定する応答電文用の電文フォーマットです。

    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema targetNamespace="http://www.example.org/response"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:element name="Response1" type="xsd:boolean" />
    </xsd:schema>
  • この電文フォーマットの規定に従って送付されるXML

    <Response1>true</Response1>
Fault.xsd
  • XMLスキーマソース

    <Fault1>という要素を規定し,さらにその子要素としてint値を持つ要素<param1>を規定するフォルト電文用の電文フォーマットです。

    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema targetNamespace="http://www.example.org/service"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:svc="http://www.example.org/service">
      <xsd:element name="Fault1" type="svc:SampleData"/>
      <xsd:complexType name="SampleData">
        <xsd:sequence>
          <xsd:element name="param1" type="xsd:int"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
  • この電文フォーマットの規定に従って送付されるXML

    <Fault1>
      <param1>123</param1>
    </Fault1>

(3) WSDLの作成例

ここでは,SOAP1.1を利用する場合を想定して,「(1) ビジネスプロセスの例」に示すビジネスプロセスに合わせたWSDLの作成例を示します。

WSDLの形式に関する条件や注意事項については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「2.6.1 Webサービスを利用したサービス部品の適用範囲」およびこのマニュアルの「2.9.3 SOAP受付のWSDL作成時の注意事項」を参照してください。

WSDLの作成例は「Sample_Reception.wsdl」とします。Sample_Reception.wsdlの概要を次に示します。

WSDLの作成例「Sample_Reception.wsdl」を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
 targetNamespace="http://www.example.org/service"
 xmlns:svc="http://www.example.org/service"
 xmlns:req="http://www.example.org/request"
 xmlns:res="http://www.example.org/response"
 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <wsdl:types>
    <xsd:schema targetNamespace="http://www.example.org/request">
      <xsd:element name="Request1" type="xsd:string" />
    </xsd:schema>
    <xsd:schema targetNamespace="http://www.example.org/response">
      <xsd:element name="Response1" type="xsd:boolean" />
    </xsd:schema>
    <xsd:schema targetNamespace="http://www.example.org/service">
      <xsd:element name="Fault1" type="svc:SampleData"/>
      <xsd:complexType name="SampleData">
        <xsd:sequence>
          <xsd:element name="param1" type="xsd:int"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="ReqMsg1">
    <wsdl:part element="req:Request1" name="reqParam"/>
  </wsdl:message>
  <wsdl:message name="ResMsg1">
    <wsdl:part element="res:Response1" name="resParam"/>
  </wsdl:message>
  <wsdl:message name="FltMsg1">
    <wsdl:part element="svc:Fault1" name="fltParam"/>
  </wsdl:message>
  <wsdl:portType name="SamplePortType">
    <wsdl:operation name="operation1">
      <wsdl:input message="svc:ReqMsg1"/>
      <wsdl:output message="svc:ResMsg1"/>
      <wsdl:fault message="svc:FltMsg1" name="Fault1"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="SampleBinding" type="svc:SamplePortType">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="operation1">
      <soap:operation soapAction=""/>
      <wsdl:input>
        <soap:body/>
      </wsdl:input>
      <wsdl:output>
        <soap:body/>
      </wsdl:output>
      <wsdl:fault name="Fault1">
        <soap:fault name="Fault1"/>
      </wsdl:fault>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="SampleService">
    <wsdl:port binding="svc:SampleBinding" name="UserInfo">
      <soap:address location="http://localhost:80/SampleService/services/UserInfo" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

この作成例「Sample_Reception.wsdl」は,次の作業を行って作成します。

(a) オペレーションとフォルト名のリストアップ

ビジネスプロセスの受付アクティビティ,および応答アクティビティで定義されている同期のオペレーションをリストアップします。また,フォルト名が定義されている応答アクティビティがある場合は,フォルト名もリストアップします。

作成例ではオペレーションは「operation1」が該当します。また,フォルト名は「Fault1」が該当します。

(b) 割当変数の電文フォーマット定義ファイルのリストアップ

受付アクティビティ,および応答アクティビティが使用している割当変数の電文フォーマット定義ファイルをリストアップします。

作成例では,「Request.xsd」,「Response.xsd」,および「Fault.xsd」が該当します。

注意事項
  • リストアップした電文フォーマット定義ファイルの中に,同じ名前空間のスキーマが複数存在する場合,1つのスキーマに集約する必要があります。

    このとき,次の2つの条件を満たす場合,割当変数の電文フォーマット定義ファイルを名前の重複がなくなるよう変更してください。

     ・スキーマの中の要素について名前の重複がある。

     ・その要素の内容が異なる。

    なお,割当変数の電文フォーマット定義ファイルが複数ファイルの場合(外部のXMLファイルを参照している場合),外部のXMLファイルのスキーマも含めて要素の重複がなくなるよう変更してください。

    また,それぞれのスキーマの属性が相反する値を持つ場合,値の変更による影響を考慮してスキーマを集約してください。

  • リストアップした電文フォーマット定義ファイルの中に,targetNamespace属性を持たないスキーマ(カメレオンスキーマ)がある場合,割当変数の電文フォーマット定義ファイルは,targetNamespace属性を指定したスキーマに変更してください。

  • リストアップしたフォルト電文の電文フォーマット定義ファイルのルート要素が複合型でない場合,割当変数の電文フォーマット定義ファイルのルート要素を,複合型になるように変更してください。

  • フォルト電文のルート要素の名前空間は,wsdl:definitions要素の名前空間と一致させる必要があります。

    このため,次の2つの条件を満たす場合,その割当変数の電文フォーマットファイルを変更してください。

     ・フォルト電文が複数存在する。

     ・ルート要素の名前空間が異なる。

    異なるオペレーションのフォルト電文同士の名前空間が異なる場合,オペレーションごとにWSDLファイルを分けて作成し,ユーザ定義受付を複数作成して対応できます。

(c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)

WSDLファイルのひな形として,XML宣言およびwsdl:definitions要素を定義します。wsdl:definitions要素には,次の表に示す属性を追加します。

表2‒32 wsdl:definitions要素に追加する属性

属性

意味

個数

targetNamespace

サービス部品の名前空間URI

任意のURIを定義できます。ただし,フォルト電文がある場合には,フォルト電文の電文フォーマット定義ファイルのxsd:schema要素が持つtargetNamespace属性値と同じURIを定義します。

1

xmlns:svc

サービス部品のプリフィックス宣言

targetNamespace属性と同じ値を定義します。

1

xmlns:req

要求電文の電文フォーマットプリフィックス宣言

要求電文の電文フォーマット定義ファイルのxsd:schema要素が持つtargetNamespace属性値と同じURIを定義します。

1

xmlns:res

応答電文の電文フォーマットプリフィックス宣言

応答電文の電文フォーマット定義ファイルのxsd:schema要素が持つtargetNamespace属性値と同じURIを定義します。

1

xmlns:soap

SOAPのプリフィックス宣言

既定の値「http://schemas.xmlsoap.org/wsdl/soap/」を定義します。

1

xmlns:wsdl

WSDLのプリフィックス宣言

既定の値「http://schemas.xmlsoap.org/wsdl/」を定義します。

1

xmlns:xsd

XMLスキーマのプリフィックス宣言

既定の値「http://www.w3.org/2001/XMLSchema」を定義します。

1

wsdl:definitions要素の定義例を次の図に示します。

図2‒11 wsdl:definitions要素の定義例

[図データ]

複数のオペレーションを使用する場合

作成例(Sample_Reception.wsdl)では,オペレーションを1つだけ使用していますが,複数のオペレーションを使用する場合,複数の要求電文,応答電文を扱うことになります。これらの電文が異なる複数の名前空間を使用している場合には,次の表に示すように,それぞれのプリフィックス宣言をwsdl:definitions要素に定義します。

表2‒33 wsdl:definitions要素に追加する属性(複数のオペレーションを使用する場合)

属性

意味

xmlns:reqN(N>0)

要求電文が複数の名前空間に分かれる場合のプリフィックス宣言

要求電文の電文フォーマット定義ファイルのxsd:schema要素が持つtargetNamespace属性値と同じURIを定義します。

http://www.example.org/request1

xmlns:resN(N>0)

応答電文が複数の名前空間に分かれる場合のプリフィックス宣言

応答電文の電文フォーマット定義ファイルのxsd:schema要素が持つtargetNamespace属性値と同じURIを定義します。

http://www.example.org/response1

定義した内容はwsdl:message要素の子要素であるwsdl:part要素のelement属性に定義します。wsdl:message要素の定義については,「(e) wsdl:message要素の定義」を参照してください。

複数のオペレーションを使用する場合の定義例を次の図に示します。

図2‒12 wsdl:definitions要素の定義例(複数のオペレーションを使用する場合)

[図データ]

(d) wsdl:types要素の定義

wsdl:types要素とその下位要素,および属性を定義します。

  1. (c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)」で定義したwsdl:definitions要素の子要素として,wsdl:types要素を定義します。

  2. (b) 割当変数の電文フォーマット定義ファイルのリストアップ」でリストアップした電文フォーマット定義ファイルのxsd:schema要素をtargetNamespace属性で分類し,それぞれのtargetNamespaceの値ごとに1つずつxsd:schema要素を定義します。

  3. 手順2.で定義したxsd:schema要素の属性として,電文フォーマット定義ファイルのxsd:schema要素が持つすべての属性を追加します。

  4. 手順2.で定義したxsd:schema要素の子要素として,電文フォーマット定義ファイルのxsd:schema要素が持つすべての子要素を追加します。

  5. 複数のフォルト電文があり,名前空間が異なる場合,フォルト電文の名前空間をwsdl:definitions要素のtargetNamespace属性の値に変更します。

wsdl:types要素以下に定義する要素と属性を次の表に示します。

表2‒34 wsdl:types要素以下に定義する要素と属性

要素

属性

意味

個数

wsdl:types

型定義要素

1

xsd:schema

スキーマ要素

1〜電文フォーマット定義ファイルが使う名前空間の数

targetNamespace

名前空間属性

電文のtargetNamespaceと同じ値を定義します。

1

xsd:schemaの属性

属性

電文の属性と同じ値を定義します。

1〜属性の数

xsd:schemaの子要素

電文の内容

電文が持つxsd:schema要素のすべての子要素をコピーします。

1〜同一名前空間を使用する電文フォーマットのxsd:schema要素の子要素の数

(凡例)

−:該当しません。

wsdl:types要素の定義例を次の図に示します。

図2‒13 wsdl:types要素の定義例

[図データ]

(e) wsdl:message要素の定義

wsdl:message要素とその下位要素,および属性を定義します。

  1. (c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)」で定義したwsdl:definitions要素の子要素としてwsdl:message要素を定義します。

    wsdl:message要素はWSDLで定義するオペレーションが持つすべての要求電文,応答電文,およびフォルト電文の数だけ定義します。

    作成例では,オペレーションが1つあります。そのオペレーションには,要求電文が1つ,応答電文が1つ,フォルト電文が1つあるので,wsdl:message要素を3つ定義します。

  2. wsdl:message要素にname属性を定義します。

    name属性の値は,ファイル内で一意な値になるよう,ほかのwsdl:message要素のname属性とは異なる値を定義します。

    作成例では,operation1の要求電文にはReqMsg1,応答電文にはResMsg1と定義しています。フォルト電文は個数に合わせてFltMsgN(Nは1以上)とします。

  3. wsdl:message要素の子要素として,wsdl:part要素を1つずつ定義します。

  4. wsdl:part要素にname属性とelement属性を定義します。

    name属性には任意の文字列を指定します。

    element属性の値には,「(d) wsdl:types要素の定義」でコピーしたxsd:schema要素の子要素から,ルート要素を選択して指定します。「表2-32 wsdl:definitions要素に追加する属性」に示すプリフィックスとルート要素名を使用してQNameで指定します。

wsdl:message要素以下に定義する要素と属性を次の表に示します。

表2‒35 wsdl:message要素以下に定義する要素と属性

要素

属性

意味

個数

wsdl:message

メッセージ定義要素

1

name

メッセージ名属性

ほかのwsdl:message要素のname属性とは異なる一意の文字列を定義します。

1

wsdl:part

メッセージパート定義要素

1

name

メッセージパート名属性

任意の文字列を定義します。

1

element

要素参照属性

該当する電文フォーマットファイルのルート要素を定義します。

1

(凡例)

−:該当しません。

注※

使用できる文字種には制限があります。使用できる文字種については,「2.9.3(2) WSDL定義で使用できる文字」を参照してください。

wsdl:message要素の定義例を次の図に示します。

図2‒14 wsdl:message要素の定義例

[図データ]

(f) wsdl:portType要素の定義

wsdl:portType要素とその下位要素,および属性を定義します。

  1. (c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)」で定義したwsdl:definitions要素の子要素として,wsdl:portType要素を1つ定義します。

  2. wsdl:portType要素にname属性を定義します。

    name属性の値には,任意の文字列を指定できます。

  3. wsdl:portType要素の子要素として,wsdl:operation要素を定義します。

    wsdl:operation要素は,「(a) オペレーションとフォルト名のリストアップ」でリストアップしたオペレーションの数だけ定義します。

  4. wsdl:operation要素にname属性を定義します。

    name属性の値には,「(a) オペレーションとフォルト名のリストアップ」でリストアップしたオペレーションのオペレーション名を指定します。

    作成例では,wsdl:operation要素を1つ定義し,name属性は「operation1」とします。

  5. wsdl:operation要素の子要素として,wsdl:input要素,wsdl:output要素,およびwsdl:fault要素を定義します。

    wsdl:input要素,wsdl:output要素,wsdl:fault要素の順序で定義します。

    フォルト電文用の応答アクティビティが存在しない場合,wsdl:fault要素は省略できます。フォルト電文用の応答アクティビティが複数存在する場合,その数だけ定義します。

    作成例では,wsdl:input要素,wsdl:output要素,およびwsdl:fault要素を1つずつ定義します。

  6. wsdl:input要素およびwsdl:output要素にmessage属性を定義します。

    message属性の値には,「(e) wsdl:message要素の定義」で定義したwsdl:message要素のname属性の値をQNameで指定します。

  7. wsdl:fault要素にname属性とmessage属性を定義します。

    name属性の値には,「(a) オペレーションとフォルト名のリストアップ」でリストアップしたフォルト名を指定します。

    message属性の値には,「(e) wsdl:message要素の定義」で定義したwsdl:message要素のname属性の値をQNameで指定します。

wsdl:portType要素以下に定義する要素と属性を次の表に示します。

表2‒36 wsdl:portType要素以下に定義する要素と属性

要素

属性

意味

個数

wsdl:portType

ポートタイプ定義要素

1

name

ポートタイプ名属性

任意の文字列を定義します。

1

wsdl:operation

オペレーション定義要素

1〜オペレーションの個数

name

オペレーション名属性

オペレーション名を定義します。

1

wsdl:input

要求メッセージ定義要素

1

message

メッセージ参照属性

(e) wsdl:message要素の定義」で定義したwsdl:message要素のname属性値をQNameで指定します。

1

wsdl:output

応答メッセージ定義要素

1

message

メッセージ参照属性

(e) wsdl:message要素の定義」で定義したwsdl:message要素のname属性値をQNameで指定します。

1

wsdl:fault

フォルトメッセージ定義要素

1〜フォルトの個数

name

フォルトメッセージ名属性

フォルト名を定義します。

1

message

フォルトメッセージ参照属性

(e) wsdl:message要素の定義」で定義したwsdl:message要素のname属性値をQNameで指定します。

1

(凡例)

−:該当しません。

注※

使用できる文字種には制限があります。使用できる文字種については,「2.9.3(2) WSDL定義で使用できる文字」を参照してください。

wsdl:portType要素の定義例を次の図に示します。

図2‒15 wsdl:portType要素の定義例

[図データ]

(g) wsdl:binding要素の定義

wsdl:binding要素とその下位要素,および属性を定義します。

  1. (c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)」で定義したwsdl:definitions要素の子要素として,wsdl:binding要素を定義します。

  2. wsdl:binding要素にname属性とtype属性を定義します。

    name属性の値には,任意の文字列を指定できます。

    type属性の値には,「(f) wsdl:portType要素の定義」で定義したwsdl:portType要素のname属性の値をQNameで指定します。

  3. wsdl:binding要素の子要素として,soap:binding要素を定義します。

  4. soap:binding要素にtransport属性を定義します。

    transport属性の値は固定値です。「http://schemas.xmlsoap.org/soap/http」と定義します。

  5. wsdl:binding要素の子要素として,wsdl:operation要素を定義します。

    wsdl:operation要素は,「(a) オペレーションとフォルト名のリストアップ」でリストアップしたオペレーションの数だけ定義します。

  6. wsdl:operation要素にname属性を定義します。

    name属性の値には,「(f) wsdl:portType要素の定義」で定義したwsdl:portType要素の子要素であるwsdl:operation要素のname属性の値と同じ値を指定します。

  7. wsdl:operation要素の子要素として,soap:operation要素を定義します。

  8. soap:operation要素にsoapAction属性を指定します。

    soapAction属性の値は空にします。

  9. wsdl:operation要素の子要素として,wsdl:input要素,wsdl:output要素,およびwsdl:fault要素を定義します。

    wsdl:input要素,wsdl:output要素,wsdl:fault要素の順序で定義します。

    フォルト電文用の応答アクティビティが存在しない場合,wsdl:fault要素は省略できます。フォルト電文用の応答アクティビティが複数存在する場合,その数だけ定義します。

    作成例では,wsdl:input要素,wsdl:output要素,およびwsdl:fault要素を1つずつ定義します。

  10. wsdl:input要素とwsdl:output要素の子要素として,soap:body要素を定義します。

    soap:body要素には,値は指定しません。

  11. wsdl:fault要素にname属性を定義します。

    name属性の値には,「(f) wsdl:portType要素の定義」で定義したwsdl:operation要素の子要素であるwsdl:fault要素のname属性の値と同じ値を指定します。

  12. wsdl:fault要素の子要素として,soap:fault要素を定義します。

  13. soap:fault要素にname属性を定義します。

    name属性の値には,親要素であるwsdl:fault要素のname属性と同じ値を指定します。

wsdl:binding要素以下に定義する要素と属性を次の表に示します。

表2‒37 wsdl:binding要素以下に定義する要素と属性

要素

属性

意味

個数

wsdl:binding

バインディング定義要素

1

name

バインディング名属性

任意の文字列を定義します。

1

type

ポートタイプ参照属性

(f) wsdl:portType要素の定義」で定義したwsdl:portTypeのname属性値をQNameで指定します。

1

soap:binding

SOAPバインディング定義要素

1

transport

SOAPバインディング伝送形態定義属性

「http://schemas.xmlsoap.org/soap/http」を定義します(固定値)。

1

wsdl:operation

オペレーション定義要素

1〜オペレーションの個数

name

オペレーション名属性

オペレーション名を定義します。

(f) wsdl:portType要素の定義」で定義したwsdl:operation要素の子要素であるwsdl:fault要素のname属性の値と同じ値を指定します。

1

soap:operation

SOAPバインディングオペレーション定義要素

1

soapAction

SOAPActionヘッダ定義属性

1

wsdl:input

要求メッセージ定義要素

1

soap:body

SOAPバインディングBody要素定義要素

1

wsdl:output

応答メッセージ定義要素

1

soap:body

SOAPバインディングBody要素定義要素

1

wsdl:fault

フォルトメッセージ定義要素

1〜フォルトの個数

name

フォルトメッセージ名属性

フォルト名を定義します。

1

soap:fault

SOAPバインディングFault要素定義要素

1

name

SOAPバインディング名前属性

フォルト名を定義します。

1

(凡例)

−:該当しません。

注※

使用できる文字種には制限があります。使用できる文字種については,「2.9.3(2) WSDL定義で使用できる文字」を参照してください。

wsdl:binding要素の定義例を次の図に示します。

図2‒16 wsdl:binding要素の定義例

[図データ]

style属性およびuse属性を使用する場合

wsdl:binding要素以下にstyle属性およびuse属性を使用して,documentまたはliteralを明示することもできます。

図2‒17 wsdl:binding要素の定義例(style属性およびuse属性を使用する場合)

[図データ]

(h) wsdl:service要素の定義

wsdl:service要素とその下位要素,および属性を定義します。

  1. (c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)」で定義したwsdl:definitions要素の子要素として,wsdl:service要素を定義します。

  2. wsdl:service要素にname属性を定義します。

    name属性の値には,任意の文字列を指定できます。

  3. wsdl:service要素の子要素として,wsdl:port要素を1つ定義します。

  4. wsdl:port要素にname属性とbinding属性を定義します。

    name属性の値には,任意の文字列を指定できます。

    binding属性の値には,「(g) wsdl:binding要素の定義」で定義したwsdl:binding要素のname属性の値をQNameで指定します。

  5. wsdl:port要素の子要素として,soap:address要素を1つ定義します。

  6. soap:address要素にlocation属性を定義します。

    location属性の値には,仮の値として「http://localhost:80/SampleService/services/<PortName>」を指定します。

    <PortName>には,手順4.で定義したname属性と同じ値を指定してください。

ポイント

WSDLを作成した段階では,サービスロケーションの値(wsdl:port要素内のsoap-address要素のlocation属性値)は決定していません。このため,仮の値を設定します。この値は,サービスプラットフォームが提供しているSOAP通信基盤およびJAX-WSエンジンでエラーにならない値です。

サービスロケーションの値は,ユーザ定義ファイルを含むHCSCコンポーネントを配備定義したあとに確定します。WSDLを編集して,確定したサービスロケーションの値を設定してから,WSDLを基にサービスリクエスタを作成してください。WSDLの編集の詳細については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「9.7.2 WSDLを編集する」を参照してください。

wsdl:service要素以下に定義する要素と属性を次の表に示します。

表2‒38 wsdl:service要素以下に定義する要素と属性

要素

属性

意味

個数

wsdl:service

サービス定義要素

1

name

サービス名属性

任意の文字列を定義します。

1

wsdl:port

ポート定義要素

1

name

ポート名属性

任意の文字列を定義します。

1

binding

バインディング参照属性

(g) wsdl:binding要素の定義」で定義したwsdl:binding要素のname属性値をQNameで指定します。

1

soap:address

SOAPバインディングアドレス定義要素

1

location

サービス位置定義属性

仮の値として,

「http://localhost:80/SampleService/services/<PortName>」を定義します。

<PortName>には,wsdl:port要素のname属性と同じ値を指定します。

1

(凡例)

−:該当しません。

注※

使用できる文字種には制限があります。使用できる文字種については,「2.9.3(2) WSDL定義で使用できる文字」を参照してください。

wsdl:service要素の定義例を次の図に示します。

図2‒18 wsdl:service要素の定義例

[図データ]

複数のwsdl:portを使用する場合

作成例(Sample_Reception.wsdl)では,1つのwsdl:port要素にすべてを定義していますが,複数のwsdl:port要素を使用して,それぞれにオペレーションを定義することもできます。

複数のwsdl:port要素を使用する場合の定義例を次の図に示します。

図2‒19 wsdl:service要素の定義例(複数のwsdl:portを使用する場合)

[図データ]