Hy Mandy,

Here are my comment.

1) ManagementFactory.java: lines 103-106
   I am not sure I really like the idea of adding new methods
   to existing interfaces.

2) Logging.java: The implementation of getObjectName() is
   strange - I would have expected the ObjectName to be stored in
   a static final field.
   ObjectNames are immutable, so it is safe to have a static - you
   don't need to return a new object each time.

   Eamonn as recently added a public internal
   utility method to create an ObjectName from a String
   (com.sun.jmx.mbeanserver.Util.newObjectName(String))
http://hg.openjdk.java.net/jdk7/tl/jdk/file/2965459a8ee7/src/share/classes/com/sun/jmx/mbeanserver/Util.java
   so you could probably call that to initialize your static
   field...

3) ClassLoadingImpl.java, CompilationImpl.java, HotSpotDiagnostic.java,
   MemoryImpl.java, OperatingSystemImpl.java, RuntimeImpl.java,
   ThreadImpl.java

   OK I see you're using another Util.newObjectName() here - but
   the ObjectName could still be a static final field in these classes.

4) I see that sun.management.ManagementFactory is still there.
   Shouldn't it be merged with ManagementFactoryHelper?

5) I was a bit puzzled by the fact that PlatformComponent
   defines several components which contain each a
   different implementation of the same MBean (all sharing the
   same ObjectName).

   For instance if we look at OPRATING_SYSTEM, SUN_OPERATING_SYSTEM,
   SUN_UNIX_OPERATING_SYSTEM, it took me a while to understand that
   registration in getPlatformMBeanServer() worked because all these
   enum pointed towards the same MBean instance...

   Maybe some comment would have helped... ;-)

6) Maybe there should be a special case in the unit test which
   should try to guess which of the  *OPERATING_SYSTEM case should
   be implemented, and verify that it is indeed the
   correct implementation which is registered, and compare with
   the result of the three calls:

ManagementFactory.getPlatformMXBeans(java.lang.management.OperatingSystemMXBean.class);
ManagementFactory.getPlatformMXBeans(com.sun.management.OperatingSystemMXBean.class);
ManagementFactory.getPlatformMXBeans(com.sun.management.UnixOperatingSystemMXBean.class);

Best regards,

-- daniel
http://blogs.sun.com/jmxetc



Mandy Chung wrote:
Please review the fix for:
  6610094: Add generic support for platform MXBeans of any type

Problem:

The java.lang.management API defines the management interfaces for the Java
virtual machine. The management interface for other components in the platform will reside in its own package. For example, the management interface for the
logging facility is java.util.logging.LoggingMXBean.

There is no easy way to find out what management interfaces are defined in
the Java platform. In addition, when a new management interface is added in
the platform, it needs to provide a factory method to obtain the platform
MXBeans (e.g. java.util.logging.LogManager.getLoggerMXBean()). We expect that NIO and the new module system will define their management interfaces in JDK7.

Solution:

Add a new java.lang.management.PlatformManagedObject interface which provides
a method to return the object name. All existing MXBean interfaces will be
modified to extend this interface.

(Note: In the interface summary, the methods count for the *MXBean interfaces
      reflects the number of methods added resulting from extending the
      PlatformManagedObject interface)

Add new methods the in java.lang.management.ManagementFactory class:
1) A method to return the list of platform MXBeans that implement a given
management interface in the running JVM

2) A method to return the list of platform MXBean proxies that implement a given
management interface and in the given remote MBeanServerConnection

3) A method to return all MXBean interfaces for monitoring and managing the
Java platform

Webrev:
Attached webrev.zip. This webrev also contains some code clean up including to throw AssertionError instead of InternalError.

Thanks
Mandy

Reply via email to