-
Notifications
You must be signed in to change notification settings - Fork 44
Open
Description
My maven plugin config:
<plugin>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>4.0.3</version>
<configuration>
<catalog>${basedir}/src/wsdl/catalog.xml</catalog>
<sourceDestDir>${project.build.directory}/generated-sources/jaxws/</sourceDestDir>
<verbose>true</verbose>
</configuration>
<executions>
<execution>
<id>cadservice</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<bindingFiles>
<!-- XXX: I would like to annotate types in this schema ... -->
<bindingFile>jaxb-xxxx_com_spice_cad_types.xml</bindingFile>
</bindingFiles>
<wsdlFiles>
<wsdlFile>cad.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>cad.wsdl</wsdlLocation>
<staleFile>${project.build.directory}/jaxws-stale/cad.stale</staleFile>
<xjcArgs>
<xjcArg>-Xannotate</xjcArg>
</xjcArgs>
<extension>true</extension>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>${jaxb2-basics-annotate.version}</version>
</dependency>
<dependency>
<!-- only neeed for the pretty old javax.xml jaxb2-basics-annotate extension -->
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<!-- only to get rid of slf4j warnings of missing logger implementation during jaxws plugin runs -->
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
</dependencies>
</plugin>
My catalog.xml looks like this:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">
<public publicId="http://spice.xxxx.com/cad/types" uri="com.xxxx.spice.cad.types.xsd" />
</catalog>
My bindingFile jaxb-xxxx_com_spice_cad_types.xml looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings jaxb:version="3.0"
xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:cad="http://spice.xxxx.com/cad/types"
xmlns:annox="http://annox.dev.java.net"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc annox">
<jaxb:bindings scd="/x-schema::cad">
<jaxb:schemaBindings>
<jaxb:package name="com.xxxx.spice.webservice.goos.cad" />
</jaxb:schemaBindings>
<!-- Not working -->
<!--<jaxb:bindings node="cad:complexType[@name='ParameterType']">-->
<jaxb:bindings scd="type::cad:ParameterType">
<annox:annotateClass>
@java.lang.SuppressWarnings("all")
@lombok.ToString
</annox:annotateClass>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
And my com.xxxx.spice.cad.types.xsd looks like this (i show only the relevant lines):
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://spice.xxxx.com/cad/types"
xmlns="http://spice.xxxx.com/cad/types"
elementFormDefault="qualified"
targetNamespace="http://spice.xxxx.com/cad/types">
....
<xsd:complexType name="ParameterType">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="target" type="tns:ParameterTargetType">
<xsd:annotation>
<xsd:documentation>The parameter target (param/textparam).</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="1" name="name" type="notEmptyString">
<xsd:annotation>
<xsd:documentation>The parameter name.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="1" name="value" type="notEmptyString">
<xsd:annotation>
<xsd:documentation>The parameter value.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
....
</xsd:schema>
And my cad.wsdl:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="CadWebservice"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:sst="http://spice.xxxx.com/cad/types"
xmlns:tns="http://spice.xxxx.com/cad/"
targetNamespace="http://spice.xxxx.com/cad/">
<!-- Types -->
<wsdl:types>
<xsd:schema>
<xsd:import namespace="http://spice.xxxx.com/cad/types" schemaLocation="com.xxxx.spice.cad.types.xsd">
<xsd:annotation>
<xsd:documentation>Cad service type definitions.</xsd:documentation>
</xsd:annotation>
</xsd:import>
</xsd:schema>
</wsdl:types>
....
</wsdl:definitions>
Then my maven build fail with this:
[INFO] --- jaxws:4.0.3:wsimport (cadservice) @ spicecad ---
[INFO] Processing: file:/D:/Dev/git/coc/spicecad/src/wsdl/cad.wsdl
[INFO] jaxws:wsimport args: [-keep, -s, 'D:\Dev\git\coc\spicecad\target\generated-sources\jaxws', -d, 'D:\Dev\git\coc\spicecad\target\classes', -verbose, -encoding, UTF-8, -extension, -Xnocompile, -catalog, 'D:\Dev\git\coc\spicecad\src\wsdl\catalog.xml', -wsdllocation, cad.wsdl, -B-Xannotate, -b, 'D:\Dev\git\coc\spicecad\src\jaxws\jaxws-cad.xml', -b, 'D:\Dev\git\coc\spicecad\src\jaxws\jaxb-xxxx_com_spice_cad_types.xml', "file:/D:/Dev/git/coc/spicecad/src/wsdl/cad.wsdl"]
WSDL wird geparst ...
[ERROR] cvc-elt.1.a: Deklaration des Elements "annox:annotateClass" kann nicht gefunden werden.
Zeile 16 von file:/D:/Dev/git/coc/spicecad/src/jaxws/jaxb-xxxx_com_spice_cad_types.xml
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.jvnet.jax_ws_commons.jaxws.Invoker.main(Invoker.java:74)
Caused by: com.sun.tools.ws.wscompile.AbortException
at com.sun.tools.ws.processor.modeler.wsdl.JAXBModelBuilder.bind(JAXBModelBuilder.java:114)
at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildJAXBModel(WSDLModeler.java:2241)
at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:161)
at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:111)
at com.sun.tools.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:410)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:180)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:158)
... 5 more
It seems that "annox:annotateClass" could not be "resolved" during processing ...
Any idea why?
I'm using maven :
$mvn --version
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: D:\Dev\ApacheMaven\current-maven
Java version: 17.0.4, vendor: Oracle Corporation, runtime: D:\Dev\Java\jdk-17.0.4
Default locale: de_DE, platform encoding: Cp1252
OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"
Metadata
Metadata
Assignees
Labels
No labels