检测AppEngine与基本服务器

时间:2013-05-13 13:57:46

标签: google-app-engine classloader blobstore

我正在开发一个网络应用程序,可以在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.

1 个答案:

答案 0 :(得分:0)

你可以使用一些东西。

您可以检查运行时环境以检查App Engine的运行版本。请查看运行时文档中的“环境”部分:https://developers.google.com/appengine/docs/java/runtime

您也可以执行您正在执行的操作,并尝试进行使用SDK API函数的调用(而不仅仅是检查是否存在类)并捕获异常。这可能会对性能产生负面影响,因为您正在制作额外的RPC。

您也可以检查GAE特定请求标头的请求标头。