通过Xfire开发web service接口和客户端调用web service接口接口方法

通过Xfire开发web service接口

WebService接口的实现方式有很多种,常用的有

 --AXIS框架的使用

--JAX-WS框架的使用

  --XFire框架的使用

今天先学习以xfire实现web service接口服务端和客户端的创建

使用到的工具及框架,后面是我使用的版本

开发工具:Eclipse,   Eclipse 3.7

框架:xfire框架       xfire-1.2.6

服务器:Tomcat,     Tomcat 7.0

客户端:浏览器,      谷歌浏览器

 

准备好开发工具及框架资源

这里提供:xfire-1.2.6框架和下面的HelloWorld示例下载地址:http://pan.baidu.com/s/1mgKHVnU

第一步:打开Eclipse,新建一个DynamicWeb project项目

第二步,导入xfire框架的jar包,打开xfire框架文件,将xfire目录下的xfire-all-1.2.6.jar和lib文件夹里面的全部jar包复制到新建项目的WebContent\WEB-INF\lib下

通过Xfire开发web service接口和客户端调用web service接口接口方法_第1张图片

jar包参考:

xfire-all-1.2.6.jar

activation-1.1.jar

bcprov-jdk15-133.jar

commons-attributes-api-2.1.jar

commons-beanutils-1.7.0.jar

commons-codec-1.3.jar

commons-discovery-0.2.jar

commons-httpclient-3.0.jar

commons-logging-1.0.4.jar

jaxb-api-2.0.jar

jaxb-impl-2.0.1.jar

jaxb-xjc-2.0.1.jar

jaxen-1.1-beta-9.jar

jaxws-api-2.0.jar

jdom-1.0.jar

jetty-6.1.2rc0.jar

jetty-util-6.1.2rc0.jar

jmock-1.0.1.jar

jsr173_api-1.0.jar

junit-3.8.1.jar

mail-1.4.jar

opensaml-1.0.1.jar

saaj-api-1.3.jar

第三步:在web.xml文件中添加xfire框架配置信息,

参考代码:

<servlet>  
        <servlet-name>XFireServlet</servlet-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>


通过Xfire开发web service接口和客户端调用web service接口接口方法_第2张图片

实际上是一个配置一个servlet作为xfire接口的拦截器,

第四步:在src中创建一个包,在包中创建一个interface和一个实现该接口的class

参考代码:

HelloWorld接口

package com.test.webservice;
public interface HelloWorld {
	public String test(String str);
}
接口实现类HelloWorldImp
<pre name="code" class="java">package com.test.webservice;
public class HelloWorldImp implements HelloWorld {
	public String test(String str){
		System.out.println("hello");
		return "Hello " + str;
	}
}
<img src="http://img.blog.csdn.net/20150310181146517?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2IyNDc0NjAwMzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="图3" />

第五步,配置接口信息,在src下创建META-INF>xfire->services.xml,必须严格安该路径来,不然会报错,找不到services.xml文件,serviceClass和implementationClass的类不要放反了,放反web service接口会成功发布,但是客户端访问接口就会出错

参考代码:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">  
    <service>  
        <name>TestWebService</name>  
        <namespace>  
            http://com.test.webservice  
        </namespace>  
        <serviceClass>  
            com.test.webservice.HelloWorld  
        </serviceClass>  
        <implementationClass>  
            com.test.webservice.HelloWorldImp
        </implementationClass>  
    </service>  
</beans>
 
 
<p align="left">第六步,将项目部署到tomcat中运行,在浏览器中访问,访问地址为,Ip:Tomcat端口号/web项目地址/services/  </p><p align="left">例如:http://localhost:8080/HelloWorld/services/</p><img src="http://img.blog.csdn.net/20150310181257888?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2IyNDc0NjAwMzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="图5" />
<p align="left">然后点击wsdl,得到接口的wsdl文档</p><img src="http://img.blog.csdn.net/20150310181407027?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2IyNDc0NjAwMzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="图6" />
至此,web service接口服务端发布完成
 
 
<p align="left">二,客户端访问接口:(之前创建好的webservice接口不能关)</p><p align="left">客户端调用的方式有很多,这里只介绍一种简单的调用方式</p><p align="left">1. 新建一个DynamicWeb project项目,然后导入xfire框架的jar包,打开xfire框架文件,将xfire目录下的xfire-all-1.2.6.jar和lib文件夹里面的全部jar包复制到新建项目的WebContent\WEB-INF\lib下,<span style="font-family: Arial, Helvetica, sans-serif;">再src下创建一个包,再在包下创建一个类调用接口</span></p><pre name="code" class="java">package com.tets.webservice.client;
import java.net.URL;
import org.codehaus.xfire.client.Client;
public class HelloWorldClient {
	public static void main(String[] args) {
		try {
			Client client = new Client(new URL("http://192.168.1.134:8080/HelloWorld/services/TestWebService?wsdl"));
			Object[] res = client.invoke("test", new Object[]{"admin"});
//invoke方法有两个参数,一个是接口的方法名,一个是接口方法的参数列表
			String re = (String) res[0];
			System.out.println(re);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
运行mian方法
 
 
<img src="http://img.blog.csdn.net/20150310181900915?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2IyNDc0NjAwMzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="图7" />








你可能感兴趣的:(java,Web,Web,service,helloworld,xfire)