如何確定某些代碼(serv-let或簡單類)是否在Google App Engine運行時(Java)上運行,以便人們可以決定是否利用應用程序引擎的特定庫或不?有沒有一些可靠的運行環境ID?確定應用程序引擎運行時(Java)上是否運行代碼
回答
您可以檢查com.google.appengine.runtime.version
屬性:如果設置
String appEngineVersion = System.getProperty("com.google.appengine.runtime.version");
,它的App Engine。
但我會考慮使用單獨的構建目標,以避免運行時開銷。
非常感謝你的回答。對於這兩種情況,我有兩個獨立的實現子類,並且它們非常小(兩行代碼總共200行)需要單獨構建。 – nsegae 2010-11-10 02:57:51
正如@Matthew Flaschen所說,您可以檢查系統屬性以確定GAE是否存在。 This link給出了細節。
如果沿着這條路線走下去,就需要構建應用程序,以便主代碼對GAE類沒有靜態依賴;即代碼中沒有對GAE包和類的引用或其他引用(除了GAE類名稱等字符串文字)。必須將所有依賴關係隔離到使用Class.forName(String)
後加載的代碼確定GAE是否存在。
這代表了不平凡的開銷:
- 你可能有一個額外的適配器接口落得和(至少)兩種實現了GAE和非GAE的情況。
- 您已經在啓動時動態加載相關類並通過Adapter接口調用了(較小)運行時開銷。
- 您的JAR文件的結果要大得多。
- 您現在必須在兩個平臺上進行測試。
另一方面,您確實有一個可以在GAE和非GAE環境下工作的JAR的潛在優勢。
還有另一種方法來做到這一點。這是在gaevfs的文檔很好地解釋瞭如何編寫可移植代碼:http://code.google.com/p/gaevfs/wiki/ApplicationPortability
您感興趣的是下面這行:
boolean isGoogleAppEngine = getServletContext().getServerInfo().contains("Google");
正如所解釋的here您可以檢查以下屬性:
String environment = System.getProperty(
"com.google.appengine.runtime.environment")
environment
在App Engine上運行時爲「生產」,在開發服務器上運行時爲「開發」。
類似於@Reza寫的,但有點清潔:
使用SystemProperty.environment.value()
得到「生產」在App Engine,而「發展」運行時,在開發服務器中運行時。
我看不出有什麼類型安全的解決方案在這裏所以在這裏,它是:
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
// The app is running on App Engine...
}
- 1. 確定應用程序是否在遠程系統上運行
- 2. 是否可以在谷歌應用程序引擎上運行並行應用程序(高性能計算)?
- 3. 在Google應用引擎上運行hadoop?
- 4. 確定iOS上收到通知時是否在前臺運行應用程序
- 5. 瓶在端口5000上運行谷歌應用程序引擎
- 6. 確定應用程序是否在後臺運行
- 7. 如何確定.NET代碼是否在ASP.NET進程中運行?
- 8. 確定代碼是否在Silverlight中運行的編程方法?
- 9. 通過應用程序運行代碼
- 10. 運行Android應用程序的代碼
- 11. 是否可以在Palm Z22上運行Java ME應用程序?
- 12. 錯誤的谷歌應用程序上運行的應用程序引擎
- 13. 運行Java應用程序
- 14. 確定程序是否在遠程桌面上運行
- 15. 谷歌應用程序引擎運行可執行文件
- 16. 確定僞代碼的運行時間
- 17. 試圖使用Java 1.6與應用程序引擎給運行時錯誤
- 18. 是否可以在Flex應用程序中運行Java程序?
- 19. 是否在GPU上運行opengl代碼?
- 20. 應用程序引擎任務是否可以計算其運行次數?
- 21. 從Java應用程序遠程運行R代碼
- 22. 確定進程是否正在運行?
- 23. 確定程序是否在Windows Server上運行
- 24. 如何在運行時確定應用程序是否使用UINavigationController?
- 25. 彈簧引導應用程序如何確定它是否在雲代工廠上運行?
- 26. 是否可以確定Adobe AIR應用程序是否從瀏覽器運行?
- 27. 是否有一個JavaScript引擎(運行時),不執行定時器接口
- 28. 如何確定我的mod_wsgi應用程序是否在HTTPS上運行?
- 29. ZK - 在谷歌應用程序引擎上運行發生超時
- 30. 運行外部代碼/應用程序的Android應用程序?
的可能的複製[如何在Java應用程序引擎檢查,如果我們開發工作站上(http://stackoverflow.com/問題/ 1574637 /如何在java-app-engine-in-check-in-java-app-engine-if-we-are-development-workstation) – 2016-05-09 01:28:25