2.8.1 フォルトが発生した場合にフォルト電文を返す例
サービス部品の呼び出しでフォルトが発生したあと,サービスリクエスタにフォルト電文を返す場合を例に,WSDLファイルの作成方法について説明します。
- 〈この項の構成〉
(1) ビジネスプロセスの例
WSDLの作成の例として使用するビジネスプロセスを次の図に示します。
-
サービスリクエスタがビジネスプロセスにサービス部品の実行を要求します。
-
サービス部品の実行要求では,XMLの要求電文(ボディ)が送付されます。
-
ビジネスプロセスはXMLの要求電文を受付1という受付アクティビティで受け取ります。このときのオペレーション名はoperation1です。
-
受付1には変数RequestMessageを割り当て,要求電文を規定する電文フォーマットとしてRequest.xsdが指定されています。
-
ビジネスプロセスからサービス部品を呼び出します。フォルトが発生した場合は項番10.でフォルトが返されます。
-
ビジネスプロセスが,サービス部品の実行結果をXMLの応答電文として構成し,応答1という応答アクティビティで返します。
-
応答1には変数ResponseMessageを割り当て,応答電文を規定する電文フォーマットとしてResponse.xsdが指定されています。
-
サービスリクエスタへの応答が返されます。
-
サービスリクエスタへの応答では,XMLの応答電文(ボディ)が送付されます。
-
項番5.でフォルトが発生した場合,応答2という応答アクティビティからfault1というフォルトが返されます。
-
応答2には変数FaultMessageを割り当て,フォルト電文を規定する電文フォーマットとしてFault.xsdが指定されています。
-
サービスリクエスタにフォルト電文が送付されます。
(2) 電文フォーマットの内容の例
「図2-9 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.8.3 SOAP受付のWSDL作成時の注意事項」を参照してください。
WSDLの作成例は「Sample_Reception.wsdl」とします。Sample_Reception.wsdlの概要を次に示します。
-
「(1) ビジネスプロセスの例」に示す内容を前提としています。
-
ユーザ定義受付はオペレーション単位に作成することもできますが,Sample_Reception.wsdlは,1つのユーザ定義受付にすべてのオペレーション含むときのWSDLです。
-
作成するWSDLの通信スタイルは「document」スタイルを推奨しています。そのため,Sample_Reception.wsdlは「document」スタイルの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要素には,次の表に示す属性を追加します。
属性 |
意味 |
値 |
個数 |
---|---|---|---|
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要素の定義例を次の図に示します。
- 複数のオペレーションを使用する場合
-
作成例(Sample_Reception.wsdl)では,オペレーションを1つだけ使用していますが,複数のオペレーションを使用する場合,複数の要求電文,応答電文を扱うことになります。これらの電文が異なる複数の名前空間を使用している場合には,次の表に示すように,それぞれのプリフィックス宣言をwsdl:definitions要素に定義します。
表2‒30 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‒11 wsdl:definitions要素の定義例(複数のオペレーションを使用する場合)
(d) wsdl:types要素の定義
wsdl:types要素とその下位要素,および属性を定義します。
-
「(c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)」で定義したwsdl:definitions要素の子要素として,wsdl:types要素を定義します。
-
「(b) 割当変数の電文フォーマット定義ファイルのリストアップ」でリストアップした電文フォーマット定義ファイルのxsd:schema要素をtargetNamespace属性で分類し,それぞれのtargetNamespaceの値ごとに1つずつxsd:schema要素を定義します。
-
手順2.で定義したxsd:schema要素の属性として,電文フォーマット定義ファイルのxsd:schema要素が持つすべての属性を追加します。
-
手順2.で定義したxsd:schema要素の子要素として,電文フォーマット定義ファイルのxsd:schema要素が持つすべての子要素を追加します。
-
複数のフォルト電文があり,名前空間が異なる場合,フォルト電文の名前空間をwsdl:definitions要素のtargetNamespace属性の値に変更します。
wsdl:types要素以下に定義する要素と属性を次の表に示します。
要素 |
属性 |
意味 |
値 |
個数 |
||
---|---|---|---|---|---|---|
wsdl:types |
− |
型定義要素 |
− |
1 |
||
xsd:schema |
− |
スキーマ要素 |
− |
1〜電文フォーマット定義ファイルが使う名前空間の数 |
||
targetNamespace |
名前空間属性 |
電文のtargetNamespaceと同じ値を定義します。 |
1 |
|||
xsd:schemaの属性 |
属性 |
電文の属性と同じ値を定義します。 |
1〜属性の数 |
|||
xsd:schemaの子要素 |
− |
電文の内容 |
電文が持つxsd:schema要素のすべての子要素をコピーします。 |
1〜同一名前空間を使用する電文フォーマットのxsd:schema要素の子要素の数 |
wsdl:types要素の定義例を次の図に示します。
(e) wsdl:message要素の定義
wsdl:message要素とその下位要素,および属性を定義します。
-
「(c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)」で定義したwsdl:definitions要素の子要素としてwsdl:message要素を定義します。
wsdl:message要素はWSDLで定義するオペレーションが持つすべての要求電文,応答電文,およびフォルト電文の数だけ定義します。
作成例では,オペレーションが1つあります。そのオペレーションには,要求電文が1つ,応答電文が1つ,フォルト電文が1つあるので,wsdl:message要素を3つ定義します。
-
wsdl:message要素にname属性を定義します。
name属性の値は,ファイル内で一意な値になるよう,ほかのwsdl:message要素のname属性とは異なる値を定義します。
作成例では,operation1の要求電文にはReqMsg1,応答電文にはResMsg1と定義しています。フォルト電文は個数に合わせてFltMsgN(Nは1以上)とします。
-
wsdl:message要素の子要素として,wsdl:part要素を1つずつ定義します。
-
wsdl:part要素にname属性とelement属性を定義します。
name属性には任意の文字列を指定します。
element属性の値には,「(d) wsdl:types要素の定義」でコピーしたxsd:schema要素の子要素から,ルート要素を選択して指定します。「表2-29 wsdl:definitions要素に追加する属性」に示すプリフィックスとルート要素名を使用してQNameで指定します。
wsdl:message要素以下に定義する要素と属性を次の表に示します。
要素 |
属性 |
意味 |
値 |
個数 |
|
---|---|---|---|---|---|
wsdl:message |
− |
メッセージ定義要素 |
− |
1 |
|
name |
メッセージ名属性 |
ほかのwsdl:message要素のname属性とは異なる一意の文字列を定義します。 |
1 |
||
wsdl:part |
− |
メッセージパート定義要素 |
− |
1 |
|
name |
メッセージパート名属性 |
任意の文字列※を定義します。 |
1 |
||
element |
要素参照属性 |
該当する電文フォーマットファイルのルート要素を定義します。 |
1 |
wsdl:message要素の定義例を次の図に示します。
(f) wsdl:portType要素の定義
wsdl:portType要素とその下位要素,および属性を定義します。
-
「(c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)」で定義したwsdl:definitions要素の子要素として,wsdl:portType要素を1つ定義します。
-
wsdl:portType要素にname属性を定義します。
name属性の値には,任意の文字列を指定できます。
-
wsdl:portType要素の子要素として,wsdl:operation要素を定義します。
wsdl:operation要素は,「(a) オペレーションとフォルト名のリストアップ」でリストアップしたオペレーションの数だけ定義します。
-
wsdl:operation要素にname属性を定義します。
name属性の値には,「(a) オペレーションとフォルト名のリストアップ」でリストアップしたオペレーションのオペレーション名を指定します。
作成例では,wsdl:operation要素を1つ定義し,name属性は「operation1」とします。
-
wsdl:operation要素の子要素として,wsdl:input要素,wsdl:output要素,およびwsdl:fault要素を定義します。
wsdl:input要素,wsdl:output要素,wsdl:fault要素の順序で定義します。
フォルト電文用の応答アクティビティが存在しない場合,wsdl:fault要素は省略できます。フォルト電文用の応答アクティビティが複数存在する場合,その数だけ定義します。
作成例では,wsdl:input要素,wsdl:output要素,およびwsdl:fault要素を1つずつ定義します。
-
wsdl:input要素およびwsdl:output要素にmessage属性を定義します。
message属性の値には,「(e) wsdl:message要素の定義」で定義したwsdl:message要素のname属性の値をQNameで指定します。
-
wsdl:fault要素にname属性とmessage属性を定義します。
name属性の値には,「(a) オペレーションとフォルト名のリストアップ」でリストアップしたフォルト名を指定します。
message属性の値には,「(e) wsdl:message要素の定義」で定義したwsdl:message要素のname属性の値をQNameで指定します。
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 |
wsdl:portType要素の定義例を次の図に示します。
(g) wsdl:binding要素の定義
wsdl:binding要素とその下位要素,および属性を定義します。
-
「(c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)」で定義したwsdl:definitions要素の子要素として,wsdl:binding要素を定義します。
-
wsdl:binding要素にname属性とtype属性を定義します。
name属性の値には,任意の文字列を指定できます。
type属性の値には,「(f) wsdl:portType要素の定義」で定義したwsdl:portType要素のname属性の値をQNameで指定します。
-
wsdl:binding要素の子要素として,soap:binding要素を定義します。
-
soap:binding要素にtransport属性を定義します。
transport属性の値は固定値です。「http://schemas.xmlsoap.org/soap/http」と定義します。
-
wsdl:binding要素の子要素として,wsdl:operation要素を定義します。
wsdl:operation要素は,「(a) オペレーションとフォルト名のリストアップ」でリストアップしたオペレーションの数だけ定義します。
-
wsdl:operation要素にname属性を定義します。
name属性の値には,「(f) wsdl:portType要素の定義」で定義したwsdl:portType要素の子要素であるwsdl:operation要素のname属性の値と同じ値を指定します。
-
wsdl:operation要素の子要素として,soap:operation要素を定義します。
-
soap:operation要素にsoapAction属性を指定します。
soapAction属性の値は空にします。
-
wsdl:operation要素の子要素として,wsdl:input要素,wsdl:output要素,およびwsdl:fault要素を定義します。
wsdl:input要素,wsdl:output要素,wsdl:fault要素の順序で定義します。
フォルト電文用の応答アクティビティが存在しない場合,wsdl:fault要素は省略できます。フォルト電文用の応答アクティビティが複数存在する場合,その数だけ定義します。
作成例では,wsdl:input要素,wsdl:output要素,およびwsdl:fault要素を1つずつ定義します。
-
wsdl:input要素とwsdl:output要素の子要素として,soap:body要素を定義します。
soap:body要素には,値は指定しません。
-
wsdl:fault要素にname属性を定義します。
name属性の値には,「(f) wsdl:portType要素の定義」で定義したwsdl:operation要素の子要素であるwsdl:fault要素のname属性の値と同じ値を指定します。
-
wsdl:fault要素の子要素として,soap:fault要素を定義します。
-
soap:fault要素にname属性を定義します。
name属性の値には,親要素であるwsdl:fault要素のname属性と同じ値を指定します。
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 |
wsdl:binding要素の定義例を次の図に示します。
- style属性およびuse属性を使用する場合
-
wsdl:binding要素以下にstyle属性およびuse属性を使用して,documentまたはliteralを明示することもできます。
図2‒16 wsdl:binding要素の定義例(style属性およびuse属性を使用する場合)
(h) wsdl:service要素の定義
wsdl:service要素とその下位要素,および属性を定義します。
-
「(c) WSDLファイルのひな形の作成(wsdl:definitions要素の定義)」で定義したwsdl:definitions要素の子要素として,wsdl:service要素を定義します。
-
wsdl:service要素にname属性を定義します。
name属性の値には,任意の文字列を指定できます。
-
wsdl:service要素の子要素として,wsdl:port要素を1つ定義します。
-
wsdl:port要素にname属性とbinding属性を定義します。
name属性の値には,任意の文字列を指定できます。
binding属性の値には,「(g) wsdl:binding要素の定義」で定義したwsdl:binding要素のname属性の値をQNameで指定します。
-
wsdl:port要素の子要素として,soap:address要素を1つ定義します。
-
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要素以下に定義する要素と属性を次の表に示します。
要素 |
属性 |
意味 |
値 |
個数 |
||
---|---|---|---|---|---|---|
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 |
wsdl:service要素の定義例を次の図に示します。
- 複数のwsdl:portを使用する場合
-
作成例(Sample_Reception.wsdl)では,1つのwsdl:port要素にすべてを定義していますが,複数のwsdl:port要素を使用して,それぞれにオペレーションを定義することもできます。
複数のwsdl:port要素を使用する場合の定義例を次の図に示します。
図2‒18 wsdl:service要素の定義例(複数のwsdl:portを使用する場合)