summaryrefslogtreecommitdiff
path: root/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java')
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java135
1 files changed, 84 insertions, 51 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
index 2bfdd93030..5fcd8a7b52 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
@@ -28,6 +28,8 @@ import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
import org.apache.log4j.Logger;
+import org.apache.qpid.common.QpidProperties;
+import org.apache.qpid.framing.ProtocolVersion;
import org.apache.qpid.server.Broker.InitException;
import org.apache.qpid.server.registry.ApplicationRegistry;
@@ -124,7 +126,7 @@ public class Main
OPTIONS.addOption(OPTION_JMX_PORT_CONNECTOR_SERVER);
}
- private CommandLine commandLine;
+ protected CommandLine _commandLine;
public static void main(String[] args)
{
@@ -160,7 +162,7 @@ public class Main
{
try
{
- commandLine = new PosixParser().parse(OPTIONS, args);
+ _commandLine = new PosixParser().parse(OPTIONS, args);
return true;
}
@@ -176,66 +178,93 @@ public class Main
protected void execute() throws Exception
{
- BrokerOptions options = new BrokerOptions();
- String configFile = commandLine.getOptionValue(OPTION_CONFIG_FILE.getOpt());
- if(configFile != null)
+ if (_commandLine.hasOption(OPTION_HELP.getOpt()))
{
- options.setConfigFile(configFile);
+ final HelpFormatter formatter = new HelpFormatter();
+ formatter.printHelp("Qpid", OPTIONS, true);
}
-
- String logWatchConfig = commandLine.getOptionValue(OPTION_LOG_WATCH.getOpt());
- if(logWatchConfig != null)
+ else if (_commandLine.hasOption(OPTION_VERSION.getOpt()))
{
- options.setLogWatchFrequency(Integer.parseInt(logWatchConfig));
- }
+ final StringBuilder protocol = new StringBuilder("AMQP version(s) [major.minor]: ");
+ boolean first = true;
+ for (final ProtocolVersion pv : ProtocolVersion.getSupportedProtocolVersions())
+ {
+ if (first)
+ {
+ first = false;
+ }
+ else
+ {
+ protocol.append(", ");
+ }
- String logConfig = commandLine.getOptionValue(OPTION_LOG_CONFIG_FILE.getOpt());
- if(logConfig != null)
- {
- options.setLogConfigFile(logConfig);
+ protocol.append(pv.getMajorVersion()).append('-').append(pv.getMinorVersion());
+ }
+ System.out.println(QpidProperties.getVersionString() + " (" + protocol + ")");
}
-
- String jmxPortRegistryServer = commandLine.getOptionValue(OPTION_JMX_PORT_REGISTRY_SERVER.getOpt());
- if(jmxPortRegistryServer != null)
+ else
{
- options.setJmxPortRegistryServer(Integer.parseInt(jmxPortRegistryServer));
- }
+ BrokerOptions options = new BrokerOptions();
+ String configFile = _commandLine.getOptionValue(OPTION_CONFIG_FILE.getOpt());
+ if(configFile != null)
+ {
+ options.setConfigFile(configFile);
+ }
- String jmxPortConnectorServer = commandLine.getOptionValue(OPTION_JMX_PORT_CONNECTOR_SERVER.getLongOpt());
- if(jmxPortConnectorServer != null)
- {
- options.setJmxPortConnectorServer(Integer.parseInt(jmxPortConnectorServer));
- }
+ String logWatchConfig = _commandLine.getOptionValue(OPTION_LOG_WATCH.getOpt());
+ if(logWatchConfig != null)
+ {
+ options.setLogWatchFrequency(Integer.parseInt(logWatchConfig));
+ }
- String bindAddr = commandLine.getOptionValue(OPTION_BIND.getOpt());
- if (bindAddr != null)
- {
- options.setBind(bindAddr);
- }
+ String logConfig = _commandLine.getOptionValue(OPTION_LOG_CONFIG_FILE.getOpt());
+ if(logConfig != null)
+ {
+ options.setLogConfigFile(logConfig);
+ }
- String[] portStr = commandLine.getOptionValues(OPTION_PORT.getOpt());
- if(portStr != null)
- {
- parsePortArray(options, portStr, false);
- for(ProtocolExclusion pe : ProtocolExclusion.values())
+ String jmxPortRegistryServer = _commandLine.getOptionValue(OPTION_JMX_PORT_REGISTRY_SERVER.getOpt());
+ if(jmxPortRegistryServer != null)
{
- parsePortArray(options, commandLine.getOptionValues(pe.getExcludeName()), pe);
+ options.setJmxPortRegistryServer(Integer.parseInt(jmxPortRegistryServer));
}
- }
- String[] sslPortStr = commandLine.getOptionValues(OPTION_SSLPORT.getOpt());
- if(sslPortStr != null)
- {
- parsePortArray(options, sslPortStr, true);
- for(ProtocolExclusion pe : ProtocolExclusion.values())
+ String jmxPortConnectorServer = _commandLine.getOptionValue(OPTION_JMX_PORT_CONNECTOR_SERVER.getLongOpt());
+ if(jmxPortConnectorServer != null)
{
- parsePortArray(options, commandLine.getOptionValues(pe.getExcludeName()), pe);
+ options.setJmxPortConnectorServer(Integer.parseInt(jmxPortConnectorServer));
}
- }
-
- setExceptionHandler();
-
- startBroker(options);
+
+ String bindAddr = _commandLine.getOptionValue(OPTION_BIND.getOpt());
+ if (bindAddr != null)
+ {
+ options.setBind(bindAddr);
+ }
+
+ String[] portStr = _commandLine.getOptionValues(OPTION_PORT.getOpt());
+ if(portStr != null)
+ {
+ parsePortArray(options, portStr, false);
+ for(ProtocolExclusion pe : ProtocolExclusion.values())
+ {
+ parsePortArray(options, _commandLine.getOptionValues(pe.getExcludeName()), pe);
+ }
+ }
+
+ String[] sslPortStr = _commandLine.getOptionValues(OPTION_SSLPORT.getOpt());
+ if(sslPortStr != null)
+ {
+ parsePortArray(options, sslPortStr, true);
+ for(ProtocolExclusion pe : ProtocolExclusion.values())
+ {
+ parsePortArray(options, _commandLine.getOptionValues(pe.getExcludeName()), pe);
+ }
+ }
+
+ setExceptionHandler();
+
+ startBroker(options);
+ }
}
protected void setExceptionHandler()
@@ -273,6 +302,7 @@ public class Main
{
public void uncaughtException(final Thread t, final Throwable e)
{
+ boolean continueOnError = Boolean.getBoolean("qpid.broker.exceptionHandler.continue");
try
{
System.err.println("########################################################################");
@@ -282,17 +312,20 @@ public class Main
System.err.print(" in Thread ");
System.err.println(t.getName());
System.err.println("#");
- System.err.println("# Exiting");
+ System.err.println(continueOnError ? "# Forced to continue by JVM setting 'qpid.broker.exceptionHandler.continue'" : "# Exiting");
System.err.println("#");
System.err.println("########################################################################");
e.printStackTrace(System.err);
Logger logger = Logger.getLogger("org.apache.qpid.server.Main");
- logger.error("Uncaught exception, shutting down.", e);
+ logger.error("Uncaught exception, " + (continueOnError ? "continuing." : "shutting down."), e);
}
finally
{
- Runtime.getRuntime().halt(1);
+ if (!continueOnError)
+ {
+ Runtime.getRuntime().halt(1);
+ }
}
}