收藏 分销(赏)

用JAX-RPC构建Web服务.docx

上传人:xrp****65 文档编号:8949795 上传时间:2025-03-09 格式:DOCX 页数:5 大小:24.69KB 下载积分:10 金币
下载 相关 举报
用JAX-RPC构建Web服务.docx_第1页
第1页 / 共5页
用JAX-RPC构建Web服务.docx_第2页
第2页 / 共5页


点击查看更多>>
资源描述
JAX-RPC表示基于XML远程调用的Java API。它是用于构建Web服务以及使用远程调用(RPC)和XML客户端的API。通常用在分布式客户端/服务器模式中,RPC机制使得客户端可以执行其他系统中的过程。 在JAX-RPC中,远程过程调用由SOAP这种基于XML的协议来表示。SOAP规范定义了封装结构,编码规则,以及远程过程调用和响应间的约定。这些调用和响应在http上作为SOAP消息进行传递。在这个版本中,JAX-RPC支持SOAP1.1和http1.1。 尽管JAX-RPC建立在复杂的协议之上,但API为应用程序开发者隐藏了这一复杂性。在服务器端,开发人员通过定义Java编程语言中接口的方法来指定远程过程。开发者还将编写一个或多个实现这些方法的类。客户端程序也是容易编写的。一个客户生成一个代理,表示服务的本地对象,然后简单的调用代理上的方法。 使用JAX-RPC,客户端和web服务都有巨大的优势——Java编程语言的平台无关性。另外,JAX-RPC是不受限制的:一个JAX-RPC客户可以访问没有运行在Java平台的web服务,反之亦然。JAX-RPC很灵活,因为它使用了全球网联合会(W3C)规定的技术:HTTP,SOPA以及Web服务描述语言(WSDL)。WSDL为以消息中操作的endpoint集的形势描述服务指定了一种XML格式。 如果你是基于XML的RPC(JAX-RPC)的Java API方面的新手,本章就是一个起点,简明扼要地描述了JAX-RPC后,本章将介绍如何构建一个简单的Web服务及其客户。对于高级用户,本章继续通过代码列表示例,一步一步的介绍动态客户的生成。 简单示例:HelloWorld 本例介绍了如何使用JAX-RPC来生成一个名为HelloWorld的Web服务。HelloWorld服务的远程客户可以调用sayHello方法,该方法接受一个字符串参数,然后返回一个字符串。 运行期间的HelloWorld 图11-1显示了HelloWorld服务部署后的简化状况。下面给出运行期间发生情况的详细描述: 1. 为了调用远程过程,HelloClient程序调用占位程序中的方法,表示远程服务的本地对象。 2. 占位程序调用JAX-RPC运行系统中的例程。 3. 运行系统将远程方法调用转换成SOAP消息,然后以一个HTTP请求的形式传输消息。 4. 当服务器接收到HTTP请求时,JAX-RPC运行系统从请求中提取SOAP消息,然后传送到方法调用。 5. JAX-RPC运行系统调用约束对象中的方法。 6. 约束对象调用HelloWorld服务实现中的方法。 7. 服务器端运行系统将方法响应转换成SOAP消息,然后以HTTP响应的形式传输消息回客户端。 8. 客户端,JAX-RPC运行系统从HTTP响应中提取SOAP消息,然后传输到HelloClient程序的方法响应。 图11-1 运行期间的HelloWorld示例 应用程序开发者只提供由图11-1描述的堆栈顶层,表11-1显示了各层的来源。 表11-1谁(什么)提供该层 层 源 HelloClient程序 HelloWorld服务(定义了接口以及实现的类) 由应用程序开发者提供 占位程序 由wscomplie工具生成,由应用程序开发者运行 约束 由wsdeploy工具生成,由应用程序开发者运行 JAX-RPC运行系统 包含在Java WSDP中 HelloWorld文件 § 为了使用JAX-RPC生成服务,应用程序开发人员必须提供一些文件。对于HelloWorld的例子,这些文件在<JWSDP_HOME>/docs/tutorial/examples/jaxrpc/hello目录中:HelloIF.java-服务定义接口 § HelloImpl.java-服务定义实现类,它实现了HelloIF接口 § HelloClient.java-远程客户,与服务联系,然后调用sayHello方法 § config.xml-由wscompile工具读取的配置文件 § jaxrpc-ri.xml-由wsdeploy工具读取的配置文件 § web.xml- web组件(servlet)的部署描述信息,由它分派服务 安装 首先必须设置环境变量PATH,包含这些目录: <JWSDP_HOME>/bin <JWSDP_HOME>/jwsdp-shared/bin <JWSDP_HOME>/jaxrpc-1.0.3/bin <JWSDP_HOME>/jakarta-ant-1.5.1/bin 接着,如果还没有这样做,按照“开始Tomcat”一章中介绍的: 生成编译属性文件 启动Tomcat 编译部署服务 开发一个JAX-RPC Web服务的基本步骤如下: 1、 编码服务定义接口和实现类 2、 编译第一步中的服务定义代码 3、 将代码打包成一个WAR文件 4、 生成约束和WSDL文件 5、 部署服务。 接下来的章节将更详细地描述每个步骤。 编码服务定义接口和实现类 服务定义接口声明了服务中远程客户可以调用的方法。接口必须遵循几个规则: 它继承了java.rmi.Remote接口 它必须没有像public final static这样的连续声明 方法必须抛出java.rmi.RemoteException或它的一个子类。(方法也可以抛出服务指定的异常。) 方法的参数和返回类型必须是支持的JAX-RPC类型。参见“JAX-RPC支持的类型”部分。 在该例中,服务定义接口是HelloIF.java: package hello; import java.rmi.Remote; import java.rmi.RemoteException; public interface HelloIF extends Remote{ public String sayHello(String s) throws RemoteException; } 除接口外,还需要编写实现该接口的类。在这个例子中,实现类称为HelloImpl: package hello; public class HelloImpl implemnets HelloIF{ public String message=”Hello”; public String sayHello(String s){ return message+s; } } 编译服务定义代码 要编译HelloIF.java和HelloImpl.java,进入目录<JWSD_HOME>/docs/tutorial/examples/jaxrpc/hello,然后键入如下命令: ant compile-server 该命令将产生的class文件放置在build/shared子目录中。 打包WAR文件 要生成包含服务代码的WAR文件,输入这些命令: ant setup-we-inf ant package setup-wen-inf命令的目的是将class和XML文件复制到build/WEB-INF子目录中。而package的目的是运行jar命令,将文件包在名为dist/hello-portable.war的WAR文件中。这个WAR文件还不能部署,因为它不包含约束类。下一部分将会学习如何生成可部署的WAR文件。Hello-portable.war包含如下文件: WEB-INF/classes/hello/HelloIF.class WEB-INF/classes/hello/HelloImpl.class WEB-INF/jaxrpc-ri.xml WEB-INF/web.xml 其中class文件是由前面部分显示的compile-server目标生成的。web.xml文件是实现服务的Web应用程序的部署描述信息。和web.xml文件不同,jaxrpc-ri.xml文件不是规范的一部分,它是实现特有的。这个例子的jaxrpc-ri.xml文件的内容如下: <?xml version="1.0" encoding="UTF-8"?> <webServices xmlns=" version="1.0" targetNamespaceBase="http://com.test/wsdl" typeNamespaceBase="http://com.test/types" urlPatternBase="/ws"> <endpoint name="MyHello" displayName="HelloWorld Service" description="A simple web service" interface="hello.HelloIF" implementation="hello.HelloImpl"/> <endpointMapping endpointName="MyHello" urlPattern="/hello"/> </webServices> 在WSDL文件中使用了一些webServices属性,例如targetNamespaceBase,这些将在下一节中生成。(WSDL文件可以很复杂,在指南中不作讨论。参见“更多信息”。)注意,urlPattern的值(/hello)是服务的URL的一部分,这将在“验证部署”部分描述。 关于jaxrpc-ri.xml文件的更多信息,请参见“jaxrpc-ri.xml文件”部分。如果你是高级用户,可能希望检验XML模式文件:<JWSDP_HOME>/docs/tutorial/examples/jaxrpc/common/jax-rpc-ri-dd.xsd。 生成约束和WSDL文件 要生成约束和WSDL文件,输入下列命令: ant process-war 该命令按下列方式运行wsdeploy工具: wsdeploy –tmpdir build/wsdeploy-generated -o dist/hello-deployable.war dist/hello-portable.war 该命令运行wsdeploy工具,它执行这些任务: 读取dist/hello-portable.war文件作为输入 从hello-portable.war文件中包含的jaxrpc-ri.xml文件里获得信息 为服务生成约束类 生成名为MyHello.wsdl的WSDL文件 将约束类、Hello.wsdl文件,以及hello-portable.war文件的内容打包形成一个名为dist/hello-jaxrpc.war的可部署的WAR文件。 -tmpdir选项指定wsdeploy将生成的文件存储在哪个目录,生成的文件包括WSDL文件、约束类以及中间源代码文件。如果指定了-keep选项,这些文件不会被删除。 有几种方式可以访问由wsdeploy生成的WSDL文件: 运行带有-keep选项的wsdeploy,然后在由-tmpdir选项指定的目录中查找WSDL文件 拆开WAR文件(jar –x),由wsdeploy输出,然后到WEB-INF目录中查找WSDL文件 按下面部分描述的来部署和验证服务。“验证部署”中显示的URL对应的HTML页面中有一个到WSDL文件的链接。 注意wsdeploy工具并不部署服务;而是生成一个可以被部署的WAR文件。在下一部分,将会部署wsdeploy生成的hello-jaxrpc.war文件所包含的服务。关于wsdeploy的更多信息,参见“wsdeploy工具”部分。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服