`

apache + tomcat 负载均衡模式下 getLocalAddr() 为null的解决办法

    博客分类:
  • Java
 
阅读更多
http://www.51lingguang.com/?p=504

在apache + tomcat 负载均衡模式下,通过request.getLocalAddr()无法获取服务器端的ip地址,返回值为null的问题,查找了下,百度里没有有价值的回答,到官方网站上查找了下,说是:

The AJP protocol only passes the web server host name and port. It does not pass the IP address. Therefore, getLocalName() will return whatever is passed via AJP but getLocalAddr() will always return null.

Whilst getLocalAddr() could be modified to return the IP address Tomcat is listening on for AJP connections, I don’t like the inconsistency that would generate when compared to getLocalName() and getLocalPort().

因为AJP的转换,让java端获取不到服务器的ip地址,可以使用以下办法来获取服务器端的ip地址:

String currentIp = InetAddress.getByName(request.getServerName()).getHostAddress();

这个一直是获得负载服务器的IP

先通过request.getServerName()获取到访问域名,然后通过InetAddress.getByName(String serverName)解析到ip地址,但格式是 域名/ip 的形式,再通过getHostAddress()获取到ip地址。

实际上如果需要通过域名解析到ip,也可以通过这个函数来获取:
InetAddress.getByName(域名).getHostAddress()
分享到:
评论

相关推荐

    apache+tomcat集群的基本配置(简明)

    ### Apache+Tomcat集群的基本配置详解 #### 一、引言 随着互联网应用的日益增长,单个服务器已经无法满足高并发访问的需求。为了提高系统的可用性和扩展性,集群技术应运而生。Apache作为一款优秀的Web服务器软件,...

    JSP内置对象的各对象的方法列表

    - `getParameterMap()`:返回所有参数的Map,键为参数名,值为参数值列表。 - `getParameterNames()`:返回所有参数名的枚举。 - `getParameterValues(String name)`:返回指定参数的所有值,以数组形式返回,...

    jsp 内置对象(包括其具体方法)

    如果`create`为`false`,则仅返回现有会话,否则返回`null`。 48. **`boolean isRequestedSessionIdFromCookie()`** 检查请求的会话ID是否通过Cookie获得。 49. **`boolean isRequestedSessionIdFromURL()`** ...

    javaip的获取方式

    这是获取客户端真实IP地址最常用的方式之一,但在某些情况下可能不够准确,例如在存在代理服务器的情况下。 ```java String remoteIp = request.getRemoteAddr(); ``` ##### 5. `getRemotePort()` 此方法用于获取...

    HttpServletRequest详解.docx

    - `getLocalAddr()` 返回WEB服务器的IP地址。 - `getLocalName()` 返回WEB服务器的主机名。 2. **获取请求头信息**: - `getHeader(String name)` 返回指定请求头的字符串值,如果不存在则返回null。 - `...

    Java web servlet笔记

    在Java Web开发中,`HttpServletRequest`和`HttpServletResponse`是两个非常重要...在实际应用中,结合Servlet容器,如Tomcat,`HttpServletRequest`和`HttpServletResponse`能帮助我们构建动态、交互式的Web应用程序。

    Java中request对象常用方法汇总

    7. `getLocalAddr()`:返回Web服务器的IP地址,这通常是服务器上接收请求的网络接口的地址。 8. `getLocalName()`:返回Web服务器的主机名,对于调试和日志记录非常有用。 9. `getMethod()`:获取请求的HTTP方法,如...

    jsp内置对象常解,很实用的啊

    - **`String getAuthType()`**:获取认证方式,如果没有认证则返回`null`。 - **`String getCharacterEncoding()`**:获取请求的字符编码。 - **`int getContentLength()`**:获取请求体的长度,如果无法确定则返回-...

    JAVA WEB学习资料

    配置Servlet通常在web.xml文件中进行,分为两部分:`<servlet>`定义Servlet的名称和实现类,`<servlet-mapping>`则将Servlet与特定URL模式关联,以便服务器根据请求路径调用相应的Servlet。 HttpServletRequest对象...

    servlet2.4doc

    Returns the object bound with the specified name in this session, or null if no object is bound under the name. getAttributeNames() - Method in interface javax.servlet.ServletContext Returns an ...

    servlet

    1. **实例创建**: 当Servlet容器(如Tomcat)启动时,会根据`web.xml`或基于注解的配置创建Servlet实例。通常情况下,一个Servlet只会被创建一个实例,除非特别指定。 2. **初始化阶段** (`init()`): - **作用**: ...

    HttpServletRequest对象方法的用法小结

    * getLocalAddr():返回WEB服务器的IP地址。 * getLocalName():返回WEB服务器的主机名。 例如,在Request.java中加入如下代码: ```java String uri = request.getRequestURI(); String rad = request....

    JSP中的request对象

    例如,可以使用request.setAttribute("username","John")来设置一个名为“username”的属性,并将其值设置为“John”。 10. getAttribute(String name):获得request对象上的一个属性的值。 例如,可以使用request...

    JSP中Servlet的Request与Response的用法与区别

    - `getParameterMap()`:获取所有参数的Map对象,键为参数名,值为参数值列表。 处理中文乱码问题: - GET方式提交时,由于默认编码问题,可以通过获取字节数组并转换编码解决,如`name = new String(name....

    Servlet基础教程

    - `getLocalAddr()`:获取服务器的IP地址。 - `getLocalPort()`:获取服务器的端口号。 - `setCharacterEncoding(String encoding)`:设置字符编码。 - `getContentType()`:获取响应的内容类型。 #### 三、Servlet...

    java中request常用方法小结

    7. `getLocalAddr()`:返回WEB服务器的IP地址,通常与服务器配置的网络接口相关。 8. `getLocalName()`:返回WEB服务器的主机名,如果服务器无法解析IP地址,可能返回的是IP地址。 9. `getMethod()`:获取客户机...

    Java开发之request对象常用方法整理

    7. `getLocalAddr()`:返回Web服务器的IP地址,通常与服务器的监听地址一致。 8. `getLocalName()`:返回Web服务器的主机名,有助于识别服务器的身份。 9. `getMethod()`:这个方法获取客户端请求的HTTP方法,通常...

Global site tag (gtag.js) - Google Analytics