Xfire相对Axis2 个人感觉相对简单一点,因为myEclipse上可以自动生成。而且在目前来讲,Xfire也是更受欢迎一点。
首先说明Xfire所用jar包:http://download.csdn.net/detail/u014104269/9028679
下面是步骤:
步骤一:打开myEclipse ,New-》web Service project
写上name ,选择Xfire ,就直接Finish 就好了。
然后在项目上,NEw-》other-》web Service
Finish
此时打开services.xml 发现其中多了些东西:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0"> <service>
<name>MyService</name>
<serviceClass>com.demo.service.IMyService</serviceClass>
<implementationClass>
com.demo.service.MyServiceImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service></beans>
多了两个文件 一个是接口文件:
package com.demo.service;
//Generated by MyEclipse public interface IMyService { public String example(String message); }
另一个是对该接口的实现:
package com.demo.service;
//Generated by MyEclipse public class MyServiceImpl implements IMyService { public String example(String message) {
return message;
} }
此时:
使用client代码就可以调用了:
package com.demo.client; import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory; import com.demo.service.IMyService; public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String serviceUrl = "http://localhost:8081/Demo/services/MyService";
Service serviceModel = new ObjectServiceFactory().create(IMyService.class, null, "http://localhost:8081/Demo/services/MyService?wsdl", null);
XFireProxyFactory serviceFactory = new XFireProxyFactory();
try{
IMyService service = (IMyService)serviceFactory.create(serviceModel,serviceUrl);
String hello = service.example("cys");
System.out.println(hello);
}catch(Exception e){
e.printStackTrace();
}
}
}
另一种方法是 使用JDK中lib文件夹下的一个叫做 wsimport.exe的文件
把在该文件夹下生成的文件全部导入到项目中 就可以了:
客户端代码是:
package com.demo.client; public class T { /**
* @param args
*/
public static void main(String[] args) {
MyService service =new MyService();
MyServicePortType spt = service.getMyServiceHttpPort();
System.out.println(spt.example("haahahha"));
} }
不过在使用第二种方法时候,需要删除jar包中的xfire-all ,否则会报错。