1. 下载xfire-all.jar和其依赖包,放到classpath下。
2. 新建一个工程HelloWebService,并创建一个webservice包,在webservice下再新建一个service包。
3.在service包中创建一个Interface ,名称是IHelloService,其内容如下:
package webservice.service;
public interface IHelloService{
public void callTaskToReload(String server);
public String sayHello(String name);
}
并创建其实现类,HelloServiceImpl,内容如下:
package webservice.service.impl;
import webservice.service.IHelloService;
public class HelloServiceImpl implements IHelloService{
public void callTaskToReload(String name) {
System.out.println("test:"+name);
}
public String sayHello(String name) {
name = "zheng";
return "Hello,"+name;
}
}
4. 在src下建立一个文件夹,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>HelloService</name>
<serviceClass>webservice.service.IHelloService</serviceClass>
<implementationClass>webservice.service.impl.HelloServiceImpl</implementationClass>
<properties>
<property key="mtom-enabled">true</property>
</properties>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
</beans>
5.在web.xml中配置上xfire ,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<!-- 配置webservice -->
<servlet>
<servlet-name>xfireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>xfireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
6.在service下再新建个IHelloService.aegis.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<method name="callTaskToReload">
<parameter index="0" componentType="java.lang.String"/>
</method>
<method name="sayHello">
<parameter index="0" componentType="java.lang.String"/>
</method>
</mapping>
</mappings>
7.
访问 http://localhost:8080/HelloWebService/services/HelloService?wsdl
好了页面出现了,至此,你的第一个WebService发布成功了。
8.编写客户端程序
在webservice包下,再新建个Client包,并创建HelloServiceClient.java,内容如下:
package webservice.Client;
import java.beans.Statement;
import java.net.MalformedURLException;
import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import webservice.service.IHelloService;
public class HelloServiceClient {
private static final String webServiceName = "/services/HelloService";
/**
* 请求重新加载任务 webservice
* @param server
*/
public static void callTaskToReload(String server){
//创建服务的元数据
Service service=new ObjectServiceFactory().create(IHelloService.class);
try {
//创建服务代理
XFire xfire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xfire);
//服务代理通过服务元数据和服务地址 取得服务实例
String url="http://localhost:8888/HelloService/services/HelloService";
IHelloService usersService=(IHelloService) factory.create(service, url);
// usersService.callTaskToReload(server);
System.out.println(usersService.sayHello(""));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
// //创建服务的元数据
// Service service=new ObjectServiceFactory().create(IHelloService.class);
// try {
// //创建服务代理
// XFire xfire = XFireFactory.newInstance().getXFire();
// XFireProxyFactory factory = new XFireProxyFactory(xfire);
// //服务代理通过服务元数据和服务地址 取得服务实例
// String url="http://localhost:8080/HelloService/services/HelloService";
// IHelloService usersService=(IHelloService) factory.create(service, url);
// usersService.callTaskToReload(server);
// System.out.println(usersService.sayHello(url));
//
// } catch (MalformedURLException e) {
// e.printStackTrace();
// }
String server ="http://localhost:8888/HelloService";
HelloServiceClient.callTaskToReload(server);
}
}