指向项目内部的WSDL

时间:2013-06-05 19:59:22

标签: maven

当我们使用WSDL生成一个存根时,它将在下面的类中包含这一行。

@WebServiceClient(name =“testService”,targetNamespace =“http://test.soap.coh.mycompany.com/”,wsdlLocation =“file:/ C:/ Users / sam / Documents / NetBeansProjects / test / trunk / test-service-co / target /wsdl/co/test/wsdl/testService.wsdl“)
当您在具有源代码的本地方式部署耳朵时,这很好。
但是当我们尝试开发这个从我的桌面在dev服务器中创建的耳朵时,它会给出异常,因为路径不是avilabel。

现在我的问题是如何生成我们没有上述问题的存根。 请注意我们正在使用maven生成存根。

2 个答案:

答案 0 :(得分:0)

在部署时动态生成存根

  • 不要在通用构建中包含存根实现类
  • 确保Webservice已启动并运行各自的环境
  • 在部署时,执行将基于关闭生成存根的脚本 为各自环境发布的WSDL

答案 1 :(得分:0)

如果您使用 CXF / Jaxws ,您可以这样做

<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>
          <wsdlOption>
            <wsdl>${project.basedir}/src/main/resources/wsdl/FooService.wsdl</wsdl>
            <wsdlLocation>classpath:wsdl/FooService.wsdl</wsdlLocation>
          </wsdlOption>
        </wsdlOptions>
      </configuration>
      <goals>
        <goal>wsdl2java</goal>
      </goals>
    </execution>
  </executions>
</plugin>

您也可以只提供FooService.wsdl

,而不是类路径位置

参考: How to avoid the need to specify the WSDL location in a CXF or JAX-WS generated webservice client?

如果您使用 jaxws-maven-plugin 进行配置,那么我相信上面的选项可以在其JAXWS WsImport compiler from Maven2配置部分为jaxws:wsimport配置。我自己也没试过。