java调用webService的各种方法

java 调用webservice的各种方法总结 现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!! 由于毕业设计缘故,我看了很多关于webservice方面的知识,今天和大家一起来研究研究webservice的各种使用方法。 一、利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务 1.首先建立一个Web services EndPoint: package Hello; import javax.jws.WebService; import javax.jws.WebMethod; import javax.xml.ws.Endpoint; @WebService public class Hello { @WebMethod public String hello(String name) { return “Hello, ” + name + “/n”; } public static void main(String[] args) { // create and publish an endpoint Hello hello = new Hello(); Endpoint endpoint = Endpoint.publish(“:8080/hello”, hello); } } 2.使用 apt 编译 Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,会生成 jaws目录 3.使用java Hello.Hello运行,然后将浏览器指向:8080/hello?wsdl就会出现下列显示 4.使用wsimport 生成客户端 使用如下:wsimport -p . -keep :8080/hello?wsdl

这时,会在当前目录中生成如下文件: 5.客户端程序: 1class HelloClient{ 2public static void main(String args[]) { 3 HelloService service = new HelloService(); 4 Hello helloProxy = service.getHelloPort(); 5 String hello = helloProxy.hello(“你好”); 6 System.out.println(hello); 7 } 8}9 以上方法还稍显繁琐,还有更加简单的方法二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的 利用xfire开发WebService,可以有三种方法: 1一种是从javabean 中生成; 2 一种是从wsdl文件中生成; 3 还有一种是自己建立webservice 步骤如下: 用myeclipse建立webservice工程,目录结构如下: 首先建立webservice接口, 代码如下:

1package com.myeclipse.wsExample;2//Generated by MyEclipse34public interface IHelloWorldService {5 6 public String example(String message);7 8} 接着实现这个借口: 1package com.myeclipse.wsExample;2//Generated by MyEclipse34public class HelloWorldServiceImpl implements IHelloWorldService {5 6 public String example(String message) {7 return message;8 }9 10} 修改service.xml 文件,加入以下代码: 1<service>2 <name>HelloWorldService</name>3 <serviceClass>4 com.myeclipse.wsExample.IHelloWorldService5 </serviceClass>6 <implementationClass>7 com.myeclipse.wsExample.HelloWorldServiceImpl8 </implementationClass>9 <style>wrapped</style>10 <use>literal</use>11 <scope>application</scope>12 </service> 把整个项目部署到tomcat服务器中 ,打开浏览器,输入:8989/HelloWorld/services/HelloWorldService?wsdl,可以看到如下: 然后再展开HelloWorldService后面的wsdl可以看到:客户端实现如下: 1package com.myeclipse.wsExample.client;23import java.net.MalformedURLException;4import java.net.URL;56import org.codehaus.xfire.XFireFactory;7import org.codehaus.xfire.client.Client;8import org.codehaus.xfire.client.XFireProxyFactory;9import org.codehaus.xfire.service.Service;10import org.codehaus.xfire.service.binding.ObjectServiceFactory;1112import com.myeclipse.wsExample.IHelloWorldService;1314public class HelloWorldClient {15public static void main(String[] args) throws MalformedURLException, Exception {16// TODO Auto-generated method stub17Service s=new ObjectServiceFactory().create(IHelloWorldService.class);18XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());19String url=”:8989/HelloWorld/services/HelloWorldService”;2021 try22 { 23 24 IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);25 String st=hs.example(“zhangjin”);26 System.out.print(st);27 }28 catch(Exception e)29 {30 e.printStackTrace();31 }32 }3334}35 这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net 做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下: 1public static void main(String[] args) throws MalformedURLException, Exception {2 // TODO Auto-generated method stub3 Service s=new ObjectServiceFactory().create(IHelloWorldService.class);4 XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());5 6 7//远程调用.net开发的webservice8Client c=new Client(new URL(“?wsdl”));9 Object[] o=c.invoke(“qqCheckOnline”, new String[]{“531086641″,”591284436”});10 11//调用.net本机开发的webservice12Client c1=new Client(new URL(“?wsdl”));13Object[] o1=c1.invoke(“HelloWorld”,new String[]{});14 15} 三、使用axis1.4调用webservice方法 前提条件:下载axis1.4包和tomcat服务器 ,并将axis文件夹复制到tomcat服务器的webapp文件夹中 这里我就说一下最简单的方法: 首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入:8989/axis/HelloWorld.jws?wsdl,就会得到一个wsdl文件,其客户端调用方法如下: 1import javax.xml.rpc.Service;2import javax.xml.rpc.ServiceException;3import javax.xml.rpc.ServiceFactory;45import java.net.MalformedURLException;6import java.net.URL;7import java.rmi.RemoteException;89import javax.xml.namespace.QName;1011public class TestHelloWorld {121314 public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException {15 // TODO Auto-generated method stub16 17 String wsdlUrl =”:8989/axis/HelloWorld.jws?wsdl”;18 String nameSpaceUri =”:8989/axis/HelloWorld.jws”;19 String serviceName = “HelloWorldService”;20 String portName = “HelloWorld”;21 22 ServiceFactory serviceFactory = ServiceFactory.newInstance();23 Service afService =serviceFactory.createService(new URL(wsdlUrl),new QName(nameSpaceUri, serviceName));24 HelloWorldInterface proxy = (HelloWorldInterface)afService.getPort(new QName(nameSpaceUri, portName),HelloWorldInterface.class);25 System.out.println(“return value is “+proxy.getName(“john”) ) ;26 27 }2829}30四、使用axis2开发webservice(这里首先感谢李宁老师) 使用axis2 需要先下载 axis2-1.4.1-bin.zip

axis2-1.4.1-war.zip

而其实你还爱着他,你一点也不好。

java调用webService的各种方法

相关文章:

你感兴趣的文章:

标签云: