用java语言和xfire工具写一个简单的webservice并运用

        什么是web service呢?在网页中我们看到的天气预报和各种购物网站的支付连接都是一种webservice.Web Service是为了实现“基于Web无缝集成”的全新概念,实现不同系统间的相互调用(语言无关、平台无关).

        Web Service是一个应用程序,是能够用编程的方法通过Web调用来实现某个功能的应用程序
       Web Service支持Web协议,如:HTTP,TCP/IP,SMTP等.

       Web Service数据的格式一般是xml

        下面开始介绍下一个简单的webservice的发布和客户端调用的过程。

        服务端:

                    首先将xfire的jar包和附件中的lib下面的jar包导入到一个新建的web项目中。

                   

                 包结构和上图类似,Test包是测试类,不是服务端的一部分。首先要在源码下创建一个META-INF的文件包,再创一个xfire文件夹,下面创建一个services.xml。(xfire通过这个文件进行找到实现类)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
  	<service>
  			<name>HelloService</name>
  			<namespace>com.test</namespace>
  			<!-- 接口 -->
  			<serviceClass>com.lmj.service.HelloService</serviceClass>
  			<!-- 接口的实现类 -->
  			<implementationClass>
  			com.lmj.service.HelloServiceImpl
  			</implementationClass>
  	</service>

</beans>

从上图可知可知需要创建一个接口和它的实现类。

接口:

package com.lmj.service;

public interface HelloService {
	public String sayHello(String name);
}

实现类:

package com.lmj.service;
/**
 * Service实现类
 * @author Administrator
 *
 */
public class HelloServiceImpl implements HelloService {

	public String sayHello(String name) {
		return "Hello"+name;
	}

}
当然web目录下的web.xml文件也要进行配置,即配置xfire中的servlet;

<?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>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 配置的servlet -->
   <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>/services/*</url-pattern>
 </servlet-mapping>
 
 
</web-app>
一个简单的服务端已经建立完成了,用服务器进行部署,然后发布在浏览器中输入:

http://localhost:8888/HelloWebService/services/HelloService?wsdl

浏览器会出现一个文档树:


好了,服务端就算配置成功了!

下面是客户端,客户端我们就在源项目里创建一个junit测试;


package com.lmj.client.Test;

import static org.junit.Assert.*;

import java.net.MalformedURLException;

import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.junit.Test;

import com.lmj.service.HelloService;

public class WebServiceTest {

	@Test
	public void test() {
		try {
			Service s=new ObjectServiceFactory().create(HelloService.class,"TestService"," http://com/lmj/service/HelloService",null);
		
				HelloService service=(HelloService)new XFireProxyFactory().create(s,"http://localhost:8888/HelloWebService/services/HelloService");
				System.out.print("输出的:"+service.sayHello("lmj"));
			} catch (MalformedURLException e) {
				e.printStackTrace();
			}
	}
}

输出了hellolmj

这样就成功了,一个简单的webservice就实现了,这只是提供的一个测试客户端的方法,还有用Cilent的方法测试,这里是用的在里面的测试类,所以直接创建就好了。(下面是xfire的jar包)

需要导入下图的这些包。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值