서버가 시작될 때마다 자동으로 시작되어야하는 JBoss 서비스를 빌드하려고합니다.JBoss 서비스 (MBean) 자동 시작
내 서비스를 다음 클래스 구조를 가지고 :
또한 다음과 같은 구성 파일이있어public interface CumbiaXPMServiceMBean extends org.jboss.system.ServiceMBean
public class CumbiaXPMService extends org.jboss.system.ServiceMBeanSupport implements CumbiaXPMServiceMBean
- 제이 보스-service.xml - 내 서비스 :
<server>
<mbean code="uniandes.cumbia.xpm.jboss.CumbiaXPMService"
name="jcumbia:service=JCumbiaEngine">
<depends>jcumbia:service=cumbiaConsole</depends>
<attribute name="LocationInCumbia" attributeClass="java.lang.String">XPMEngine</attribute>
</mbean>
</server>
을
제 질문은 :이 서비스를 어떻게 자동 시작합니까?
JBoss가로드 프로세스의 일부로 start() 메소드를 호출 할 것으로 예상했지만, 그렇지 않습니다. start() 메소드에 많은 로그 코드가 있지만 아무 것도 보지 못했습니다. 산출.
그러나 JMXConsole을 사용하여 MBean 상태를 볼 때 State (StateString)는 'Started'입니다.
문제는 내 문제에 대한 해결책을 발견
를 해결. 나는 start(), stop(), destroy(), create() 메소드를 오버라이드하고 있었다. 그럼에도 불구하고, 나는 추상 클래스 ServiceMBeanSupport를 확장하고 있기 때문에 startService(), stopService() 등의 메소드를 오버라이드해야한다.
방금 start() 메소드에서 startService 이제는 필요에 따라 모든 것이 작동합니다. 종속성이 충족되면 서비스가 시작되고 startService() 메소드가 실행됩니다.
결론 : MBean의 라이프 사이클에는 create(), start(), stop() 및 destroy()를 호출하는 것이 포함되어 있지만 ServiceMBeanSupport 추상 클래스의 구현은 이러한 메소드를 사용하여 수명을 처리합니다 주기. 그럼에도 불구하고 프로그래머가 라이프 사이클에 참여할 수 있도록하기 위해 * Service() 보호 메소드를 제공합니다.
"자동으로"?앱 서버가 시작될 때 서비스가 "시작"되지 않습니까? JMX 콘솔이 시작되었다고 말하면 어떤 행동을 취하지 않는다고 믿게합니까? – duffymo
start() 메서드 내에 로깅 코드가 있지만 실행되고 있지 않습니다. 클래스의 생성자에서 일부 로깅 코드가 있는데 그 출력을 볼 수 있지만 그게 전부입니다. – nozebacle