一个简单的webservice demo(适合入门)
2012-02-02 13:07
453 查看
【文档说明】
【项目创建】
包名 做了一些修改。
这里只贴出比较关键的文件
【src/META-INF/xfire/services.xml】
【web.xml】
【客户端项目文件】
1.下载需要的xfire包 下载地址:http://xfire.codehaus.org/Download,下载xfire-distribution-1.2.6.zip文件,并解压。 新建web项目,取名TestXFire,将解压目录下的xfire-all-1.2.6.jar和lib目录下的所有包导入到项目中。 2.创建类 使用接口的设计是一个好的实践,所以先创建接口:ITestService,代码如下: package com.gdie.xfire.example; //该接口提供一个方法,用于计算 public interface ITestService { public int add(int p1, int p2); } 创建接口实现类 package com.gdie.xfire.example; public class TestService implements ITestService { public int add(int p1, int p2) { // TODO Auto-generated method stub return p1 + p2; } } 3.创建META-INF文件夹 简便起见,将WebRoot下的META-INF文件夹复制到项目的src下,这样的话会在部署发布目录下web-inf下的classes下自动建立META-INF,而同时WebRoot下也有一个META-INF文件夹,这两个容易混淆,实际webservice下真正起作用的是web-inf下的classes下的META-INF,所以,关键是在项目的src下面有META-INF这个文件夹,并定义里面的内容,与WebRoot下META-INF无关。 然后在src下的META-INF建立xfire子文件夹,里面建立一名叫services.xml配置文件,配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>TestService</name> <namespace>http://com/gdie/xfire/example/ITestService</namespace> <serviceClass>com.gdie.xfire.example.ITestService</serviceClass> <implementationClass>com.gdie.xfire.example.TestService</implementationClass> </service> </beans> 注意:包文件路径com.gdie.xfire.example.ITestService等需要正确对应。 关键是在src下面要有META-INF文件夹和里面的文件,否则会报找不到services.xml错误而加载不了项目。 4.修改web.xml 配置文件关键是定义XFireServlet,对应代码如下: <?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"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <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> </web-app> 至此,服务器端部署完毕。完整的项目文件结构如图: 将项目加载进tomcat并启动tomcat,无异常。 打开ie,输入 http://localhost:8080/TestXFire/services/ 出现 表明部署成功,点wsdl可以看见一堆xml代码。 5.客户端测试 先将刚才建立的TestXFire整个项目打包成jar包(myeclipse的export),名为TestXFire.jar,再新建一个web项目TestXFireClient,导入xfire的包,和刚才的TestXFire工程的打包TestXFire.jar 在src下新建一个测试类,代码如下: package com.gdie.xfire.test; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import org.codehaus.xfire.client.XFireProxyFactory; import com.gdie.xfire.example.ITestService;; public class MyClient { public static void main(String[] args) { try{ Service serviceModel = new ObjectServiceFactory().create( ITestService.class,"TestService","http://com/gdie/xfire/example/ITestService",null); ITestService service = (ITestService) new XFireProxyFactory().create( serviceModel,"http://localhost:8080/TestXFile/services/TestService"); System.out.println("返回值是:"+service.add(5, 8)); }catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } 运行,输出结果是: 返回值是:13 则说明客户端成功。 至此,webservice部署测试例子成功。
【项目创建】
包名 做了一些修改。
这里只贴出比较关键的文件
【src/META-INF/xfire/services.xml】
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>TestService</name> <namespace>http://com/feihuale/xfire/demo/ITestService</namespace> <serviceClass>com.feihuale.xfire.demo.ITestService</serviceClass> <implementationClass>com.feihuale.xfire.demo.TestService</implementationClass> </service> </beans>
【web.xml】
<?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"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <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> </web-app>
【客户端项目文件】
package com.feihuale.xfire.test; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import com.feihuale.xfire.demo.ITestService; public class MyClient { /** * @param args */ public static void main(String[] args) { try { Service serviceModel = new ObjectServiceFactory().create( ITestService.class, "TestService", "http://com/feihuale/xfire/demo/ITestService", null); ITestService service = (ITestService) new XFireProxyFactory() .create(serviceModel, "http://localhost:8080/TestXFire/services/TestService"); System.out.println("返回值是:" + service.add(5, 8)); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
相关文章推荐
- .Net Core使用Redis的一个入门简单Demo
- 无废话WCF入门教程六[一个简单的Demo]
- WCF 一步一步从入门到精通(一)建立一个简单入门的例子(适合一点不会的朋友阅读)
- 一个简单的webservice的demo(下)winform异步调用webservice
- .Net Core使用Redis的一个入门简单Demo
- Dubbo入门---搭建一个最简单的Demo框架
- Dubbo入门---搭建一个最简单的Demo框架
- WCF 一步一步从入门到精通 建立一个简单入门的例子(适合一点不会的朋友阅读)
- Dubbo入门---搭建一个最简单的Demo框架
- Dubbo入门---搭建一个最简单的Demo框架
- 使用 CXF 写 一个简单的webservice demo
- Dubbo入门---搭建一个最简单的Demo框架
- 无废话WCF入门教程六[一个简单的Demo]
- Dubbo入门---搭建一个最简单的Demo框架
- Dubbo入门---搭建一个最简单的Demo框架
- 无废话WCF入门教程六[一个简单的Demo]
- Dubbo入门-分布式原理详解--搭建一个最简单的Demo框架
- 无废话WCF入门教程六[一个简单的Demo]
- ofbiz 一个简单的入门demo
- 一个简单的入门的android游戏demo