私は、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.