陈科肇
============
最近碰到一个奇葩的问题:
前提 -- Linux 环境下;Oracle数据库已经搭建完成;Tomcat也搭建完成并部署了应用程序;
原因:
我在win7下在tomcat里部署了与Linux部署的是同一个应用程序,然后访问了Linux里的Oracle数据库,这个测试是成功了,应用程序能正常运行。
然而当我转到Linux环境下Tomcat部署应用程序时,应用程序的登录页面是可以正常访问的,因为这时还需要连接数据库,所以能正常运行。但一到了访问数据库时,就报错,我查看了Tomcat的log,发现如下:
Hibernate:
select
systemid
from
hidp_sys_is
where
systemcode=?
AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@5572a255)
LogAbandoned: false
RemoveAbandoned: true
RemoveAbandonedTimeout: 600
2015-02-05 16:23:16 [ http-bio-8080-exec-9:18957 ] - [ ERROR ] Cannot create PoolableConnectionFactory (The Network Adapter could not establish the connection)
我就纳闷,怎么就访问不了数据库了,之前在Windows时不就好好的吗,真是奇葩!
=================================================================
解决方案:
我想想一会,突然想起了,之前配置Oracle实例的时候,发现localhost在Linux下是没用的。
没错,问题就是卡在这。
然后就把你配置的“数据源”时写的localhost改为你本机的IP地址,即可正常访问数据库。
========
注:在上面所描述的问题,你可以使用IP地址进行设定,如果你想使用localhost设置定位本机IP,请往下看
这也就是关于,在Linux 下,怎么获取本地主机IP的问题了!
Linux修改localname:
首先使用命令查看localname的指南: #man localname,看完指南你就可以知道个大概意思了!
可以看到有一段文字的描述:
FILES
/etc/hosts /etc/sysconfig/network
NOTE
note that hostname doesn't change anything permanently.after reboot original names from /etc/hosts are used again
这就是表示localname要配置的配置文件路径位置及/etc/hosts描述。
方法一:
使用#hostname修改临时的主机名,但操作系统重启之后,就恢复原样了!
# hostname,该命令是查看主机名;
# hostname -i,该命令是查看主机名对应的IP地址;
方法二:
永久修改主机名,修改配置文件
修改/etc/sysconfig/network,才能有效地修改主机名;
/etc/hosts,hostname命令读取这个配置文件;