用Java客户机调用Web服务: J2SE和J2EE环境中Web服务客户机简介

Web 服务的力量在于互操作性。由于业界在 Web 服务技术方面(SOAP、WSDL、UDDI)的协作,更具体地说,是由于 Web 服务互操作性组织(Web Services Interoperability organization,WS-I.org)的工作,Web 服务才可以与其他的 Web 服务进行交互,而不管 Web 服务开发和运行在哪一个平台上(比如是 Microsoft .NET 还是 IBM WebSphere)。Web 服务客户机分为多种类型,比如另一个 Web 服务、用脚本语言编写的客户机、C# 客户机、Java 客户机等等。本文重点讲解 Java 客户机,它可以用于访问任何遵循 Web 服务规范的 Web 服务(不仅仅是 Java Web 服务)。通过阅读本文,您将了解到需要用来通过不同的查找和访问方法调用相同的 Web 服务的 Web 服务客户机代码。本文所用的示例是“Hello” Web 服务,它提供了“getGreeting”操作。这种操作接受一个字符串参数(例如Jane),然后返回一句问候语“Hello Jane!”。

Web 服务角色

这一部分将描述调用 Web 服务的过程。Web 服务提供者用 Web 服务描述语言(Web Services Description Language,WSDL)文档来描述 Web 服务。Web 服务一般发布到统一描述、发现和集成(Universal Description, Discovery and Integration,UDDI)注册中心。Web 服务请求者在 UDDI 注册中心查找 Web 服务,绑定到 Web 服务,然后调用它。Web 服务角色显示在 图1中。本文将重点讲解从服务请求者到服务提供者的水平箭头(绑定)。本文将把请求者称为 客户机,它也可以称为 消费者。

用于

Java 技术标准的开发随着 Java 规范提案(Java Specification Request,JSR)提交给Java Community Process(JCP)而出现。两个 JSR 涵盖了 Java Web 服务体系结构:

JSR 101: 用于基于 XML 的 RPC 的 Java API(Java API for XML based RPC,JAX-RPC)

JSR 109: 实现企业 Web 服务(Implementing Enterprise Web services)

两个规范提供了厂商的实现的一致性和互操作性需求。

JAX-RPC —— Java 到 XML 和 XML 到 Java 映射 API

JAX-RPC 为基于 XML 的远程过程调用(Remote Procedure Call,RPC)和 Java 应用程序编程接口(Java Application Programming Interface,API):

WSDL 到 Java 和 Java 到 WSDL 映射:例如,将 WSDL 端口类型映射到 Java 服务端点接口(Java Service Endpoint Interface,SEI)。

XML 数据类型到 Java 数据类型和 Java 数据类型到 XML 数据类型映射,包括简单类型、复杂类型和数组。

除了 XML 映射之外,JAX-RPC 还定义了服务器端编程模型和 API,我将在后面的部分中更详细地介绍它。AX-RPC 1.1 根据 Web 服务互操作性组织(Web Services Interoperability organization,WS-I)基本概要版本 1.0(Basic Profile version 1.0)添加了互操作性需求。

JSR 109 —— J2EE 环境的 API

JSR 109 指定了 Java 2 Enterprise Edition(J2EE)环境的 Web 服务编程模型和体系结构。JSR 109 构建在 SOAP 1.1 和 WSDL 1.1 的基础上,它涵盖了 J2EE 环境中 JAX-RPC 的使用( 图 2)。它还定义了 J2EE 应用程序服务器中的部署模型。JSR 109 的客户端编程模型(我将在下面的几个部分中介绍)符合 JAX-RPC。

时间: 2016-02-03

用Java客户机调用Web服务: J2SE和J2EE环境中Web服务客户机简介的相关文章

ASP.NET Web API Selfhost宿主环境中管道、路由

前言 前面的几个篇幅对Web API中的路由和管道进行了简单的介绍并没有详细的去说明一些什么,然而ASP.NET Web API这个框架由于宿主环境的不同在不同的宿主环境中管道中的实现机制和路由的处理方式有着很大的不同,所以我会将对应不同的宿主环境来分别的做出简单的讲解.  ASP.NET Web API路由.管道     ASP.NET Web API 开篇介绍示例     ASP.NET Web API 路由对象介绍     ASP.NET Web API 管道模型     ASP.NET

