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

在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地址

Java代码  

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

这个一直是获得负载服务器的IP
先通过request.getServerName()获取到访问域名,然后通过InetAddress.getByName(String serverName)解析到ip地址,但格式是 域名/ip 的形式,再通过getHostAddress()获取到ip地址。
实际上如果需要通过域名解析到ip,也可以通过这个函数来获取:

Java代码  

  1. InetAddress.getByName(域名).getHostAddress()
InetAddress.getByName(域名).getHostAddress()

时间: 10-22

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

Apache+Tomcat负载均衡问题集锦

之前在windows 环境下搭建了下apache+tomcat负载均衡(不会的可以参考之前的文档,文档对于linux和windows都适用),一帆风顺,没有出现任何问题,今天尝试着在linux下搭建了下,其中遇到几个问题,在这里给大家分享下. linux环境,三个redhat6.5 x86_64,其中192.168.1.2安装apache,192.168.1.3和192.168.1.4安装tomcat,这里不再介绍配置,如果有不会的,可以参考前边的文章. 问题一: SESSIONID随着页面刷新

基于Apache+Tomcat负载均衡的两种实现方法

Apache+Tomcat实现负载均衡的两种实现方法 如果我们将工作在不同平台的apache能够实现彼此间的高效通信,因此它需要一种底层机制来实现--叫做apr Apr的主要目的就是为了其能够让apache工作在不同的平台上,但在linux上安装apache的时候通常都是默认安装的 [[email protected] ~]#rpm -qi aprName                 :apr                                        Relocation

linux下apache+tomcat负载均衡和集群

先说下我的环境 一台ubuntu的虚拟机, 一个apache2.2的实例 两个tomcat1.7的实例 1.安装apache服务器 sudo apt-get install apache2 如果要重启的话,运行命令: sudo /etc/init.d/apache2 restart ubuntu下的apache会默认创建路径/var/www,apache默认加载的时候,就是加载的这个路径下面的 2.安装两个tomcat实例 去官网下载一个 然后在本地在cp一下, 此时目录结构为: /home/h

apache+tomcat 负载均衡

说明:本篇不面向无开发基础的人员,所以不会有软件下载,jdk安装等步骤.比较久远的东西了...... 1.系统环境 win7-64.jdk 2.软件列表: apache_2.2.24-x64-no-ssl.msi.tomcat5 3.配置步骤说明: 1)配置使用哪种方式实现负载均衡. 2)更改tomcat配置文件相关端口(我是在本机测试的,本机有多个tomcat) 3)对接apache和tomcat 4.配置开始 1)apache 安装目录下的 conf/httpd.conf 文件修改 解除下列

apache + tomcat 负载均衡分布式集群配置

Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问量过大,就会出现服应用务器崩溃的情况,这个时候怎么办,难道就只能去重启服务器吗?好,如果是一般的小型公益网站到也无所谓,但如果是比如像大型航空公司售票等电子商务网站,每天每小时都有大量的订单业务,如果这些售票系统一旦崩溃后,再去重启,这些时间和客户的损失就直接会影响到航空公司的利益,这些损失如何去避

vmware centos nat模式下连不上网络解决办法

简单来讲,当你创建一台虚拟机时,VMware为你虚拟了三种接入网络的方式:桥连接,NAT,使用主机网络,Vmware 10中默认对应 VMnet0,VMnet1,VMnet8 . 当选择桥连接方式时,此时的虚拟机相当于网络上一台独立电脑,与本物理机地位等同,拥有独立IP,可与网络上其他主机通信,同时也可被其他主机访问:当使用NAT连接时,可以理解为虚拟机通过物理机建立了一个专用网,而虚拟机就处在这专用网之内,虚拟机可以通过物理机单向访问网络上的其他主机或网络,但其他主机不能访问虚拟机:当使用主机

Apache、Tomcat负载均衡与集群

一. 环境准备 1.软件下载 a) apache_2.0.55-win32-x86-no_ssl.msi: b) apache-tomcat-5.5.17.rar c) mod_jk-apache-2.0.55.so 下载地址: http://download.csdn.net/detail/crazyiter_com/4178657 2.软件安装 a)  Apache安装路径为:E:\ide\apache\Apache2 (具体可以根据自己的盘符而定) b) Tomcat放置位置和名称注意:

Centos6.5系统下nginx反向代理实现tomcat负载均衡

查看当前系统的内核和系统参数以及版本. [[email protected] ~]# uname -a Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m 2.安装nginx. 1)

使用Apache通过JK实现多Tomcat负载均衡集群时,Apache不能将请求分发给Tomcat处理(即Apache反向代理不成功)的问题

前些天在做Apache通过JK实现多Tomcat负载均衡集群时,参考网上的配置将配置文件配置好后,访问已存在tomcat中的JSP文件时发现Apache提示URL不存在,然后检查了配置文件及tomcat工程部署,发现配置部署均无问题.尝试访问Apache静态页面,通过http单独访问tomcat均无问题.然后我猜会不会之前参考的网上的配置有问题,于是继续查询网上其它配置发现都差不多,尝试更改各种参数均没有解决.后来我仔细想了想出现这个问题的原因应该是Apache没有将HTTP请求分发给Tomca