现在的项目中需要用到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