diff --git a/README.md b/README.md
index cae24f9..4b5d448 100644
--- a/README.md
+++ b/README.md
@@ -24,11 +24,12 @@ Getting Started
Quick start:
1. Download the [latest pre-built SNAPSHOT release](https://oss.sonatype.org/content/repositories/snapshots/net/johnewart/gearman/gearman-server/) from the Sonatype snapshots repository
-2. Run java -jar gearman-server-VERSION.jar
+2. Run `java -jar gearman-server-VERSION.jar`
3. This will default to port 4730 and memory-only persistence, with snapshotting and the web interface listening on port 8080
+4. To list avaliable options run `java -jar gearman-server-VERSION.jar --help`
-If you want to use more advanced features, see the example config.yml
-files in [the gearman-server sub-project](https://github.com/johnewart/gearman-java/tree/master/gearman-server)
+If you want to use more advanced features, run server with config file `java -jar gearman-server-VERSION.jar -c path_to_config_file`.
+For details check example configuration files in [the gearman-server sub-project](https://github.com/johnewart/gearman-java/tree/master/gearman-server)
Web Interface
diff --git a/cfg.yml b/cfg.yml
new file mode 100644
index 0000000..59c0af6
--- /dev/null
+++ b/cfg.yml
@@ -0,0 +1,10 @@
+port: 4730
+httpPort: 8888
+enableSSL: false
+debugging: false
+hostName: gearman
+persistenceEngine:
+ engine: memory
+exceptionStore:
+ engine: memory
+logLevel: WARN
\ No newline at end of file
diff --git a/gearman-client/pom.xml b/gearman-client/pom.xml
index e6e8fdc..451a402 100644
--- a/gearman-client/pom.xml
+++ b/gearman-client/pom.xml
@@ -5,7 +5,7 @@
gearman-java
net.johnewart.gearman
- 0.8.11-SNAPSHOT
+ 0.8.12-SNAPSHOT
4.0.0
jar
diff --git a/gearman-common/pom.xml b/gearman-common/pom.xml
index 2930648..0297d3a 100644
--- a/gearman-common/pom.xml
+++ b/gearman-common/pom.xml
@@ -5,7 +5,7 @@
gearman-java
net.johnewart.gearman
- 0.8.11-SNAPSHOT
+ 0.8.12-SNAPSHOT
4.0.0
diff --git a/gearman-embedded-server/pom.xml b/gearman-embedded-server/pom.xml
index 7758079..deda623 100644
--- a/gearman-embedded-server/pom.xml
+++ b/gearman-embedded-server/pom.xml
@@ -5,7 +5,7 @@
gearman-java
net.johnewart.gearman
- 0.8.11-SNAPSHOT
+ 0.8.12-SNAPSHOT
4.0.0
diff --git a/gearman-engine/pom.xml b/gearman-engine/pom.xml
index d61bab2..4c22743 100644
--- a/gearman-engine/pom.xml
+++ b/gearman-engine/pom.xml
@@ -5,7 +5,7 @@
gearman-java
net.johnewart.gearman
- 0.8.11-SNAPSHOT
+ 0.8.12-SNAPSHOT
4.0.0
diff --git a/gearman-example/pom.xml b/gearman-example/pom.xml
index 9323f4b..363c47e 100644
--- a/gearman-example/pom.xml
+++ b/gearman-example/pom.xml
@@ -5,7 +5,7 @@
gearman-java
net.johnewart.gearman
- 0.8.11-SNAPSHOT
+ 0.8.12-SNAPSHOT
4.0.0
diff --git a/gearman-integration/pom.xml b/gearman-integration/pom.xml
index b2a1a60..46fe09e 100644
--- a/gearman-integration/pom.xml
+++ b/gearman-integration/pom.xml
@@ -5,7 +5,7 @@
gearman-java
net.johnewart.gearman
- 0.8.11-SNAPSHOT
+ 0.8.12-SNAPSHOT
4.0.0
diff --git a/gearman-server/pom.xml b/gearman-server/pom.xml
index 786e30b..2dab099 100644
--- a/gearman-server/pom.xml
+++ b/gearman-server/pom.xml
@@ -5,7 +5,7 @@
gearman-java
net.johnewart.gearman
- 0.8.11-SNAPSHOT
+ 0.8.12-SNAPSHOT
4.0.0
gearman-server
@@ -27,6 +27,11 @@
snakeyaml
1.12
+
+ com.beust
+ jcommander
+ 1.72
+
joda-time
joda-time
diff --git a/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java b/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java
index 032b75e..81df8a6 100644
--- a/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java
+++ b/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java
@@ -1,11 +1,14 @@
package net.johnewart.gearman.server;
+import com.beust.jcommander.JCommander;
+import com.beust.jcommander.ParameterException;
import net.johnewart.gearman.server.config.DefaultServerConfiguration;
import net.johnewart.gearman.server.config.GearmanServerConfiguration;
import net.johnewart.gearman.server.net.ServerListener;
import net.johnewart.gearman.server.web.WebListener;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
+import com.beust.jcommander.Parameter;
import java.io.InputStream;
import java.nio.file.Files;
@@ -14,18 +17,37 @@
public class GearmanDaemon {
private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(GearmanDaemon.class);
+ private static class CommandLineOptions {
+ @Parameter(names = {"--debug", "-d"}, description = "Turn on debug mode, resulting in a more verbose log output")
+ boolean debug = false;
+
+ @Parameter(names = {"--config", "-c"}, description = "Specify file to load configuration")
+ String configFile;
+
+ @Parameter(names = {"--help", "-h"}, description = "Prints usage", help = true)
+ boolean help;
+ }
+
public static void main(String... args)
{
- final String configFile;
+ CommandLineOptions options = new CommandLineOptions();
+ JCommander cmd = new JCommander(options);
+ cmd.setProgramName("Gearman Server");
- if (args.length != 1) {
- configFile = "config.yml";
- } else {
- configFile = args[0];
+ try {
+ cmd.parse(args);
+ if(options.help) {
+ cmd.usage();
+ System.exit(0);
+ }
+
+ } catch (ParameterException e) {
+ cmd.usage();
+ System.exit(0);
}
-
- final GearmanServerConfiguration serverConfiguration = loadFromConfigOrGenerateDefaultConfig(configFile);
+ final GearmanServerConfiguration serverConfiguration = loadFromConfigOrGenerateDefaultConfig(options.configFile);
+ serverConfiguration.setDebugging(options.debug);
final ServerListener serverListener = new ServerListener(serverConfiguration);
final WebListener webListener = new WebListener(serverConfiguration);
@@ -44,10 +66,8 @@ private static GearmanServerConfiguration loadFromConfigOrGenerateDefaultConfig(
serverConfiguration
= yaml.loadAs(in, GearmanServerConfiguration.class);
-
- System.out.println(serverConfiguration.toString());
-
LOG.info("Starting Gearman Server with settings from " + configFile + "...");
+ LOG.info("Serveer settings: " + serverConfiguration.toString());
} catch (Exception e) {
LOG.error("Can't load " + configFile + ": ", e);
diff --git a/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java b/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java
index dc18cee..9cf6d80 100644
--- a/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java
+++ b/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java
@@ -43,7 +43,8 @@ public class GearmanServerConfiguration implements ServerConfiguration {
private MetricRegistry metricRegistry;
private QueueMetrics queueMetrics;
private HealthCheckRegistry healthCheckRegistry;
- private Object configLock = new Object();
+ private final Object configLock = new Object();
+ private String logLevel = "ERROR";
public void setPort(int port) {
this.port = port;
@@ -61,15 +62,20 @@ public void setEnableSSL(boolean enableSSL) {
this.enableSSL = enableSSL;
}
+ public void setLogLevel(String logLevel){
+ this.logLevel = logLevel;
+ if(!debugging) {
+ Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+ root.setLevel(Level.toLevel(this.logLevel));
+ }
+ }
+
public void setDebugging(boolean debugging) {
this.debugging = debugging;
Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
- if(debugging)
- {
+ if(debugging) {
root.setLevel(Level.DEBUG);
- } else {
- root.setLevel(Level.ERROR);
}
}
@@ -147,10 +153,10 @@ public JobQueueFactory getJobQueueFactory() {
public JobManager getJobManager() {
if(jobManager == null) {
jobManager = new JobManager(getJobQueueFactory(),
- getJobHandleFactory(),
- getUniqueIdFactory(),
- getExceptionStorageEngine(),
- getQueueMetrics());
+ getJobHandleFactory(),
+ getUniqueIdFactory(),
+ getExceptionStorageEngine(),
+ getQueueMetrics());
}
return jobManager;
diff --git a/pom.xml b/pom.xml
index 47fe760..1e3f668 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
net.johnewart.gearman
gearman-java
pom
- 0.8.11-SNAPSHOT
+ 0.8.12-SNAPSHOT
gearman-client
gearman-server