Can Jetty Hot Deploy?

Jetty支持完全热部署,但不内置热部署触发器。它允许动态增删上下文、Servlet及过滤器。具体实现取决于集成环境,如JBoss、Geronimo等。对于独立Jetty,可通过编写自定义代码来实现热部署。开发环境中,Jetty可在支持类重载的IDE中运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jetty is fully hot deployable, but does not have any native hot deployers. What this means is that Jetty contexts, servlets and filters may be added, stopped, started and reloaded dynamically, but that Jetty does not have any services that trigger these events.

The reason that Jetty does not have any native hot deployers is that the requirements for hot deployment vary greatly depending on the environment and developers. For example, which files and/or directories should be watched to trigger a hot deployment? The WAR, the unpacked WAR directory, the web.xml, the class files for the servlets or every class file loaded by the context?

Once the need for a hot deployment is detected, it is unclear what should be redeployed? Should just the servlets be reloaded? Should the context be stopped, totally reloaded and then restarted? Should the listeners be stopped so that load balancers don't send request while redeployment is happening?

There are answers to these questions, but they are very environment specific. Thus when Jetty is embedded in JBoss, it supports JBoss style hot deployment. Ditto for Geronimo and avalon. If you want hot deployment for a stand-alone Jetty, it is not difficult to write code to detect your own hotdeployment criteria and then to stop/start the jetty components that you know are affected.

For development mode, you can run Jetty as a normal application in any IDE that supports class reloading. Also there now is a i Jetty 6 plugin for maven2 users that will run a webapplication and automatically hot redploy if anything changes.

See also Reload Servlet..html

要将Spring Boot应用与Jetty集成,你需要配置Spring Boot应用程序使用Jetty服务器而不是默认的Tomcat。这可以通过修改启动类或添加特定的依赖项来完成。以下是如何在Spring Boot项目中集成Jetty的基本步骤: 1. 添加Jetty依赖: 如果你是Maven用户,可以在`pom.xml`文件中添加以下Jetty和Spring Web MVC的依赖: ```xml <dependencies> <!-- Jetty --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> <!-- Spring MVC for Jetty --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> </exclusion> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> </exclusion> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> </exclusion> </exclusions> </dependency> </dependencies> ``` 2. 配置启动类: 如果你使用的是传统的`SpringApplication`启动类,可以移除对`WebServerFactoryCustomizer`的默认注册(如果有的话),并添加Jetty支持: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServerProperties; import org.springframework.boot.web.servlet.config.annotation.WebMvcConfigurerAdapter; @SpringBootApplication public class YourApp extends WebMvcConfigurerAdapter { public static void main(String[] args) { SpringApplication app = new SpringApplication(YourApp.class); ServerProperties serverProperties = app.getBean(ServerProperties.class); serverProperties.setPort(8080); // 更改为你所需的端口 serverProperties.setWebServerFactoryConfigurers(Collections.singletonList( (webServerFactoryOptions) -> webServerFactoryOptions.setContextPath("/"))); app.run(args); } } ``` 注意这里设置了`contextPath`,确保你的应用程序URL结构正确。 3. 测试集成: 启动你的应用,你应该能看到Jetty已经替换为默认的Web服务器。然后你可以访问`http://localhost:8080/`查看是否能正常加载Spring MVC应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值