feat(jdk8): move files to new folder to avoid resources compiled.
This commit is contained in:
234
jdkSrc/jdk8/javax/management/MBeanServerDelegate.java
Normal file
234
jdkSrc/jdk8/javax/management/MBeanServerDelegate.java
Normal file
@@ -0,0 +1,234 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package javax.management;
|
||||
|
||||
import com.sun.jmx.defaults.JmxProperties;
|
||||
import com.sun.jmx.defaults.ServiceName;
|
||||
import com.sun.jmx.mbeanserver.Util;
|
||||
|
||||
/**
|
||||
* Represents the MBean server from the management point of view.
|
||||
* The MBeanServerDelegate MBean emits the MBeanServerNotifications when
|
||||
* an MBean is registered/unregistered in the MBean server.
|
||||
*
|
||||
* @since 1.5
|
||||
*/
|
||||
public class MBeanServerDelegate implements MBeanServerDelegateMBean,
|
||||
NotificationEmitter {
|
||||
|
||||
/** The MBean server agent identification.*/
|
||||
private String mbeanServerId ;
|
||||
|
||||
/** The NotificationBroadcasterSupport object that sends the
|
||||
notifications */
|
||||
private final NotificationBroadcasterSupport broadcaster;
|
||||
|
||||
private static long oldStamp = 0;
|
||||
private final long stamp;
|
||||
private long sequenceNumber = 1;
|
||||
|
||||
private static final MBeanNotificationInfo[] notifsInfo;
|
||||
|
||||
static {
|
||||
final String[] types = {
|
||||
MBeanServerNotification.UNREGISTRATION_NOTIFICATION,
|
||||
MBeanServerNotification.REGISTRATION_NOTIFICATION
|
||||
};
|
||||
notifsInfo = new MBeanNotificationInfo[1];
|
||||
notifsInfo[0] =
|
||||
new MBeanNotificationInfo(types,
|
||||
"javax.management.MBeanServerNotification",
|
||||
"Notifications sent by the MBeanServerDelegate MBean");
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a MBeanServerDelegate object.
|
||||
*/
|
||||
public MBeanServerDelegate () {
|
||||
stamp = getStamp();
|
||||
broadcaster = new NotificationBroadcasterSupport() ;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the MBean server agent identity.
|
||||
*
|
||||
* @return the identity.
|
||||
*/
|
||||
public synchronized String getMBeanServerId() {
|
||||
if (mbeanServerId == null) {
|
||||
String localHost;
|
||||
try {
|
||||
localHost = java.net.InetAddress.getLocalHost().getHostName();
|
||||
} catch (java.net.UnknownHostException e) {
|
||||
JmxProperties.MISC_LOGGER.finest("Can't get local host name, " +
|
||||
"using \"localhost\" instead. Cause is: "+e);
|
||||
localHost = "localhost";
|
||||
}
|
||||
mbeanServerId = localHost + "_" + stamp;
|
||||
}
|
||||
return mbeanServerId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the full name of the JMX specification implemented
|
||||
* by this product.
|
||||
*
|
||||
* @return the specification name.
|
||||
*/
|
||||
public String getSpecificationName() {
|
||||
return ServiceName.JMX_SPEC_NAME;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the version of the JMX specification implemented
|
||||
* by this product.
|
||||
*
|
||||
* @return the specification version.
|
||||
*/
|
||||
public String getSpecificationVersion() {
|
||||
return ServiceName.JMX_SPEC_VERSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the vendor of the JMX specification implemented
|
||||
* by this product.
|
||||
*
|
||||
* @return the specification vendor.
|
||||
*/
|
||||
public String getSpecificationVendor() {
|
||||
return ServiceName.JMX_SPEC_VENDOR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the JMX implementation name (the name of this product).
|
||||
*
|
||||
* @return the implementation name.
|
||||
*/
|
||||
public String getImplementationName() {
|
||||
return ServiceName.JMX_IMPL_NAME;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the JMX implementation version (the version of this product).
|
||||
*
|
||||
* @return the implementation version.
|
||||
*/
|
||||
public String getImplementationVersion() {
|
||||
try {
|
||||
return System.getProperty("java.runtime.version");
|
||||
} catch (SecurityException e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the JMX implementation vendor (the vendor of this product).
|
||||
*
|
||||
* @return the implementation vendor.
|
||||
*/
|
||||
public String getImplementationVendor() {
|
||||
return ServiceName.JMX_IMPL_VENDOR;
|
||||
}
|
||||
|
||||
// From NotificationEmitter extends NotificationBroacaster
|
||||
//
|
||||
public MBeanNotificationInfo[] getNotificationInfo() {
|
||||
final int len = MBeanServerDelegate.notifsInfo.length;
|
||||
final MBeanNotificationInfo[] infos =
|
||||
new MBeanNotificationInfo[len];
|
||||
System.arraycopy(MBeanServerDelegate.notifsInfo,0,infos,0,len);
|
||||
return infos;
|
||||
}
|
||||
|
||||
// From NotificationEmitter extends NotificationBroacaster
|
||||
//
|
||||
public synchronized
|
||||
void addNotificationListener(NotificationListener listener,
|
||||
NotificationFilter filter,
|
||||
Object handback)
|
||||
throws IllegalArgumentException {
|
||||
broadcaster.addNotificationListener(listener,filter,handback) ;
|
||||
}
|
||||
|
||||
// From NotificationEmitter extends NotificationBroacaster
|
||||
//
|
||||
public synchronized
|
||||
void removeNotificationListener(NotificationListener listener,
|
||||
NotificationFilter filter,
|
||||
Object handback)
|
||||
throws ListenerNotFoundException {
|
||||
broadcaster.removeNotificationListener(listener,filter,handback) ;
|
||||
}
|
||||
|
||||
// From NotificationEmitter extends NotificationBroacaster
|
||||
//
|
||||
public synchronized
|
||||
void removeNotificationListener(NotificationListener listener)
|
||||
throws ListenerNotFoundException {
|
||||
broadcaster.removeNotificationListener(listener) ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables the MBean server to send a notification.
|
||||
* If the passed <var>notification</var> has a sequence number lesser
|
||||
* or equal to 0, then replace it with the delegate's own sequence
|
||||
* number.
|
||||
* @param notification The notification to send.
|
||||
*
|
||||
*/
|
||||
public void sendNotification(Notification notification) {
|
||||
if (notification.getSequenceNumber() < 1) {
|
||||
synchronized (this) {
|
||||
notification.setSequenceNumber(this.sequenceNumber++);
|
||||
}
|
||||
}
|
||||
broadcaster.sendNotification(notification);
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines the default ObjectName of the MBeanServerDelegate.
|
||||
*
|
||||
* @since 1.6
|
||||
*/
|
||||
public static final ObjectName DELEGATE_NAME =
|
||||
Util.newObjectName("JMImplementation:type=MBeanServerDelegate");
|
||||
|
||||
/* Return a timestamp that is monotonically increasing even if
|
||||
System.currentTimeMillis() isn't (for example, if you call this
|
||||
constructor more than once in the same millisecond, or if the
|
||||
clock always returns the same value). This means that the ids
|
||||
for a given JVM will always be distinact, though there is no
|
||||
such guarantee for two different JVMs. */
|
||||
private static synchronized long getStamp() {
|
||||
long s = System.currentTimeMillis();
|
||||
if (oldStamp >= s) {
|
||||
s = oldStamp + 1;
|
||||
}
|
||||
oldStamp = s;
|
||||
return s;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user