2011-09-16 11 views

答えて

5

は、ここに行く:

import java.util.concurrent.atomic.AtomicLong; 

import javax.management.Notification; 

import org.springframework.jmx.export.annotation.ManagedOperation; 
import org.springframework.jmx.export.annotation.ManagedResource; 
import org.springframework.jmx.export.notification.NotificationPublisher; 
import org.springframework.jmx.export.notification.NotificationPublisherAware; 

@ManagedResource 
public class JMXDemo implements NotificationPublisherAware { 
    private final AtomicLong notificationSequence = new AtomicLong(); 
    private NotificationPublisher notificationPublisher; 

    @Override 
    public void setNotificationPublisher(
      final NotificationPublisher notificationPublisher) { 
     this.notificationPublisher = notificationPublisher; 
    } 

    @ManagedOperation 
    public void trigger() { 
     if (notificationPublisher != null) { 
      final Notification notification = new Notification("type", 
        getClass().getName(), 
        notificationSequence.getAndIncrement(), "The message"); 
      notificationPublisher.sendNotification(notification); 
     } 
    } 
} 

そして、あなたのSpring構成ファイルで使用すると、このようなものを使用する必要があります。

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

    <context:mbean-server id="mbeanServer" /> 

    <context:mbean-export server="mbeanServer" /> 

    <bean class="org.springframework.jmx.export.MBeanExporter"> 
     <property name="server" ref="mbeanServer" /> 
     <property name="namingStrategy"> 
      <bean id="namingStrategy" 
       class="org.springframework.jmx.export.naming.MetadataNamingStrategy"> 
       <property name="attributeSource"> 
        <bean 
         class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource" /> 
       </property> 
      </bean> 
     </property> 
    </bean> 

</beans> 

あなたは、その後で豆の上にアクセスすることができますオペレーションtrigger()のJConsoleとトリガー通知。通知を購読してください。 :)

+0

お返事ありがとうございます。もし私ができるなら、私はあなたにもっと多くの票を与えるだろう。私はこれに答えを得るのに本当に苦労しました。そして、私は春とJMXの組み合わせがかなり強力だと思います。 – BillMan

+1

これは本当に非常に強力です。実行時にアプリケーションの詳細(クエリ戦略など)を微調整できるためです。私は作成したすべてのサーバーアプリケーションでこれを使用しています。 –

+0

これは簡単で効果的な例です。ありがとう! BTWはBean JMXDemoをSpringで作成して管理する必要がありますか? SpringはこのインスタンスでJMXアノテーションをスキャンするクラス/パッケージをどのように知っていますか? –

関連する問題