我正在使用Java 6,Tomcat 6和Metro。我使用WebService和WebMethod批注公开我的Web服务。我想获取有关请求的信息。我尝试了以下代码,但是wsCtxt始终为null。我必须采取什么步骤才能使WebServiceContext不为null。

换句话说:如何执行以下行以获取wsCtxt的非空值?

MessageContext msgCtxt = wsCtxt.getMessageContext();

@WebService
public class MyService{

  @Resource
  WebServiceContext wsCtxt;

  @WebMethod
  public void myWebMethod(){
    MessageContext msgCtxt = wsCtxt.getMessageContext();
    HttpServletRequest req = (HttpServletRequest)msgCtxt.get(MessageContext.SERVLET_REQUEST);
    String clientIP = req.getRemoteAddr();
  }

最佳答案

我建议您将变量从wsCtxt重命名为wsContext或将name属性分配给@Resource批注。 J2ee tutorial on @Resource指示变量名称用作查找的一部分。我在Glassfish中注入(inject)不同类型的资源时遇到了相同的问题。

尽管您的正确名称可能不是wsContext。我正在关注java tip。如果您喜欢变量名称wsCtxt,请在变量声明中使用name属性:

07-24 18:56