如何确定某些代码(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