春のプロジェクトから WSDL 操作の 1 つを呼び出すと、次の例外が発生します -
com.sun.istack.internal.SAXException2: unable to marshal type "com.pkg.wsdl.ABC" as an element because it is missing an @XmlRootElement annotation
私はpom.xmlで以下を使用して、春のプロジェクトの一部としてWSDL(すでに多くのクライアントで使用されています)からJavaオブジェクトを生成しています -
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.1</version>
同様の問題の解決策を見て、JAXBElement を使用するようにコードを変更しましたが、それでも同じエラーが発生します -
ABC vabc = new ABC();
vabc.set(..) // populate vabc object
ObjectFactory of = new ObjectFactory();
JAXBElement<ABC> jabc = of.createABC(vabc);
ABC oabc = jabc .getValue();
マーシャラー コード -
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("com.pkg.wsdl");
バックエンド Web サービスの呼び出し -
ABCResp response = (ABCResp) getWebServiceTemplate()
.marshalSendAndReceive("http://host:port/svcname",oabc);