Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HttpServletRequest问题_Java_Web Services_Servlets - Fatal编程技术网

Java HttpServletRequest问题

Java HttpServletRequest问题,java,web-services,servlets,Java,Web Services,Servlets,我有一个用于共享交易详细信息的web服务。有两个客户端与我的web服务连接。 我这边的用户设置如下所示 KEJESTORE===201.XXX.XX.XX 马里奥布罗斯===81.XX.XX.XX 为了安全起见,每次调用transaction方法时,我都会使用下面的方法获取客户机服务器的用户名和ip地址 MessageContext msgCtxt = wsCtxt.getMessageContext(); HttpServletRequest req = (HttpServletRequest

我有一个用于共享交易详细信息的web服务。有两个客户端与我的web服务连接。 我这边的用户设置如下所示

  • KEJESTORE===201.XXX.XX.XX
  • 马里奥布罗斯===81.XX.XX.XX
  • 为了安全起见,每次调用transaction方法时,我都会使用下面的方法获取客户机服务器的用户名和ip地址

    MessageContext msgCtxt = wsCtxt.getMessageContext();
    HttpServletRequest req = (HttpServletRequest) msgCtxt.get(MessageContext.SERVLET_REQUEST);
    String clientIp = req.getRemoteAddr();
    String user = wsCtxt.getUserPrincipal().getName();
    
    但我有时会得到如下结果(这种情况很少发生)

  • KEJESTORE===81.XX.XX.XX
  • 马里奥布罗斯===201.XXX.XX.XX
  • 我不知道我的上述代码是否有任何问题,我正在使用的这个目的

    请给我一些建议

    编辑:

    方法

    public TranResponse sendTransaction(WebServiceContext wsCtxt, Transaction tran){
    
        MessageContext msgCtxt = wsCtxt.getMessageContext();
        HttpServletRequest req = (HttpServletRequest) msgCtxt.get(MessageContext.SERVLET_REQUEST);
        String clientIp = req.getRemoteAddr();
        String user = wsCtxt.getUserPrincipal().getName();
    
    // more code
    
    }
    

    这可能是由于线程问题。你是用线程安全代码做的吗?谢谢你的回复,先生。目前我没有为此使用线程安全代码。但据我所知,servlet会根据每个请求启动新线程。答:我说得对吗?您可能有任何静态方法或成员参与servlet。您可以使用静态实用程序方法来解析请求。这可能就是问题所在。如果有,就去那里看看!没有,先生。我没有使用任何静态方法,因为这是有可能的身份验证的用户名是不可更改的工作?你能把方法贴在上面代码所在的地方吗?