9

Google Appengine Eclipse 플러그인을 사용하여 엔드 포인트를 생성하는 동안 이상한 동작이 발생합니다. 엔드 포인트 클래스에 20 개 이상의 엔드 포인트 메소드가 있습니다. 내가 처음 안드로이드를위한 엔드 포인트를 생성했을 때 내가 문제 해결의 방법으로 오류를Google Eclipse Plugin을 사용하는 Google Cloud Endpoints에서의 메소드 간섭

Generating Cloud Endpoint has encountered errors and is not complete 

을 얻을, 나는 범인을 찾기 위해 모든 방법을 주석 처리합니다. 내가 찾은 것은 다소 당황 스럽다. 16 번째 방법의 주석 처리를 제거한 후 오류가 다시 발생합니다. 서로 간섭하는 두 가지 방법이 있습니다! 하나 또는 다른 주석을 주석 처리하면 끝점이 올바르게 생성됩니다. 하지만 둘 다 주석 처리를하지 않으면 위의 오류가 발생합니다.

이 간섭을 일으킬 수있는 원인을 아는 사람이 있습니까?

@ApiMethod(name = "getOrangers", httpMethod = HttpMethod.POST) 
public FaceList getOrangers(UserRequest request) throws NotFoundException { 
    FaceList list = new FaceList(); 
    return list; 
} 

@ApiMethod(name = "getMangoers", httpMethod = HttpMethod.POST) 
public FaceList getMangoers(UserRequest request) throws NotFoundException { 
    FaceList list = new FaceList(); 
    return list; 
} 

위의 그림과 같이 스텁으로 메소드를 편집했지만 여전히 동일한 간섭 문제가 발생합니다. 당신이 그 성가신 undescriptive 메시지와 함께 오류가 발생하는 경우

답변

33

첫째, :

생성 클라우드 엔드 포인트에 오류가 발생하여 아래에 당신이 오류를 확인해야합니다 로그인

을 완료하지 않습니다 더 많은 정보를 얻으려면 Window -> Show View -> Error Log.


나는 그렇게했다, 나는 실제 예외가 있음을 발견

java.lang.IllegalArgumentException: 
    Multiple methods with same rest path "POST facelist": "getOrangers" and "getMangoers" 

그래서, 문제가 당신이 방법은 동일한 경로를 가지고있다!

@ApiMethod(name="getOrangers", path="get_oranges", httpMethod=HttpMethod.POST) 
public FaceList getOrangers(UserRequest request) throws NotFoundException { 
    //... 
} 

@ApiMethod(name="getMangoers", path="get_mangoers", httpMethod=HttpMethod.POST) 
public FaceList getMangoers(UserRequest request) throws NotFoundException { 
    //... 
} 

참고 : 명시 적 방법에 대한 경로를 추가하면 문제를 해결할 것입니다 자동, GPE 그들을 생성하는 당신의 방법에 대한 경로를 설정하지 않은 것처럼. GPE 경로를 Google Cloud Endpoints Documentation에 알려져 것과 일치하지 않는 HTTP 메소드 (POST) 및 리턴 값 (facelist)을 형성하여, 2 개 개의 방법에 대해 동일한 경로를 생성하는 것으로 보인다

은 "경로 :.이 방법에 액세스하는 데 사용할 수있는 당신이 을 설정하지 않으면 URI 경로, 기본 경로는 자바 메소드 이름에 따라 사용됩니다."

경로가 메소드 이름을 사용하여 자동으로 생성되며,이 경우에는 두 메소드가 분명히 다른 이름을 가지므로 오류가 발생하지 않는다고 말합니다. 그래서 그것은 종점에서 버그 (많은 다른 것들처럼) 여야합니다.

+0

와우! 귀하의 회신이 많이 오기를 바랍니다! 최대 득표 수. 'Window -> Show View -> Error Log'만으로 놀라운 결과를 얻었습니다! 정말 고맙습니다! +1하고 확인하십시오! 내가 그 질문을했을 때 나는 실제로 대답을 얻을 희망이 없었다.나는 완전히 붙어서 어쨌든 물었다. – learner

+0

@learner 문제는 없지만 도움이되었습니다. 나는 이미 트릭 *을 제안했다. (http://stackoverflow.com/questions/15945554/can-i-return-a-generic-in-google-cloud-end-point/15946690#15946690) 실제로 나는 그것을 제안한 [at] bossylobster였습니다. (http://stackoverflow.com/questions/15684837/eclipse-doesnt-generate-google-cloud-endpoint-client-library/15684863#15684863) upvotes에 관해서는 그런 태그는 너무 많은 추종자가 없으므로 그렇게 생각하지 않습니다. – MikO

+0

보완 : https://cloud.google.com/appengine/docs/java/endpoints/paramreturn_types#path_parameters – GFPF

관련 문제