嵌入式码头8热部署类(使用Maven)(Embedded Jetty 8 hot deploy cl

2019-08-01 04:36发布

我有一个标准的Maven Web应用程序结构定义,它使用Spring MVC的。

我使用的是嵌入式Jetty服务器(Java类),用于开发测试应用程序。

用于创建Jetty服务器的代码如下所示。 如果我更改任何JSP文件中,变化是在浏览器中立即可见。

但是,如果我改变任何类文件,如控制器,更改不热部署?

我有什么做得到这个工作?

我已搜查这一点,我想我需要使用类org.eclipse.jetty.util.Scanner并专门setScanInterval方法,但不知道如何把这个吗?

下面是创建服务器代码

    String webAppDir = "src/main/webapp/";
    Server server = new Server(8080);
    WebAppContext webApp = new WebAppContext();
    webApp.setContextPath("/");
    webApp.setDescriptor(webAppDir + "/WEB-INF/web.xml");
    webApp.setResourceBase(webAppDir);
    webApp.setParentLoaderPriority(true);

    HandlerCollection hc = new HandlerCollection();
    ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection();
    hc.setHandlers(new Handler[] { contextHandlerCollection });
    hc.addHandler(webApp);
    server.setHandler(hc);
    return server;

提前致谢

Answer 1:

对于热部署,你需要使用WebAppProvider和的DeploymentManager。 这些可以通过配置来管理更改扫描和Web应用程序的重新加载。 因此,它是明确的,WebappContext不是什么管理web应用程序的部署,它仅仅是容器类,它是被部署所以,工程的是,它可以处理部署/重新部署的概念之外的另一个机制。

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-deploy/src/test/resources/jetty-deploy-wars.xml

你可以把XML的该块存在,并转换成你需要做的这个嵌入Java调用。

或使用类似JRebel的JVM插件,它提供了自动重新加载类。



文章来源: Embedded Jetty 8 hot deploy classes (using Maven)