与我们合作的一家公司通过电子邮件向我们提供了 wsdl 和 xsd 架构。我们所连接的 Web 服务是通过 IPsec 隧道访问的。已发布的 WSDL 中有本地引用(在其末尾),这意味着我们无法使用它。
第一个问题:这是常见的设置吗?我认为拥有 WSDL 的目的不仅是定义契约,而且还向消费者公开服务。
我可以使用 wsimport、wsconsume 等轻松地根据提供的 WSDL 生成客户端/服务器代码。我知道当我生成的客户端调用我生成的服务时,它会生成我需要的正确消息。
第二个问题:有没有一种简单的方法可以将其路由到不同的肥皂地址?
我只想能够做类似的事情:
SalesTaxService svc = new SalesTaxService();
SalesTax tax = svc.getSalesTaxPort()
tax.getRate("NY");
但不使用 WSDL 中定义的肥皂地址。我想避免为每个方法编写一堆调度客户端。
我错过了什么吗?
*回复斯卡夫曼:
这就是生成的内容。默认为 wsdlLocation 作为名称shrug
@WebServiceClient(name = "SomeService")
public class SomeService_Service extends Service {
public SomeService_Service(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
public SomeService_Service(URL wsdlLocation) {
super(wsdlLocation, new QName("urn:some_service", "SomeService"));
}
}