`

使用xfire+spring编写webservice例子

    博客分类:
  • java
阅读更多

利用xfire编写webservice的例子,内容如下

1. xfire + spring 发布webservice
2. 利用 javascript  调用发布的webservice

使用xfire+spring发布webservice其实很简单,遵循一下几个步骤即可

1. 想要发布成文webservice的类,必须实现接口
2. 3个配置文件(后面详细说)

下面针对以上步骤详细说明
关于1中的要求,给个例子就明白了

Itest.java 代码
 
  1. package test;  
  2.   
  3. import org.json.JSONException;  
  4.   
  5. public interface IHello  
  6. {  
  7.     public String hello();  
  8.     public String helloTo(String name);  
  9.     public String getJsonData(String pageIndex,String pageSize);  
  10. }  


    

HelloImpl.java 代码
 
  1. package test;  
  2.   
  3. import java.util.*;  
  4.   
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.http.HttpSession;  
  7.   
  8. import org.codehaus.xfire.transport.http.XFireServletController;  
  9. import org.json.JSONException;  
  10. import org.json.JSONStringer;  
  11.   
  12. public class HelloImpl implements IHello  
  13. {  
  14.   
  15.     public String hello()  
  16.     {  
  17.     return "hello";  
  18.     }  
  19.   
  20.     public String helloTo(String name)  
  21.     {  
  22.     return " hello " + name + "!";  
  23.     }  
  24.   
  25.     private void example()  
  26.     {  
  27.     //使用session  
  28.      HttpServletRequest request = XFireServletController.getRequest();  
  29.      HttpSession session = request.getSession();  
  30.     }  
  31.   
  32.     public String getJsonData(String pageIndex,String pageSize)   
  33.     {  
  34.     String rtnValue = "";  
  35.       
  36.     rtnValue = "";  
  37.     for(int i=0;i<Integer.parseInt(pageSize);i++)  
  38.     {  
  39.         rtnValue = rtnValue + "{'lastname': 'last" + pageIndex + "-" + i + "', 'firstname': 'first" + pageIndex + "-" + i + "' },";  
  40.     }  
  41.     rtnValue = rtnValue + "{'lastname': 'last', 'firstname': 'last' }";  
  42.       
  43.     rtnValue = "{'context':["  + rtnValue + "],'pager':[{'totalRecord':'100','totalpage':'10','pageIndex':'" + pageIndex + "','pageSize':'10'}]}";  
  44.       
  45.     return rtnValue;  
  46.     }  
  47. }  


就这样写就可以了

关于三个配置文件

web.xml修改如下

xml 代码
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  3.   <!-- 配置文件路径 开始 -->  
  4.     <context-param>  
  5.         <param-name>log4jConfigLocation</param-name>  
  6.         <param-value>/WEB-INF/classes/log4j.properties</param-value>  
  7.     </context-param>  
  8.     <context-param>  
  9.         <param-name>contextConfigLocation</param-name>  
  10.         <param-value>  
  11.             /WEB-INF/classes/applicationContext*.xml  
  12.             classpath:org/codehaus/xfire/spring/xfire.xml  
  13.         </param-value>  
  14.     </context-param>  
  15.       
  16.     <!-- 启动时加载SpringContextServlet -->  
  17.     <listener>  
  18.         <listener-class>  
  19.             org.springframework.web.context.ContextLoaderListener  
  20.         </listener-class>  
  21.     </listener>  
  22.     <listener>   
  23.         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>   
  24.     </listener>   
  25.   
  26.     <listener>  
  27.         <listener-class>  
  28.             org.springframework.web.util.IntrospectorCleanupListener  
  29.         </listener-class>  
  30.     </listener>  
  31.       
  32.       <!-- XFire 配置 -->  
  33.       <servlet>   
  34.         <servlet-name>xfire</servlet-name>   
  35.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>   
  36.       </servlet>   
  37.         
  38.       <servlet-mapping>  
  39.         <servlet-name>xfire</servlet-name>  
  40.         <url-pattern>*.ws</url-pattern>  
  41.       </servlet-mapping>  
  42.         
  43.       <welcome-file-list>  
  44.         <welcome-file>index.html</welcome-file>  
  45.       </welcome-file-list>  
  46. </web-app>  


这里注意   classpath:org/codehaus/xfire/spring/xfire.xml  必须要写进去

xfire-servlet.xml 新建这个文件,并且和web.xml放在同一个文件夹
注意: 名称和位置都不能变(也许可以改,我不知道)

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3. <beans>   
  4.     <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">   
  5.         <property name="urlMap">  
  6.             <map>  
  7.                 <entry key="/testService.ws">  
  8.                     <ref bean="test"/>    
  9.                 </entry>   
  10.             </map>   
  11.         </property>  
  12.       </bean>   
  13.         
  14.       <bean id="test" parent="webService" class="org.codehaus.xfire.spring.remoting.XFireExporter">   
  15.         <property name="serviceBean">   
  16.             <ref bean="testBean"/>   
  17.         </property>   
  18.         <property name="serviceClass">   
  19.             <value>test.IHello</value>   
  20.         </property>   
  21.       </bean>   
  22.           
  23.       <!-- webService base -->  
  24.       <bean id="webService" class="org.codehaus.xfire.spring.remoting.XFireExporter" abstract="true">  
  25.         <property name="serviceFactory">  
  26.             <ref bean="xfire.serviceFactory" />  
  27.         </property>  
  28.         <property name="xfire">  
  29.             <ref bean="xfire" />  
  30.         </property>  
  31.      </bean>  
  32. </beans>  

spring 的配置文件 applicationContext-webService.xml
xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">    
  3. <beans>  
  4.     <bean id="testBean" class="test.HelloImpl"></bean>  
  5. </beans>  

查看wsdl    http://localhost:8080/mootools/testService.ws?wsdl

运行 进入 index.html 页面,点击 即可执行调用,正常显示表示发布成功,调用失败会返回error(运行前请修改index.html文件的源码,将url修改成真正的url)

例子很简单,不过多解释,源码查看附件

  • mootools.rar (239 KB)
  • 描述: xfire+spring发布webservice例子
  • 下载次数: 4847
分享到:
评论
8 楼 capfjian 2008-07-01  
谢谢,学习了
7 楼 kenter1643 2008-05-19  
exception

javax.servlet.ServletException: Servlet.init() for servlet xfire threw exception
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)


root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.handler.SimpleUrlHandlerMapping' defined in ServletContext resource [/WEB-INF/xfire-servlet.xml]: Can't resolve reference to bean 'test' while setting property 'urlMap[/testService.ws]'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'test' defined in ServletContext resource [/WEB-INF/xfire-servlet.xml]: Can't resolve reference to bean 'testBean' while setting property 'serviceBean'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'testBean' is defined
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:180)
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:105)
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedMap(BeanDefinitionValueResolver.java:225)
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:117)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1013)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:824)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:345)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:275)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:320)
org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:305)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:250)
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:219)
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:112)
javax.servlet.GenericServlet.init(GenericServlet.java:212)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)

6 楼 pignut_wang 2007-07-13  
不好意思!数据类型这个问题我都还没有看过,这个帮不到你了,如果你解决了,希望能把解决方案发出来,大家一起学习
5 楼 pinegreen961 2007-07-12  
请教一个可能比较低级的问题:
    我用的xfire+spring,环境为jdk1.5+tomcat5.0+myeclipse5.1
当返回list(List中装的自定义类型,如,tbuser)时,在服务器端能得到10条,但在客户端却只能取得一条。tbuser中装的基本类型,有int,long及String。list的aegis也配置了。
    请教一下,可能的问题出在哪?找了老久没有查出什么原因。
4 楼 pignut_wang 2007-07-12  
我用的jdk1.6 + tomcat6 + myeclipse 5.5GA
在eclipse中包含对spring2和xfire的引用即可
3 楼 lys_billy 2007-07-10  
你用的jdk是啥版本?
要不分三个包,给我发邮件,
我的邮件为:liuyaoshu@neusoft.com
谢谢!
2 楼 pignut_wang 2007-07-10  
我用的tomcat6 + myeclipse 5.5GA
直接引用xfire的环境
没有手工添加任何包的

全部包太大了,传不上来,如果需要加我的QQ,我发给你
43441383 花生米
1 楼 lys_billy 2007-07-10  
我是用jdk1.6和tomcat6执行有问题,
问一下你的版本是多少啊
能把lib包上传一份吗
谢谢!

相关推荐

    使用xfire+spring编写webservice例子,供大家学习与交流

    本示例将详细介绍如何使用XFire和Spring框架来构建一个Web服务。XFire是Apache CXF的一部分,它是一个用于创建、部署和管理Web服务的开源工具,而Spring是一个广泛使用的Java企业级应用开发框架,提供了一个全面的...

    xfire+spring+webservice入门例子

    【xfire+Spring+WebService 入门实例详解】 在IT行业中,Web服务是一个重要的通信方式,它允许不同系统间的应用程序进行数据交换。本入门实例将深入探讨如何使用XFire框架与Spring集成来构建和消费Web服务。XFire是...

    xfire+spring开发webservice的例子

    总结来说,这个"xfire+spring开发webservice的例子"是一个完整的Java Web服务开发示例,它演示了如何利用Maven管理依赖,借助XFire创建和部署Web服务,以及如何利用Spring进行服务的管理和测试。这对于学习和理解Web...

    spring+xfire( 编写webservice完整配置+案例)

    在本教程中,我们将深入探讨如何使用Spring和XFire编写Web服务的完整配置,并通过实际案例来学习这一过程。 首先,我们需要了解Spring和XFire的基础。Spring框架提供了一个名为Spring-WS的模块,专门用于构建Web...

    使用XFire+Spring构建Web Service

    总结来说,使用XFire和Spring构建Web Service的优势在于,XFire简化了Web Service的创建和部署,而Spring则提供了强大的依赖管理和企业级特性。这种结合使得开发者能更专注于业务逻辑,而不是底层的通信细节。在实际...

    spring+xfire实现webservice简单例子

    在本文中,我们将深入探讨如何使用Spring框架与XFire库结合来实现Web服务。Spring是一个广泛应用的Java企业级开发框架,而XFire是早期的Web服务实现库,它提供了轻量级、高效的SOAP(简单对象访问协议)服务支持。...

    简单的XFire WebService例子

    在这个“简单的XFire WebService例子”中,我们将深入探讨如何利用XFire来构建和消费Web服务。 【 WeberService概念】 Web服务是一种通过网络(通常是互联网)提供和使用功能的方法,它遵循特定的协议和标准,如...

    xfire发布webservice服务

    这篇博客文章“xfire发布webservice服务”可能详细介绍了如何使用XFire来构建并发布一个Web服务。 【描述】:“NULL” 虽然描述为空,但我们可以推测文章可能包含了从安装XFire到编写服务接口,再到部署和测试Web...

    Spring+hibernate+Xfire

    在"webservice和Spring接合的实例"这一标签中,我们可以推断这个例子还涉及到了Spring对Web服务的支持。Spring提供了多种Web服务工具,如Spring-WS和Spring-Integration-WS,可以方便地创建、消费和管理Web服务。...

    Spring+hebinate+xfire整合的web services服务器例子

    定义服务接口和服务实现,然后使用XFire的注解(如`@WebService`)标记你的服务类。 5. **配置XFire**:配置XFire的Servlet或CXF的FrontendServlet,指定服务发布的位置和端口。将Spring配置中的服务bean暴露为Web...

    webservice例子

    在本例子中,我们将探讨如何在Spring框架中利用XFire来创建和使用Web服务。 首先,让我们理解Spring框架。Spring是一个开源的Java平台,它为开发企业级应用程序提供了全面的基础。Spring的核心特性包括依赖注入和...

    Java调用C#的WebService例子

    本示例介绍如何在Java环境中利用Xfire库来调用C#编写的WebService服务。 首先,理解WebService的核心概念:它是一种基于标准的、平台无关的、用于应用程序之间交互的技术,通过SOAP(Simple Object Access Protocol...

    WebService(二):XFire实现WebService

    **如何使用XFire实现WebService:** 1. **创建服务接口**:首先,定义一个Java接口,包含你希望暴露为Web服务的方法。 2. **实现服务接口**:编写实现该接口的类,提供具体业务逻辑。 3. **配置XFire**:通过XML...

    webService+Xfire入门

    总的来说,"webService+Xfire入门"的教程适合初学者,通过它你可以快速了解Web Service的基本概念,学会使用MyEclipse创建、部署和测试Web Service,并理解XFire在Web服务开发中的作用。实践这个小例子,你将对Web ...

    Xfire开发webservice与javaweb集成实例

    Xfire支持SOAP、WSDL和UDDI等Web服务标准,同时还提供了与Spring框架的良好集成。 ### 2. 服务端发布 发布一个Web服务在Xfire中通常涉及以下步骤: 1. **创建服务接口**:定义Web服务的业务逻辑,通常是Java接口...

    xfire_webservice_example说明

    在阅读《xfire_webservice_example说明.doc》文档时,您会发现它可能涵盖了如何配置和运行这个示例的详细步骤,包括必要的依赖库、XML配置、以及如何编写和运行客户端代码。这份文档是学习xfire和Web服务开发的宝贵...

    XFire WebService

    在描述中提到的"绝对可以运行"的例子,表明这是一个实际操作过的示例,旨在帮助初学者快速理解如何使用XFire来创建和部署Web服务。下面将详细介绍XFire的核心概念和使用步骤。 1. **安装与配置**:首先,你需要下载...

    xfire生成webservice

    标题 "xfire生成webservice" 涉及到的技术核心是XFire,它是一个Java Web服务框架,用于创建和消费SOAP服务。XFire是Apache CXF的前身,它简化了Web服务的开发过程,允许开发者快速地将业务逻辑暴露为Web服务。 ...

Global site tag (gtag.js) - Google Analytics