http协议-(实习生,求大神赐教)java httpget来调用自己发布的web service

问题描述 (实习生,求大神赐教)java httpget来调用自己发布的web service public class HelloService { public String sayHello(String username) { return "Hello: " + username; } } 以上是发布的方法,发布后显示的路径是:http://localhost:8080/eclipse4WS/services/HelloService 我的方法名为sayHello() 发布结

请问web开发中,js调用DLL动态库,同一台pc机调用了不同的动态库,有的动态库调不到,怎么办?

问题描述 请问web开发中,js调用DLL动态库,同一台pc机调用了不同的动态库,有的动态库调不到,怎么办? 两个动态库,一个医保刷卡的,一个刷POS的,单独使用POS机,能正常使用,但是如果之前使用过医保刷卡机,就不能进入POS的动态库了,感觉像是冲突了一样,哪个大神能帮忙解决一下. 解决方案 两个动态库,一个医保刷卡的,一个刷POS的,单独使用POS机,能正常使用,但是如果之前使用过医保刷卡机,就不能进入POS的动态库了,感觉像是冲突了一样,哪个大神能帮忙解决一下.

怎样在J2EE组件中引用和查找Web服务

j2ee|web|web服务 本文将讨论怎么在J2EE组件中引用Web服务.并且通过JNDI来查找Web服务.在内容组织上,首先把一个EJB2.1无状态会话Bean发布成Web服务,然后开发基于JSP的Web服务客户端,最后着重介绍怎么在JSP的部署时引用Web服务,并且讨论怎么通过JNDI来查找和调用Web服务.阅读本文前您需要以下的知识和工具:J2EE1.4 SDK,并且会初步使用:掌握基本的JAX-RPC Web服务开发技能:了解JNDI的基本知识,能够使用它进行简单编程:一般的Java编

Java微服务开发指南 -- 使用Dropwizard构建微服务

使用Dropwizard构建微服务     Dropwizard的历史要早于Spring Boot和WildFly Swarm,它最早是在2011.12发布的v0.1.0版本,在本文编写的过程中,它已经发布了v0.9.2版本,而v1.0.0版本也在准备中了.Dropwizard是Coda Hale在Yammer公司时创立的,它旨在提升公司分布式系统的架构(现在叫:微服务).虽然它最早被用来构建REST Web 服务,而现在它具备了越来越多的功能,但是它的目标始终是作为轻量化.为生产环境准备且容易

java关于PrintWriter调用write方法之后使用flush方法获取不到内容原因探究求解惑!

问题描述 java关于PrintWriter调用write方法之后使用flush方法获取不到内容原因探究求解惑! PrintWriter ps= new PrintWriter(socket.getOutputStream()); ps.write( "hello" ); ps.flush(); 服务端获取不到hello信息,看了下PrintWriter源码,flush()中调用的是BufferedWriter中的flush(),如果这样的话,应该能刷新缓冲得到结果.但是没有...网上

java使用jdbc调用存储过程,没有返回结果集。。

问题描述 java使用jdbc调用存储过程,没有返回结果集.. 整个过程是这样的:之前的程序已经上线运行了.后来客户数据库升级,从sqlServer2005升级到sqlServer2008.当然系统也做了相应改动.我们是第三方软件,调用他们的数据库中的存储过程来查询数据.他们升级完系统和数据库之后,我们就查询数据报错.然后最先报的错是驱动版本问题.我就到网上下了sqljdbc4.jar.替换了之后不再报驱动的问题.但是一直无结果集.于是我直接把调用存储过程的sql语句放到数据库中执行.是能查到结

Java通过JNI调用C语言的方法

JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能. 解决JAVA对本地操作的一种方法就是JNI. JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式).通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法. 简单介绍及应用如下: 一.JAVA中所需要做的工作 在JAVA程序中,首先需要在类中声明所调

接口-jradius和java项目如何调用

问题描述 jradius和java项目如何调用 请问javaweb项目怎么调用jradius?是不是通过jradius的接口就可以呢?