基于xfire实现webservice的实例
首先下载xfire的jar包,并导入项目当中
下载地址:http://xfire.codehaus.org/Download
获得
package com.test.service; public class HelloXfireImpl implements HelloXfire { public String wanghao(String str) { return str + " this is xfire,my name is wanghao"; } }
package com.test.service; public interface HelloXfire { public String wanghao(String str); }
2. 映射web.xml
通过配置web.xml来映射相应的路径,在web.xml添加如下代码
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <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>
3.services配置文件
创建services文件
在src目录下创建META-INF目录,在该目录下创建一个xfire目录在该目录
下创建services.xml
通过配置此文件来公开我们的接口,客户端可以通过此文件的映射可以找到相应的需要公开的接口
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HelloXfire</name>
<serviceClass>com.test.service.HelloXfire</serviceClass>
<implementationClass>
com.test.service.HelloXfireImpl
</implementationClass>
<style mce_bogus="1">wrapped</style>
<use>literal</use>
<scope>application</scope>
</service></beans>
获取wsdl文件的地址
什么是wsdl?
参考: http://blog.csdn.net/sunchaohuang/archive/2008/10/14/3076375.aspx
通过web.xml与services.xml对地址的映射我们可以获得如下地址并进行访问后就可
以得到wsdl文件的url了
访问的地址:
http://localhost:8080/HelloXfire/services/HelloXfire?wsdl
访问后会得到一个类似xml格式的内容 该文件就是一个wsdl文件
4.编写客户端
客户端获得webservice的url地址后创建对外开放的接口的实体类,然后向相应的方法传递参数,经过服务端相应的处理返回需要的结果
不同项目的webservice调用
一般情况下webservice的调用都是在不同的项目间或者不同的语言中来使用的
如果是不同的语言调用webservice应用:
客户端如果是其他语言,则通过得到服务端生成的wsdl或者或者wsdl文件的
地址做相应的操作得到本语言具体的客户端实现类来调用服务端对外开放的
方法
如果是不同项目间的调用(java语言为例)
java远程调用。
新建web工程WebServiceTest
由于在MyEclipse中只有新建webservice才会自动导入xfire的所需jar包。
所以使用时自己手动导入,把jar包考入lib文件夹下。
由于XFire的机制,先要建立跟要调用接口同样的接口名,并包含所需方法,才可以调用相应的方法。
客户调用端接口
public interface HelloXfire { public String wanghao(String str); }
创建调用业务实现类:(也可以是servlet或者jsp)
package com.test; import java.net.MalformedURLException; 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 com.test.service.HelloXfire; public class Test { public static void main(String args[]) throws MalformedURLException { Service service = new ObjectServiceFactory().create(HelloXfire.class); XFireProxyFactory factory = new XFireProxyFactory(XFireFactory .newInstance().getXFire()); String url = "http://localhost:8080/webservice/services/HelloXfire"; HelloXfire helloService = (HelloXfire) factory.create(service,url); helloService.wanghao("成功了吗"); System.out.println(helloService.wanghao("成功了吗")); } }
运行结果:成功了吗 this is wanghao+++++++++++++++++++++++++++++++++++++==
参考博客地址1:http://blog.csdn.net/dcju002/article/details/3530936
参考博客地址2: http://blog.csdn.net/java_cxrs/article/details/6448492