gpt4 book ai didi

spring-boot - 如何在带有嵌入式 tomcat 的 Spring Boot 应用程序中运行 hawt.io

转载 作者:行者123 更新时间:2023-12-01 08:54:35 25 4
gpt4 key购买 nike

我想将 hawt.io 作为嵌入式组件添加到具有嵌入式 tomcat 服务器的 spring boot 'fat jar' 应用程序中。

我怎样才能做到这一点?
我如何部署 hawt.io war 文件?

更新:
我添加了依赖项:

  • hawtio-web
  • hawtio-core
  • hawtio-plugin-mbean
  • hawtio-springboot
    到我的 pom

  • 当我现在启动应用程序并打开 url 本地主机:8080/hatio/index.html 我得到了登录页面。
    由于我不知道用户名和密码,所以我添加了
    hawtio.authenticationEnabled=false
    到我的 application.properties

    但是 - 现在我收到警告
    '警告 3420 --- [nio-8080-exec-4] o.s.web.servlet.PageNotFound:不支持请求方法 'POST'
    后跟空指针异常。

    引用文献: http://hawt.io/configuration/index.html

    最佳答案

    我遇到了完全相同的问题 - 这是我解决问题的方法。

    我发现 spring-boot 不支持旧的 web.xml 配置,这是你在 maven-war-plugin 时得到的。在你自己的 war 之上覆盖 hawtio-web 项目。
    由此产生的 war 包含您的网络代码以及 hawtio-web 存档的内容。

    http://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html

    于是我在spring开始了配置servlet和过滤器的过程。

    首先将必要的依赖添加到 pom.xml

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>${spring-boot-version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-actuator</artifactId>
    <version>${spring-boot-version}</version>
    </dependency>
    <dependency>
    <groupId>io.hawt</groupId>
    <artifactId>hawtio-springboot</artifactId>
    <version>${hawtio.version}</version>
    </dependency>
    <dependency>
    <groupId>io.hawt</groupId>
    <artifactId>hawtio-core</artifactId>
    <version>${hawtio.version}</version>
    </dependency>
    </dependencies>

    我正在使用这些版本:
    <hawtio.version>2.0.0</hawtio.version>
    <spring-boot.version>1.2.3.RELEASE</spring-boot.version>

    添加一个配置类来配置 servlet 和过滤器:
    @Configuration
    public class HawtioConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/hawtio/plugins/**").addResourceLocations("/app/", "classpath:/static/hawtio/app/");
    registry.addResourceHandler("/hawtio/**").addResourceLocations("/", "/app/", "classpath:/static/hawtio/",
    "classpath:/static/hawtio/app/");
    }

    @Override
    public void addViewControllers(final ViewControllerRegistry registry) {
    registry.addViewController("/hawtio/plugin").setViewName("forward:/plugin");
    registry.addViewController("/hawtio/").setViewName("redirect:/hawtio/index.html");
    }

    @Bean
    public ServletRegistrationBean userServlet() {
    return new ServletRegistrationBean(new UserServlet(), "/user/*", "/hawtio/user/*");
    }

    @Bean
    public ServletRegistrationBean jolokiaproxy() {
    return new ServletRegistrationBean(new ProxyServlet(), "/hawtio/proxy/*");
    }

    @Bean
    public ServletRegistrationBean kubeservice() {
    return new ServletRegistrationBean(new ServiceServlet(), "/hawtio/service/*");
    }

    @Bean
    public ServletRegistrationBean kubepod() {
    return new ServletRegistrationBean(new PodServlet(), "/hawtio/pod/*");
    }

    @Bean
    public ServletRegistrationBean fileupload() {
    return new ServletRegistrationBean(new UploadServlet(), "/hawtio/file-upload/*");
    }

    @Bean
    public ServletRegistrationBean loginservlet() {
    return new ServletRegistrationBean(new LoginServlet(), "/hawtio/auth/login/*");
    }

    @Bean
    public ServletRegistrationBean logoutservlet() {
    return new ServletRegistrationBean(new LogoutServlet(), "/hawtio/auth/logout/*");
    }

    @Bean
    public ServletRegistrationBean keycloakservlet() {
    return new ServletRegistrationBean(new KeycloakServlet(), "/hawtio/keycloak/*");
    }

    @Bean
    public ServletRegistrationBean exportcontextservlet() {
    return new ServletRegistrationBean(new ExportContextServlet(), "/hawtio/exportContext/*");
    }

    @Bean
    public ServletRegistrationBean mavenSource() {
    return new ServletRegistrationBean(new JavaDocServlet(), "/hawtio/javadoc/*");
    }

    @Bean
    public ServletRegistrationBean contextFormatter() {
    return new ServletRegistrationBean(new ContextFormatterServlet(), "/hawtio/contextFormatter/*");
    }

    @Bean
    public ServletRegistrationBean gitServlet() {
    return new ServletRegistrationBean(new GitServlet(), "/hawtio/git/*");
    }

    @Bean
    public ServletListenerRegistrationBean hawtioContextListener() {
    return new ServletListenerRegistrationBean<>(new HawtioContextListener());
    }

    @Bean
    public ServletListenerRegistrationBean fileCleanerCleanup() {
    return new ServletListenerRegistrationBean<>(new FileCleanerCleanup());
    }

    @Bean
    public FilterRegistrationBean redirectFilter() {
    final FilterRegistrationBean filter = new FilterRegistrationBean();
    filter.setFilter(new RedirectFilter());
    filter.setUrlPatterns(Collections.singletonList("/hawtio/*"));
    return filter;
    }

    @Bean
    public FilterRegistrationBean sessionExpiryFilter() {
    final FilterRegistrationBean filter = new FilterRegistrationBean();
    filter.setFilter(new SessionExpiryFilter());
    filter.setUrlPatterns(Collections.singletonList("/hawtio/*"));
    return filter;
    }

    @Bean
    public FilterRegistrationBean cacheFilter() {
    final FilterRegistrationBean filter = new FilterRegistrationBean();
    filter.setFilter(new CacheHeadersFilter());
    filter.setUrlPatterns(Collections.singletonList("/hawtio/*"));
    return filter;
    }

    @Bean
    public FilterRegistrationBean CORSFilter() {
    final FilterRegistrationBean filter = new FilterRegistrationBean();
    filter.setFilter(new CORSFilter());
    filter.setUrlPatterns(Collections.singletonList("/hawtio/*"));
    return filter;
    }

    @Bean
    public FilterRegistrationBean XFrameOptionsFilter() {
    final FilterRegistrationBean filter = new FilterRegistrationBean();
    filter.setFilter(new XFrameOptionsFilter());
    filter.setUrlPatterns(Collections.singletonList("/hawtio/*"));
    return filter;
    }

    @Bean
    public FilterRegistrationBean AuthenticationFilter() {
    final FilterRegistrationBean filter = new FilterRegistrationBean();
    filter.setFilter(new AuthenticationFilter());
    filter.setUrlPatterns(Arrays.asList("/hawtio/auth/*", "/jolokia/*", "/hawtio/upload/*", "/hawtio/javadoc/*"));
    return filter;
    }

    }

    我已经用 jetty 和 tomcat 对此进行了测试 - 它适用于两者。
    我也将此作为补丁提交给 hawtio,但它尚未发布。您可以自己编译 hawtio 并导入 HawtioConfiguration:
    https://github.com/hawtio/hawtio/blob/master/hawtio-springboot/src/main/java/io/hawt/springboot/HawtioConfiguration.java

    我还更新了 hawtio-sample 以使用 HawtioConfiguration:
    https://github.com/hawtio/hawtio/tree/master/hawtio-sample-springboot

    现在我可以通过访问 http://localhost:8080/hawtio/index.html 访问 hawtio

    希望这可以帮助。

    祝你好运。

    关于spring-boot - 如何在带有嵌入式 tomcat 的 Spring Boot 应用程序中运行 hawt.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30326149/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com