1

Google App Engine에서 내 프로젝트 용 REST API를 설정하려고합니다. 그러나 API를 호출하면 클라이언트에 오류 500이 반환되고 GAE의 로그에는 다음 스택 추적이 표시됩니다.GAE 끝점 예외 : 서비스 이름이 일치하지 않습니다.

스택 추적 :

com.google.apphosting.runtime.jetty9.JettyLogger warn: /_ah/api/handler/v1/fetchlatest/all (JettyLogger.java:29) 
java.lang.IllegalArgumentException: service name mismatch 
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122) 
    at com.google.api.control.aggregator.CheckRequestAggregator.check(CheckRequestAggregator.java:223) 
    at com.google.api.control.Client.check(Client.java:177) 
    at com.google.api.control.ControlFilter.doFilter(ControlFilter.java:249) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) 
    at com.google.api.control.ConfigFilter.doFilter(ConfigFilter.java:120) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) 
    at com.googlecode.objectify.ObjectifyFilter.doFilter(ObjectifyFilter.java:48) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) 
    at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) 
    at com.google.apphosting.runtime.jetty9.SaveSessionFilter.doFilter(SaveSessionFilter.java:37) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) 
    at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:48) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
    at com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:297) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) 
    at org.eclipse.jetty.server.Server.handle(Server.java:534) 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) 
    at com.google.apphosting.runtime.jetty9.RpcConnection.handle(RpcConnection.java:202) 
    at com.google.apphosting.runtime.jetty9.RpcConnector.serviceRequest(RpcConnector.java:81) 
    at com.google.apphosting.runtime.jetty9.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:108) 
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchServletRequest(JavaRuntime.java:680) 
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchRequest(JavaRuntime.java:642) 
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:612) 
    at com.google.apphosting.runtime.JavaRuntime$NullSandboxRequestRunnable.run(JavaRuntime.java:806) 
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:274) 
    at java.lang.Thread.run(Thread.java:745) 

나는 문제가 무엇인지 모르는,하지만 스택 추적에서 추측, 그것은있을 수 때문에 객관화의 필터가 web.xml의 구성 방법과 같은, 모든 요청이 Objectify를 먼저 수행합니까? 다른 요청은 올바른 서블릿으로 라우트되기 때문에 이것이 가능하지는 않습니다.

객관화 필터 :

<filter> 
    <filter-name>ObjectifyFilter</filter-name> 
    <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>ObjectifyFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

나는 무슨 일이 일어나는지 전혀 모르지만 Objectify와는 아무런 관련이 없습니다. – stickfigure

+0

참으로 Objectify가 아닙니다. web.xml에 api-controller 매개 변수 인 endpoints에 대한 잘못된 값이 잘못 구성 된 것으로 보입니다. – redflour

답변

0

web.xml 파일이 잘못된 INIT-PARAM (대신 endpoints.serviceName의 endpoint.serviceName)에 포함 된 것으로 보인다. 그리고 그것을 없애기 위해, 재산의 param-value조차도 잘못되었습니다. 틀림없이, 동료 리뷰에서 잡혔어야하는 것이 무엇인지 알아내는 것이 예상보다 오래 걸렸습니다.