У меня есть файл wsdl, и я использую плагин maven для создания класса, связанного с SOAP.
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>wsimport-generate-reportdata.asmx</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlFiles>
<wsdlFile>api.brandbank.com/svc/feed/reportdata.asmx.wsdl</wsdlFile>
</wsdlFiles>
<packageName>com.bsssrl.bssbrandbank.soap</packageName>
<vmArgs>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
<wsdlLocation>https://api.brandbank.com/svc/feed/reportdata.asmx?WSDL</wsdlLocation>
<staleFile>${project.build.directory}/jaxws/stale/reportdata.asmx.stale</staleFile>
</configuration>
</execution>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlFiles>
<wsdlFile>api.brandbank.com/svc/feed/extractdata.asmx.wsdl</wsdlFile>
</wsdlFiles>
<packageName>com.bsssrl.bssbrandbank.unsent</packageName>
<vmArgs>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
<wsdlLocation>https://api.brandbank.com/svc/feed/extractdata.asmx?WSDL</wsdlLocation>
<staleFile>${project.build.directory}/jaxws/stale/extractdata.asmx.stale</staleFile>
</configuration>
<id>wsimport-generate-extractdata.asmx</id>
<phase>generate-sources</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>webservices-api</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<configuration>
<sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
<xnocompile>true</xnocompile>
<verbose>true</verbose>
<extension>true</extension>
<catalog>${basedir}/src/main/resources/wsdl/jax-ws-catalog.xml</catalog>
</configuration>
</plugin>
Клиент запрашивает сложный запрос с полем:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"content"
})
public static class XmlData {
@XmlMixed
@XmlAnyElement(lax = true)
protected List<Object> content;
Object
, запрашиваемый классом XmlData, является объектом, определенным во внешнем XSD.Я использую плагин jaxb maven для генерации классов.Я добавляю объект «request content» в XmlData, но получаю ошибочную оценку при вызове метода запроса мыла
SupplyCoverageReport.XmlData xmldata = new SupplyCoverageReport.XmlData();
xmldata.getContent().add(report);
int response = port.supplyCoverageReport(xmldata);
Это ошибка:
javax.ejb.EJBException: javax.xml.ws.soap.SOAPFaultException: Marshalling Error: class com.bsssrl.bssbrandbank.RetailerFeedbackReport and superclasses are not known to this context.
Как передатьмой класс xjb в контексте класса wsdl?Я пытался передать его как строку, но она не работает