java - 使用 QName 的目的

标签 java web-services jax-ws qnames

我对 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 的目的或额外好处是什么,因为我在这里所能看到的是,与简单客户端相比,它增加了复杂性。

最佳答案

这是我所知道的:-

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

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

是简单的代理生成方法;其中,您使用像 wsimport 这样的工具来生成 SEI(服务端点接口(interface))/Web 服务接口(interface)的代理/ stub ,并像任何其他 java 方法调用一样调用其上的方法。主要用于您只需要调用 Web 服务上的方法而无需了解具体细节的客户端。

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

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

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

关于java - 使用 QName 的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25757161/

相关文章:

web-services - 如何在 SOAP UI 中修改 onRequestscript() 上的 xml

java - 如何在 OSGi 容器中使用 JAX-WS 通过 HTTPS 发布 Web 服务?

java - 从 JAVA 7 迁移到 8 时,JAX WS 的 DII(例如 Dispatch)是否会受到影响

.net - 重新排序 wsdl :definitions in an ASP. NET Web 服务

java - 在java 7中将重音和字符组合成一个字符

java - 在哪里定义 JRE_HOME vaiable 系统变量或用户变量?

web-services - 将 Web 服务公开为无状态 session bean 的任何线程安全优势?

java - 如何正确关闭 Tomcat 上的 JAX-WS Spring 应用程序?

Java Spring jdbcTemplate queryForList 慢

java - 如何根据请求在 java bean 中动态更改 "constant"值( hibernate )?