XFire跟Axis一样都是webService引擎,下面是一个简单的XFire例子,用于入门
首先下载XFire的jar文件,导入lib下所有jar包及xfire-all那个jar包,
创建一个接口:
package cn.com.leadfar.test;
public interface MyWebService {
public String test();
}
创建实现类:
package cn.com.leadfar.test.impl;
import cn.com.leadfar.test.MyWebService;
public class MyWebServiceImpl implements MyWebService {
@Override
public String test() {
return "测试";
}
}
然后再src目录下创建META-INF目录,在META-INF目录下创建xfire,在xfire下创建service.xml
内容如下:
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>MyWebService</name>
<namespace>test</namespace>
<serviceClass>cn.com.leadfar.test.MyWebService</serviceClass>
<implementationClass>cn.com.leadfar.test.impl.MyWebServiceImpl</implementationClass>
</service>
</beans>
配置web.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>XFireServlet</servlet-name>
<display-name>XFire Servlet</display-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
编写客户端访问方式1(动态代理):
import java.net.MalformedURLException;
import java.net.URL;
import org.codehaus.xfire.client.Client;
public class ClientTest {
//xfire客户端访问方式,动态代理
public static void main(String[] args) throws MalformedURLException, Exception {
String url = "http://localhost:8080/MyXfireWebService/services/MyWebService?wsdl";
Client client = new Client(new URL(url));
Object[]obj = client.invoke("test",new Object[]{});
System.out.println(obj[0]);
}
}
编写客户端访问方式2(静态代理,通过代理工厂访问):
import java.net.MalformedURLException;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.ServiceFactory;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import cn.com.leadfar.test.MyWebService;
public class Client1Test {
//xfire通过代理工厂访问,静态代理
public static void main(String[] args) throws MalformedURLException, Exception {
String url = "http://localhost:8080/MyXfireWebService/services/MyWebService";
//创建对象服务工厂
ServiceFactory factory = new ObjectServiceFactory();
//通过对象服务工厂创建服务
Service serviceModel = factory.create(MyWebService.class);
//创建代理工厂
XFireProxyFactory proxyFactory = new XFireProxyFactory();
MyWebService myWebService = (MyWebService)proxyFactory.create(serviceModel, url);
System.out.println(myWebService.test());
}
}
第三种访问方式(通过生产客户端存根):
命令:-wsdl指定wsdl文件位置 –o目录 –p包 -overwrite true表示如果已经有了覆盖掉以前生产的文件
-wsdl http://localhost:8080/MyXfireWebService/services/MyWebService?wsdl
-o src -p com.webservice -overwrite true
会生成如下java文件:MyWebServiceClient.java, MyWebServiceImpl.java, MyWebServicePortType.Java
编写客户端测试:
import java.net.MalformedURLException;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.ServiceFactory;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import com.webservice.MyWebServiceClient;
import com.webservice.MyWebServicePortType;
import cn.com.leadfar.test.MyWebService;
public class Client2Test {
//通过生产的客户端存根方式访问
public static void main(String[] args) throws MalformedURLException, Exception {
MyWebServicePortType portType = new MyWebServiceClient().getMyWebServiceHttpPort();
System.out.println(portType.test());
}
}