`
zxingchao2005
  • 浏览: 76327 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

WebService开发实例 (Xfire+Spring+Hibernate)

 
阅读更多

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

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

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

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

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

Itest.java 代码
  1. packagetest;
  2. importorg.json.JSONException;
  3. publicinterfaceIHello
  4. {
  5. publicStringhello();
  6. publicStringhelloTo(Stringname);
  7. publicStringgetJsonData(StringpageIndex,StringpageSize);
  8. }


HelloImpl.java 代码
  1. packagetest;
  2. importjava.util.*;
  3. importjavax.servlet.http.HttpServletRequest;
  4. importjavax.servlet.http.HttpSession;
  5. importorg.codehaus.xfire.transport.http.XFireServletController;
  6. importorg.json.JSONException;
  7. importorg.json.JSONStringer;
  8. publicclassHelloImplimplementsIHello
  9. {
  10. publicStringhello()
  11. {
  12. return"hello";
  13. }
  14. publicStringhelloTo(Stringname)
  15. {
  16. return"hello"+name+"!";
  17. }
  18. privatevoidexample()
  19. {
  20. //使用session
  21. HttpServletRequestrequest=XFireServletController.getRequest();
  22. HttpSessionsession=request.getSession();
  23. }
  24. publicStringgetJsonData(StringpageIndex,StringpageSize)
  25. {
  26. StringrtnValue="";
  27. rtnValue="";
  28. for(inti=0;i<Integer.parseInt(pageSize);i++)
  29. {
  30. rtnValue=rtnValue+"{'lastname':'last"+pageIndex+"-"+i+"','firstname':'first"+pageIndex+"-"+i+"'},";
  31. }
  32. rtnValue=rtnValue+"{'lastname':'last','firstname':'last'}";
  33. rtnValue="{'context':["+rtnValue+"],'pager':[{'totalRecord':'100','totalpage':'10','pageIndex':'"+pageIndex+"','pageSize':'10'}]}";
  34. returnrtnValue;
  35. }
  36. }


就这样写就可以了

关于三个配置文件

web.xml修改如下

xml 代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <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">
  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. <!--启动时加载SpringContextServlet-->
  16. <listener>
  17. <listener-class>
  18. org.springframework.web.context.ContextLoaderListener
  19. </listener-class>
  20. </listener>
  21. <listener>
  22. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  23. </listener>
  24. <listener>
  25. <listener-class>
  26. org.springframework.web.util.IntrospectorCleanupListener
  27. </listener-class>
  28. </listener>
  29. <!--XFire配置-->
  30. <servlet>
  31. <servlet-name>xfire</servlet-name>
  32. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  33. </servlet>
  34. <servlet-mapping>
  35. <servlet-name>xfire</servlet-name>
  36. <url-pattern>*.ws</url-pattern>
  37. </servlet-mapping>
  38. <welcome-file-list>
  39. <welcome-file>index.html</welcome-file>
  40. </welcome-file-list>
  41. </web-app>


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

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

xml 代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
  3. <beans>
  4. <beanclass="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  5. <propertyname="urlMap">
  6. <map>
  7. <entrykey="/testService.ws">
  8. <refbean="test"/>
  9. </entry>
  10. </map>
  11. </property>
  12. </bean>
  13. <beanid="test"parent="webService"class="org.codehaus.xfire.spring.remoting.XFireExporter">
  14. <propertyname="serviceBean">
  15. <refbean="testBean"/>
  16. </property>
  17. <propertyname="serviceClass">
  18. <value>test.IHello</value>
  19. </property>
  20. </bean>
  21. <!--webServicebase-->
  22. <beanid="webService"class="org.codehaus.xfire.spring.remoting.XFireExporter"abstract="true">
  23. <propertyname="serviceFactory">
  24. <refbean="xfire.serviceFactory"/>
  25. </property>
  26. <propertyname="xfire">
  27. <refbean="xfire"/>
  28. </property>
  29. </bean>
  30. </beans>


spring 的配置文件 applicationContext-webService.xml

xml 代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
  3. <beans>
  4. <beanid="testBean"class="test.HelloImpl"></bean>
  5. </beans>


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

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

例子很简单,不过多解释,源码查看附件
http://www.javaeye.com/topic/99397

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics