You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2009/06/10 14:54:37 UTC
svn commit: r783335 - in /activemq/sandbox/activemq-flow/activemq-jmx: ./
src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/activemq/ src/main/java/org/apache/activemq/broker/
src/main/java/org/apache/activemq/broker/jmx/
Author: chirino
Date: Wed Jun 10 12:54:36 2009
New Revision: 783335
URL: http://svn.apache.org/viewvc?rev=783335&view=rev
Log:
Adding the MBean interfaces from 5.x
Added:
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java (with props)
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/CompositeDataConstants.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/CompositeDataHelper.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java (with props)
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java (with props)
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java (with props)
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/FTConnectorViewMBean.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/JmsConnectorViewMBean.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ManagementContext.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/NetworkBridgeViewMBean.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/NetworkConnectorViewMBean.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ProxyConnectorViewMBean.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/QueueViewMBean.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/SubscriptionViewMBean.java (with props)
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicSubscriptionViewMBean.java
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicViewMBean.java (with props)
activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/package.html (with props)
Modified:
activemq/sandbox/activemq-flow/activemq-jmx/ (props changed)
Propchange: activemq/sandbox/activemq-flow/activemq-jmx/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jun 10 12:54:36 2009
@@ -0,0 +1,9 @@
+.project
+.classpath
+.settings
+.wtpmodules
+*.iml
+junit*.properties
+eclipse-classes
+target
+
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,185 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import javax.management.ObjectName;
+
+import org.apache.activemq.Service;
+
+
+/**
+ * @author David Martin Clavo david(dot)martin(dot)clavo(at)gmail.com (for the reloadLog4jProperties method)
+ * @version $Revision$
+ */
+public interface BrokerViewMBean extends Service {
+
+ /**
+ * @return The unique id of the broker.
+ */
+ String getBrokerId();
+
+ /**
+ * @return The name of the broker.
+ */
+ String getBrokerName();
+
+ /**
+ * The Broker will fush it's caches so that the garbage collector can
+ * recalaim more memory.
+ *
+ * @throws Exception
+ */
+ void gc() throws Exception;
+
+ void resetStatistics();
+
+ void enableStatistics();
+
+ void disableStatistics();
+
+ boolean isStatisticsEnabled();
+
+ long getTotalEnqueueCount();
+
+ long getTotalDequeueCount();
+
+ long getTotalConsumerCount();
+
+ long getTotalMessageCount();
+
+ int getMemoryPercentUsage();
+
+ long getMemoryLimit();
+
+ void setMemoryLimit(long limit);
+
+ int getStorePercentUsage();
+
+ long getStoreLimit();
+
+ void setStoreLimit(long limit);
+
+ int getTempPercentUsage();
+
+ long getTempLimit();
+
+ void setTempLimit(long limit);
+
+ boolean isPersistent();
+
+ boolean isSlave();
+
+ /**
+ * Shuts down the JVM.
+ *
+ * @param exitCode the exit code that will be reported by the JVM process
+ * when it exits.
+ */
+ void terminateJVM(int exitCode);
+
+ /**
+ * Stop the broker and all it's components.
+ */
+ void stop() throws Exception;
+
+ ObjectName[] getTopics();
+
+ ObjectName[] getQueues();
+
+ ObjectName[] getTemporaryTopics();
+
+ ObjectName[] getTemporaryQueues();
+
+ ObjectName[] getTopicSubscribers();
+
+ ObjectName[] getDurableTopicSubscribers();
+
+ ObjectName[] getInactiveDurableTopicSubscribers();
+
+ ObjectName[] getQueueSubscribers();
+
+ ObjectName[] getTemporaryTopicSubscribers();
+
+ ObjectName[] getTemporaryQueueSubscribers();
+
+ String addConnector(String discoveryAddress) throws Exception;
+
+ String addNetworkConnector(String discoveryAddress) throws Exception;
+
+ boolean removeConnector(String connectorName) throws Exception;
+
+ boolean removeNetworkConnector(String connectorName) throws Exception;
+
+ /**
+ * Adds a Topic destination to the broker.
+ *
+ * @param name The name of the Topic
+ * @throws Exception
+ */
+ void addTopic(String name) throws Exception;
+
+ /**
+ * Adds a Queue destination to the broker.
+ *
+ * @param name The name of the Queue
+ * @throws Exception
+ */
+ void addQueue(String name) throws Exception;
+
+ /**
+ * Removes a Topic destination from the broker.
+ *
+ * @param name The name of the Topic
+ * @throws Exception
+ */
+ void removeTopic(String name) throws Exception;
+
+ /**
+ * Removes a Queue destination from the broker.
+ *
+ * @param name The name of the Queue
+ * @throws Exception
+ */
+ void removeQueue(String name) throws Exception;
+
+ /**
+ * Creates a new durable topic subscriber
+ *
+ * @param clientId the JMS client ID
+ * @param subscriberName the durable subscriber name
+ * @param topicName the name of the topic to subscribe to
+ * @param selector a selector or null
+ * @return the object name of the MBean registered in JMX
+ */
+ ObjectName createDurableSubscriber(String clientId, String subscriberName, String topicName, String selector) throws Exception;
+
+ /**
+ * Destroys a durable subscriber
+ *
+ * @param clientId the JMS client ID
+ * @param subscriberName the durable subscriber name
+ */
+ void destroyDurableSubscriber(String clientId, String subscriberName) throws Exception;
+
+ /**
+ * Reloads log4j.properties from the classpath.
+ * This methods calls org.apache.activemq.transport.TransportLoggerControl.reloadLog4jProperties
+ * @throws Throwable
+ */
+ public void reloadLog4jProperties() throws Throwable;
+
+}
Propchange: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java
------------------------------------------------------------------------------
svn:executable = *
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/CompositeDataConstants.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/CompositeDataConstants.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/CompositeDataConstants.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/CompositeDataConstants.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,42 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+public interface CompositeDataConstants {
+ String PROPERTIES = "PropertiesText";
+ String JMSXGROUP_SEQ = "JMSXGroupSeq";
+ String JMSXGROUP_ID = "JMSXGroupID";
+ String BODY_LENGTH = "BodyLength";
+ String BODY_PREVIEW = "BodyPreview";
+ String CONTENT_MAP = "ContentMap";
+ String MESSAGE_TEXT = "Text";
+ String ORIGINAL_DESTINATION = "OriginalDestination";
+
+ // User properties
+ String STRING_PROPERTIES = "StringProperties";
+ String BOOLEAN_PROPERTIES = "BooleanProperties";
+ String BYTE_PROPERTIES = "ByteProperties";
+ String SHORT_PROPERTIES = "ShortProperties";
+ String INT_PROPERTIES = "IntProperties";
+ String LONG_PROPERTIES = "LongProperties";
+ String FLOAT_PROPERTIES = "FloatProperties";
+ String DOUBLE_PROPERTIES = "DoubleProperties";
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/CompositeDataHelper.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/CompositeDataHelper.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/CompositeDataHelper.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/CompositeDataHelper.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,73 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.TabularData;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+public class CompositeDataHelper {
+
+ /**
+ * Extracts the named TabularData field from the CompositeData and converts it to a Map
+ * which is the method used to get the typesafe user properties.
+ */
+ public static Map getTabularMap(CompositeData cdata, String fieldName) {
+ Map map = new HashMap();
+ appendTabularMap(map, cdata, fieldName);
+ return map;
+ }
+
+ public static void appendTabularMap(Map map, CompositeData cdata, String fieldName) {
+ Object tabularObject = cdata.get(fieldName);
+ if (tabularObject instanceof TabularData) {
+ TabularData tabularData = (TabularData) tabularObject;
+ Collection<CompositeData> values = (Collection<CompositeData>) tabularData.values();
+ for (CompositeData compositeData : values) {
+ Object key = compositeData.get("key");
+ Object value = compositeData.get("value");
+ map.put(key, value);
+ }
+ }
+ }
+
+ /**
+ * Returns a map of all the user properties in the given message {@link javax.management.openmbean.CompositeData}
+ * object
+ *
+ * @param cdata
+ * @return
+ */
+ public static Map getMessageUserProperties(CompositeData cdata) {
+ Map map = new HashMap();
+ appendTabularMap(map, cdata, CompositeDataConstants.STRING_PROPERTIES);
+ appendTabularMap(map, cdata, CompositeDataConstants.BOOLEAN_PROPERTIES);
+ appendTabularMap(map, cdata, CompositeDataConstants.BYTE_PROPERTIES);
+ appendTabularMap(map, cdata, CompositeDataConstants.SHORT_PROPERTIES);
+ appendTabularMap(map, cdata, CompositeDataConstants.INT_PROPERTIES);
+ appendTabularMap(map, cdata, CompositeDataConstants.LONG_PROPERTIES);
+ appendTabularMap(map, cdata, CompositeDataConstants.FLOAT_PROPERTIES);
+ appendTabularMap(map, cdata, CompositeDataConstants.DOUBLE_PROPERTIES);
+ return map;
+ }
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,73 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import org.apache.activemq.Service;
+
+public interface ConnectionViewMBean extends Service {
+ /**
+ * @return true if the Connection is slow
+ */
+ boolean isSlow();
+
+ /**
+ * @return if after being marked, the Connection is still writing
+ */
+ boolean isBlocked();
+
+ /**
+ * @return true if the Connection is connected
+ */
+ boolean isConnected();
+
+ /**
+ * @return true if the Connection is active
+ */
+ boolean isActive();
+
+ /**
+ * Returns the number of messages to be dispatched to this connection
+ */
+ int getDispatchQueueSize();
+
+ /**
+ * Resets the statistics
+ */
+ void resetStatistics();
+
+ /**
+ * Returns the number of messages enqueued on this connection
+ *
+ * @return the number of messages enqueued on this connection
+ */
+ long getEnqueueCount();
+
+ /**
+ * Returns the number of messages dequeued on this connection
+ *
+ * @return the number of messages dequeued on this connection
+ */
+ long getDequeueCount();
+
+ /**
+ * Returns the source address for this connection
+ *
+ * @return the souce address for this connection
+ */
+ String getRemoteAddress();
+
+}
Propchange: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java
------------------------------------------------------------------------------
svn:executable = *
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,59 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import org.apache.activemq.Service;
+
+public interface ConnectorViewMBean extends Service {
+
+ /**
+ * Resets the statistics
+ */
+ void resetStatistics();
+
+ /**
+ * enable statistics gathering
+ */
+ void enableStatistics();
+
+ /**
+ * disable statistics gathering
+ */
+ void disableStatistics();
+
+ /**
+ * Returns true if statistics is enabled
+ *
+ * @return true if statistics is enabled
+ */
+ boolean isStatisticsEnabled();
+
+ /**
+ * Returns the number of messages enqueued on this connector
+ *
+ * @return the number of messages enqueued on this connector
+ */
+ long getEnqueueCount();
+
+ /**
+ * Returns the number of messages dequeued on this connector
+ *
+ * @return the number of messages dequeued on this connector
+ */
+ long getDequeueCount();
+
+}
Propchange: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java
------------------------------------------------------------------------------
svn:executable = *
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,273 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.TabularData;
+
+import org.apache.activemq.filter.FilterException;
+
+public interface DestinationViewMBean {
+
+ /**
+ * Returns the name of this destination
+ */
+ String getName();
+
+ /**
+ * Resets the managment counters.
+ */
+ void resetStatistics();
+
+ /**
+ * Returns the number of messages that have been sent to the destination.
+ *
+ * @return The number of messages that have been sent to the destination.
+ */
+ long getEnqueueCount();
+
+ /**
+ * Returns the number of messages that have been delivered (potentially not
+ * acknowledged) to consumers.
+ *
+ * @return The number of messages that have been delivered (potentially not
+ * acknowledged) to consumers.
+ */
+ long getDispatchCount();
+
+ /**
+ * Returns the number of messages that have been acknowledged from the
+ * destination.
+ *
+ * @return The number of messages that have been acknowledged from the
+ * destination.
+ */
+ long getDequeueCount();
+
+ /**
+ * Returns the number of messages that have been dispatched but not
+ * acknowledged
+ *
+ * @return The number of messages that have been dispatched but not
+ * acknowledged
+ */
+ long getInFlightCount();
+
+ /**
+ * Returns the number of consumers subscribed this destination.
+ *
+ * @return The number of consumers subscribed this destination.
+ */
+ long getConsumerCount();
+
+ /**
+ * @return the number of producers publishing to the destination
+ */
+ long getProducerCount();
+
+ /**
+ * Returns the number of messages in this destination which are yet to be
+ * consumed
+ *
+ * @return Returns the number of messages in this destination which are yet
+ * to be consumed
+ */
+ long getQueueSize();
+
+ /**
+ * @return An array of all the messages in the destination's queue.
+ */
+ CompositeData[] browse() throws OpenDataException;
+
+ /**
+ * @return A list of all the messages in the destination's queue.
+ */
+ TabularData browseAsTable() throws OpenDataException;
+
+ /**
+ * @return An array of all the messages in the destination's queue.
+ * @throws InvalidSelectorException
+ */
+ CompositeData[] browse(String selector) throws OpenDataException, FilterException;
+
+ /**
+ * @return A list of all the messages in the destination's queue.
+ * @throws InvalidSelectorException
+ */
+ TabularData browseAsTable(String selector) throws OpenDataException, FilterException;
+
+ /**
+ * Sends a TextMesage to the destination.
+ *
+ * @param body the text to send
+ * @return the message id of the message sent.
+ * @throws Exception
+ */
+ String sendTextMessage(String body) throws Exception;
+
+ /**
+ * Sends a TextMesage to the destination.
+ *
+ * @param headers the message headers and properties to set. Can only
+ * container Strings maped to primitive types.
+ * @param body the text to send
+ * @return the message id of the message sent.
+ * @throws Exception
+ */
+ String sendTextMessage(Map headers, String body) throws Exception;
+
+ /**
+ * Sends a TextMesage to the destination.
+ * @param body the text to send
+ * @param user
+ * @param password
+ * @return
+ * @throws Exception
+ */
+ String sendTextMessage(String body, String user, String password) throws Exception;
+
+ /**
+ *
+ * @param headers the message headers and properties to set. Can only
+ * container Strings maped to primitive types.
+ * @param body the text to send
+ * @param user
+ * @param password
+ * @return
+ * @throws Exception
+ */
+ String sendTextMessage(Map headers, String body, String user, String password) throws Exception;
+ /**
+ * @return the percentage of amount of memory used
+ */
+ int getMemoryPercentUsage();
+
+ /**
+ * @return the amount of memory allocated to this destination
+ */
+ long getMemoryLimit();
+
+ /**
+ * set the amount of memory allocated to this destination
+ * @param limit
+ */
+ void setMemoryLimit(long limit);
+
+ /**
+ * @return the portion of memory from the broker memory limit for this destination
+ */
+ float getMemoryUsagePortion();
+
+ /**
+ * set the portion of memory from the broker memory limit for this destination
+ * @param value
+ */
+ void setMemoryUsagePortion(float value);
+
+ /**
+ * Browses the current destination returning a list of messages
+ */
+ List browseMessages() throws FilterException;
+
+ /**
+ * Browses the current destination with the given selector returning a list
+ * of messages
+ */
+ List browseMessages(String selector) throws FilterException;
+
+ /**
+ * @return longest time a message is held by a destination
+ */
+ long getMaxEnqueueTime();
+
+ /**
+ * @return shortest time a message is held by a destination
+ */
+ long getMinEnqueueTime();
+
+ /**
+ * @return average time a message is held by a destination
+ */
+ double getAverageEnqueueTime();
+
+ /**
+ * @return the producerFlowControl
+ */
+ boolean isProducerFlowControl();
+ /**
+ * @param producerFlowControl the producerFlowControl to set
+ */
+ public void setProducerFlowControl(boolean producerFlowControl);
+
+ /**
+ * @return the maxProducersToAudit
+ */
+ public int getMaxProducersToAudit();
+
+ /**
+ * @param maxProducersToAudit the maxProducersToAudit to set
+ */
+ public void setMaxProducersToAudit(int maxProducersToAudit);
+
+ /**
+ * @return the maxAuditDepth
+ */
+ public int getMaxAuditDepth();
+
+ /**
+ * @param maxAuditDepth the maxAuditDepth to set
+ */
+ public void setMaxAuditDepth(int maxAuditDepth);
+
+ /**
+ * @return the maximum number of message to be paged into the
+ * destination
+ */
+ public int getMaxPageSize();
+
+ /**
+ * @param pageSize
+ * Set the maximum number of messages to page into the destination
+ */
+ public void setMaxPageSize(int pageSize);
+
+ /**
+ * @return true if caching is enabled of for the destination
+ */
+ public boolean isUseCache();
+
+ /**
+ * @param value
+ * enable/disable caching on the destination
+ */
+ public void setUseCache(boolean value);
+
+ /**
+ * Returns all the current subscription MBeans matching this destination
+ *
+ * @return the names of the subscriptions for this destination
+ */
+ ObjectName[] getSubscriptions() throws IOException, MalformedObjectNameException;
+
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,86 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.TabularData;
+
+/**
+ * @version $Revision: 1.5 $
+ */
+public interface DurableSubscriptionViewMBean extends SubscriptionViewMBean {
+ /**
+ * @return name of the durable subscription name
+ */
+ String getSubscriptionName();
+
+ /**
+ * Browse messages for this durable subscriber
+ *
+ * @return messages
+ * @throws OpenDataException
+ */
+ CompositeData[] browse() throws OpenDataException;
+
+ /**
+ * Browse messages for this durable subscriber
+ *
+ * @return messages
+ * @throws OpenDataException
+ */
+ TabularData browseAsTable() throws OpenDataException;
+
+ /**
+ * Destroys the durable subscription so that messages will no longer be
+ * stored for this subscription
+ */
+ void destroy() throws Exception;
+
+ /**
+ * @return true if the message cursor has memory space available
+ * to page in more messages
+ */
+ public boolean doesCursorHaveSpace();
+
+ /**
+ * @return true if the cursor has reached its memory limit for
+ * paged in messages
+ */
+ public boolean isCursorFull();
+
+ /**
+ * @return true if the cursor has messages buffered to deliver
+ */
+ public boolean doesCursorHaveMessagesBuffered();
+
+ /**
+ * @return the cursor memory usage in bytes
+ */
+ public long getCursorMemoryUsage();
+
+ /**
+ * @return the cursor memory usage as a percentage
+ */
+ public int getCursorPercentUsage();
+
+ /**
+ * @return the number of messages available to be paged in
+ * by the cursor
+ */
+ public int cursorSize();
+}
Propchange: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java
------------------------------------------------------------------------------
svn:executable = *
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/FTConnectorViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/FTConnectorViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/FTConnectorViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/FTConnectorViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import org.apache.activemq.Service;
+
+public interface FTConnectorViewMBean extends Service {
+
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/JmsConnectorViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/JmsConnectorViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/JmsConnectorViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/JmsConnectorViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import org.apache.activemq.Service;
+
+public interface JmsConnectorViewMBean extends Service {
+
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ManagementContext.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ManagementContext.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ManagementContext.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ManagementContext.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,429 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import javax.management.Attribute;
+import javax.management.JMException;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+import javax.management.remote.JMXServiceURL;
+
+import org.apache.activemq.Service;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * A Flow provides different dispatch policies within the NMR
+ *
+ * @org.apache.xbean.XBean
+ * @version $Revision$
+ */
+public class ManagementContext implements Service {
+ /**
+ * Default activemq domain
+ */
+ public static final String DEFAULT_DOMAIN = "org.apache.activemq";
+ private static final Log LOG = LogFactory.getLog(ManagementContext.class);
+ private MBeanServer beanServer;
+ private String jmxDomainName = DEFAULT_DOMAIN;
+ private boolean useMBeanServer = true;
+ private boolean createMBeanServer = true;
+ private boolean locallyCreateMBeanServer;
+ private boolean createConnector = true;
+ private boolean findTigerMbeanServer = true;
+ private int connectorPort = 1099;
+ private int rmiServerPort;
+ private String connectorPath = "/jmxrmi";
+ private AtomicBoolean started = new AtomicBoolean(false);
+ private JMXConnectorServer connectorServer;
+ private ObjectName namingServiceObjectName;
+ private Registry registry;
+
+ public ManagementContext() {
+ this(null);
+ }
+
+ public ManagementContext(MBeanServer server) {
+ this.beanServer = server;
+ }
+
+ public void start() throws IOException {
+ // lets force the MBeanServer to be created if needed
+ if (started.compareAndSet(false, true)) {
+ getMBeanServer();
+ if (connectorServer != null) {
+ try {
+ getMBeanServer().invoke(namingServiceObjectName, "start", null, null);
+ } catch (Throwable ignore) {
+ }
+ Thread t = new Thread("JMX connector") {
+ public void run() {
+ try {
+ JMXConnectorServer server = connectorServer;
+ if (started.get() && server != null) {
+ server.start();
+ LOG.info("JMX consoles can connect to " + server.getAddress());
+ }
+ } catch (IOException e) {
+ LOG.warn("Failed to start jmx connector: " + e.getMessage());
+ }
+ }
+ };
+ t.setDaemon(true);
+ t.start();
+ }
+ }
+ }
+
+ public void stop() throws IOException {
+ if (started.compareAndSet(true, false)) {
+ JMXConnectorServer server = connectorServer;
+ connectorServer = null;
+ if (server != null) {
+ try {
+ server.stop();
+ } catch (IOException e) {
+ LOG.warn("Failed to stop jmx connector: " + e.getMessage());
+ }
+ try {
+ getMBeanServer().invoke(namingServiceObjectName, "stop", null, null);
+ } catch (Throwable ignore) {
+ }
+ }
+ if (locallyCreateMBeanServer && beanServer != null) {
+ // check to see if the factory knows about this server
+ List list = MBeanServerFactory.findMBeanServer(null);
+ if (list != null && !list.isEmpty() && list.contains(beanServer)) {
+ MBeanServerFactory.releaseMBeanServer(beanServer);
+ }
+ }
+ beanServer = null;
+ }
+ }
+
+ /**
+ * @return Returns the jmxDomainName.
+ */
+ public String getJmxDomainName() {
+ return jmxDomainName;
+ }
+
+ /**
+ * @param jmxDomainName The jmxDomainName to set.
+ */
+ public void setJmxDomainName(String jmxDomainName) {
+ this.jmxDomainName = jmxDomainName;
+ }
+
+ /**
+ * Get the MBeanServer
+ *
+ * @return the MBeanServer
+ */
+ public MBeanServer getMBeanServer() {
+ if (this.beanServer == null) {
+ this.beanServer = findMBeanServer();
+ }
+ return beanServer;
+ }
+
+ /**
+ * Set the MBeanServer
+ *
+ * @param beanServer
+ */
+ public void setMBeanServer(MBeanServer beanServer) {
+ this.beanServer = beanServer;
+ }
+
+ /**
+ * @return Returns the useMBeanServer.
+ */
+ public boolean isUseMBeanServer() {
+ return useMBeanServer;
+ }
+
+ /**
+ * @param useMBeanServer The useMBeanServer to set.
+ */
+ public void setUseMBeanServer(boolean useMBeanServer) {
+ this.useMBeanServer = useMBeanServer;
+ }
+
+ /**
+ * @return Returns the createMBeanServer flag.
+ */
+ public boolean isCreateMBeanServer() {
+ return createMBeanServer;
+ }
+
+ /**
+ * @param enableJMX Set createMBeanServer.
+ */
+ public void setCreateMBeanServer(boolean enableJMX) {
+ this.createMBeanServer = enableJMX;
+ }
+
+ public boolean isFindTigerMbeanServer() {
+ return findTigerMbeanServer;
+ }
+
+ /**
+ * Enables/disables the searching for the Java 5 platform MBeanServer
+ */
+ public void setFindTigerMbeanServer(boolean findTigerMbeanServer) {
+ this.findTigerMbeanServer = findTigerMbeanServer;
+ }
+
+ /**
+ * Formulate and return the MBean ObjectName of a custom control MBean
+ *
+ * @param type
+ * @param name
+ * @return the JMX ObjectName of the MBean, or <code>null</code> if
+ * <code>customName</code> is invalid.
+ */
+ public ObjectName createCustomComponentMBeanName(String type, String name) {
+ ObjectName result = null;
+ String tmp = jmxDomainName + ":" + "type=" + sanitizeString(type) + ",name=" + sanitizeString(name);
+ try {
+ result = new ObjectName(tmp);
+ } catch (MalformedObjectNameException e) {
+ LOG.error("Couldn't create ObjectName from: " + type + " , " + name);
+ }
+ return result;
+ }
+
+ /**
+ * The ':' and '/' characters are reserved in ObjectNames
+ *
+ * @param in
+ * @return sanitized String
+ */
+ private static String sanitizeString(String in) {
+ String result = null;
+ if (in != null) {
+ result = in.replace(':', '_');
+ result = result.replace('/', '_');
+ result = result.replace('\\', '_');
+ }
+ return result;
+ }
+
+ /**
+ * Retrive an System ObjectName
+ *
+ * @param domainName
+ * @param containerName
+ * @param theClass
+ * @return the ObjectName
+ * @throws MalformedObjectNameException
+ */
+ public static ObjectName getSystemObjectName(String domainName, String containerName, Class theClass) throws MalformedObjectNameException, NullPointerException {
+ String tmp = domainName + ":" + "type=" + theClass.getName() + ",name=" + getRelativeName(containerName, theClass);
+ return new ObjectName(tmp);
+ }
+
+ private static String getRelativeName(String containerName, Class theClass) {
+ String name = theClass.getName();
+ int index = name.lastIndexOf(".");
+ if (index >= 0 && (index + 1) < name.length()) {
+ name = name.substring(index + 1);
+ }
+ return containerName + "." + name;
+ }
+
+ /**
+ * Unregister an MBean
+ *
+ * @param name
+ * @throws JMException
+ */
+ public void unregisterMBean(ObjectName name) throws JMException {
+ if (beanServer != null && beanServer.isRegistered(name)) {
+ beanServer.unregisterMBean(name);
+ }
+ }
+
+ protected synchronized MBeanServer findMBeanServer() {
+ MBeanServer result = null;
+ // create the mbean server
+ try {
+ if (useMBeanServer) {
+ if (findTigerMbeanServer) {
+ result = findTigerMBeanServer();
+ }
+ if (result == null) {
+ // lets piggy back on another MBeanServer -
+ // we could be in an appserver!
+ List list = MBeanServerFactory.findMBeanServer(null);
+ if (list != null && list.size() > 0) {
+ result = (MBeanServer)list.get(0);
+ }
+ }
+ }
+ if (result == null && createMBeanServer) {
+ result = createMBeanServer();
+ }
+ } catch (NoClassDefFoundError e) {
+ LOG.error("Could not load MBeanServer", e);
+ } catch (Throwable e) {
+ // probably don't have access to system properties
+ LOG.error("Failed to initialize MBeanServer", e);
+ }
+ return result;
+ }
+
+ public MBeanServer findTigerMBeanServer() {
+ String name = "java.lang.management.ManagementFactory";
+ Class type = loadClass(name, ManagementContext.class.getClassLoader());
+ if (type != null) {
+ try {
+ Method method = type.getMethod("getPlatformMBeanServer", new Class[0]);
+ if (method != null) {
+ Object answer = method.invoke(null, new Object[0]);
+ if (answer instanceof MBeanServer) {
+ if (createConnector) {
+ createConnector((MBeanServer)answer);
+ }
+ return (MBeanServer)answer;
+ } else {
+ LOG.warn("Could not cast: " + answer + " into an MBeanServer. There must be some classloader strangeness in town");
+ }
+ } else {
+ LOG.warn("Method getPlatformMBeanServer() does not appear visible on type: " + type.getName());
+ }
+ } catch (Exception e) {
+ LOG.warn("Failed to call getPlatformMBeanServer() due to: " + e, e);
+ }
+ } else {
+ LOG.trace("Class not found: " + name + " so probably running on Java 1.4");
+ }
+ return null;
+ }
+
+ private static Class loadClass(String name, ClassLoader loader) {
+ try {
+ return loader.loadClass(name);
+ } catch (ClassNotFoundException e) {
+ try {
+ return Thread.currentThread().getContextClassLoader().loadClass(name);
+ } catch (ClassNotFoundException e1) {
+ return null;
+ }
+ }
+ }
+
+ /**
+ * @return
+ * @throws NullPointerException
+ * @throws MalformedObjectNameException
+ * @throws IOException
+ */
+ protected MBeanServer createMBeanServer() throws MalformedObjectNameException, IOException {
+ MBeanServer mbeanServer = MBeanServerFactory.createMBeanServer(jmxDomainName);
+ locallyCreateMBeanServer = true;
+ if (createConnector) {
+ createConnector(mbeanServer);
+ }
+ return mbeanServer;
+ }
+
+ /**
+ * @param mbeanServer
+ * @throws MalformedObjectNameException
+ * @throws MalformedURLException
+ * @throws IOException
+ */
+ private void createConnector(MBeanServer mbeanServer) throws MalformedObjectNameException, MalformedURLException, IOException {
+ // Create the NamingService, needed by JSR 160
+ try {
+ if (registry == null) {
+ registry = LocateRegistry.createRegistry(connectorPort);
+ }
+ namingServiceObjectName = ObjectName.getInstance("naming:type=rmiregistry");
+ // Do not use the createMBean as the mx4j jar may not be in the
+ // same class loader than the server
+ Class cl = Class.forName("mx4j.tools.naming.NamingService");
+ mbeanServer.registerMBean(cl.newInstance(), namingServiceObjectName);
+ // mbeanServer.createMBean("mx4j.tools.naming.NamingService",
+ // namingServiceObjectName, null);
+ // set the naming port
+ Attribute attr = new Attribute("Port", Integer.valueOf(connectorPort));
+ mbeanServer.setAttribute(namingServiceObjectName, attr);
+ } catch(ClassNotFoundException e) {
+ LOG.debug("Probably not using JRE 1.4: " + e.getLocalizedMessage());
+ }
+ catch (Throwable e) {
+ LOG.debug("Failed to create local registry", e);
+ }
+ // Create the JMXConnectorServer
+ String rmiServer = "";
+ if (rmiServerPort != 0) {
+ // This is handy to use if you have a firewall and need to
+ // force JMX to use fixed ports.
+ rmiServer = "localhost:" + rmiServerPort;
+ }
+ String serviceURL = "service:jmx:rmi://" + rmiServer + "/jndi/rmi://localhost:" + connectorPort + connectorPath;
+ JMXServiceURL url = new JMXServiceURL(serviceURL);
+ connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbeanServer);
+ }
+
+ public String getConnectorPath() {
+ return connectorPath;
+ }
+
+ public void setConnectorPath(String connectorPath) {
+ this.connectorPath = connectorPath;
+ }
+
+ public int getConnectorPort() {
+ return connectorPort;
+ }
+
+ public void setConnectorPort(int connectorPort) {
+ this.connectorPort = connectorPort;
+ }
+
+ public int getRmiServerPort() {
+ return rmiServerPort;
+ }
+
+ public void setRmiServerPort(int rmiServerPort) {
+ this.rmiServerPort = rmiServerPort;
+ }
+
+ public boolean isCreateConnector() {
+ return createConnector;
+ }
+
+ public void setCreateConnector(boolean createConnector) {
+ this.createConnector = createConnector;
+ }
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/NetworkBridgeViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/NetworkBridgeViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/NetworkBridgeViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/NetworkBridgeViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,35 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import org.apache.activemq.Service;
+
+public interface NetworkBridgeViewMBean extends Service {
+
+ String getLocalAddress();
+
+ String getRemoteAddress();
+
+ String getRemoteBrokerName();
+
+ String getLocalBrokerName();
+
+ long getEnqueueCounter();
+
+ long getDequeueCounter();
+
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/NetworkConnectorViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/NetworkConnectorViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/NetworkConnectorViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/NetworkConnectorViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import org.apache.activemq.Service;
+
+public interface NetworkConnectorViewMBean extends Service {
+
+ String getName();
+
+ int getNetworkTTL();
+
+ int getPrefetchSize();
+
+ String getUserName();
+
+ boolean isBridgeTempDestinations();
+
+ boolean isConduitSubscriptions();
+
+ boolean isDecreaseNetworkConsumerPriority();
+
+ boolean isDispatchAsync();
+
+ boolean isDynamicOnly();
+
+ boolean isDuplex();
+
+ void setBridgeTempDestinations(boolean bridgeTempDestinations);
+
+ void setConduitSubscriptions(boolean conduitSubscriptions);
+
+ void setDispatchAsync(boolean dispatchAsync);
+
+ void setDynamicOnly(boolean dynamicOnly);
+
+ void setNetworkTTL(int networkTTL);
+
+ void setPassword(String password);
+
+ void setPrefetchSize(int prefetchSize);
+
+ void setUserName(String userName);
+
+ String getPassword();
+
+ void setDecreaseNetworkConsumerPriority(boolean decreaseNetworkConsumerPriority);
+
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ProxyConnectorViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ProxyConnectorViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ProxyConnectorViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/ProxyConnectorViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import org.apache.activemq.Service;
+
+public interface ProxyConnectorViewMBean extends Service {
+
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/QueueViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/QueueViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/QueueViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/QueueViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,154 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.OpenDataException;
+
+public interface QueueViewMBean extends DestinationViewMBean {
+
+ /**
+ * Retrieve a message from the destination's queue.
+ *
+ * @param messageId the message id of the message to retrieve
+ * @return A CompositeData object which is a JMX version of the messages
+ * @throws OpenDataException
+ */
+ CompositeData getMessage(String messageId) throws OpenDataException;
+
+ /**
+ * Removes a message from the queue. If the message has already been
+ * dispatched to another consumer, the message cannot be deleted and this
+ * method will return false.
+ *
+ * @param messageId
+ * @return true if the message was found and could be successfully deleted.
+ * @throws Exception
+ */
+ boolean removeMessage(String messageId) throws Exception;
+
+ /**
+ * Removes the messages matching the given selector
+ *
+ * @return the number of messages removed
+ */
+ int removeMatchingMessages(String selector) throws Exception;
+
+ /**
+ * Removes the messages matching the given selector up to the maximum number
+ * of matched messages
+ *
+ * @return the number of messages removed
+ */
+ int removeMatchingMessages(String selector, int maximumMessages) throws Exception;
+
+ /**
+ * Removes all of the messages in the queue.
+ *
+ * @throws Exception
+ */
+ void purge() throws Exception;
+
+ /**
+ * Copies a given message to another destination.
+ *
+ * @param messageId
+ * @param destinationName
+ * @return true if the message was found and was successfully copied to the
+ * other destination.
+ * @throws Exception
+ */
+ boolean copyMessageTo(String messageId, String destinationName) throws Exception;
+
+ /**
+ * Copies the messages matching the given selector
+ *
+ * @return the number of messages copied
+ */
+ int copyMatchingMessagesTo(String selector, String destinationName) throws Exception;
+
+ /**
+ * Copies the messages matching the given selector up to the maximum number
+ * of matched messages
+ *
+ * @return the number of messages copied
+ */
+ int copyMatchingMessagesTo(String selector, String destinationName, int maximumMessages) throws Exception;
+
+ /**
+ * Moves the message to another destination.
+ *
+ * @param messageId
+ * @param destinationName
+ * @return true if the message was found and was successfully copied to the
+ * other destination.
+ * @throws Exception
+ */
+ boolean moveMessageTo(String messageId, String destinationName) throws Exception;
+
+ /**
+ * Moves a message back to its original destination
+ */
+ boolean retryMessage(String messageId) throws Exception;
+
+ /**
+ * Moves the messages matching the given selector
+ *
+ * @return the number of messages removed
+ */
+ int moveMatchingMessagesTo(String selector, String destinationName) throws Exception;
+
+ /**
+ * Moves the messages matching the given selector up to the maximum number
+ * of matched messages
+ */
+ int moveMatchingMessagesTo(String selector, String destinationName, int maximumMessages) throws Exception;
+
+ /**
+ * @return true if the message cursor has memory space available
+ * to page in more messages
+ */
+ public boolean doesCursorHaveSpace();
+
+ /**
+ * @return true if the cursor has reached its memory limit for
+ * paged in messages
+ */
+ public boolean isCursorFull();
+
+ /**
+ * @return true if the cursor has messages buffered to deliver
+ */
+ public boolean doesCursorHaveMessagesBuffered();
+
+ /**
+ * @return the cursor memory usage in bytes
+ */
+ public long getCursorMemoryUsage();
+
+ /**
+ * @return the cursor memory usage as a percentage
+ */
+ public int getCursorPercentUsage();
+
+ /**
+ * @return the number of messages available to be paged in
+ * by the cursor
+ */
+ public int cursorSize();
+
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/SubscriptionViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/SubscriptionViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/SubscriptionViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/SubscriptionViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,173 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+import org.apache.activemq.filter.FilterException;
+
+/**
+ * @version $Revision: 1.5 $
+ */
+public interface SubscriptionViewMBean {
+
+ /**
+ * @return the clientId of the Connection the Subscription is on
+ */
+ String getClientId();
+
+ /**
+ * @return the id of the Connection the Subscription is on
+ */
+ String getConnectionId();
+
+ /**
+ * @return the id of the Session the subscription is on
+ */
+ long getSessionId();
+
+ /**
+ * @return the id of the Subscription
+ */
+ long getSubcriptionId();
+
+ /**
+ * @return the destination name
+ */
+ String getDestinationName();
+
+ /**
+ * @return the JMS selector on the current subscription
+ */
+ String getSelector();
+
+ /**
+ * Attempts to change the current active selector on the subscription. This
+ * operation is not supported for persistent topics.
+ */
+ void setSelector(String selector) throws FilterException, UnsupportedOperationException;
+
+ /**
+ * @return true if the destination is a Queue
+ */
+ boolean isDestinationQueue();
+
+ /**
+ * @return true of the destination is a Topic
+ */
+ boolean isDestinationTopic();
+
+ /**
+ * @return true if the destination is temporary
+ */
+ boolean isDestinationTemporary();
+
+ /**
+ * @return true if the subscriber is active
+ */
+ boolean isActive();
+
+ /**
+ * @return number of messages pending delivery
+ */
+ int getPendingQueueSize();
+
+ /**
+ * @return number of messages dispatched
+ */
+ int getDispatchedQueueSize();
+
+ /**
+ * The same as the number of messages dispatched -
+ * making it explicit
+ * @return
+ */
+ int getMessageCountAwaitingAcknowledge();
+
+ /**
+ * @return number of messages that matched the subscription
+ */
+ long getDispachedCounter();
+
+ /**
+ * @return number of messages that matched the subscription
+ */
+ long getEnqueueCounter();
+
+ /**
+ * @return number of messages queued by the client
+ */
+ long getDequeueCounter();
+
+ /**
+ * @return the prefetch that has been configured for this subscriber
+ */
+ int getPrefetchSize();
+
+ /**
+ * @return whether or not the subscriber is retroactive or not
+ */
+ boolean isRetroactive();
+
+ /**
+ * @return whether or not the subscriber is an exclusive consumer
+ */
+ boolean isExclusive();
+
+ /**
+ * @return whether or not the subscriber is durable (persistent)
+ */
+ boolean isDurable();
+
+ /**
+ * @return whether or not the subscriber ignores local messages
+ */
+ boolean isNoLocal();
+
+ /**
+ * @return the maximum number of pending messages allowed in addition to the
+ * prefetch size. If enabled to a non-zero value then this will
+ * perform eviction of messages for slow consumers on non-durable
+ * topics.
+ */
+ int getMaximumPendingMessageLimit();
+
+ /**
+ * @return the consumer priority
+ */
+ byte getPriority();
+
+ /**
+ * @return the name of the consumer which is only used for durable
+ * consumers.
+ */
+ String getSubcriptionName();
+
+ /**
+ * Returns true if this subscription (which may be using wildcards) matches the given queue name
+ *
+ * @param queueName the JMS queue name to match against
+ * @return true if this subscription matches the given queue or false if not
+ */
+ boolean isMatchingQueue(String queueName);
+
+ /**
+ * Returns true if this subscription (which may be using wildcards) matches the given topic name
+ *
+ * @param topicName the JMS topic name to match against
+ * @return true if this subscription matches the given topic or false if not
+ */
+ boolean isMatchingTopic(String topicName);
+}
Propchange: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/SubscriptionViewMBean.java
------------------------------------------------------------------------------
svn:executable = *
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicSubscriptionViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicSubscriptionViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicSubscriptionViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicSubscriptionViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+/**
+ *
+ * @version $Revision: 564271 $
+ */
+public interface TopicSubscriptionViewMBean extends SubscriptionViewMBean {
+
+ /**
+ * @return the number of messages discarded due to being a slow consumer
+ */
+ int getDiscardedCount();
+
+ /**
+ * @return the maximun number of messages that can be pending.
+ */
+ int getMaximumPendingQueueSize();
+ void setMaximumPendingQueueSize(int max);
+
+}
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicViewMBean.java?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicViewMBean.java (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicViewMBean.java Wed Jun 10 12:54:36 2009
@@ -0,0 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.jmx;
+
+public interface TopicViewMBean extends DestinationViewMBean {
+}
Propchange: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/TopicViewMBean.java
------------------------------------------------------------------------------
svn:executable = *
Added: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/package.html
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/package.html?rev=783335&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/package.html (added)
+++ activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/package.html Wed Jun 10 12:54:36 2009
@@ -0,0 +1,25 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+<head>
+</head>
+<body>
+
+JMX MBeans for the broker and its core connectors.
+
+</body>
+</html>
Propchange: activemq/sandbox/activemq-flow/activemq-jmx/src/main/java/org/apache/activemq/broker/jmx/package.html
------------------------------------------------------------------------------
svn:executable = *