Tomcat 컨테이너에 여러 웹 애플리케이션을 포함하는 Spring Boot 액추에이터는 javax.management를 슬로우합니다.인스턴스 이미Exception 예외
Tomcat 컨테이너 내에서 여러 스프링 부트 애플리케이션을 실행하고 있습니다(내장되어 있지 않고 스탠드아론 Tomcat 컨테이너만).그러나 웹 어플리케이션을 실행할 때 다음과 같은 예외를 두고 있습니다.웹 어플리케이션의 기능에는 영향을 주지 않지만, 클린 스타트업을 하고 싶다고 생각하고 있습니다.
이 문제를 해결하는 방법에 대한 어떠한 도움도 매우 감사합니다.
스프링 부트 1.1.7 사용
org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [org.springframework.boot.actuate.endpoint.jmx.DataEndpointMBean@14bee2f1] wit
h key 'metricsEndpoint'; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Endpoint,name=metricsEndpoint
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:609)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.registerEndpoint(EndpointMBeanExporter.java:162)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.locateAndRegisterEndpoints(EndpointMBeanExporter.java:142)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.doStart(EndpointMBeanExporter.java:134)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.start(EndpointMBeanExporter.java:257)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:775)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:131)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:485)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:109)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:142)
org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [org.springframework.boot.actuate.endpoint.jmx.DataEndpointMBean@1be9493f] with key 'traceEndpoint'; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Endpoint,name=traceEndpoint
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:609)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.registerEndpoint(EndpointMBeanExporter.java:162)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.locateAndRegisterEndpoints(EndpointMBeanExporter.java:142)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.doStart(EndpointMBeanExporter.java:134)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.start(EndpointMBeanExporter.java:257)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [org.springframework.boot.actuate.endpoint.jmx.DataEndpointMBean@533a21cd] with key 'dumpEndpoint'; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Endpoint,name=dumpEndpoint
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:609)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.registerEndpoint(EndpointMBeanExporter.java:162)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.locateAndRegisterEndpoints(EndpointMBeanExporter.java:142)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.doStart(EndpointMBeanExporter.java:134)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.start(EndpointMBeanExporter.java:257)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [org.springframework.boot.actuate.endpoint.jmx.DataEndpointMBean@695b578c] with key 'autoConfigurationAuditEndpoint'; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Endpoint,name=autoConfigurationAuditEndpoint
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:609)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.registerEndpoint(EndpointMBeanExporter.java:162)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.locateAndRegisterEndpoints(EndpointMBeanExporter.java:142)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.doStart(EndpointMBeanExporter.java:134)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.start(EndpointMBeanExporter.java:257)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [org.springframework.boot.actuate.endpoint.jmx.ShutdownEndpointMBean@7271ef13] with key 'shutdownEndpoint'; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Endpoint,name=shutdownEndpoint
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:609)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.registerEndpoint(EndpointMBeanExporter.java:162)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.locateAndRegisterEndpoints(EndpointMBeanExporter.java:142)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.doStart(EndpointMBeanExporter.java:134)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.start(EndpointMBeanExporter.java:257)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [org.springframework.boot.actuate.endpoint.jmx.DataEndpointMBean@34ea9086] with key 'configurationPropertiesReportEndpoint'; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Endpoint,name=configurationPropertiesReportEndpoint
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:609)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.registerEndpoint(EndpointMBeanExporter.java:162)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.locateAndRegisterEndpoints(EndpointMBeanExporter.java:142)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.doStart(EndpointMBeanExporter.java:134)
at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.start(EndpointMBeanExporter.java:257)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
기본적으로는 모든 엔드포인트가 도메인에 등록됩니다.org.springboot
기본 이름을 사용합니다.이것들은, 설정에 의해서 덮어쓸 수 있습니다.endpoints.jmx.*
특성.여기를 참조해 주세요.
애플리케이션별 도메인을 변경하거나endpoints.jmx.unique-names
정말이야.
다음 속성을 추가하여 application.properties에서 JMX를 사용하지 않도록 설정합니다.
spring.jmx.enabled = false
나는 독특한 이름이 통하지 않았다.기본 도메인도 추가해야 했습니다.
YML 코드입니다.
spring:
jmx:
default-domain: agentservice
endpoints:
jmx:
domain: agentservice
unique-names: true
spring:
jmx:
default-domain: agentservice
endpoints:
jmx:
domain: agentservice
unique-names: true
동일한 JVM에 여러 인스턴스를 도입하면서 위의 구성 작업을 수행합니다.
org.springframework.jmx.export 에러가 발생했습니다.등록할 수 없음javax. management로 인한 MBean Exception.인스턴스 이미단일 Tomcat 서버에 여러 웹 앱(이 경우 Spring Boot)을 배포할 때 Exception이 발생합니다.
웹에서 검색한 결과 다음과 같이 나타났습니다.
"spring.jmx.enabled가 true(기본값)로 설정되어 있으면 MBeans인 컨텍스트 내의 모든 콩이 자동으로 JMX 서버에 등록됩니다."
출처 : https://github.com/spring-projects/spring-boot/issues/9179
옵션은 다음과 같습니다.
옵션 1) spring.jmx.enabled=false 설정
출처 : https://github.com/spring-projects/spring-boot/issues/9179
옵션 2) 도입된 각 웹 앱에 대해 JMX 빈에 고유한 이름 제공
spring.jmx.default-domain: app1
spring.jmx.default-domain: app2
출처 : https://github.com/jhipster/generator-jhipster/issues/874
옵션 3) 각 웹 앱에서 콩 자체의 이름을 변경합니다.
@빈
퍼블릭 데이터 소스 app1DataSource() {...}
@빈
퍼블릭 데이터 소스 app2DataSource() {...}
내가 투표한 Gondy의 답변을 보충하기 위해 아래 링크를 클릭하면 왜 그것이 작동하는지 정확히 알 수 있다.PhilWebb씨는 다음과 같이 말합니다.「스프링의 테스트 컨텍스트 프레임워크를 사용하면, 디폴트로 JMX 정보를 등록하면, 몇개의 문제가 발생할 가능성이 있습니다. 디폴트로는 @ContextConfiguration을 사용한 테스트에서는 콘텍스트가 열린 상태로 유지됩니다.「 spring . datasource . jmx - enabled to default and false false make make make make --- - - 、 opt - in 」
GitHub 참조 ('필립 2014년 11월 7일 코멘트'에서)
이것이 독특한 답변이 아닌 것은 감사하지만, 이 문제는 한동안 나를 괴롭혔고, Gondy의 답변이 나를 도와주었고, 그 후에 나는 그 이유를 알게 되었고, 내가 이용할 수 있는 유일한 방법으로 그 추가 정보를 공유하고 싶었다.
언급URL : https://stackoverflow.com/questions/26901991/spring-boot-actuator-with-multiple-web-applications-in-a-tomcat-container-throws
'source' 카테고리의 다른 글
Python 그래프 라이브러리 (0) | 2023.02.28 |
---|---|
이 응용 프로그램에는 /error에 대한 명시적 매핑이 없습니다. (0) | 2023.02.28 |
Oracle 열에서 기본값을 제거하려면 어떻게 해야 합니까? (0) | 2023.02.28 |
WooCommerce - 여러 지불 방법을 동시에 사용한 지불 주문 (0) | 2023.02.28 |
필요한 요청 본문 내용이 없습니다. org.springframework.web.method.HandlerMethod$HandlerMethod 파라미터 (0) | 2023.02.28 |