事情背景:
由於某個項目原因,需要在2個域的startWebLogic.cmd文件加入如下設置
set JAVA_OPTIONS=%JAVA_OPTIONS% -javaagent:"path\xx.jar"
同樣的設置,一個域成功,一個域失敗。失敗的域在啟動weblogic時發現jar包無加載成功,同時亦無日志輸出報錯。
原因尋找思路:
1、首先添加確保語句正確無誤
2、從startWebLogic.cmd文件下手,一個一個調用看,看看那里出錯。
@REM Call setDomainEnv here.
set JAVA_OPTIONS=%JAVA_OPTIONS% -javaagent:"path\xx.jar" --添加的語句,已確保無誤
set DOMAIN_HOME=f:\Oracle\Middleware\user_projects\domains\base_domain
for %%i in ("%DOMAIN_HOME%") do set DOMAIN_HOME=%%~fsi
call "%DOMAIN_HOME%\bin\setDomainEnv.cmd" %*
set SAVE_JAVA_OPTIONS=%JAVA_OPTIONS%
set SAVE_CLASSPATH=%CLASSPATH%
看着紅色的語句是要讀取setDomainEnv.cmd文件的配置,翻查到該文件,並發現以下語句:
set JAVA_OPTIONS= -DKF_APP_INST=F:\test\Test_Server\
問題已經浮出水面了:
按照執行順序來看,我們在startWebLogic.cmd里先設置JAVA_OPTIONS的值,然后執行到setDomainEnv.cmd文件時,又設置一遍,導致之前設置的值被覆蓋掉了,所以沒有生效。
解決方法:
1、在setDomainEnv.cmd設置的語句加上=%JAVA_OPTIONS%,即:
set JAVA_OPTIONS==%JAVA_OPTIONS% -DKF_APP_INST=F:\test\Test_Server\
加上%JAVA_OPTIONS%簡單來說就是累加的意思,代表之前已設置的值。
2、改變startWebLogic.cmd文件里設置JAVA_OPTIONS值的位置,將set JAVA_OPTIONS=%JAVA_OPTIONS% -javaagent:"path\xx.jar" 語句放到call "%DOMAIN_HOME%\bin\setDomainEnv.cmd" %*語句的后面即可。
建議:
1、set JAVA_OPTIONS的值的時候都要加上%JAVA_OPTIONS%,以防覆蓋掉別人設置的值,這不單只set JAVA_OPTIONS,設置其他值也同理。
2、在設置這些值的時候最好能做好記錄,以免他人設置時能知道前人的設置。