JAVA WSDL сгенерированный класс и XSD сгенерированный класс не работают вместе - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть файл 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?Я пытался передать его как строку, но она не работает

...