You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2009/04/13 15:26:53 UTC
svn commit: r764447 - in /qpid/branches/0.5-fix/qpid: ./
java/broker/src/main/java/org/apache/qpid/server/
java/broker/src/main/java/org/apache/qpid/server/configuration/
java/broker/src/main/java/org/apache/qpid/server/configuration/management/
java/b...
Author: ritchiem
Date: Mon Apr 13 13:26:52 2009
New Revision: 764447
URL: http://svn.apache.org/viewvc?rev=764447&view=rev
Log:
QPID-1699: reload the config file sections that we can when we receive SIGHUP. Add jmx method to do so.
merged from trunk r748561
Added:
qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/
- copied from r748561, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/
qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/ConfigurationManagement.java
- copied unchanged from r748561, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/ConfigurationManagement.java
qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/ConfigurationManagementMBean.java
- copied unchanged from r748561, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/management/ConfigurationManagementMBean.java
Modified:
qpid/branches/0.5-fix/qpid/ (props changed)
qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
Propchange: qpid/branches/0.5-fix/qpid/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Apr 13 13:26:52 2009
@@ -1 +1 @@
-/qpid/trunk/qpid:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875
+/qpid/trunk/qpid:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875,748561
Modified: qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java?rev=764447&r1=764446&r2=764447&view=diff
==============================================================================
--- qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java (original)
+++ qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java Mon Apr 13 13:26:52 2009
@@ -26,6 +26,8 @@
import java.net.InetAddress;
import java.net.InetSocketAddress;
+import javax.management.NotCompliantMBeanException;
+
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
@@ -47,6 +49,7 @@
import org.apache.qpid.framing.ProtocolVersion;
import org.apache.qpid.pool.ReadWriteThreadModel;
import org.apache.qpid.server.configuration.ServerConfiguration;
+import org.apache.qpid.server.configuration.management.ConfigurationManagementMBean;
import org.apache.qpid.server.logging.management.LoggingManagementMBean;
import org.apache.qpid.server.protocol.AMQPFastProtocolHandler;
import org.apache.qpid.server.protocol.AMQPProtocolProvider;
@@ -267,6 +270,9 @@
configureLoggingManagementMBean(logConfigFile, logWatchTime);
+ ConfigurationManagementMBean configMBean = new ConfigurationManagementMBean();
+ configMBean.register();
+
//fixme .. use QpidProperties.getVersionString when we have fixed the classpath issues
// that are causing the broker build to pick up the wrong properties file and hence say
// Starting Qpid Client
Modified: qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java?rev=764447&r1=764446&r2=764447&view=diff
==============================================================================
--- qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java (original)
+++ qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java Mon Apr 13 13:26:52 2009
@@ -27,14 +27,23 @@
import java.util.Map;
import java.util.Map.Entry;
+import javax.management.NotCompliantMBeanException;
+
import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.ConfigurationFactory;
import org.apache.commons.configuration.SystemConfiguration;
import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.qpid.server.configuration.management.ConfigurationManagementMBean;
+import org.apache.qpid.server.registry.ApplicationRegistry;
+import org.apache.qpid.server.virtualhost.VirtualHost;
+import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
+
+import sun.misc.Signal;
+import sun.misc.SignalHandler;
-public class ServerConfiguration
+public class ServerConfiguration implements SignalHandler
{
private static Configuration _config;
@@ -52,6 +61,10 @@
private Map<String, VirtualHostConfiguration> _virtualHosts = new HashMap<String, VirtualHostConfiguration>();
private SecurityConfiguration _securityConfiguration = null;
+ private File _configFile;
+
+ private ConfigurationManagementMBean _mbean;
+
// Map of environment variables to config items
private static final Map<String, String> envVarMap = new HashMap<String, String>();
@@ -82,6 +95,8 @@
public ServerConfiguration(File configurationURL) throws ConfigurationException
{
this(parseConfig(configurationURL));
+ _configFile = configurationURL;
+ sun.misc.Signal.handle(new sun.misc.Signal("HUP"), this);
}
public ServerConfiguration(Configuration conf) throws ConfigurationException
@@ -94,8 +109,9 @@
_securityConfiguration = new SecurityConfiguration(conf.subset("security"));
setupVirtualHosts(conf);
+
}
-
+
private void setupVirtualHosts(Configuration conf) throws ConfigurationException
{
List vhosts = conf.getList("virtualhosts");
@@ -181,6 +197,42 @@
return conf;
}
+ @Override
+ public void handle(Signal arg0)
+ {
+ try
+ {
+ reparseConfigFile();
+ }
+ catch (ConfigurationException e)
+ {
+ // Not much we can do about it really.
+ }
+ }
+
+ public void reparseConfigFile() throws ConfigurationException
+ {
+ if (_configFile != null)
+ {
+ Configuration newConfig = parseConfig(_configFile);
+ _securityConfiguration = new SecurityConfiguration(newConfig.subset("security"));
+ ApplicationRegistry.getInstance().getAccessManager().configurePlugins(_securityConfiguration);
+
+ VirtualHostRegistry vhostRegistry = ApplicationRegistry.getInstance().getVirtualHostRegistry();
+ for (String hostname : _virtualHosts.keySet())
+ {
+ VirtualHost vhost = vhostRegistry.getVirtualHost(hostname);
+ SecurityConfiguration hostSecurityConfig = new SecurityConfiguration(newConfig.subset("virtualhosts.virtualhost."+hostname+".security"));
+ vhost.getAccessManager().configureHostPlugins(hostSecurityConfig);
+ }
+ }
+ }
+
+ public String getQpidWork()
+ {
+ return System.getProperty("QPID_WORK", System.getProperty("java.io.tmpdir"));
+ }
+
public void setJMXManagementPort(int mport)
{
_jmxPort = mport;
Modified: qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java?rev=764447&r1=764446&r2=764447&view=diff
==============================================================================
--- qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java (original)
+++ qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java Mon Apr 13 13:26:52 2009
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.server.management;
+import org.apache.qpid.server.configuration.management.ConfigurationManagement;
import org.apache.qpid.server.logging.management.LoggingManagement;
import org.apache.qpid.server.security.access.management.UserManagement;
import org.apache.log4j.Logger;
@@ -38,6 +39,8 @@
import java.security.AccessController;
import java.security.Principal;
import java.security.AccessControlContext;
+import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Set;
import java.util.Properties;
@@ -57,6 +60,13 @@
private MBeanServer _mbs;
private static Properties _userRoles = new Properties();
+ private static HashSet<String> _adminOnlyMethods = new HashSet<String>();
+ {
+ _adminOnlyMethods.add(UserManagement.TYPE);
+ _adminOnlyMethods.add(LoggingManagement.TYPE);
+ _adminOnlyMethods.add(ConfigurationManagement.TYPE);
+ }
+
public static MBeanServerForwarder newProxyInstance()
{
final InvocationHandler handler = new MBeanInvocationHandlerImpl();
@@ -155,13 +165,8 @@
{
ObjectName object = (ObjectName) args[0];
- if (UserManagement.TYPE.equals(object.getKeyProperty("type"))
- || LoggingManagement.TYPE.equals(object.getKeyProperty("type")))
- {
- return true;
- }
+ return _adminOnlyMethods.contains(object.getKeyProperty("type"));
}
-
return false;
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org