Yur*_*ras 2 spring dependency-injection cxf jax-ws jboss6.x
我们已经使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
添加方法有效,但getById因NPE而失败.我一直在调试SpringBeanAutowiringSupport,它看起来像ContextLoader.getCurrentWebApplicationContext()返回null.这意味着在初始化上下文之前调用SpringBeanAutowiringSupport构造函数.
我一直在尝试使用Spring运行应用程序的CXF说明.我现在没有这个代码,但是我已经将PrincipalWebService注册为bean,创建了spring文件来配置CXF并通过它的ID作为端点添加了这个bean.它在Jetty上表现不错,但在JBoss上失败了.我一直在接收不同类型的异常,具体取决于我如何配置CXF,但根本原因是相同的 - JBoss 6 CXF版本是针对Spring 2.5编译的,所以我们有库不一致.
有没有人有任何想法让IoC为JBoss 6上的Jax-ws服务工作?
好的,我找到了一个解决方法.我们需要做的就是将依赖注入移动到@PostConstruct方法:
@PostConstruct
public void init() {
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6715 次 |
最近记录: |