@Resource没有注入一个CDI托管bean的JAX-WS SE

时间:2012-09-26 18:28:53

标签: java web-services jax-ws java-ee-6 cdi

在JAX-WS SE类中,我有一个字段,我注入一个@Resource来最终得到客户端的IP地址。一切都好,直到我把这个SE变成CDI托管bean

@WebService
public class AImpl implements A {

    @Resource
    private WebServiceContext wsContext;

    @Inject
    private ADelegated delegated;

        ...
}

我在WebLogic 12c中部署此应用程序,我收到此错误

java.lang.IllegalArgumentException: Can not set javax.xml.ws.WebServiceContext field AImpl.wsContext to weblogic.jndi.internal.WLEventContextImpl

我的代码中有什么不正确?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

根据我的知识,JAX-WS没有任何CDI集成。看起来似乎正在发生的事情是CDI正在创建你的bean而不是JAX-WS,并且注入混合起来。

答案 1 :(得分:2)

我找到了解决方案(在Oracle论坛人员的帮助下)。

通过在@Resource注释中添加属性“name”,问题得以解决:

@WebService
public class AImpl implements A {

    @Resource(name="wsContext")
    private WebServiceContext wsContext;

    @Inject
    private ADelegated delegated;

        ...
}