文档详情

用java调用webservices的三种方式.doc

发布:2016-05-10约8.05千字共8页下载文档
文本预览下载声明
JSR101和JSR109 用java实现web services必须遵循两个规范,他们分别是: JSR 101: 用于基于 XML 的 RPCRemote Procedure Call) 的 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。 JAX-RPC 1.1 和 JSR 109 是 J2EE 1.4 的组成部分。 Java客户端有两种获取方式,一种是基于容器管理的,一种不是基于容器管理的。 基于容器管理的,可以是不同类型的 J2EE 容器管理的客户机: 应用程序客户机容器客户机 Web 容器客户机:JavaBean 或 Servlet EJB 容器客户机:EJB 实例化本地 JNDI 上下文。 在此上下文中对 Web 服务进行 JNDI 查找。 Context ic = new InitialContext(); Service service = (Service) ctx.lookup(java:comp/env/service/HelloService); 然后可以使用获得的服务接口(Service Interface)来获取静态存根、动态代理或 DII Call 对象服务查找是通过 JAX-RPC ServiceFactory 进行的,JAX-RPC ServiceFactory 是创建服务访问点的工厂可以如下进行使用: javax.xml.rpc.Service service = ServiceFactory.newInstance().createService(...); 我在下面描述的客户端获取方式都是基于不是容器管理的。 java调用webservices 用java作为客户端调用webservices主要有三种方式,下面描述三种调用方式。 1.DLL(Dynamic?Invocation?Interface)调用 复杂度最高,灵活性最强的调用方式 通过自己创建Call对象完成调用,此方法的步骤如下: 获取一个 JAX-RPC Service 。 使用 JAX-RPC Service 的 createCall() 方法实例化 JAX-RPC Call 。 使用它的 setter 方法来配置您的 Call 实例。 使用 JAX-RPC Call 的调用方法来调用 Web 服务的操作。 String namespace = http://H; String portName = Hello; QName portQN = new QName(namespace, portName); String operationName = getGreeting; Call call = service.createCall(); call.setPortTypeName(portQN); call.setOperationName(n
显示全部
相似文档