【发布时间】:2018-06-15 03:28:21
【问题描述】:
我正在尝试访问组件类中的 httpServletRequest。我尝试了几种方法。
@Component
public class MyService{
@Resource
WebServiceContext wsCtxt;
public void myWebMethod(){
MessageContext msgCtxt = wsCtxt.getMessageContext();
HttpServletRequest req = (
(HttpServletRequest)msgCtxt.get(MessageContext.SERVLET_REQUEST);
String clientIP = req.getRemoteAddr();
}
这对我不起作用。因为 WebServiceContext 始终为空。然后我在 Web 服务类中尝试了相同的代码。然后该代码正在工作。我的要求是在组件类中获取 HttpServletRequest。 (最终我想做的是从请求标头中获取客户端主机)。 这可能吗?有没有其他选择?
【问题讨论】:
-
只是想知道您为什么要这样做?
-
我们有不同的环境,例如测试、开发、生产。我们项目的当前实现是将默认主机作为本地主机。但我们可以从 vm 选项中覆盖主机。比如 -Dserver_url=test.xxx.com ,那么 web 服务会调用测试环境中的其他 web 服务。现在我们将从通过 nginx 发送的 header 中获取主机。
标签: spring-mvc servlets