0

私は、Google の AppEngine またはファイル ストレージを備えた基本サーバーのいずれかで実行する Web アプリを開発しています (そのようにとどまらない可能性がありますが、それが現在の状態です)。

AppEngine サービス (最も重要なのはブロブストア) が実行時に利用可能かどうかを検出するにはどうすればよいですか?

次のようなコードを使用してみました。

    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 のブロブストアを使用しようとすると、次のように失敗します。

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 に答える