2

在 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

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

在此先感谢您的帮助。

4

2 回答 2

2

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

通过在@Resource 注释中添加属性“名称”,问题得到了解决:

@WebService
public class AImpl implements A {

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

    @Inject
    private ADelegated delegated;

        ...
}
于 2012-09-27T16:19:28.457 回答
2

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

于 2012-09-26T22:43:45.293 回答