0

当我们使用 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")
当您在本地部署 ear 时,这很好,这意味着您拥有源代码的同一位置。
但是当我们尝试在开发服务器中开发从我的桌面创建的这个耳包时,它会给出异常,因为路径不是 avilabel。

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

4

2 回答 2

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

参考: 如何避免需要在 CXF 或 JAX-WS 生成的 Web 服务客户端中指定 WSDL 位置?

如果您使用jaxws-maven-plugin进行配置,那么我相信可以在jaxws:wsimport配置部分中为来自 Maven2 的 JAXWS WsImport 编译器配置上述选项。我自己还没有尝试过。

于 2013-06-05T20:48:37.037 回答
0

在部署时动态生成存根

  • 不要在通用构建中包含存根实现类
  • 确保 Web 服务已针对各自的环境启动并运行
  • 在部署时,执行一个脚本,该脚本将基于为相应环境发布的 WSDL 生成存根
于 2013-06-05T20:19:11.997 回答