summaryrefslogtreecommitdiff
path: root/qpid/java/broker/src
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2009-08-12 18:17:26 +0000
committerMartin Ritchie <ritchiem@apache.org>2009-08-12 18:17:26 +0000
commit0f4bde67479c5ee459cd2687903f932bcd0dd8c6 (patch)
treeaed449bf36ba32e841c65770a6b750c7c3548c7a /qpid/java/broker/src
parent3cd183b2e170ab0c7f190ff45a0a55bcd3478007 (diff)
downloadqpid-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')
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java24
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java7
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java7
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java7
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/management/AMQManagedObject.java9
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java2
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolSessionMBean.java39
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ExchangeBinding.java2
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));
}