在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
我的代码中有什么不正确?
提前感谢您的帮助。
答案 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;
...
}