一、判斷AdminServer.lok被其進程鎖死
>weblogic.management.ManagementException: Unable to obtain lock on *******/AdminServer.lok. Server may already be running
由于Weblogic的域以單例形式存在,因此當執行startWeblogic.cmd或stopWeblogic.sh時出現上述信息,則表示該域已被啟動或其他進程鎖定了AdminServer.lok文件導致無法啟動該域。
此時若執行stopWeblogic.cmd或stopWeblogic.sh時報異常,則表示AdminServer.lok文件被其他進程鎖死了。
二、解決辦法
辦法只有一個,就是殺死鎖定AdminServier.lok的進程。linux和windows下的操作有所不同,具體如下:
1. Linux下
通過 fuser -u 文件名 找出占用文件的進程PID,然后殺死即可。
fuser -u *******/AdminServer.lok *******/AdminServer.lok 1800958 kill 1800958
2. Window下
暫時未找到類似Linux下的 fuser -u 文件名 這么好用的命令,于是只能笨笨地走下面的步驟了。
2.1 netstat -aon | findstr 域端口號 ,通過域的端口號找進程PID,若找到則殺死進程即可,否則進行步驟2.2
2.2. 由于一般都是java.exe占用AdminServer.lok,所以通過 wmic process where caption="java.exe" get handle 獲取PID,并殺死即可。
三、出現該情況的原因
據我現階段實踐所知,導致上述問題的原因為。
1. 使用其他程序沒有先調用stopWeblogic.cmd,而是直接強制殺死已啟動的域進程時,就會出現該情況
四、總結
本章是實踐經驗的記錄,解決方案和問題原因仍不全面,希望各位可以補充,多謝各位支持。
尊重原創,轉載請注明來自:http://www.cnblogs.com/fsjohnhuang/p/3972205.html 肥仔John
五、參考
http://blog.sina.com.cn/s/blog_5c0172280100udk6.html
文章列表