利用xfire编写webservice的例子,内容如下
1. xfire + spring 发布webservice
2. 利用 javascript 调用发布的webservice
使用xfire+spring发布webservice其实很简单,遵循一下几个步骤即可
1. 想要发布成文webservice的类,必须实现接口
2. 3个配置文件(后面详细说)
下面针对以上步骤详细说明
关于1中的要求,给个例子就明白了
Itest.java 代码
- packagetest;
- importorg.json.JSONException;
- publicinterfaceIHello
- {
- publicStringhello();
- publicStringhelloTo(Stringname);
- publicStringgetJsonData(StringpageIndex,StringpageSize);
- }
HelloImpl.java 代码
- packagetest;
- importjava.util.*;
- importjavax.servlet.http.HttpServletRequest;
- importjavax.servlet.http.HttpSession;
- importorg.codehaus.xfire.transport.http.XFireServletController;
- importorg.json.JSONException;
- importorg.json.JSONStringer;
- publicclassHelloImplimplementsIHello
- {
- publicStringhello()
- {
- return"hello";
- }
- publicStringhelloTo(Stringname)
- {
- return"hello"+name+"!";
- }
- privatevoidexample()
- {
- HttpServletRequestrequest=XFireServletController.getRequest();
- HttpSessionsession=request.getSession();
- }
- publicStringgetJsonData(StringpageIndex,StringpageSize)
- {
- StringrtnValue="";
- rtnValue="";
- for(inti=0;i<Integer.parseInt(pageSize);i++)
- {
- rtnValue=rtnValue+"{'lastname':'last"+pageIndex+"-"+i+"','firstname':'first"+pageIndex+"-"+i+"'},";
- }
- rtnValue=rtnValue+"{'lastname':'last','firstname':'last'}";
- rtnValue="{'context':["+rtnValue+"],'pager':[{'totalRecord':'100','totalpage':'10','pageIndex':'"+pageIndex+"','pageSize':'10'}]}";
- returnrtnValue;
- }
- }
就这样写就可以了
关于三个配置文件
web.xml修改如下
xml 代码
- <?xmlversion="1.0"encoding="UTF-8"?>
- <web-appxmlns="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/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <context-param>
- <param-name>log4jConfigLocation</param-name>
- <param-value>/WEB-INF/classes/log4j.properties</param-value>
- </context-param>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- /WEB-INF/classes/applicationContext*.xml
- classpath:org/codehaus/xfire/spring/xfire.xml
- </param-value>
- </context-param>
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <listener>
- <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
- </listener>
- <listener>
- <listener-class>
- org.springframework.web.util.IntrospectorCleanupListener
- </listener-class>
- </listener>
- <servlet>
- <servlet-name>xfire</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>xfire</servlet-name>
- <url-pattern>*.ws</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- </welcome-file-list>
- </web-app>
这里注意 classpath:org/codehaus/xfire/spring/xfire.xml 必须要写进去
xfire-servlet.xml 新建这个文件,并且和web.xml放在同一个文件夹
注意: 名称和位置都不能变(也许可以改,我不知道)
xml 代码
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <beanclass="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <propertyname="urlMap">
- <map>
- <entrykey="/testService.ws">
- <refbean="test"/>
- </entry>
- </map>
- </property>
- </bean>
- <beanid="test"parent="webService"class="org.codehaus.xfire.spring.remoting.XFireExporter">
- <propertyname="serviceBean">
- <refbean="testBean"/>
- </property>
- <propertyname="serviceClass">
- <value>test.IHello</value>
- </property>
- </bean>
- <beanid="webService"class="org.codehaus.xfire.spring.remoting.XFireExporter"abstract="true">
- <propertyname="serviceFactory">
- <refbean="xfire.serviceFactory"/>
- </property>
- <propertyname="xfire">
- <refbean="xfire"/>
- </property>
- </bean>
- </beans>
spring 的配置文件 applicationContext-webService.xml
xml 代码
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <beanid="testBean"class="test.HelloImpl"></bean>
- </beans>
查看wsdl http://localhost:8080/mootools/testService.ws?wsdl
运行 进入 index.html 页面,点击 即可执行调用,正常显示表示发布成功,调用失败会返回error(运行前请修改index.html文件的源码,将url修改成真正的url)
例子很简单,不过多解释,源码查看附件
http://www.javaeye.com/topic/99397
分享到:
相关推荐
Spring+Hibernate+Xfire+发布WebService教程文档
这一个使用org.codehaus.xfire.spring.XFireSpringServlet整合三个框架的配置。只需要配置这两个文件就可以正确发布webservice。比较简单的一种整合方式
基于spring+hibernate +xfire框架开发的webservice 项目
实现 xFire与 Spring 的集成
网上资料大多是只有spring+xfire 含有Hibernate的少 3.配置时候还遇到spring实现 客户端调用服务器端时候 注入失败 4.在服务器端向客户端做映射的时候失败 5.在服务器端获取非基本类转化问题
xfire+spring+hibernate webservice
JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例(已上传) 1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、...
CXF环境配置 - jackymin CXF与Spring的集成 log4j的配置使用 Spring XML配置十二个最佳实践WebService开发实例 (Xfire+Spring+Hibernate)
Xfire Spring Hibernate 发布WebService(源码) Xfire1.2 Spring 2.0 Hibernate 3 发布WebService 一、准备工作 1、下载安装MyEclipse6.5 2、下载安装MySQL Server 5.1 3、下载MySQL驱动 mysql-connector-java...
一个webservice实例,有自定义对象,数组的传输
里面包含了两个工程,WineService是开发服务,WineServiceClient是客户端测试! 使用xFire框架
MyEclipse下的Xfire Spring Hibernate 发布WebService
此文档讲解配制Spring2.5+Hibernate3.2+xfire开发webservice工程(有截图)
一个例子,再加一个操作步骤。一个webService.rar与一个.word文件。由于JAR太多。所以了删除了,不过有操作步骤,可以自己一步步操作
invalid SOAP request: 当在浏览其中报此错误的时候,实际上是因为WebService针对的是客户端请求,而不是浏览器的访问. 只要建立了测试类,在测试类中访问就可以了. applicationContext.xml 一直是放置在WEB-INF目录...
Xfire和 Hibernate结合实例 包括和Hibernate结合如何返回HashSet对象
xfire集成spring2.5+hibernate3.3,在网上找的东西,都是文档,所以想上传个实例工程,带jar包,说明文档,SQL脚本
该文档主要是描述在spring下面配置webservice的流程,可以让大家更容易的了解webservice
3、com.morningstar.utility.WSUtility为调用WebService的客户端代码,在调用这个WebService返回数据时存在一点问题。希望有人能帮我解决下,指点下我,小弟不胜感激。EncryUtility为加密类,有MD5和SHA可选。 4、...
NULL 博文链接:https://flylynne.iteye.com/blog/1616192