当前位置: 首页 > 知识库问答 >
问题:

Spring boot metrics搭配球衣2

东方宜
2023-03-14

我有一个运行spring-boot、jersey2和spring度量的应用程序:下面是maven片段:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在引入致动器依赖性之前,Jersey一直工作得很好。然后创建了以下bean以使Jersey作为过滤器工作:

@Bean
public FilterRegistrationBean jerseyFilterRegistration() {
    FilterRegistrationBean bean = new FilterRegistrationBean();
    bean.setName("jerseyFilter");
    bean.setFilter(new ServletContainer(resourceConfig()));
    bean.setOrder(Ordered.LOWEST_PRECEDENCE);
    bean.addInitParameter("com.sun.jersey.config.property.WebPageContentRegex", managementContextRegex);

    return bean;
}

度量被映射到/admin路径。使用这种配置,我无法使度量标准工作。但是,通过添加management.port(不同于主应用程序端口),既可以使用Jersey资源,也可以使用metrics。我在这里缺少了什么来使metrics和Jersey resource开始在同一个端口上工作?

共有1个答案

彭博厚
2023-03-14
"com.sun.jersey.config.property.WebPageContentRegex"

这是错误的财产。那是为泽西1.X。对于2.x,它应该是

"jersey.config.servlet.filter.staticContentRegex"

请参阅servletproperties.filter_static_content_regex

另外,只需设置几个配置属性,就可以避免定义自己的filterregistrationbean。在application.properties中,可以使用以下内容

spring.jersey.type=filter
spring.jersey.init.jersey.config.servlet.filter.staticContentRegex=<your-regex>
public class JerseyConfig extends ResourceConfig {
    public JerseyConfig() {
        property(ServletProperties.FILTER_STATIC_CONTENT_REGEX, "<your-regex>");
    }
}

最后一件事,还有一件事

ServletProperties.FILTER_FORWARD_ON_404
"jersey.config.servlet.filter.forwardOn404"

我不是很清楚staticContenRegex属性是如何工作的,我从未真正深入到源代码中。所以我不知道它是只做一些文件IO来获取静态文件还是转发请求,但是如果它做一些文件IO的话,那么我不认为该属性会适用于您的用例,因为endpoint不是文件。在这种情况下,forwardOn404应该工作。

 类似资料:
  • 我尝试在SpringBoot(1.5.8)中使用Swagger(2.6)和Jersey(1.5) 我对公共API的调用工作正常 我试着用Jersey跟踪这个Config Swagger ui,但它仍然没有回来。 这是我的球衣配置 这是我的应用类 这是我的endpoint 当我使用Spring Rest控制器尝试类似的配置时,它工作正常,但是对于泽西岛,我看不到我的公共API。它似乎忽略了我的炫耀配

  • 我需要在java上开发简单的web服务。我是java技术新手,根据几篇文章,我决定将JAX-RS(Jersey)与嵌入式http服务器(Grizzly2)结合使用,因为它看起来适合构建REST服务,部署似乎很简单。 在我的开发环境中,所有工作都很完美(使用IntllijIdea)。 但当我尝试在测试服务器上部署时,每个请求都返回“500内部错误”(偶数/application.wadl) 简单资源

  • 如spring boot博客所述 我尝试自定义我的对象序列化。 在我的配置中添加了一个新的配置bean之后 当我尝试输出类用户的实例时,json结果不在CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES中 也许我需要在我的Jersey配置中注册一些东西来激活我的自定义obejctMapper配置 谢谢

  • 我使用Jersey 2.10异常映射器类来处理异常。我想返回错误状态和错误信息的JSON正文。我想得到类似的回应: Jersey没有在响应中发送JSON正文。我得到的是: 如果我将状态代码更改为200,那么我将获得预期的响应正文 请帮我找出这个问题的解决方案。 异常映射器在错误对象中填充错误消息和状态。以下是异常映射程序代码: 这是来自错误对象的代码:

  • 我正试图在我的申请中加入炫耀。 我正在遵循这个指南https://github . com/Swagger-API/Swagger-Core/wiki/Swagger-Core-Jersey-2。x-Project-Setup-1.5 #使用-a-custom-application-subclass 但我将Jersey配置为ResourceConfig,如下所示: 这是正确的吗? 没有昂首阔步。

  • 我在WAS 8.0上部署了一个JAX-RS WS应用程序,其中包含一个空的2.4web.xml,这个类扩展了'javax.WS.rs.core.application'和2个资源,它工作得很好。 如何在WAS7.0上部署JAX-RS应用程序而不使用Jersey或任何其他与应用程序服务器相关的类? 谢谢