首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAX-WS: Soap-Client -为什么需要WSDL来插入存根?

JAX-WS: Soap-Client -为什么需要WSDL来插入存根?
EN

Stack Overflow用户
提问于 2018-08-08 20:07:19
回答 1查看 325关注 0票数 0

我通过使用wsimport从服务的WSDL创建客户机存根来生成SOAP客户机。

我是这样开始我的客户端口的。

代码语言:javascript
复制
URL urlwsdl = new URL ("http://myservice?wsdl");
MyService port = new MyService_Service (urlwsdl).getTimeSeriesServicePort ();
port.foo ();

一切都很好。

但是我对对象端口的构造函数很好奇。

为什么我需要给它WSDL呢?存根是在此基础上生成的。为什么有必要这么做?

我没有尝试将另一个WSDL放入用于生成它的构造函数中。

EN

回答 1

Stack Overflow用户

发布于 2018-08-09 05:54:52

没有必要在代码行下面编写代码。

URL urlwsdl = new URL ("http://myservice?wsdl");

你可以避免,它也应该工作的很好。

下面的代码行通常是必需的,比如已经从测试系统或开发系统(其中URL可能是http://myservice.test/yourservice?wsdl )接收到wsdl,但是稍后当您提升代码或发送给某个第三方时,这些第三方使用相同的服务,但是URL可能是不同的,比如http://myservice.test/yourservice?wsdl。这就是为什么这个条款被创建了wsimport。您可以从任何属性文件或数据库或yml或ObjectFactory等中插入URL。

您的服务代码必须如下所示,

代码语言:javascript
复制
    public interface AddressBookService extends ...Service {
      public String getAddressBookAddress();

      public AddressBook getAddressBook() throws ...ServiceException;

      public AddressBook getAddressBook(URL portAddress)
          throws javax.xml.rpc.ServiceException;
    }

而且,无需显式指定端口,您也可以使用应该也能工作的备用代码。

代码语言:javascript
复制
MyService service = new MyService();

// Now use the service to get a stub which implements the SDI.
port.foo();

理想情况下,您不应该将URL作为URL urlwsdl = new URL ("http://myservice?wsdl");传递,它应该类似于URL urlwsdl = new URL ("http://myservice");

希望它能回答你的问题,如果不让我知道,我可以再试着回答。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51754819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档