Java HttpServletRequest问题
我有一个用于共享交易详细信息的web服务。有两个客户端与我的web服务连接。 我这边的用户设置如下所示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
MessageContext msgCtxt = wsCtxt.getMessageContext();
HttpServletRequest req = (HttpServletRequest) msgCtxt.get(MessageContext.SERVLET_REQUEST);
String clientIp = req.getRemoteAddr();
String user = wsCtxt.getUserPrincipal().getName();
但我有时会得到如下结果(这种情况很少发生)
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。您可以使用静态实用程序方法来解析请求。这可能就是问题所在。如果有,就去那里看看!没有,先生。我没有使用任何静态方法,因为这是有可能的身份验证的用户名是不可更改的工作?你能把方法贴在上面代码所在的地方吗?