1

objectify 4를 사용하여 HRD 데이터 스토어에 쓰고 있습니다. 모든 것은 단위 테스트에서 잘 작동하고 devserver 또는 생산에서 응용 프로그램을 실행합니다.원격 API, Objectify 및 DevServer가 트랜잭션을 좋아하지 않습니까?

그러나 REMOTE API를 사용하여 devserver 데이터 스토어에 연결하려고하면 코드가 XG 트랜잭션을 시작할 때 오류가 발생합니다. Remote API로 연결하는 동안 HRD가 사용 가능하지 않다고 생각하는 것 같습니다. 이것은 내가 연결하는 방법입니다 ...

public static void main(String[] args) { 
    RemoteApiOptions options = new RemoteApiOptions().server("localhost", 8888).credentials("foo", "bar"); 
    //options = options. 
    RemoteApiInstaller installer = new RemoteApiInstaller(); 
    StoredUser storedUser = null; 
    try { 
     installer.install(options); 
     ObjectifyInitializer.register(); 
     storedUser = new StoredUserDao().loadStoredUser(<KEY>); 
     log.info("found user : " + storedUser.getEmail()); 

     // !!! ERROR !!! 
     new SomeOtherDao().doSomeDataManipulationInTransaction(); 

    } catch (Throwable e) { 
     e.printStackTrace(); 
    } finally { 
     ObjectifyFilter.complete(); 
     installer.uninstall(); 
    } 
} 

새로운 SomeOtherDao() doSomeDataManipulationInTransaction은() 내가 던진 오류가 여러 개체 그룹에 거래를 시작

:. 여러 엔티티 그룹에 대한

거래에만 허용 높은 복제 응용 프로그램에서

어떻게하면 원격 API가 HRD 환경이라는 것을 알 수 있습니까?

답변

0

https://developers.google.com/appengine/docs/python/tools/uploadingdata#Python_Setting_up_remote_api 내가 원격 API를 사용하여 0과 거래 설정 '적용되지 않은 작업 비율을'있었다 devserver가 HRD가 아닌 마스터/슬레이브로 실행중인 것처럼 실패했습니다. '적용되지 않은 직업 비율'을 0보다 높게 설정하면 문제가 해결됩니다.

enter image description here

+0

트랜잭션에서 단일 엔터티 만 사용했지만 동일한 문제가있었습니다. '적용되지 않은 직업 비율'을 올리면 해결됩니다. 감사! 0을 유지하면서 문제를 피할 수있는 방법을 찾았습니까? – jonasjuss

0

응용 프로그램이 높은 복제 데이터 저장소를 사용하는 경우, 명시 적 의 ~ 접두사를 추가 (또는 전자 ~ 응용 프로그램이 유럽 연합 (EU)에있는 경우 접두사) 응용 프로그램 ID

에 Java 버전에 대한

에서 appengine-web.xml을응용 프로그램 태그에이 접두사를 추가 한 다음 버전 갔지을 배포 당신이 remote_api 서블릿

예를 활성화 한 재

<application>myappid</application> 

이 될

<application>s~myappid</application> 

출처 :

+0

작동하지 않았습니다. 적용되지 않은 작업 비율이 0으로 설정되어 있었고,이 값을 0보다 높게 설정하면 dev 서버에서 트랜잭션이 다시 작동합니다. – koma

관련 문제