1. 程式人生 > >Linux 應用程式應用 localhost 的問題

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,看看是什麼結果 額。。。問題沒解決 待續...