使用绑定文件注释JAX-WS SEI类

时间:2014-07-10 12:10:18

标签: java jaxb cxf jax-ws annox

我想为从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>

感谢。

2 个答案:

答案 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添加注释。添加不依赖于生成的上下文的注释也是一项简单的任务,只需按原样将注释添加到自定义模板中。