gpt4 book ai didi

spring - JBoss 6 + Spring 3.0.5 + JAX-WS/CXF

转载 作者:行者123 更新时间:2023-12-01 00:27:19 24 4
gpt4 key购买 nike

我们已经让我们的项目在 JBoss 6 和 Spring 3.0.5 上运行。在我们尝试使用 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 instructions on running app with Spring .我现在没有这段代码,但我已经将 PrincipalWebService 注册为一个 bean,创建了 spring 文件来配置 CXF,并通过它的 ID 添加了这个 bean 作为端点。它在 Jetty 上运行良好,但在 JBoss 上失败了。根据我配置 CXF 的方式,我一直收到不同类型的异常,但根本原因是相同的 - JBoss 6 CXF 版本是针对 Spring 2.5 编译的,所以我们有库不一致。

有没有人有任何想法让 IoC 在 JBoss 6 上为 Jax-ws 服务工作?

最佳答案

好的,我找到了解决方法。我们需要做的就是将依赖注入(inject)移动到@PostConstruct 方法:

@PostConstruct
public void init() {
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}

关于spring - JBoss 6 + Spring 3.0.5 + JAX-WS/CXF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5350723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com