Когда я называю один из операции WSDL из пружинного проекта, я получаю следующее исключение - com.sun.istack.internal.SAXException2: unable to marshal type "com.pkg.wsdl.ABC" as an element because it is missing an @XmlRootElement annotation
ошибка в сортировочном - отсутствует xmlrootelement ошибка аннотации
Я использую следующий в pom.xml для создания Java-объектов из WSDL (уже используется многими клиентами) в рамках весеннего проекта -
<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 Service -
ABCResp response = (ABCResp) getWebServiceTemplate()
.marshalSendAndReceive("http://host:port/svcname",oabc);
Возможно, лучше использовать методы в классе ObjectFactory вместо использования 'new JAXBElement (новое QName (uri, localpart), ABC.class, request) ', таким образом, вы не затягиваете свой код с пространствами имен схем и URI, если они изменены. Что-то вроде этого: 'ObjectFactory of = new ObjectFactory(); ABC vabc = of.createABC(); ** заполнить объект vabc **, а затем JAXBElement jabc = of.createABC (vabc); ' –