2012-07-02 52 views
0

我正在嘗試爲我的獨立Spring應用程序配置JMX控制檯。配置並連接到Spring JMX

我有這樣配置的:

應用程序上下文:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" 


    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> 

    <!-- Must for auto wiring 
    <context:annotation-config /> 
    --> 

    <context:component-scan base-package="com.fixgw.beans"> 
    </context:component-scan> 


    <bean id="FeedListenerBean" class="com.fixgw.beans.FeedListenerBean"> 
    </bean> 

    <bean id="TriggerBean" class="com.fixgw.test.TriggerBean"> 
    </bean> 


    <bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean" > 
    <property name="locateExistingServerIfPossible" value="true" /> 

    </bean> 


    <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"> 
     <property name="beans"> 
      <map> 
       <entry key="bean:name=TriggerBean1" value-ref="TriggerBean" /> 
      </map> 
     </property> 
     <property name="server" ref="mbeanServer" /> 
    </bean> 
</beans> 

和扳機豆,我想它的公共方法在JMX暴露:

public class TriggerBean implements IJmxTriggerBean 
{ 
    static Logger logger = Logger.getLogger(TriggerBean.class); 

    FeedListenerBean fe = null; 

    public void start() 
    { 
     try 
     { 
      // init(); 
      PropertyConfigurator.configure(FixGWConstants.LOG4J_PATH); 
      ApplicationContext context = new ClassPathXmlApplicationContext(FixGWConstants.APPLICATION_CONTEXT_XML); 
      fe = (FeedListenerBean) context.getBean("FeedListenerBean"); 
      Thread t=new Thread() 
      { 
       public void run() 
       { 
        while (true) 
        { 
         System.out.println("a"); 
         try 
         { 
          Thread.sleep(1000); 
         } 
         catch (InterruptedException e) 
         { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        } 
       } 
      }; 
      t.run(); 
      doTheListen(); 

     } 
     catch (Throwable t) 
     { 
      logger.error(t); 
      System.out.println(t); 
     } 

    } 

    public void doTheListen() 
    { 
     fe.listen(); 
    } 

} 


package com.finbird.fixgw.test; 

public interface IJmxTriggerBean 
{ 
    public void doTheListen(); 
} 
  1. 這足夠配置嗎?
  2. 現在我應該連接哪個本地地址以訪問控制檯?

感謝, 射線

回答

1

你有JMX服務器,但你需要一個HTMLAdapter通過瀏覽器來查看這些豆子。例如從this article

<bean id="htmlAdaptor" class="com.sun.jdmk.comm.HtmlAdaptorServer" init-method="start" /> 

    <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"> 
    <property name="beans"> 
    <map> 
     <entry key="adaptor:name=htmlAdaptor" value-ref="htmlAdaptor" /> 
     <entry key="bean:name=calculatorConfigBean" value-ref="calculatorConfig" /> 
    </map> 
    </property> 
    <property name="server" ref="mbeanServer" /> 
    </bean> 

請注意,我在這裏假設HTML /瀏覽器訪問。有關在代碼中配置適配器的Oracle教程,請參閱here

+0

我以爲春天對我來說這麼做.. – rayman

+0

你會如何整合它們?你能告訴我一些例子嗎? – rayman

+0

我認爲上面大多是你需要的。 HTMLAdapter與其他bean一起插入到JMX框架中。請注意,像JBoss這樣的應用服務器提供HTMLAdapter作爲服務,但看起來你必須自己提供。嘗試以上並檢查出端口8082(默認,IIRC) –