I'm currently facing a problem with a WSDL file that comes from a software editor. I'm trying to generate the Java code (client side) with jaxws maven plugin but an error occurs during the wsimport goal :
[ERROR] invalid extension element: "soap:body" (in namespace http://schemas.xmlsoap.org/wsdl/soap/)
at com.sun.tools.ws.wscompile.ErrorReceiver.error(ErrorReceiver.java:63)
at com.sun.tools.ws.wscompile.ErrorReceiver.error(ErrorReceiver.java:67)
at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:152)
at com.sun.tools.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:414)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:175)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:153)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.codehaus.mojo.jaxws.Invoker.main(Invoker.java:80)
Caused by: com.sun.tools.ws.wsdl.framework.ParseException: invalid extension element: "soap:body" (in namespace http://schemas.xmlsoap.org/wsdl/soap/)
at com.sun.tools.ws.wsdl.parser.Util.fail(Util.java:160)
at com.sun.tools.ws.wsdl.parser.SOAPExtensionHandler.handleFaultExtension(SOAPExtensionHandler.java:374)
at com.sun.tools.ws.api.wsdl.TWSDLExtensionHandler.doHandleExtension(TWSDLExtensionHandler.java:61)
at com.sun.tools.ws.wsdl.parser.AbstractExtensionHandler.doHandleExtension(AbstractExtensionHandler.java:53)
at com.sun.tools.ws.wsdl.parser.WSDLParser.handleExtension(WSDLParser.java:1030)
at com.sun.tools.ws.wsdl.parser.WSDLParser.parseBindingOperation(WSDLParser.java:844)
at com.sun.tools.ws.wsdl.parser.WSDLParser.parseBinding(WSDLParser.java:682)
at com.sun.tools.ws.wsdl.parser.WSDLParser.parseDefinitionsNoImport(WSDLParser.java:265)
at com.sun.tools.ws.wsdl.parser.WSDLParser.parseDefinitions(WSDLParser.java:185)
Failed to parse the WSDL.
at com.sun.tools.ws.wsdl.parser.WSDLParser.buildWSDLDocument(WSDLParser.java:174)
at com.sun.tools.ws.wsdl.parser.WSDLParser.parse(WSDLParser.java:146)
at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:105)
... 8 more
Here is my pom.xml with the plugin configuration:
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<phase>generate-sources</phase>
<!-- Following configuration will invoke wsimport once for each wsdl. -->
<configuration>
<sourceDestDir>target/generated-sources/java</sourceDestDir>
<xdebug>true</xdebug>
<keep>true</keep>
<extension>true</extension>
<verbose>true</verbose>
<wsdlUrls>
<wsdlUrl>../test.wsdl</wsdlUrl>
<!-- <wsdlUrl>https://evaldata.unifr.ch/evasys/services/soapserver-v90.wsdl</wsdlUrl>-->
<vmArgs>
<vmArg>-Djavax.xml.accessExternalDTD=all</vmArg>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
<bindingDirectory>src/main/resources</bindingDirectory>
<bindingFiles>
<bindingFile>binding.xjb</bindingFile>
</bindingFiles>
</configuration>
</execution>
</executions>
</plugin>
...
I tried multiple configuration (remove the "extension" tag, the "keep" tag, get the file online or in local, etc.). I also tried to use the cxf-codegen-plugin (Apache) but the exception stay the same.
I have off course checked on stackoverflow if there is a way to solve the problem but nothing helps.