我正在尝试配置我的JAX-WS客户端以在测试/生产点之间切换,而不必使用wsimport重新生成代理类。
我正在尝试使用的服务在测试和生产中使用不同的WSDL。例如,targetNamespace和soapAction地址不同。
我已经尝试过使用Springs JaxWsPortProxyFactoryBean,并设法根据部署环境指向不同的wsdl,但即使我指向生产,它仍然使用来自test的WebMethod操作地址。我想这是因为它们是在使用指向test-wsdl的wsimport生成的服务接口中进行硬编码的。
任何人都知道是否可以使用不同的targetNamespace和动作地址在没有重新生成代理的情况下在wsdls之间切换?
答案 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!");
我不确定你的问题是否还需要覆盖其他参数。