使用已部署的数据库在localhost中调试

时间:2013-11-26 15:52:30

标签: google-app-engine gwt

我使用Google Eclipse插件,使用GWT + GAE / Java开发网页。 我想在localhost中使用本地GWT代码进行调试,但是想在我实际部署的网页中使用该数据库。

有可能吗?

2 个答案:

答案 0 :(得分:2)

是的,您可以使用Google App Engine Remote API连接到您的生产数据库。你可以从Gealyk Remote Connector获得灵感,这是完全相同的。例如,检查Remote Connector Filter源代码。基本上你需要创建过滤器

  1. 检查是否已安装Remote API,以及是否使用给定凭据安装它
  2. 使用chain.doFilter(request, response)
  3. 继续使用您的应用程序代码
  4. 执行完成后卸载Remote API Installer
  5. 请注意,根据您的互联网连接,应用程序可能会很慢,有时会超时。

答案 1 :(得分:0)

过滤器无法与RemoteServiceServlet一起使用,因此请将这些添加到RemoteServiceServlet:

RemoteApiOptions options;
RemoteApiInstaller installer;

@Override
protected void onBeforeRequestDeserialized(String serializedRequest) {
    if (getThreadLocalRequest().getRequestURL().indexOf("127.0.0.1") != -1) {
        if (options == null) {
            options = new RemoteApiOptions().server("example.appspot.com", 443).credentials("username",
                    "password");
            installer = new RemoteApiInstaller();
            try {
                installer.install(options);
                options.reuseCredentials("username", installer.serializeCredentials());
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
        else {
            installer = new RemoteApiInstaller();
            try {
                installer.install(options);
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

@Override
protected void onAfterResponseSerialized(String serializedResponse) {
    if (getThreadLocalRequest().getRequestURL().indexOf("127.0.0.1") != -1)
        installer.uninstall();
}