JAX-WS与Spring集成


        在MyEclipse中使用JAX-WS开发web service,或在MyEclipse中使用spring都没问题。想起同事之前提到spring框架下,web service的依赖注入失败,于是只能采用读取配置文件强制注入的方法。我想肯定有更方便的办法。

        新建了工程,集成了spring,新建了一个简单的web service,通过浏览器能够访问到wsdl。但在客户端调用时却出现异常,果然是web service中的成员没能成功注入。

        自己瞎折腾了半天,无果,于是度娘。

        搜索关键字“spring webservice”,出来的更多是Apache CFXspring的集成,难道没有myeclipse下向导生成web service的方法吗?

        我又搜索“MyEclipse webservice”,在一篇主题内容对我没太大帮助的文章中我关注到一个细节。原来在MyEclipse6.5中新建web service项目时,会让选择web service框架是JAX-WS还是XFire,我才意识到原来MyEclipse也是集成了web service框架,JAX-WS只是其中一种。

        于是,我又搜索“Spring JAX-WS”,终于找到一篇文章http://www.cnblogs.com/yangzhilong/archive/2013/01/28/2880244.html做了详细说明。

其中说道:

Spring provides a convenient base class for JAX-WS servlet endpoint implementations - SpringBeanAutowiringSupport. To expose our AccountService we extend Spring'sSpringBeanAutowiringSupport class and implement our business logic here, usually delegating the call to the business layer. We'll simply use Spring 2.5's @Autowiredannotation for expressing such dependencies on Spring-managed beans.

import org.springframework.web.context.support.SpringBeanAutowiringSupport; @WebService(serviceName="AccountService") public class AccountServiceEndpoint extends SpringBeanAutowiringSupport {     @Autowired  private AccountService biz;     @WebMethod  public void insertAccount(Account acc) {        biz.insertAccount(acc);     }     @WebMethod  public Account[] getAccounts(String name) {  return biz.getAccounts(name);     } }



        于是,让我的web service类继承SpringBeanAutowiringSupport,重新部署后果然调用成功!而且,该博客中说明在spring的官网对集成jax-ws有详细说明,可我却忽略了最根本解决问题的途径,总想着在网上乱七八糟,良莠不齐的文章中找。

    BTWApache CFX倒是一个新发现,可以嵌入到Spring中,并且支持很多WS的服务标准,同时也支持JAX-RS,至少解决了我们之前困惑的JAX-WSJAX-RS开发无法统一的问题。我打算先做个简单了解,考虑直接该框架集成到我们的系统中。


你可能感兴趣的:(spring,webservice,MyEclipse,jax-ws)