Dar*_*arz 4 java spring jetty spring-mvc
我可以在标准 Java 应用程序中轻松设置 Jetty 处理程序,如下所示:
public class Main {
public static void main(String[] args) throws Exception {
Main main = new Main();
main.start();
}
private void start() throws Exception {
Server server = new Server(9999);
server.setHandler(new Handler());
server.start();
server.join();
}
}
class Handler extends AbstractHandler {
@Override
public void handle(final String target, final Request baseRequest, final HttpServletRequest request, final HttpServletResponse response) throws IOException, ServletException {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
如何以与带有嵌入式 Jetty 的 Spring Boot 类似的方式设置 Handler?当我尝试使用EmbeddedServletContainerCustomizerbean 时,我遇到了missing ServletContext异常。
@Bean
public EmbeddedServletContainerCustomizer customizer() throws MalformedURLException {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof JettyEmbeddedServletContainerFactory) {
customizeJetty((JettyEmbeddedServletContainerFactory) container);
}
}
private void customizeJetty(JettyEmbeddedServletContainerFactory jetty) {
jetty.addServerCustomizers((JettyServerCustomizer) server -> server.setHandler(myCustomHandler()));
}
};
}
Run Code Online (Sandbox Code Playgroud)
好的,我可以通过以下代码实现这一点。如果这不是最佳实践,请告诉我。
@Configuration
@EnableWebMvc
@SpringBootApplication
public class Main {
public static void main(String[] args) {
new SpringApplicationBuilder()
.sources(Main.class)
.run(args);
}
@Bean
public EmbeddedServletContainerCustomizer customizer() throws MalformedURLException {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof JettyEmbeddedServletContainerFactory) {
customizeJetty((JettyEmbeddedServletContainerFactory) container);
}
}
private void customizeJetty(JettyEmbeddedServletContainerFactory jetty) {
jetty.addServerCustomizers((JettyServerCustomizer) server -> {
HandlerCollection handlerCollection = new HandlerCollection();
handlerCollection.setHandlers(new Handler[]{ myCustomHandler(), server.getHandler() });
server.setHandler(handlerCollection);
});
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2739 次 |
| 最近记录: |