解決辦法有三種:
1、安裝虛擬Xwindows
2、使用JDK 1.4的headless mode(-Djava.awt.headless=true)
3、使用PJA(Pure Java AWT)
第一種方法一年前就試過了,可是我下載的Xvfb在Solaris下安裝時總是報錯,始終沒有成功。
第二種方法最簡單,這次我們就採用它,將-Djava.awt.headless=true加入到weblogic的啟動指令碼中,類似於下面的語句:
java $JAVA_OPTIONS -classpath $CLASSPATH -Djava.awt.headless=true -Dweblogic.Domain=mydomain -Dweblogic.Name=myserver -Dbea.home=/wls/wlsHome -Dweblogic.management.password=$WLS_PW -Dweblogic.ProductionModeEnabled=$STARTMODE -Djava.security.policy==/wls/wlsHome/wlserver6.1/lib/weblogic.policy
weblogic.Server
看來JDK1.4比起JDK1.3來又強大很多,可能不止我一個遇到類似的問題。第二種方法的缺點是需要JDK 1.4版本。
第三種方法中的PJA也是一年前就聽說過的,沒有仔細地研究,之所以叫做Pure Java AWT就是因為它重載了JDK AWT中依賴於作業系統的畫圖用的底層函數,使畫圖完全依賴於java程式本身,而與作業系統無關,自然也不再需要X-Windows的支援,缺點是配置起來比較麻煩,PJA因為跟作業系統無關所以效能比傳統的AWT差一些。
我猜想第二種方法-Djava.awt.headless=true的原理應該和PJA相同,就是說JDK 1.4中包含了類似PJA的一些API,java.awt.headless參數就是開關,負責在這些API和作業系統的API之間選擇,-Djava.awt.headless=true就選擇JDK 1.4中的API,不再叫用作業系統的API。
我用的是weblogic8.1.5,在域所在的目錄,找到setDomainEnv.sh檔案,編輯JAVA_OPTIONS="${JAVA_OPTIONS} -da" 為 JAVA_OPTIONS="${JAVA_OPTIONS} -da -Djava.awt.headless=true"後重啟服務即可。有些版本的weblogic版本在Linux上安裝後,沒有setDomainEnv.sh,則修改startWeblogic.sh的配置。
修改 startWeblogic.sh 檔案
${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dweblogic.Name=${SERVER_NAME} -Dweblogic.ProductionModeEnabled=${PRODUCTION_MODE} -Djava.awt.headless=true -Djava.security.policy="${WL_HOME}/server/lib/weblogic.policy" weblogic.ServerVA_HOME}/bin/java
${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dweblogic.Name=${SERVER_NAME} -Dweblogic.ProductionModeEnabled=${PRODUCTION_MODE} -Djava.awt.headless=true -Djava.security.policy="${WL_HOME}/server/lib/weblogic.policy" weblogic.Server
上面位置裡添加 -Djava.awt.headless=true
-Djava.awt.headless=true 前後都要空格