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); } }
版权声明:本文为u012706238原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。