我正在开发一个网络应用程序,可以在Google的AppEngine或带有文件存储的基本服务器上运行(它可能不会保持这种状态,但这是当前状态)。
如何检测AppEngine服务(最重要的是blobstore)是否在运行时可用?
我尝试过使用以下代码:
try{
Class.forName( "com.google.appengine.api.blobstore.BlobstoreServiceFactory" );
logger.info( "Using GAE blobstore backend" );
return new GAEBlobService();
}catch( ClassNotFoundException e ){
logger.info( "Using filesystem-based backend" );
return new FileBlobService();
}
但它不起作用,因为BlobstoreServiceFactory在编译时可用。如果在没有GAE服务器的情况下尝试使用GAE的blobstore,会出现以下情况:
com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'blobstore' or call 'CreateUploadURL()' was not found.
答案 0 :(得分:0)
你可以使用一些东西。
您可以检查运行时环境以检查App Engine的运行版本。请查看运行时文档中的“环境”部分:https://developers.google.com/appengine/docs/java/runtime
您也可以执行您正在执行的操作,并尝试进行使用SDK API函数的调用(而不仅仅是检查是否存在类)并捕获异常。这可能会对性能产生负面影响,因为您正在制作额外的RPC。
您也可以检查GAE特定请求标头的请求标头。