扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
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文件,针对我们这次的例子:
<?xml version="1.0" encoding="UTF-8"?>
<webServices
xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd"
version="1.0"
targetNamespaceBase="http://www.cun.edu.cn/jws/wsdl" <------------这个是你自己命名的空间
typeNamespaceBase="http://www.cun.edu.cn/jws/types" <------------也是自己定义的
urlPatternBase="/StudentInfo">
<endpoint
name="StudentInfo"
interface="edu.cun.jws.jaxrpc.StudentInfoIF" <-----------这个是我们提供的接口
implementation="edu.cun.jws.jaxrpc.StudentInfoImpl"/> <-----------实现接口的类
<endpointMapping
endpointName="StudentInfo"
urlPattern="/Info"/> <-----------等于是web.xml文件中的url-pattern
</webServices>
如果需要事先对web.xml文件填充的话:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
准备部署工作完毕。
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平台等作为客户端,,就是使用C#作为服务的调用客户端。
ps:基于JAX-RPC的web服务开发就是这么简单,很多内部转换的内容都已经自动完成了,我们可以把精力集中于商业逻辑上来,欢迎大家加入Java Web Service的开发行列来。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者