私に起こっているいくつかの奇妙な脳のラックがあります。特定の xsd ファイルで、次のような xml 要素を見つけます。
<xsd:element name="getAllOperationsSystemsRequest">
<xsd:annotation>
<xsd:documentation>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
wsdl 操作が要素にリンクされている
<wsdl:operation name="getAllOperationsSystems">
<wsdl:input message="tns:getAllOperationsSystemsRequest"/>
<wsdl:output message="tns:getAllOperationsSystemsResponse"/>
<wsdl:fault name="getAllOperationsSystemsException" message="tns:getAllOperationsSystemsException"/>
</wsdl:operation>
どうやら、getAllOperationsSystemsRequest は既知のタイプにバインドされていません (属性「タイプ」がありません。その結果、wsdl2java ツールを実行した後、最終的にメソッド定義を取得します。
public org.tmforum.mtop.mri.xsd.osr.v1.MultipleObjectsResponseType getAllOperationsSystems(
javax.xml.ws.Holder<org.tmforum.mtop.fmw.xsd.hdr.v1.Header> mtopHeader,
java.lang.**Object** mtopBody
)throws GetAllOperationsSystemsException
OperationsSystemsRequest の代わりにオブジェクトが入力パラメータ タイプとして生成されます (実際には OperationsSystemsRequest は存在しません。
最後に、marshall/unmarshall で太字の実行時エラーが発生します。
原因: com.sun.istack.SAXException2: 「javax.xml.bind.JAXBElement」のインスタンスが「java.lang.Object」を置換していますが、「javax.xml.bind.JAXBElement」は匿名型にバインドされています。
それを解決するための情報をくれた人には本当に感謝しています。事前にTnanks。