Interstage Java EE 7で使用するWSDLが、WSDLの仕様以外に従う必要のある事項について説明します。
参考
本項で使用しているXMLのネームスペースのprefixは、以下のとおりです。
prefix | ネームスペース |
---|---|
wsdl | http://schemas.xmlsoap.org/wsdl/ |
xs | http://www.w3.org/2001/XMLSchema |
xmime | http://www.w3.org/2005/05/xmlmime |
型定義
wsdl:typesでの型定義には、XMLスキーマだけ使用できます。個々のデータ型については、「Javaの基本データ型とXMLデータ型」を参照してください。
XMLインスタンスの解釈が不定となる、スキーマ定義(例:出現回数が固定でなくかつ名前が同じ複数のelement定義が連続したsequenceモデル)に注意してください。そのような定義のデータは、実際の通信において、受信時の解釈も不定となります。
1つのcomplexType定義に、複数のany定義が含まれないようにしてください。
xs:choice定義を使用する場合、maxOccurs属性に"unbounded"を指定してください。maxOccurs="unbounded"を指定しなかった場合、正しくマッピングが行われません。
例
xs:choice定義例
WSDL定義からスタブを生成した場合のWSDL定義に対応するJava例を以下に示します。
<xs:complexType name="addNumbers"> <xs:sequence> <element name="in_param" type="xs:int" /> <element name="inout_param" type="xs:int" /> <xs:choice maxOccurs="unbounded"> <xs:element ref="tns:selected_param_int" /> <xs:element ref="tns:selected_param_string" /> </xs:choice> </xs:sequence> <element name="selected_param_int" type="xs:int" /> <element name="selected_param_string" type="xs:string" /> </xs:complexType>
public class AddNumbers { @XmlElement(name = "in_param") protected int inParam; @XmlElement(name = "inout_param") protected int inoutParam; @XmlElements({ @XmlElement(name = "selected_param_int", type = Integer.class), @XmlElement(name = "selected_param_string", type = String.class) }) protected List<JAXBElement<String>> selectedParamIntOrSelectedParamString; }
xs:any要素は使用できません。
xmime:expectedContentTypes属性の値に「text/plain」を指定しないでください。
その他
「xml」で始まる名前空間接頭辞は使用できません。
データ型が異なる要素は、異なるname属性を指定してください。
URIを構成する文字は、ASCIIコード範囲の利用可能な文字だけを使用してください。
以下のいずれかがDOSデバイス名と一致するWSDLを使用した場合、デフォルトではWSDLからJavaを生成する際にエラーとなることがあります。JAX-WSやJAXBのカスタムバインディング定義を使用して、生成されるクラス名やパッケージ名を指定することで回避できます。詳細は、JAX-WSやJAXBのドキュメントを参照してください。
型名
ポートタイプ名
オペレーション名
サービス名
ネームスペースの構成要素('.'、'/'、';'で区切られた文字列名)