您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > java调用webservice的各种方法总结
java调用webservice的各种方法总结现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!!由于毕业设计缘故,我看了很多关于webservice方面的知识,今天和大家一起来研究研究webservice的各种使用方法。一、利用jdkweb服务api实现,这里使用基于SOAPmessage的Web服务1.首先建立一个WebservicesEndPoint:packageHello;importjavax.jws.WebService;importjavax.jws.WebMethod;importjavax.xml.ws.Endpoint;@WebServicepublicclassHello{@WebMethodpublicStringhello(Stringname){returnHello,+name+\n;}publicstaticvoidmain(String[]args){//createandpublishanendpointHellohello=newHello();Endpointendpoint=Endpoint.publish();}}2.使用apt编译Hello.java(例:apt-d[存放编译后的文件目录]Hello.java),会生成jaws目录3.使用javaHello.Hello运行,然后将浏览器指向就会出现下列显示4.使用wsimport生成客户端使用如下:wsimport-p.-keep这时,会在当前目录中生成如下文件:5.客户端程序:1classHelloClient{2publicstaticvoidmain(Stringargs[]){3HelloServiceservice=newHelloService();4HellohelloProxy=service.getHelloPort();5Stringhello=helloProxy.hello(你好);6System.out.println(hello);7}8}9以上方法还稍显繁琐,还有更加简单的方法二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的利用xfire开发WebService,可以有三种方法:1一种是从javabean中生成;2一种是从wsdl文件中生成;3还有一种是自己建立webservice步骤如下:用myeclipse建立webservice工程,目录结构如下:首先建立webservice接口,代码如下:1packagecom.myeclipse.wsExample;2//GeneratedbyMyEclipse34publicinterfaceIHelloWorldService{56publicStringexample(Stringmessage);78}接着实现这个借口:1packagecom.myeclipse.wsExample;2//GeneratedbyMyEclipse34publicclassHelloWorldServiceImplimplementsIHelloWorldService{56publicStringexample(Stringmessage){7returnmessage;8}910}修改service.xml文件,加入以下代码:1service2nameHelloWorldService/name3serviceClass4com.myeclipse.wsExample.IHelloWorldService5/serviceClass6implementationClass7com.myeclipse.wsExample.HelloWorldServiceImpl8/implementationClass9stylewrapped/style10useliteral/use11scopeapplication/scope12/service把整个项目部署到tomcat服务器中,打开浏览器,输入可以看到如下:然后再展开HelloWorldService后面的wsdl可以看到:客户端实现如下:1packagecom.myeclipse.wsExample.client;23importjava.net.MalformedURLException;4importjava.net.URL;56importorg.codehaus.xfire.XFireFactory;7importorg.codehaus.xfire.client.Client;8importorg.codehaus.xfire.client.XFireProxyFactory;9importorg.codehaus.xfire.service.Service;10importorg.codehaus.xfire.service.binding.ObjectServiceFactory;1112importcom.myeclipse.wsExample.IHelloWorldService;1314publicclassHelloWorldClient{15publicstaticvoidmain(String[]args)throwsMalformedURLException,Exception{16//TODOAuto-generatedmethodstub17Services=newObjectServiceFactory().create(IHelloWorldService.class);18XFireProxyFactoryxf=newXFireProxyFactory(XFireFactory.newInstance().getXFire());19Stringurl={2324IHelloWorldServicehs=(IHelloWorldService)xf.create(s,url);25Stringst=hs.example(zhangjin);26System.out.print(st);27}28catch(Exceptione)29{30e.printStackTrace();31}32}3334}35这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下:1publicstaticvoidmain(String[]args)throwsMalformedURLException,Exception{2//TODOAuto-generatedmethodstub3Services=newObjectServiceFactory().create(IHelloWorldService.class);4XFireProxyFactoryxf=newXFireProxyFactory(XFireFactory.newInstance().getXFire());567//远程调用.net开发的webservice8Clientc=newClient(newURL());9Object[]o=c.invoke(qqCheckOnline,newString[]{531086641,591284436});1011//调用.net本机开发的webservice12Clientc1=newClient(newURL());13Object[]o1=c1.invoke(HelloWorld,newString[]{});1415}三、使用axis1.4调用webservice方法前提条件:下载axis1.4包和tomcat服务器,并将axis文件夹复制到tomcat服务器的webapp文件夹中这里我就说一下最简单的方法:首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入,就会得到一个wsdl文件,其客户端调用方法如下:1importjavax.xml.rpc.Service;2importjavax.xml.rpc.ServiceException;3importjavax.xml.rpc.ServiceFactory;45importjava.net.MalformedURLException;6importjava.net.URL;7importjava.rmi.RemoteException;89importjavax.xml.namespace.QName;1011publicclassTestHelloWorld{121314publicstaticvoidmain(String[]args)throwsMalformedURLException,ServiceException,RemoteException{15//TODOAuto-generatedmethodstub1617StringwsdlUrl===HelloWorldService;20StringportName=HelloWorld;2122ServiceFactoryserviceFactory=ServiceFactory.newInstance();23ServiceafService=serviceFactory.createService(newURL(wsdlUrl),newQName(nameSpaceUri,serviceName));24HelloWorldInterfaceproxy=(HelloWorldInterface)afService.getPort(newQName(nameSpaceUri,portName),HelloWorldInterface.class);25System.out.println(returnvalueis+proxy.getName(john));2627}2829}30四、使用axis2开发webservice(这里首先感谢李宁老师)使用axis2需要先下载axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip同理,也需要将axis2复制到webapp目录中在axis2中部署webservice有两种方法,第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名第二种方式是利用xml发布webservice,这种方法比较灵活,不需要限制类的声明下面分别说明使用方法:1.pojo方式
本文标题:java调用webservice的各种方法总结
链接地址:https://www.777doc.com/doc-5352400 .html