使用cxf-codegen插件版本4.0.3从wsdl生成java代码

问题描述 投票:0回答:1

我的项目正在使用

cxf-codegen
插件从
wsdl
生成java代码,生成的文件结构如下:

  • 生成源
    • cxf
      • com.example
        • dxl.gr.ws.client.customeragreement

但是当我将版本从 3.5.5 升级到 4.0.3 时,生成的文件的结构变得不同,并且生成的类中缺少一些代码,尽管我没有更改 wsdl 文件中的任何内容。

新结构如下:

  • 生成源
    • cxf
      • com.example

这是 cxf-codegen 插件:

<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-sources/cxf</sourceRoot>
          <wsdlOptions>
            <wjsdlOption>
              <wsdl>${project.basedir}/src/main/resources/CustomerAgreementVBS/WSDL/CustomerAgreementVBS.wsdl</wsdl>
              <wsdlLocation>CustomerAgreementVBS/WSDL/CustomerAgreementVBS.wsdl</wsdlLocation>
              <extraargs>
                <extraarg>-b</extraarg>
                <extraarg>${project.basedir}/src/main/resources/CustomerAgreementVBS/WSDL/service_mapping.xml
                </extraarg>
              </extraargs>
              <extendedSoapHeaders>true</extendedSoapHeaders>
            </wjsdlOption>
          </wsdlOptions>
        </configuration>
        <goals>
          <goal>wsdl2java</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

这是额外参数

service_mapping.xml
文件:

<?xml version="1.0"?>
<jaxws:bindings
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        wsdlLocation="CustomerAgreementVBS.wsdl"
        xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
    <jaxws:bindings node="wsdl:definitions">
        <jaxws:package name="com.example.dxl.gr.ws.client.customeragreement"/>
        <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
        <handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
            <handler-chain>
            </handler-chain>
        </handler-chains>
    </jaxws:bindings>
</jaxws:bindings>

有谁知道为什么会这样吗?

soap java-17 wsdl2java wsdl.exe
1个回答
0
投票

解决方案位于

service_mapping.xml
文件中。应该如下所示:

<?xml version="1.0"?>
<jaxws:bindings
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        wsdlLocation="CustomerAgreementVBS.wsdl"
        xmlns:jaxws="https://jakarta.ee/xml/ns/jaxws">
    <jaxws:bindings node="wsdl:definitions">
        <jaxws:package name="com.example.dxl.gr.ws.client.customeragreement"/>
        <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
    </jaxws:bindings>
</jaxws:bindings>
© www.soinside.com 2019 - 2024. All rights reserved.