Linux Headless mode

1.什麼是Headless mode? 
Headless模式是系統的一種配置模式。在該模式下,系統缺少了顯示設備、鍵盤或鼠標。
 
2.何時使用和headless mode?
Headless模式雖然不是我們願意見到的,但事實上我們卻常常需要在該模式下工作,尤其是服務器端程序開發者。因爲服務器(如提供Web服務的主機)往往可能缺少前述設備,但又需要使用他們提供的功能,生成相應的數據,以提供給客戶端(如瀏覽器所在的配有相關的顯示設備、鍵盤和鼠標的主機)。
 
3.如何使用和Headless mode?
一般是在程序開始激活headless模式,告訴程序,現在你要工作在Headless mode下,就不要指望硬件幫忙了,你得自力更生,依靠系統的計算能力模擬出這些特性來:

System.setProperty("java.awt.headless","true");


在Web開發中使用驗證碼時可能遇到的問題:

java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment


解決方法:

給Tomcat的“CATALINA_OPTS”這個環境變量添加的一個JVM虛擬機參數:-Djava.awt.headless=true

在Tomcat7的catalina.sh文件中我們可以看到如下建議:


推薦我們在bin目錄下重新建立一個setenv.sh 腳本文件,將環境變量的自定義設置保存在其中。

>touch setenv.sh

>vi setenv.sh

編寫如下內容並保存:

#!/bin/sh

#filename:setenv.sh

CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true"

重新啓動

./startup.sh

如何判斷這個腳本文件setenv.sh是否被執行:


這段shell腳本保證如果腳本文件可讀那麼將執行之


如何判斷-Djava.awt.headless=true是否生效

查看所有的JVM進程信息

>jps -l


5530就是tomcat運行的JVM進程ID

查看這個進程的參數信息,並從信息中篩選headless字符串

>jinfo 5530 |grep headless


發佈了197 篇原創文章 · 獲贊 35 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章