axis和spring的集成
spring容器管理的业务层服务bean,可以做为web service发布。整合的方法有两种:
1、直接发布
将spring容器中预定义的service直接做为web service对外发布。
为此,web服务的提供类必须有spring管理,在调用web服务时需要从web应用环境(ServletContext)中去获取服务类的bean实例。
具体的实现原理请参考http://blog.csdn.net/liumyong/archive/2004/12/09/210043.aspx
2、间接发布
spring业务层servcie不直接做为web service对外发布,提供一个中间的接口(类)来调用spring service。
对外发布成web service的接口需要从Axis的contextAxis得到Spring的contextSpring:
HttpServlet servlet = (HttpServlet) MessageContext.getCurrentContext().getProperty(HTTPConstants.MC_HTTP_SERVLET);
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servlet.getServletContext());
以上两种方式各有优缺点:
方式1:
需要继承扩展axis的相关代码,重载实现org.apache.axis.transport.http.AxisServlet,并提供一个SpringBeanProvider类来处理web service bean与spring service bean的关联。
优点是,spring service直接做为web service发布,直接配置,无需任何附加中间接口。
方式2:
需要为每个web service提供一个中间接口来调用spring service。
在单一的spring service不能满足web服务需求时,可使用中间接口类综合调用多个spring service,然后集中做为一个web service发布出去。
spring容器管理的业务层服务bean,可以做为web service发布。整合的方法有两种:
1、直接发布
将spring容器中预定义的service直接做为web service对外发布。
为此,web服务的提供类必须有spring管理,在调用web服务时需要从web应用环境(ServletContext)中去获取服务类的bean实例。
具体的实现原理请参考http://blog.csdn.net/liumyong/archive/2004/12/09/210043.aspx
2、间接发布
spring业务层servcie不直接做为web service对外发布,提供一个中间的接口(类)来调用spring service。
对外发布成web service的接口需要从Axis的contextAxis得到Spring的contextSpring:
HttpServlet servlet = (HttpServlet) MessageContext.getCurrentContext().getProperty(HTTPConstants.MC_HTTP_SERVLET);
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servlet.getServletContext());
以上两种方式各有优缺点:
方式1:
需要继承扩展axis的相关代码,重载实现org.apache.axis.transport.http.AxisServlet,并提供一个SpringBeanProvider类来处理web service bean与spring service bean的关联。
优点是,spring service直接做为web service发布,直接配置,无需任何附加中间接口。
方式2:
需要为每个web service提供一个中间接口来调用spring service。
在单一的spring service不能满足web服务需求时,可使用中间接口类综合调用多个spring service,然后集中做为一个web service发布出去。