几种常用的webService开发
发布时间:2020-12-16 23:53:00 所属栏目:安全 来源:网络整理
导读:? ???? 一、利用jdk web服务api实现,这里使用基于 ?SOAP message? 的 ?Web? 服务 ???? 1.首先建立一个 Web services EndPoint: package ?Hello;??? import ?javax.jws.WebService;??? ?javax.jws.WebMethod;??? ?javax.xml.ws.Endpoint;??? ?? @WebService
?
???? 一、利用jdk web服务api实现,这里使用基于 ?SOAP message?的?Web?服务 ???? 1.首先建立一个Web services EndPoint: ????3.使用java Hello.Hello运行,然后将浏览器指向http://localhost:8080/hello?wsdl就会出现下列显示 ? ?? 4.使用wsimport 生成客户端?? ???? ???? 使用如下:wsimport?-p?.?-keep?http://localhost:8080/hello?wsdl ??? 这时,会在当前目录中生成如下文件: ????????? ?????? 5.客户端程序: ??????
1
??
2 4 5 6 7 8 9 ???? 以上方法还稍显繁琐,还有更加简单的方法 二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的 ??? 利用xfire开发WebService,可以有三种方法: ????? 1一种是从javabean 中生成; ????? 2 一种是从wsdl文件中生成; ??????3 还有一种是自己建立webservice ??? 步骤如下: ????用myeclipse建立webservice工程,目录结构如下: ? ?????代码如下: ????? 1
????? 接着实现这个借口:
2 ?1
?8 ?910???修改service.xml?文件,加入以下代码: ? <
service
>
?把整个项目部署到tomcat服务器中?,打开浏览器,输入
http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl
,可以看到如下:?
?5 ?6 implementationClass ?7 ?8 ?9 style wrapped 10 use literal 11 scope application 12 ???? 客户端实现如下: ?com.myeclipse.wsExample.client; ?java.net.MalformedURLException; ?java.net.URL; ?org.codehaus.xfire.XFireFactory; ?org.codehaus.xfire.client.Client; ?org.codehaus.xfire.client.XFireProxyFactory; ?org.codehaus.xfire.service.Service; ?org.codehaus.xfire.service.binding.ObjectServiceFactory; ?com.myeclipse.wsExample.IHelloWorldService; 13 14 18 19 20 21try22 23 24 25 27 29 3132333435 ?????? 这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net?做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下: ???????? ?1
//远程调用.net开发的webserviceClient?c?Client(?URL(http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl)); ???前提条件:下载axis1.4包和tomcat服务器???,并将axis文件夹复制到tomcat服务器的webapp文件夹中 ?? 这里我就说一下最简单的方法: ???????? 首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入 http://localhost:8989/axis/HelloWorld.jws?wsdl ,就会得到一个wsdl文件,其客户端调用方法如下: ?? ?javax.xml.rpc.Service; ?javax.xml.rpc.ServiceException; ?javax.xml.rpc.ServiceFactory; ?java.rmi.RemoteException; ?javax.xml.namespace.QName; 30 四、使用axis2开发webservice(这里首先感谢李宁老师)???? ? 使用axis2 需要先下载? ?? axis2-1.4.1-bin.zip ?? axis2-1.4.1-war.zip ?? http://ws.apache.org/axis2/ ???? 同理,也需要将axis2复制到webapp目录中 在axis2中部署webservice有两种方法, ??? 第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名 ??? 第二种方式是利用xml发布webservice,这种方法比较灵活,不需要限制类的声明 ??? 下面分别说明使用方法: ??? 1.pojo方式: 在 Axis2 中不需要进行任何的配置,就可以直接将一个简单的 POJO 发布成 WebService 。其中 中所有的 public 方法将被发布成 方法。先实现一个pojo类: ? ?1
???由于这两个方法都是public类型,所以都会发布成webservice。
编译
HelloWorld
类后,将
HelloWorld.class
文件放到%tomcat%
webappsaxis2WEB-INFpojo
目录中(如果没有
pojo
目录,则建立该目录),然后打开浏览器进行测试:???? int?add(?a,0)">?b) 输入一下url:? http://localhost:8080/axis2/services/listServices ? 这是其中的两个webservice列表,接着,在客户端进行测试: 首先可以写一个封装类,减少编码,代码如下: ?? ?? ?MZ.GetWebService;
???? 2.使用service.xml发布webservice,
这种方式和直接放在pojo目录中的POJO类不同。要想将MyService类发布成Web Service,需要一个services.xml文件,这个文件需要放在META-INF目录中,该文件的内容如下:
?org.apache.axis2.AxisFault; ?org.apache.axis2.addressing.EndpointReference; ?org.apache.axis2.client.Options; ?org.apache.axis2.rpc.client.RPCServiceClient; ?String?QUrlhttp://ws.apache.org/axis2?QName?opAddEntry;? ?String?WSUrl; ?RPCServiceClient?setOption()??AxisFault ?QName?(QUrl,Option); 35 36 37 38 4950从WebService中返回一个对象的实例51??????Object?getObject(String?Option,Object?o)?52 53 575859/////////////////////////////////////////???????读者可以自己封装数据类型,如int,byte,float等数据类型60 MZ.GetWebService.GetWSByAxis2?ws = new ?MZ.GetWebService.GetWSByAxis2(); service?name
HelloWorld
其中<service>元素用于发布Web Service,一个<service>元素只能发布一个WebService类,name属性表示WebService名,如下面的URL可以获得这个WebService的WSDL内容: http://localhost:8080/axis2/services/myService?wsdl ? 除此之外,还有直接可以在其中制定webservice操作方法:可以这样些service.xml文件 operation?name messageReceiver? operation add messageReceiver (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |