我使用具有命名空间“http://a.mydomain”的WSDL的JAXWS-RI wsimport.bat生成了一个JAX-WS客户端(代理API)。 我想对具有命名空间“http://b.mydomain”的服务重用相同的生成代理,但是targetnamespace“http://a.mydomain”在生成的类中被编码。
使用JAXWS-RI或任何其他JAXWS实现,是否有人知道这个问题的任何好方法?我想阻止使用新的WSDL /名称空间重新生成代理类。
感谢您的回答。
答案 0 :(得分:1)
步骤包括:
使用Service.create方法创建Service实例 您需要知道服务的wsdl位置,服务名称和名称空间URL 例如 URL wsdlLocation =新网址(“http://example.org/my.wsdl”); QName serviceName = new QName(“http://example.org/sample”,“MyService”); 服务s = Service.create(wsdlLocation,serviceName);
使用Service.getPort()方法获取服务代理(用于连接的服务端口)。 为此,您需要了解端点实现类名称 例如MyService port = s.getPort(MyService.class);
您现在可以通过代理调用方法。 根据您的要求更改名称空间URL。
答案 1 :(得分:0)
Jax-ws RI确实创建了这样的构造函数:
public SomeWebServiceEndpoint(URL wsdlLocation, QName serviceName)
在QName元素中,您可以在运行时指定命名空间(或使用不同的WSDL位置,例如PROD或TEST)。
因此,您可以将Web服务子类化为新类,或者使用其他包装器来调用它们。