基于JAX-RPC的快速Web服务开发方案(转)

前两天写了两篇Blog使用SOAP开发java web服务--Axis开发方案 ,深入探索SOAP1.1--使用SAAJ1.2.1 ,有些读者可能对Java的web服务开发抱怨了,怎的那么复杂呢?不如在net平台下敲几个键就行了,:),请先不用着急,前两天我的Blog只是为了让各位读者深入了解一下什么是SOAP,以及其在Java中的封装接口实现,今天我们来讨论一下,一种高层的web服务实现方案,那就是基于JAX- RPC的服务实现。 JAX-RPC 1.1规范没有定义用于实现基于JAX-RPC的服务的任何API。基于JAX-RPC的服务均可使用Java类或使用WSDL文档实现,这两种情况, JAX-RPC均不为其服务端实现访问和使用部署的服务指定任何要求。基于JAX-RPC的服务于开发RMI应用程序极为相似(JAX-RPC是使用基于 SOAP的RPC和WSDL机制调用异源环境中运行的web服务,集成了远程过程调用(RPC)的性能,通过提供Java与XML/WSDL之间所需的映射,封装了底层SOAP包装和消息交换的复杂操作)。 一、基于Java类开发JAX-RPC服务。 步骤与RMI开发基本类似: 1)定义远程接口(服务定义); 2)实现方案远程接口(服务实现方案); 3)配置服务; 4)生成部署文件; 我实现的例子: 1、定义远程接口(StudentInfoIF.java): /** *StudentInfoIF.java *Copyright 2005-2-10 *@author 阿飞 */ package edu.cun.jws.jaxrpc; import java.rmi.Remote; import java.rmi.RemoteException; /** *该接口主要用于jax-rpc服务定义(远程接口) */ public interface StudentInfoIF extends Remote{ /** *@param studentName 这是一个学生名字的字符串表达 *@return String 返回学生的信息 */ public String getStudentInfo(String studentName) throws RemoteException; } 2、实现远程接口(StudentInfoImpl.java): /** *StudentInfoImpl.java *Copyright 2005-2-10 *@author 阿飞 */ package edu.cun.jws.jaxrpc; import java.rmi.Remote; import java.rmi.RemoteException; /** *实现远程接口StudentInfoIF,服务实现方案 *@see StudentInfoIF */ public class StudentInfoImpl implements StudentInfoIF{ public String getStudentInfo(String studentName){ System.out.println("Your name:"+studentName); return new String(" Hello"); } } 对上面的源文件进行编译:java *.java -d . 最后在当前文件夹得到一个edu文件夹,里面就是我们的需要的服务的字节类。 3、准备部署 由于是使用JWSDP1.5的开发工具,读者请到SUN网站下载JWSDP开发工具http://java.sun.com/webservices/downloads/webservicespack.html: 我们使用的是jwsdp安装路径/jaxrpc/bin中的工具wsdeploy,该工具先通过调用wscompile -gen:server来完成编译(由于现在我们部署的对象是Tomcat,所以我们要调用wsdeploy,如果是标准的J2EE实现方案的容器的话,使用wscompile就行了,具体请看帮助文档): 因为使用的是wsdeploy,所以要先编写一个jaxrpc-ri.xml文件,针对我们这次的例子: <------------这个是你自己命名的空间 typeNamespaceBase="http://www.cun.edu.cn/jws/types" <------------也是自己定义的 urlPatternBase="/StudentInfo"> <-----------这个是我们提供的接口 implementation="edu.cun.jws.jaxrpc.StudentInfoImpl"/> <-----------实现接口的类 <-----------等于是web.xml文件中的url-pattern 如果需要事先对web.xml文件填充的话: 60 准备部署工作完毕。 4、部署(要熟悉j2ee部署规范,这里我的部署对象是Tomcat) 我们创建一个文件夹StudentInfo 以下是文件夹内容 /StudentInfo /WEB-INF /classes <-------把我们的服务程序拷到这里,这里是edu文件夹 /lib <-------必须的包, web.xml <-------上面我们编写的文件 jaxrpc-ri.xml <-------上一步编写的文件 注意这里必须的包包括JAX-RPC相关的包,还有SAAJ相关的包(JavaMail,JAF,JAXP),我这里用了以下几个包(由于是使用 jdk1.5,所以JAXP相关包不在内):activation.jar(JAF),jaxrpc-api.jar,jaxrpc-impl.jar, jaxrpc-spi.jar,mail.jar,saaj-api.jar,saaj-impl.jar; 好了之后,我们打包成一个war文件(由于wsdeploy需要的输入文件是一个war存档文件): 转换到到StudentInfo目录下,设置好运行wsdeploy的运行路径,运行: jar cvf StudentInfo.war * wsdeploy -o StudentInfoApp.war StudentInfo.war 最后我们得到一个StudentInfoApp.war文件,该文件就是我们需要的部署web服务的程序。我们把它拷到Tomcat的webapps目录下,就自动部署好了 5、测试 在浏览器中输入:http://localhost:8080/StudentInfoApp/Info 测试成功,web服务部署完毕,客户端的测试的话,自己编写,可以使用java,也可以使用net平台等作为客户端,请参考我的例子:使用SOAP开发java web服务--Axis开发方案 ,就是使用C#作为服务的调用客户端。 ps:基于JAX-RPC的web服务开发就是这么简单,很多内部转换的内容都已经自动完成了,我们可以把精力集中于商业逻辑上来,欢迎大家加入Java Web Service的开发行列来。 对这篇文章有什么问题的读者可以留言给我,或者发送问题到我的E-mail:gdanthrowwy@126.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值