什么是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包)
需要导入下图的这些包。