您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

开发使用AppEngine数据库的Java应用程序

开发使用AppEngine数据库的Java应用程序

我找到了一种方法,但是有点俗气。

首先,将以下帮助程序类添加到项目中:

// other imports
import com.google.appengine.tools.development.DevAppServerMain;

public class DevServer {
    public static void launch(final String[] args) {
        Logger logger = Logger.getLogger("");
        logger.info("Launching AppEngine server...");
        Thread server = new Thread() {
            @Override
            public void run() {
                try {
                    DevAppServerMain.main(args);  // run DevAppServer
                } catch (Exception e) { e.printStackTrace(); }
            }
        };
        server.setDaemon(true);  // shut down server when rest of app completes
        server.start();          // run server in separate thread
        URLConnection cxn;
        try {
            cxn = new URL("http://localhost:8888").openConnection();
        } catch (IOException e) { return; }  // should never happen
        boolean running = false;
        while (!running) {  // maybe add timeout in case server fails to load
            try {
                cxn.connect();  // try to connect to server
                running = true;
                // Maybe limit rate with a Thread.sleep(...) here
            } catch (Exception e) {}
        }
        logger.info("Server running.");
    }
}

然后,将以下行添加到条目类:

public static void main(String[] args) {
    DevServer.launch(args);  // launch AppEngine Dev Server (blocks until ready)
    // Do everything else
}

最后,创建适当的运行配置:

现在,如果您启动此运行配置,它将首先启动AppEngine服务器,然后继续main(...)在入口类中继续其余方法。由于服务器线程被标记为守护线程,因此其他代码main(...)完成后,应用程序将正常退出,并关闭服务器。

不知道这是否是最优雅的解决方案,但它是否有效。如果其他人有没有DevServer帮助类的方法来实现此目的,请发布它!

此外,除了像上面我一样使用URL连接ping它之外,可能还有一种更优雅的方法来检查AppEngine服务器是否正在运行。

AppEngine开发服务器会自行注册URLStreamHandlerFactory自动映射Http(s)URLConnections到AppEngine的URL提取基础结构。这意味着如果您随后HttpURLConnections在客户端代码中使用url- fetch功能,则您会抱怨错误。幸运的是,可以通过以下两种方式解决此问题:引用Java的默认httpURLStreamHandler

java 2022/1/1 18:42:20 有342人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