本文共 2461 字,大约阅读时间需要 8 分钟。
1. 把XFire依赖的jar包放入lib文件夹下。
2. 在web.xml中加入如下代码:
3. 编写程序代码
首先编写一个功能的接口类。
package com.yc.web.services; public interface HelloWorldService { public void sayHello(); public String sayHello(String name); public String genUUID(); }再编写一个功能的接口实现类。
package com.yc.web.services; import java.util.UUID; public class HelloWorldServiceImpl implements HelloWorldService { public void sayHello() { System.out.println("hello world"); } public String sayHello(String name) { return "hello "+name; } public String genUUID() { return UUID.randomUUID().toString(); } }
4在src下或者直接在webapp\WEB-INF下创建一个文件夹META-INF,在META-INF下边在创建一个目录xfire,在xfire目录里边创建一个services.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <beans> <service xmlns="http://xfire.codehaus.org/config/1.0"> <name>HelloXfire</name> <namespace>http://www.freshpower.com.cn</namespace> <serviceClass> cn.com.freshpower.services.HelloXfire </serviceClass> <implementationClass> cn.com.freshpower.services.HelloXfireImpl </implementationClass> </service> </beans> |
当服务端以jar包形式发布,我们就相当于有了客户端的接口类和其自定义对象类。(无接口实现类)。
为了节省时间,我们就直接在1Server下新建一个Client,相当于拥有服务端的客户端。
代码如下:
//这个项目区访问 web service服务器 //创建一个服务的元数据 Service serviceModel =new ObjectServiceFactory().create(HelloWorldService.class); XFire xfire=XFireFactory.newInstance().getXFire();//通过xfire工厂来创建一个xfire的对象 XFireProxyFactory factory=new XFireProxyFactory(xfire);//创建一个代理工厂 //定义要访问的服务的地址 String serviceUrl="http://localhost/testwebservice/services/helloworld"; HelloWorldService client=null; client=(HelloWorldService) factory.create(serviceModel, serviceUrl);//xfire 功能是访问 web service 服务器 得到wsdl文件 解析wsdl 知道这个服务方法 返回 //面向这个接口将实现类创建起来 client.sayHello(); String result= client.sayHello("汤高"); System.out.println(result); System.out.println(client.genUUID());
}
XFire 用wsimport 生成后客户端测试类代码
//创建Service类 HelloService server=new HelloService(); //获取XxxProType类对象 HelloServiceProType service =server.getHelloImplPort(); //调用接口中的方法 String result =service.sayHello(); System.out.println(result);
//本地的写法
//String wsdl = "HelloXfire.wsdl"; // 对应的WSDL文件
//Resource resource = new ClassPathResource(wsdl);
//Client client = new Client(resource.getInputStream(), null); //根据WSDL创建客户实例
//URL的写法
Client client = new Client(new URL("http://localhost:8080/1Server/service/HelloXfire?wsdl"));
// 调用特定的Web Service方法
Object[] results = client.invoke("sayHello", new Object[]{ "freshpower"});
System.out.println(results[0]);
}
}
转载地址:http://lfhai.baihongyu.com/