重启后Sparkjava静态文件404

时间:2017-10-26 14:39:24

标签: java spark-java

我使用spark java作为小型Web服务器。在我的主要课程中,我设置了我需要的东西:

public static void startServer()
{
    if (!starting && !stopping)
    {
        starting = true;

        // Initialize server
        port(port);
        secure(keystoreLocation, keystorePass, null, null);

        // Register all routes
        initRoutes();

        // Start server
        init();

        starting = false;
    }
}

在initRoutes中,我有:

public static void initRoutes()
{
    Spark.staticFileLocation("/public");
}

当我运行该代码时,我能够导航到localhost并查看我的index.html页面的内容,该页面位于src / main / resources / public中。我甚至在日志中看到了这一点:

10:24:17.151 [INFO ] - StaticResourceHandler configured with folder = /public

但是,当我运行一个重启服务器的进程时,staticFileLocation似乎丢失了。

这是我的stopServer方法和restartServer方法。

public static void stopServer()
{
    if (!stopping && !starting)
    {
        stopping = true;

        stop();

        try
        {
            // This is temporary until the ability to wait for the service to
            // stop comes along
            Thread.sleep(10 * 1000);
        }
        catch (InterruptedException ex)
        {
            LogUtil.warn("Failed to wait while server shuts down", ex);
        }

        stopping = false;
    }
}

public static void restartServer()
{
    stopServer();
    startServer();
}

日志显示以下行:

10:33:52.768 [WARN ] - Static file location has already been set

但是当我再次尝试访问主页时,我得到了404并且日志说明了这一点:

10:34:22.260 [INFO ] - The requested route [/] has not been mapped in Spark for Accept: [text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8]

我的其他路线(为简洁起见省略)重新初始化就好了。我可以重新启动服务器并仍然可以毫无问题地导航到它们。

我不需要能够更改静态文件位置,但我真的希望在重新启动服务器之间保持该设置。也许这就是我重启的方式?我无法找到有关正确流程的大量信息。

非常感谢先进的

1 个答案:

答案 0 :(得分:0)

升级到较新版本的Spark-Java,即2.7.0。这个问题已经解决: https://github.com/perwendel/spark/pull/902