[SPRING] Spring 애플리케이션과 JMX를 통합 할 수 없다.
SPRINGSpring 애플리케이션과 JMX를 통합 할 수 없다.
나는 스프링 응용 프로그램을 가지고있다. 내가 달릴 때.
mvn jetty:run
모든 것은 괜찮습니다.
내 프로젝트에서 JMX를 사용하고 싶습니다.
나는 또 다른 프로젝트를 만들었고 초보자를위한 튜토리얼을 만들었고 jconsole을 사용하여 몇 가지 변화를 볼 수있었습니다.
이제 실제 프로젝트에서 JMX를 사용하고 싶습니다. JMX를 관리하는 SPRING 라이브러리를 사용하고 싶습니다.이 게시물을 따르십시오.
Spring과 JMX를 통합하는 방법?
나는 수업을 가지고있다 :
public class MyMainClass {
private int var1;
private int var2;
private TimeUnit var3;
// public getters and setters
public static MyXXXClass<String, Object> getInstance();
}
및 config.xml
<!-- other beans -->
<bean id="myid" class="com.my.package.MyMainClass">
<property name="var1" value.../>
<property name="var2" value... />
<property name="var3" value.../>
</bean>
<!-- other beans -->
JMX에서 작동하도록 몇 가지를 변경했습니다.
나는 인터페이스를 추가했다 :
import java.util.concurrent.TimeUnit;
public interface IMyMainClassBean {
public int getVar1();
public void setVar1(int var1);
public int getVar2();
public void setVar2(int var2);
public TimeUnit getVar3();
public void setVar3(TimeUnit var3);
}
내 수업에 도구를 추가했습니다.
public class MyMainClassBean implements IMyMainClassBean {...}
마지막으로 XML 파일을 편집했습니다.
<!-- other beans -->
<bean id="myid" class="com.my.package.MyMainClassBean">
<property name="var1" value.../>
<property name="var2" value... />
<property name="var3" value.../>
</bean>
<!-- this bean must not be lazily initialized if the exporting is to happen -->
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"
lazy-init="false">
<property name="beans">
<map>
<entry key="bean:name=testBean1" value-ref="myid" />
</map>
</property>
</bean>
<!-- other beans -->
이제 서버를 시작할 때 예외가 많이 생깁니다 (로그가 길기 때문에 가장 중요한 부분 만 복사했습니다).
Caused by: org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [com.my.package
.MyMainClassBean@3d4395fb] with key 'bean:name=testBean1'; nested exception is javax.management.InstanceAlreadyExistsExcep
tion: bean:name=testBean1
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:602)
at org.springframework.jmx.export.MBeanExporter.registerBeans(MBeanExporter.java:527)
at org.springframework.jmx.export.MBeanExporter.afterPropertiesSet(MBeanExporter.java:413)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableB
eanFactory.java:1571)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBean
Factory.java:1509)
... 163 more
Caused by: javax.management.InstanceAlreadyExistsException: bean:name=testBean1
at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerInterceptor.java:1484)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:963)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:917)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)
at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:483)
at org.springframework.jmx.support.MBeanRegistrationSupport.doRegister(MBeanRegistrationSupport.java:195)
at org.springframework.jmx.export.MBeanExporter.registerBeanInstance(MBeanExporter.java:655)
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:592)
... 167 more
[WARNING] Nested in org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myTask' defined
in class path resource [anotherconfigfile.xml]: Cannot resolve reference to bean 'anotherimport' while setting bean property 'targetObj
ect'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'anotherimport' defin
ed in class path resource [anotherconfigfile.xml]: Cannot create inner bean 'myTotallyAnotherClass' of type [com.my.package.another.MyTotallyAnotherClass]
while setting bean property 'myTotallyAnotherClass'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creatin
g bean with name 'myTotallyAnotherClass' defined in class path resource [anotherconfigfile.xml]: Instantiation of bean failed; nested exception is
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.my.package.another.MyTotallyAnotherClass]: Co
nstructor threw exception; nested exception is java.lang.ExceptionInInitializerError:
javax.management.InstanceAlreadyExistsException: bean:name=testBean1
at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerInterceptor.java:1484)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:963)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:917)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)
at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:483)
at org.springframework.jmx.support.MBeanRegistrationSupport.doRegister(MBeanRegistrationSupport.java:195)
at org.springframework.jmx.export.MBeanExporter.registerBeanInstance(MBeanExporter.java:655)
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:592)
at org.springframework.jmx.export.MBeanExporter.registerBeans(MBeanExporter.java:527)
at org.springframework.jmx.export.MBeanExporter.afterPropertiesSet(MBeanExporter.java:413)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableB
eanFactory.java:1571)
나는 그것을 디버깅하는 방법조차 모른다.
모든 힌트를 가져 주셔서 감사합니다.
해결법
-
==============================
1.이것은 ObjectName이 bean 인 name = testBean1이 MBeanExporter에 등록되어있는 두 개의 Bean을 가지고 있음을 알려주려고합니다. 그러나 빈 파일 맵에 다른 XML 파일이나 항목이 없으면 안됩니다.
이것은 ObjectName이 bean 인 name = testBean1이 MBeanExporter에 등록되어있는 두 개의 Bean을 가지고 있음을 알려주려고합니다. 그러나 빈 파일 맵에 다른 XML 파일이나 항목이 없으면 안됩니다.
JmxMBeanServer.registerMBean (...) 메소드에 중단 점을 두어 복제본을 가져 오는 이유를 알아낼 수 있는지 확인하기 위해 등록 할 Bean을 확인할 수 있습니다.
옆으로, 내 SimpleJMX 라이브러리는 JMX를 통해 빈을 내보내는 쉬운 방법입니다. 꽤 좋은 봄 지원도 있습니다. 다음은 Spring과 함께 사용하는 방법에 대한 문서입니다. 또한 작동시키기 위해해야 할 일을 보여주는 Spring 테스트 프로그램이 있습니다. 다음은 Spring XML 파일이다.
-
==============================
2.이것은 bean이 초기화 된 후에도 초기화하려고 할 때 발생합니다.
이것은 bean이 초기화 된 후에도 초기화하려고 할 때 발생합니다.
나는 Spring TestNG 테스트 케이스에서 RabbitMQ 설정과 동일한 문제에 직면했다.
@DirtiesContext를 모든 테스트 케이스 클래스의 클래스 레벨 주석으로 사용하십시오.
이렇게하면 testcontext 클래스가 실행되고 다음 테스트 케이스 클래스에 대해 새 applicationcontext가 만들어지면 applicationcontext가 만들어지고 종료됩니다.
예 -
@Test @ContextConfiguration(classes = { ApplicationConfig.class }) @DirtiesContext @WebAppConfiguration public class ATest extends AbstractTestNGSpringContextTests{ @BeforeSuite public void setup() throws Throwable { } @AfterSuite public void teardown() { } }
from https://stackoverflow.com/questions/22789428/cannot-integrate-jmx-with-spring-application by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 아약스 파일 업로드 및 MultipartFile이있는 Spring MVC (0) | 2019.04.13 |
---|---|
[SPRING] Spring 3 MVC 요청 유효성 검사 (0) | 2019.04.13 |
[SPRING] Spring 부팅시 각 DB 연결 시작시 SQL 문 실행 (0) | 2019.04.13 |
[SPRING] 최대 절전 세션 트랜잭션을 열 수 없습니다. (0) | 2019.04.13 |
[SPRING] spring-mvc : "a / b / {c}"형식으로 URI 템플릿을 매핑하는 방법은 무엇입니까? (0) | 2019.04.13 |