為了使得 App Engine能夠跨多個(gè)網(wǎng)絡(luò)服務(wù)器分配對(duì)于應(yīng)用程序的請(qǐng)求,并且防止應(yīng)用程序彼此干擾,請(qǐng)?jiān)谑芟拗频?#8220;沙盒”環(huán)境中運(yùn)行應(yīng)用程序。在這種環(huán)境中,該應(yīng)用程序可執(zhí)行代碼;可存儲(chǔ)和查詢(xún) App Engine 數(shù)據(jù)存儲(chǔ)區(qū)中的數(shù)據(jù);可使用 App Engine郵件、網(wǎng)址抓取和用戶(hù)服務(wù);可檢查用戶(hù)的網(wǎng)絡(luò)請(qǐng)求以及準(zhǔn)備響應(yīng)。
App Engine 應(yīng)用程序無(wú)法:
java.lang.ThreadGroup
或 java.lang.Thread
。這些限制也適用于利用線程的 JRE 類(lèi)。例如,應(yīng)用程序無(wú)法新建 java.util.concurrent.ThreadPoolExecutor
或 java.util.Timer
。應(yīng)用程序可以對(duì)當(dāng)前線程執(zhí)行操作,如 Thread.currentThread().dumpStack()
。Java 應(yīng)用程序無(wú)法使用任何用來(lái)寫(xiě)入文件系統(tǒng)的類(lèi),如 java.io.FileWriter
。應(yīng)用程序可以使用諸如 java.io.FileReader
的類(lèi)從文件系統(tǒng)中讀取自己的文件。應(yīng)用程序也可以通過(guò)例如 Class.getResource()
或 ServletContext.getResource()
來(lái)訪問(wèn)作為“資源”的自身文件。
只有視為“資源文件”的文件才可以由應(yīng)用程序通過(guò)文件系統(tǒng)訪問(wèn)。默認(rèn)情況下,WAR 中的所有文件都是“資源文件”。您可以使用 appengine-web.xml 文件將文件從該組中排除出去。
允許應(yīng)用程序?qū)ψ约旱念?lèi)進(jìn)行完全、無(wú)限制的反射訪問(wèn)。它可以查詢(xún)?nèi)魏嗡接谐蓡T,使用 java.lang.reflect.AccessibleObject.setAccessible()
,以及讀取/設(shè)置私有成員。
應(yīng)用程序還可以對(duì) JRE 和 API 類(lèi)(如 java.lang.String
和 javax.servlet.http.HttpServletRequest
)進(jìn)行反射。但是,它只可以訪問(wèn)這些類(lèi)的公共成員,而不可以訪問(wèn)受保護(hù)成員或私有成員。
應(yīng)用程序無(wú)法對(duì)不屬于自己的任何其他類(lèi)進(jìn)行反射,也無(wú)法使用 setAccessible()
方法來(lái)避開(kāi)這些限制。
App Engine 完全支持自定義類(lèi)載入。但是請(qǐng)注意,App Engine 將覆蓋所有的 ClassLoader,以將相同的權(quán)限分配給所有由應(yīng)用程序載入的類(lèi)。如果執(zhí)行自定義類(lèi)載入,在載入不信任的第三方代碼時(shí)要小心。
應(yīng)用程序可以使用 java.util.logging.Logger 將信息寫(xiě)入應(yīng)用程序日志。您可以使用管理控制臺(tái)查看和分析您的應(yīng)用程序的日志數(shù)據(jù),或使用 appcfg.sh request_logs 下載日志數(shù)據(jù)。管理控制臺(tái)可以識(shí)別 Logger
類(lèi)的日志級(jí)別,并且以交互方式顯示不同級(jí)別的消息。
servlet 寫(xiě)入標(biāo)準(zhǔn)輸出流 (System.out
) 和標(biāo)準(zhǔn)錯(cuò)誤流 (System.err
)中的所有內(nèi)容都由 App Engine捕捉,并記錄在應(yīng)用程序日志中。寫(xiě)入標(biāo)準(zhǔn)輸出流的行將以“INFO”級(jí)別記錄,寫(xiě)入標(biāo)準(zhǔn)錯(cuò)誤流的行將以“WARNING”級(jí)別記錄。任何記錄到輸出或錯(cuò)誤流的日志記錄框架(如 log4j)都適用。但為了細(xì)化對(duì)管理控制臺(tái)日志級(jí)別顯示的控制,日志記錄框架必須使用 java.util.logging
適配器。
App Engine Java SDK 在 appengine-java-sdk/config/user/
目錄中包含模板 logging.properties
文件。要使用它,請(qǐng)將該文件復(fù)制到 WEB-INF/classes
目錄(或 WAR 中的其他位置),然后將系統(tǒng)屬性 java.util.logging.config.file
復(fù)制到 "WEB-INF/classes/logging.properties"
(或與應(yīng)用程序根相關(guān)的任何所選路徑)。您可以在 appengine-web.xml
文件中設(shè)置系統(tǒng)屬性
聯(lián)系客服