JAX-WS客户端,无需在测试/生产之间切换时生成新代理

时间:2010-07-29 07:33:24

标签: java spring web-services jax-ws

我正在尝试配置我的JAX-WS客户端以在测试/生产点之间切换,而不必使用wsimport重新生成代理类。

我正在尝试使用的服务在测试和生产中使用不同的WSDL。例如,targetNamespace和soapAction地址不同。

我已经尝试过使用Springs JaxWsPortProxyFactoryBean,并设法根据部署环境指向不同的wsdl,但即使我指向生产,它仍然使用来自test的WebMethod操作地址。我想这是因为它们是在使用指向test-wsdl的wsimport生成的服务接口中进行硬编码的。

任何人都知道是否可以使用不同的targetNamespace和动作地址在没有重新生成代理的情况下在wsdls之间切换?

1 个答案:

答案 0 :(得分:1)

您可以覆盖端点地址属性:
https://jax-ws.dev.java.net/guide/How_to_invoke_and_endpoint_by_overriding_endpoint_address_in_the_WSDL.html

//Create service and proxy from the generated Service class.
HelloService service = new HelloService();
HelloPort proxy = service.getHelloPort();

<b>((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
                                                    "http://new/endpointaddress");</b>

proxy.sayHello("Hello World!");

我不确定你的问题是否还需要覆盖其他参数。