簡體   English   中英

遠程JMX連接和通知問題

[英]Problem with remote JMX connection and Notifications

我試圖從與UsageThreshold相關的Java API文檔(http://download.oracle.com/javase/1.5.0/docs/api/java/lang/management/MemoryPoolMXBean.html#Notification)中關注一個示例內存池Bean和通知的屬性。 我的意圖是每次游泳池克服門檻時都要做點什么。 這是示例代碼:

MemoryPoolMXBean remoteOldGenMemoryPool =
    ManagementFactory.newPlatformMXBeanProxy(
        jmxServer,
        "java.lang:type=MemoryPool,name=PS Old Gen",
        MemoryPoolMXBean.class);


class MyListener implements javax.management.NotificationListener {
    public void handleNotification(Notification notification, Object handback)  {
      String notifType = notification.getType();
      if (notifType.equals(MemoryNotificationInfo.MEMORY_THRESHOLD_EXCEEDED)) {
        // Do Something
        println "Threshold passed";
      }
    }
  }

// Register MyListener with MemoryMXBean
MemoryMXBean remoteMemory =
      ManagementFactory.newPlatformMXBeanProxy(
          jmxServer,
          ManagementFactory.MEMORY_MXBEAN_NAME,
          MemoryMXBean.class);

NotificationEmitter emitter = remoteMemory as NotificationEmitter;
MyListener listener = new MyListener();
emitter.addNotificationListener(listener, null, null);

remoteOldGenMemoryPool.setUsageThreshold 500000000;

當我執行代碼並連接到我的JVM時,我可以看到以下內容:

Threshold passed
02-Feb-2011 16:30:00 ClientCommunicatorAdmin restart
WARNING: Failed to restart: java.io.IOException: Failed to get a RMI stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is: 
    java.net.SocketException: Connection reset]
02-Feb-2011 16:30:03 RMIConnector RMIClientCommunicatorAdmin-doStop
WARNING: Failed to call the method close():java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is: 
    java.net.SocketException: Connection reset
02-Feb-2011 16:30:03 ClientCommunicatorAdmin Checker-run
WARNING: Failed to check connection: java.net.SocketException: Connection reset
02-Feb-2011 16:30:03 ClientCommunicatorAdmin Checker-run
WARNING: stopping

由於某種原因(我還不了解)代碼正在嘗試重新啟動與JVM的連接。 任何想法為什么會發生這種情況或如何預防? 我做錯了嗎?

謝謝

也許你可以在jmx環境中添加一個變量,如下所示:m.put(“jmx.remote.x.client.connection.check.period”,0L);

但是,我所遇到的與此略有不同。 你可以看到: http//chainhou.iteye.com/blog/1906688

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM