java – 使用已知但无法访问的wsdl创建Web服务客户端

我们通过电子邮件与我们合作的公司提供了wsdl和xsd架构.我们正在连接的Web服务是通过IPsec隧道访问的.在已发布的WSDL中有本地引用(在它们的末尾),这意味着我们不能使用它.

第一个问题:这是一个常见的设置吗?我认为拥有WSDL不仅要定义合同,还要将服务公开给消费者.

我可以使用wsimport,wsconsume等轻松生成提供的WSDL的客户端/服务器代码.我知道当我生成的客户端调用我生成的服务时,它会生成我需要的正确消息.

第二个问题:有没有简单的方法将其路由到不同的肥皂地址?

我只是希望能够做到这样的事情:

SalesTaxService svc = new SalesTaxService();
SalesTax tax = svc.getSalesTaxPort()
tax.getRate("NY");

但是不要使用WSDL中定义的soap地址.我想避免为每种方法编写一堆调度客户端.

我错过了什么吗?

*回应skaffman:
这是生成的.它违反了wsdlLocation的名字耸耸肩

   @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"));   
    }
  }

解决方法:

I thought the point of having a WSDL
was not only to define the contract
but to also expose the service to
consumers.

不,WSDL纯粹是一种描述性工具,它没有真正的运行时角色. Web服务完全独立于WSDL运行. WSDL没有暴露的情况并不少见.

Is there an easy way to route this to
a different soap address?

这完全取决于您正在使用的Web服务实现,并且您没有说,尽管我猜测JAX-WS.如果是这种情况,我认为JAX-WS工具生成的工件允许您将URL传递给客户端存根构造函数.

上一篇:java – 在JBoss 7中设置正确的信任库


下一篇:java-部署jsp / servlet Web应用程序“ com.sun.faces.config.ConfigureListener”时,Jboss错误