1

我对 QName 背后的概念感到非常困惑。

让我们举个例子(我从http://www.mkyong.com/拿了这些例子):

        ServerInfoService sis = new ServerInfoService();
        ServerInfo si = sis.getServerInfoPort();
        System.out.println(si.getServerName());

并使用 QName :

        URL url = new URL("http://localhost:8888/ws/image?wsdl");
        QName qname = new QName("http://ws.mkyong.com/", "ImageServerImplService");
        Service service = Service.create(url, qname);
        ImageServer imageServer = service.getPort(ImageServer.class);

现在我的问题是:

1)是否有任何概念,我们必须根据这些概念来决定我们可以编写哪种类型的客户端

2) 使用 QName 的目的或其他好处是什么,因为我在这里看到的是,与简单客户端相比,它增加了复杂性。

4

1 回答 1

3

这是我所知道的:-

这取决于您希望如何使用您的客户端来调用 Web 服务。第一种方法

ServerInfoService sis = new ServerInfoService(); ServerInfo si = sis.getServerInfoPort();

是简单的代理生成方法;在哪里,您使用 wsimport 之类的工具为您的 SEI(服务端点接口)/web 服务接口生成代理/存根,并像任何其他 java 方法调用一样在其上调用方法。主要用于客户端,您只需要调用 Web 服务上的方法而无需深入了解细节。

QName或者更确切地说,该方法Service对客户端和 Web 服务的通信方式提供了更好的控制。JAXWS 2.0 引入了称为Provider接口的东西,它是 SEI 的替代方案,它基本上让客户端在 XML 消息级别进行通信,并向客户端提供 Web 服务的动态表示/视图。更多在这里。API的主要用途Service主要是创建Dispatch实例,这些实例基本上让客户端使用 JAXB 消息作为 XML 有效负载分派到特定端口(使用 QName api 限定的方法)。

api 的其他用途Service让客户端异步调用 web 服务上的方法;提供对处理程序的访问;等。使用ServiceandQName方法来帮助您进一步理解并与我所说的内容相关的一个很好的例子是这里的链接:- Dispatching Web Service Calls

话虽这么说,还有很多东西要了解和理解;但希望这能给你一个开始。

于 2014-09-11T10:27:18.967 回答