0

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

1 回答 1

0

您可以使用一些东西。

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

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

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

于 2013-05-13T16:02:20.853 回答