现在的项目中需要用到SOA概念的地方越来越多,最近我接手的一个项目中就提出了这样的业务要求,需要在.net开发的客户端系统中访问java开发的web系统,这样的业务需求自然需要通过WebService进行信息数据的操作。下面就将我们在开发中摸索的一点经验教训总结以下,以供大家参考. 在WebService开发笔记 2 -- VS 2005 访问WebServcie更简单中作一个跨平台访问WebServcie服务的例子.... 在WebService开发笔记 3 -- 增强访问 WebService 的安全性通过一个简单的用户口令验证机制来加强一下WebService的安全性.... 我们项目的整个架构使用的比较流行的WSH MVC组合,即webwork2 + Spring + Hibernate; 1.首先集成Apacha CXF WebService 到 Spring 框架中; apache cxf 下载地址:http://people.apache.org/dist/incubator/cxf/2.0.4-incubator/apache-cxf-2.0.4-incubator.zip 在spring context配置文件中引入以下cxf配置 Xml代码 1.
2.
3.
在web.xml中添加过滤器: Xml代码 1.
2.
CXFServlet
3.
4. org.apache.cxf.transport.servlet.CXFServlet 5.
6.
7.
8.
CXFServlet
9.
/services/*
10.
CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
CXFServlet
/services/*
2.开发服务端WebService接口: Java代码 1. /** 2. * WebService接口定义类. 3. * 4. * 使用@WebService将接口中的所有方法输出为Web Service. 5. * 可用annotation对设置方法、参数和返回值在WSDL中的定义. 6. */ 7. @WebService 8. public interface WebServiceSample { 9. 10. 11. /** 12. * 一个简单的方法,返回一个字符串 13. * @param hello 14. * @return 15. */ 16. String say(String hello); 17. 18. /** 19. * 稍微复杂一些的方法,传递一个对象给服务端处理 20. * @param user 21. * @return 22. */ 23. String sayUserName( 24. @WebParam(name = "user") 25. UserDTO user); 26. 27. /** 28. * 最复杂的方法,返回一个List封装的对象集合 29. * @return 30. */ 31. public 32. @WebResult(partName="o") 33. ListObject findUsers(); 34. 35. } /** * WebService接口定义类. * * 使用@WebService将接口中的所有方法输出为Web Service. * 可用annotation对设置方法、参数和返回值在WSDL中的定义. */ @WebService public interface WebServiceSample { /** * 一个简单的方法,返回一个字符串 * @param hello * @return */ String say(String hello); /** * 稍微复杂一些的方法,传递一个对象给服务端处理 * @param user * @return */ String sayUserName( @WebParam(name = "user") UserDTO user); /** * 最复杂的方法,返回一个List封装的对象集合 * @return */ public @WebResult(partName="o") ListObject findUsers(); } 由简单到复杂定义了三个接口,模拟业务需求; 3.实现接口 Java代码 1. /** 2. * WebService实现类. 3. * 4. * 使用@WebService指向Interface定义类即可. 5. */ 6. @WebService(endpointInterface = "cn.org.coral.biz.examples.webservice.WebServiceSample") 7. public class WebServiceSampleImpl implements WebServiceSample { 8. 9. public String sayUserName(UserDTO user) { 10. return "hello "+user.getName(); 11. } 12. 13. public String say(String hello) { 14. return "hello "+hello; 15. } 16. 17. public ListObject findUsers() { 18. ArrayList