我想为从WebDL生成的Apache CXF Web服务客户端的服务端点实现接口类添加java注释。
这是我正在使用的绑定文件,它应该利用来自http://confluence.highsource.org/display/J2B/Annotate+Plugin的JAXB的Annotate插件:
<jaxws:bindings wsdlLocation="OptenetServices.wsdl"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:annox="http://annox.dev.java.net"
jaxws:extensionBindingPrefixes="annox">
<jaxws:bindings node="wsdl:portType">
<annox:annotate>
<annox:annotate annox:class="org.jvnet.hk2.annotations.Contract" />
</annox:annotate>
</jaxws:bindings>
</jaxws:bindings>
没有错误,但是没有创建注释。我可以确认选择了节点并使用了绑定,因为如果我更改了annox:annotate
:
<jaxws:class name="Renamed">
<jaxws:javadoc>Blah blah</jaxws:javadoc>
</jaxws:class>
重命名界面并正确评论。
我不清楚是否可以在这种情况下使用annox以及jaxb和jaxws绑定之间的关系。
代码生成由CFX通过Maven处理:
<build>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/wsdl/service.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-p</extraarg>
<extraarg>com.example.pkg</extraarg>
<extraarg>-b</extraarg>
<extraarg>${basedir}/src/main/wsdl/bindings.xml</extraarg>
<extraarg>-xjc-Xannotate</extraarg>
<extraarg>-verbose</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.5</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
感谢。
答案 0 :(得分:1)
您是否使用<annox:annotateClass>
代替<annox:annotate annox:class="org.jvnet.hk2.annotations.Contract" />
给出的例子:
这将使用@SuppressWarnings注释生成的类FindApplicationForApplicationSession(&#34; all&#34;)
<jaxws:bindings node="xs:complexType[@name='findApplicationForApplicationSession']">
<annox:annotateClass>@java.lang.SuppressWarnings(name="all")</annox:annotateClass>
</jaxws:bindings>
答案 1 :(得分:1)
无法使用绑定文件注释SEI类。 Apache CXF的cxf-codegen-plugin使用速度模板生成SEI类。因此,您应该创建一个提供不同速度模板的插件。
示例:https://github.com/valmol/samples-cxf-codegen-plugin/
生成器只是为生成的SEI添加注释。添加不依赖于生成的上下文的注释也是一项简单的任务,只需按原样将注释添加到自定义模板中。