Linux 應用程式應用 localhost 的問題
陳科肇
============
最近碰到一個奇葩的問題:
前提 -- Linux 環境下;Oracle資料庫已經搭建完成;Tomcat也搭建完成並部署了應用程式;
原因:
我在win7下在tomcat裡部署了與Linux部署的是同一個應用程式,然後訪問了Linux裡的Oracle資料庫,這個測試是成功了,應用程式能正常執行。
然而當我轉到Linux環境下Tomcat部署應用程式時,應用程式的登入頁面是可以正常訪問的,因為這時還需要連線資料庫,所以能正常執行。但一到了訪問資料庫時,就報錯,我查看了Tomcat的log,發現如下:
Hibernate:
select
systemid
from
hidp_sys_is
where
systemcode=?
AbandonedObjectPool is used ([email protected])
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命令讀取這個配置檔案;
直接修改/etc/hosts檔案,系統本身用到主機名的地方不會變化,所以 /etc/hosts 是網路中用的,/etc/sysconfig/network是本機起作用 ============== 好了,接下我們配置主機對應的IP地址吧。 開啟配置檔案 ,# gedit /etc/hosts,可以看到初始的檔案是這樣的:上面大概可分為三個部分:網路IP地址 主機名 域名,每部分用空格隔開;(猜想-後面還有,估計是可以一個IP可以對應多個主機,到時實踐一下) 嗯,我們就按照這個格式把# hostname查詢出來的主機名對應上應有的網路IP地址吧。 注:在你主機未對應網路IP時,你執行# hostname -i,結果是顯示“未知主機”的
再執行以下命令,看出結果了吧
=================== 接下來,我們再測試下把WEB APP配置的“資料來源”的IP地址改回localhost,看看是什麼結果 額。。。問題沒解決 待續...