我正在使用 Java 为 .NET Web 服务实现客户端。我有一些关于正确做法的问题,还有一个我需要解决的问题。
- 我正在使用 maven 和 wsdl2java 插件,它当前设置为从 Web 服务 url 获取 wsdl xml,尽管我已经看到大多数示例在项目源中使用 wsdl 的本地副本。有偏好吗?我还发现您需要再次指定 wsdl 位置来实例化生成的服务类,有没有办法避免这种情况?
- 实例化服务对象时指定服务URL的方法是什么?目前生成的代码会自动使用 wsdl 中指定的 URL。我希望能够根据运行时变量更改地址。
- 我想设置一些配置,例如 WS-ReliableMessaging 为 true。这样做的最佳做法是什么?
这是POM中的插件:
<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>${basedir}/target/generated/src/main/java</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>http://ServerNameA/FooService.svc?wsdl</wsdl>
<serviceName>FooService</serviceName>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
这是我目前实例化服务对象的方式:
FooService fooService = new FooService(new URL("http://ServerNameA/FooService.svc?wsdl"));
IFooService service = fooService.getWSHttpBindingIFooService();
service.getData(); // Calling one of the ports/service methods