2013-05-13 1 views
0

Google AppEngine 또는 파일 저장소가있는 기본 서버에서 실행되도록 웹 앱을 개발 중입니다.AppEngine vs 기본 서버를 감지합니다.

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이 컴파일시에 사용할 수 있기 때문에 작동하지 않습니다 :

나는 다음과 같은 코드를 사용하여 시도했다.

com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'blobstore' or call 'CreateUploadURL()' was not found. 

답변

0

사용할 수있는 몇 가지있다 : 어떤 경우 GAE 서버없이 GAE의 Blob 저장소를 사용하려고 실패하면 다음과 같다.

런타임 환경을 확인하여 App Engine의 실행중인 버전을 확인할 수 있습니다. 런타임 환경의 "The Environment"섹션을 확인하십시오 : https://developers.google.com/appengine/docs/java/runtime

당신도하고있는 일을 할 수도 있고, 클래스의 존재를 확인하는 대신 SDK API 함수를 사용하는 호출을 시도 할 수도 있습니다) 예외를 catch하십시오. 추가 RPC를 작성 중이므로 성능에 부정적인 영향을 줄 수 있습니다.

GAE 관련 요청 헤더의 요청 헤더도 확인할 수 있습니다.

+0

감사합니다. 내가이 일을 끝내지는 않았지만 당신의 대답을 받아 들일 것입니다 : 대신 서버 로컬 설정 파일을 사용하여 대신 지정했습니다. – dhardy