我们的项目使用 Spring 3.0.5 在 JBoss 6 上运行。在我们尝试使用 JAX-WS 实现一些 Web 服务之前,一切都很顺利。如果我尝试做一些简单的 WS(比如添加 2 个数字),它就可以工作 - 我放置注释并将带注释的类添加为 servlet。但是,如果我尝试让我的 JAX-WS 类填充依赖项,事情会变得越来越困难。
这是我的代码:
@WebService(name = "principal")
public class PrincipalWebService extends SpringBeanAutowiringSupport {
@Autowired
private PrincipalManager manager;
@WebMethod
public int add(int a, int b) {
return a + b;
}
@WebMethod
public Principal getById(int i) {
return manager.getById(i);
}
}
Add 方法有效,但 getById 因 NPE 而失败。我一直在调试 SpringBeanAutowiringSupport,它看起来像 ContextLoader.getCurrentWebApplicationContext() 返回 null。这意味着在初始化上下文之前正在调用 SpringBeanAutowiringSupport 构造函数。
我一直在尝试按照CXF 说明使用 Spring 运行应用程序。我现在没有这个代码,但是我已经将 PrincipalWebService 注册为一个 bean,创建了 spring 文件来配置 CXF 并通过它的 ID 作为端点添加了这个 bean。它在 Jetty 上运行良好,但在 JBoss 上却失败了。根据我配置 CXF 的方式,我收到了不同类型的异常,但根本原因是相同的 - JBoss 6 CXF 版本是针对 Spring 2.5 编译的,所以我们有库不一致。
有没有人有任何想法让 IoC 在 JBoss 6 上为 Jax-ws 服务工作?