diff options
| author | Martin Ritchie <ritchiem@apache.org> | 2009-08-12 18:17:26 +0000 |
|---|---|---|
| committer | Martin Ritchie <ritchiem@apache.org> | 2009-08-12 18:17:26 +0000 |
| commit | 0f4bde67479c5ee459cd2687903f932bcd0dd8c6 (patch) | |
| tree | aed449bf36ba32e841c65770a6b750c7c3548c7a /qpid/java/broker/src | |
| parent | 3cd183b2e170ab0c7f190ff45a0a55bcd3478007 (diff) | |
| download | qpid-python-0f4bde67479c5ee459cd2687903f932bcd0dd8c6.tar.gz | |
QPID-2002 : Addition of JMX Management interface logging using the new Logging Interfaces
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@803649 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker/src')
8 files changed, 79 insertions, 18 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java index 14f64d2879..2afd3c1dc3 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java @@ -65,6 +65,8 @@ import org.apache.qpid.server.queue.AMQQueueMBean; import org.apache.qpid.server.queue.QueueRegistry; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.virtualhost.VirtualHost; +import org.apache.qpid.server.logging.actors.CurrentActor; +import org.apache.qpid.server.logging.actors.ManagementActor; /** * This MBean implements the broker management interface and exposes the @@ -79,7 +81,7 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr private final MessageStore _messageStore; private final VirtualHost.VirtualHostMBean _virtualHostMBean; - + @MBeanConstructor("Creates the Broker Manager MBean") public AMQBrokerManagerMBean(VirtualHost.VirtualHostMBean virtualHostMBean) throws JMException { @@ -189,6 +191,7 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr */ public void createNewExchange(String exchangeName, String type, boolean durable) throws JMException { + CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger())); try { synchronized (_exchangeRegistry) @@ -210,6 +213,10 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr { throw new MBeanException(ex, "Error in creating exchange " + exchangeName); } + finally + { + CurrentActor.remove(); + } } /** @@ -225,6 +232,7 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr // boolean inUse = false; // Check if there are queue-bindings with the exchange and unregister // when there are no bindings. + CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger())); try { _exchangeRegistry.unregisterExchange(new AMQShortString(exchangeName), false); @@ -233,6 +241,10 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr { throw new MBeanException(ex, "Error in unregistering exchange " + exchangeName); } + finally + { + CurrentActor.remove(); + } } /** @@ -252,6 +264,7 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr throw new JMException("The queue \"" + queueName + "\" already exists."); } + CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger())); try { AMQShortString ownerShortString = null; @@ -275,6 +288,10 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr jme.initCause(ex); throw new MBeanException(jme, "Error in creating queue " + queueName); } + finally + { + CurrentActor.remove(); + } } private VirtualHost getVirtualHost() @@ -296,6 +313,7 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr throw new JMException("The Queue " + queueName + " is not a registerd queue."); } + CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger())); try { queue.delete(); @@ -308,6 +326,10 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr jme.initCause(ex); throw new MBeanException(jme, "Error in deleting queue " + queueName); } + finally + { + CurrentActor.remove(); + } } public ManagedObject getParentObject() diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java index 4b609f592b..3567cdff85 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java @@ -43,6 +43,8 @@ import org.apache.qpid.framing.FieldTable; import org.apache.qpid.server.queue.IncomingMessage; import org.apache.qpid.server.queue.AMQQueue; import org.apache.qpid.server.virtualhost.VirtualHost; +import org.apache.qpid.server.logging.actors.CurrentActor; +import org.apache.qpid.server.logging.actors.ManagementActor; public class DirectExchange extends AbstractExchange { @@ -129,6 +131,7 @@ public class DirectExchange extends AbstractExchange throw new JMException("Queue \"" + queueName + "\" is not registered with the exchange."); } + CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger())); try { queue.bind(DirectExchange.this, new AMQShortString(binding), null); @@ -137,6 +140,10 @@ public class DirectExchange extends AbstractExchange { throw new MBeanException(ex); } + finally + { + CurrentActor.remove(); + } } }// End of MBean class diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java index fcaec8bdd0..7fa438587c 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java @@ -31,6 +31,8 @@ import org.apache.qpid.framing.FieldTable; import org.apache.qpid.server.queue.IncomingMessage; import org.apache.qpid.server.queue.AMQQueue; import org.apache.qpid.server.virtualhost.VirtualHost; +import org.apache.qpid.server.logging.actors.CurrentActor; +import org.apache.qpid.server.logging.actors.ManagementActor; import javax.management.JMException; import javax.management.MBeanException; @@ -102,6 +104,7 @@ public class FanoutExchange extends AbstractExchange throw new JMException("Queue \"" + queueName + "\" is not registered with the exchange."); } + CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger())); try { queue.bind(FanoutExchange.this, new AMQShortString(BINDING_KEY_SUBSTITUTE), null); @@ -110,6 +113,10 @@ public class FanoutExchange extends AbstractExchange { throw new MBeanException(ex); } + finally + { + CurrentActor.remove(); + } } } // End of MBean class diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java index be7a1dc196..31db1148c6 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java @@ -37,6 +37,8 @@ import org.apache.qpid.server.exchange.topic.TopicParser; import org.apache.qpid.server.exchange.topic.TopicMatcherResult; import org.apache.qpid.server.filter.MessageFilter; import org.apache.qpid.server.filter.JMSSelectorFilter; +import org.apache.qpid.server.logging.actors.CurrentActor; +import org.apache.qpid.server.logging.actors.ManagementActor; import javax.management.JMException; import javax.management.MBeanException; @@ -351,6 +353,7 @@ public class TopicExchange extends AbstractExchange throw new JMException("Queue \"" + queueName + "\" is not registered with the exchange."); } + CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger())); try { queue.bind(TopicExchange.this, new AMQShortString(binding), null); @@ -359,6 +362,10 @@ public class TopicExchange extends AbstractExchange { throw new MBeanException(ex); } + finally + { + CurrentActor.remove(); + } } } // End of MBean class diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/management/AMQManagedObject.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/management/AMQManagedObject.java index c6e07f6f48..594ae24502 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/management/AMQManagedObject.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/management/AMQManagedObject.java @@ -20,6 +20,10 @@ */ package org.apache.qpid.server.management; +import org.apache.qpid.server.logging.actors.ManagementActor; +import org.apache.qpid.server.logging.actors.CurrentActor; +import org.apache.qpid.server.logging.LogActor; + import javax.management.ListenerNotFoundException; import javax.management.MBeanInfo; import javax.management.MBeanNotificationInfo; @@ -50,10 +54,15 @@ public abstract class AMQManagedObject extends DefaultManagedObject protected MBeanInfo _mbeanInfo; + protected LogActor _logActor; + protected AMQManagedObject(Class<?> managementInterface, String typeName, int version) throws NotCompliantMBeanException { super(managementInterface, typeName, version); + // CurrentActor will be defined as these objects are created during + // broker startup. + _logActor = new ManagementActor(CurrentActor.get().getRootMessageLogger()); buildMBeanInfo(); } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java index e8ea56bafd..dc12fdeff7 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java @@ -659,7 +659,7 @@ public class AMQMinaProtocolSession implements AMQProtocolSession, Managable { _closed = true; - _actor.message(ConnectionMessages.CON_1002()); + CurrentActor.get().message(_logSubject, ConnectionMessages.CON_1002()); if (_virtualHost != null) { diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolSessionMBean.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolSessionMBean.java index 225a01386b..81dbeeded2 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolSessionMBean.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolSessionMBean.java @@ -66,7 +66,9 @@ import org.apache.qpid.management.common.mbeans.annotations.MBeanDescription; import org.apache.qpid.protocol.AMQConstant; import org.apache.qpid.server.AMQChannel; import org.apache.qpid.server.logging.actors.CurrentActor; +import org.apache.qpid.server.logging.actors.ManagementActor; import org.apache.qpid.server.logging.LogActor; +import org.apache.qpid.server.logging.RootMessageLogger; import org.apache.qpid.server.management.AMQManagedObject; import org.apache.qpid.server.management.ManagedObject; @@ -187,7 +189,7 @@ public class AMQProtocolSessionMBean extends AMQManagedObject implements Managed */ public void commitTransactions(int channelId) throws JMException { - CurrentActor.set(getLogActor()); + CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger())); try { AMQChannel channel = _session.getChannel(channelId); @@ -216,7 +218,7 @@ public class AMQProtocolSessionMBean extends AMQManagedObject implements Managed */ public void rollbackTransactions(int channelId) throws JMException { - CurrentActor.set(getLogActor()); + CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger())); try { AMQChannel channel = _session.getChannel(channelId); @@ -281,7 +283,22 @@ public class AMQProtocolSessionMBean extends AMQManagedObject implements Managed 0, 0); - CurrentActor.set(getLogActor()); + // This seems ugly but because we use closeConnection in both normal + // broker operation and as part of the management interface it cannot + // be avoided. The Current Actor will be null when this method is + // called via the Management interface. This is because we allow the + // Local API connection with JConsole. If we did not allow that option + // then the CurrentActor could be set in our JMX Proxy object. + // As it is we need to set the CurrentActor on all MBean methods + // Ideally we would not have a single method that can be called from + // two contexts. + boolean removeActor = false; + if (CurrentActor.get() == null) + { + removeActor = true; + CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger())); + } + try { _session.writeFrame(responseBody.generateFrame(0)); @@ -298,21 +315,13 @@ public class AMQProtocolSessionMBean extends AMQManagedObject implements Managed } finally { - CurrentActor.remove(); + if (removeActor) + { + CurrentActor.remove(); + } } } - /** - * Return the LogActor for this MBean Session - * //fixme currently simply returning the managed sessions LogActor, should - * be the ManagementActor - * @return - */ - private LogActor getLogActor() - { - return _session.getLogActor(); - } - @Override public MBeanNotificationInfo[] getNotificationInfo() { diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ExchangeBinding.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ExchangeBinding.java index 7584a3b7cc..6e87cfbb76 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ExchangeBinding.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ExchangeBinding.java @@ -45,7 +45,7 @@ public class ExchangeBinding _arguments = arguments == null ? EMPTY_ARGUMENTS : arguments; _logSubject = new BindingLogSubject(routingKey,exchange,queue); - CurrentActor.get().message(_logSubject, BindingMessages.BND_1001(_arguments.toString(), arguments != null)); + CurrentActor.get().message(_logSubject, BindingMessages.BND_1001(String.valueOf(_arguments), arguments != null)); } |
