Google app engine 检测AppEngine与基本服务器

Google app engine 检测AppEngine与基本服务器,google-app-engine,classloader,blobstore,Google App Engine,Classloader,Blobstore,我正在开发一个web应用程序,可以在Google的AppEngine上运行,也可以在带有文件存储的基本服务器上运行(可能不会一直这样,但这是当前的状态) 如何检测AppEngine服务(最重要的是blobstore)在运行时是否可用 我尝试过使用如下代码: try{ Class.forName( "com.google.appengine.api.blobstore.BlobstoreServiceFactory" ); logger.info( "Usi

我正在开发一个web应用程序,可以在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();
    }
com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'blobstore' or call 'CreateUploadURL()' was not found.
但它不起作用,因为BlobstoreServiceFactory在编译时可用。如果尝试在没有GAE服务器的情况下使用GAE的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();
    }
com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'blobstore' or call 'CreateUploadURL()' was not found.

有一些东西你可以用

您可以检查运行时环境以检查App Engine的运行版本。查看运行时文档中关于“环境”的部分:

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


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

谢谢。即使我最终没有这样做,我也会接受你的答案:我使用了一个服务器本地配置文件来指定它。