您的位置:首页 > 编程语言 > Java开发

JAX-WS与Spring集成

2014-03-19 00:00 239 查看
摘要: MyEclipse下JAX-WS与Spring集成

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

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

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

搜索关键字“spring webservice”,出来的更多是Apache CFX与spring的集成,难道没有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's
SpringBeanAutowiringSupport
class and implement our business logic here, usually delegating the call to the business layer. We'll simply use Spring 2.5's
@Autowired
annotation 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有详细说明,可我却忽略了最根本解决问题的途径,总想着在网上乱七八糟,良莠不齐的文章中找。

BTW: Apache CFX倒是一个新发现,可以嵌入到Spring中,并且支持很多WS的服务标准,同时也支持JAX-RS,至少解决了我们之前困惑的JAX-WS和JAX-RS开发无法统一的问题。我打算先做个简单了解,考虑直接该框架集成到我们的系统中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息