0

アプリ エンジンのデータストアにもデータを格納するアプリケーションをデプロイしようとしました。データストアへのアクセスには objectify ライブラリを使用します。ローカルでは問題なく動作し、ローカルで管理データストアにアクセスできます。しかし、デプロイしようとすると、Eclipse は正常にデプロイされたと言っていますが、URL を試すと、NOT_FOUND というエラーが表示されます。ログ (アプリ エンジン) には、次の 2 つの警告があります。

com.google.api.server.spi.response.ServletResponseResultWriter getWriteObjectifyKeyAsStringModule: Exception while resolving Objectify Key#getString
java.lang.NoSuchMethodException: com.googlecode.objectify.Key.getString()
at com.google.appengine.runtime.Request.process-16096d3fb5bf337e(Request.java)
at java.lang.Class.getMethod(Class.java:216)
at com.google.api.server.spi.response.ServletResponseResultWriter.getWriteObjectifyKeyAsStringModule(ServletResponseResultWriter.java:154)
at com.google.api.server.spi.response.ServletResponseResultWriter.<init>(ServletResponseResultWriter.java:57)
at com.google.api.server.spi.SystemServiceServlet.getResponseWriter(SystemServiceServlet.java:127)
at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:454)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:461)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:703)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:338)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:330)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:458)
at java.lang.Thread.run(Thread.java:679)

com.google.api.server.spi.request.ServletRequestParamReader getObjectifyKeyModule: Exception while resolving Objectify Key#create
       java.lang.NoSuchMethodException: com.googlecode.objectify.Key.create(java.lang.String)
at com.google.appengine.runtime.Request.process-16096d3fb5bf337e(Request.java)
at java.lang.Class.getMethod(Class.java:216)
at com.google.api.server.spi.request.ServletRequestParamReader.getObjectifyKeyModule(ServletRequestParamReader.java:147)
at com.google.api.server.spi.request.ServletRequestParamReader.<init>(ServletRequestParamReader.java:131)
at com.google.api.server.spi.SystemServiceServlet.getParamReader(SystemServiceServlet.java:122)
at com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceServlet.java:140)
at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet.java:112)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:454)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:461)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:703)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:338)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:330)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:458)

よく似た 4 つの rpc メソッドがあるので、そのうちの 1 つの例を示します。

挨拶サービス:

@RemoteServiceRelativePath("registration")
public interface GreetingService extends RemoteService {
    String greetServer(String email, String pass, String rPass, int job ) throws IllegalArgumentException;

}

非同期:

public interface GreetingServiceAsync {
    void greetServer(String email, String pass, String rPass, int job, AsyncCallback<String> callback) throws IllegalArgumentException;
}

そしてImpl:

@SuppressWarnings("serial")
public class GreetingServiceImpl extends RemoteServiceServlet implements GreetingService {

    static {
        ObjectifyService.register(LoginUser.class);
    }

    public String greetServer(String email, String pass, String rPass, int job) throws IllegalArgumentException {

        Objectify ofy = ObjectifyService.begin();

        LoginUser user = new LoginUser();

        if (!FieldVerifier.isValidName(email)) {
            throw new IllegalArgumentException("Name must be at least 4 characters long");
        }
        if (!FieldVerifier.isValidPass(pass, rPass)) {
            throw new IllegalArgumentException("Password and Repeat Password do not match!");
        } else {
            user.setEmail(email);
            user.setPassword(pass);
            user.setJob(job);
            ofy.put(user);
        }

        return email;
    }
}

何か案は??

4

2 に答える 2

0

私も同じ問題を抱えていました。次に、war / WEB-INF / libにobjectify-3.0.jarがあることに気付きました。Key.getString()メソッドはバージョン3.1にのみ追加されたようです。したがって、objectify-3.0.jarをobjectify-3.1.jarに置き換えた後です。問題はなくなりました。

于 2013-03-08T02:36:51.207 に答える
0

何が問題なのかわかりませんでした。gwt と gae を再インストールし、新しいプロジェクトを作成したところ、デプロイできました。

于 2013-02-07T16:40:40.823 に答える