最近不知道怎麼回事,伺服器上的程式突然出問題了,有些頁面無法正常訪問了,或者只顯示一半,以前也遇到過這種情況,應該是在讀取資料的時候,出現了問題,繼而聯想到這樣發布其實還是存在一定隱患的。
當初,為了使使用者方便,我直接將tomcat註冊成了Windows服務,並且將啟動類型設定為“自動啟動”,這樣即使使用者因為斷電或其它原因,重啟了伺服器,程式也能自動起,不需要使用者再去手工啟動。直到今天這個問題暴露,我才意識到一個大問題:程式啟動時,需要串連資料庫,但是資料庫服務往往啟動的比較慢,因此如果在資料庫服務完全啟動之前,應用程式服務已經啟動完成,那麼就會造成錯誤,出現今天這種局面。
google了半天,採用以下解決方案:
Java代碼
- sc config tomcatAPP depend= OracleServiceOPB/OracleServiceORCL
sc config tomcatAPP depend= OracleServiceOPB/OracleServiceORCL
就是說,將tomcat服務,設定成為依賴這兩個資料庫服務,即這兩個資料庫執行個體啟動之後,才會啟動tomcat。
這裡需要注意,“tomcatAPP”這個服務名,並不是在服務列表裡看到的名字,那個名字並不準確,看:
這裡要寫“服務名”,而不是“顯示名”,或者最簡單,到註冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services中去看真實的服務名。另外,sc命令的格式也要注意,"depend="是一個整體的命令參數,後面要跟一個空格,然後再跟依賴的服務名稱,多個服務之間用/隔開,服務名上沒有引號。
完成這條命令之後,按理說就應該可以了,我們可以看到,tomcat服務和oracle服務之間,也確實建立了依賴關係:
但是令人十分怨念的是,重啟之後,問題居然依舊,靠!!再google之。等解決了再補上~~
總結一下全部的步驟,也期待高人給指點一下:
1,開啟CMD。
2,進入TOMCAT_HOME/bin目錄下。
3,輸入命令:"service install tomcatAPP",安裝服務。卸載服務的命令是:"service reomve tomcatAPP"
。4,設定服務為自動啟動,輸入命令:"sc config tomcatAPP start= auto"。
5,設定服務依賴關係,輸入命令:"sc config tomcatAPP depend= OracleServiceOPB/OracleServiceORCL"
6,重啟機器,看看有沒有效果。