webservice之XFire的使用(java调用java)

摘要:
创建一个名为TestXFire的新web项目,并将xfire-all-1.2.6.jar和lib目录中的所有包导入到项目--实现类-->注意:包文件路径com.gdie.xfire.example。ITestService需要正确映射。打开ie并输入http://localhost:8080/TestXFire/services/(如果无法访问此地址,请写入完整地址http://localhost:8080/TestXFire/services/ITestService?

注意:xfire不支持java.util.List等集合,所以调用webservice传递的参数要为基本类型。

转自:http://zp9245.blog.163.com/blog/static/105941532011995490825/

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) {
return p1 + p2;
}}
3.创建META-INF文件夹
简便起见,将WebRoot下的META-INF文件夹复制到项目的src下,这样的话会在部署发布目录下web-inf下的classes下自动建立META-INF,而同时WebRoot下也有一个META-INF文件夹,这两个容易混淆,实际webservice下真正起作用的是web-inf下的classes下的web-inf下的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> 
     <servlet-mapping> 
         <servlet-name>XFireServlet</servlet-name> 
         <url-pattern>/servlet/XFireServlet/*</url-pattern> 
     </servlet-mapping> 
</web-app> 
至此,服务器端部署完毕。完整的项目文件结构如图:
Java WebService总结(使用xfire) - Summer - Flying fish.
 将项目加载进tomcat并启动tomcat,无异常。 

打开ie,输入 
http://localhost:8080/TestXFire/services/  (如果这个地址访问不了,那么就写全地址http://localhost:8080/TestXFire/services/ITestService?wsdl
出现 
 
Java WebService总结(使用xfire) - Summer - Flying fish.
 表明部署成功,点wsdl可以看见一堆xml代码。 
 
5.客户端测试
先将刚才建立的TestXFire整个项目打包成jar包(myeclipse的export),名为TestXFire.jar,再新建一个web项目TestXFireClient,导入xfire的包,和刚才的TestXFire工程的打包TestXFire.jar (这里也可以不用TextXFire.jar这个项目,只需要把接口类《ITestService.java》文件拷到客户端项目中)
 
在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://localhost:8080/TestXFile/services/ITestService?wsdl",null);
ITestService service = (ITestService) new XFireProxyFactory().create(
System.out.println("返回值是:"+service.add(5, 8));
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
运行,输出结果是: 
返回值是:13
则说明客户端成功。 

至此,webservice部署测试例子成功。

免责声明:文章转载自《webservice之XFire的使用(java调用java)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数据库表设计的三范式十大高明的Google搜索技巧下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HttpServletResponse、页面文件下载、验证码

summarize 在创建Servlet时,会覆盖service方法或doGet()/doPost(),它俩都是 HTTPServletresponse这些方法都有俩参数,一个是请求request,一个是响应response,HttpServletResponse是ServletResponset的子接口, 浏览器发出http请求,会直接传给Tomcat,...

JFinal拦截设置,不拦截老项目的servlet

方法一:规定Jfianl的处理范围(Jfinal刚加入项目选择) 在JFinal配置类同包下新建类SkipServletHandler ,target.startsWith("/blBmfyglYs") 中的路径可以根据具体要求修改,比如我们的项目中只用到了"/blBmfyglYs"和"/blBmfyglJs" 所以配置成target.startsWith...

springMVC ——Controller配置方式

一.手动配置方式(开发中主要用注解方式,可以直接看标题二:注解方式)1.web.xml中DispatcherServlet控制器的的配置 SpringMVC也是一种基于请求驱动的WEB框架,并且使用了前端控制器的设计模式。前端控制器就是DispatcherServlet控制器,只要满足web.xml文件中的【url-pattern】的规则,这个请求就会交给...

Jboss

是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用,而不用支付费用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。 产品特点 编辑 在J2EE应...

Spring整合Hessian访问远程服务

声明:该文章转载自Spring整合Hessian访问远程服务,本人搬过来只是为了记录下学习Hessian的过程,忘此博主理解,在此感谢,等本人有能力了再学一些原创的东东,本人实践了下,hessianServer项目不是web project,由于较菜,花了一个下午才把java project转换成为web project。 项目下载: hessianSer...

pageoffice

一、选择文件打开 1.postup.exe安装 2.导入jar包:pageoffice.jar 理论上不需要印章功能下面两个不需要导入,我只用到了第一个jar包,用于导出word文档在线编辑并保存. 3.再web.xml中添加下面代码: <!-- PageOffice Begin --> <servlet>...