Yaml Dropwizard中带有服务器yml命令的自定义命令
我有一个自定义命令:Yaml Dropwizard中带有服务器yml命令的自定义命令,yaml,dropwizard,Yaml,Dropwizard,我有一个自定义命令: public final class ArgsCommand extends Command { private String foobar; private String baz; public ArgsCommand() { super("args", "sets additional application arguments"); } public String getFoobar() {
public final class ArgsCommand extends Command {
private String foobar;
private String baz;
public ArgsCommand() {
super("args", "sets additional application arguments");
}
public String getFoobar() {
return foobar;
}
public String getBaz() {
return baz;
}
@Override
public void configure(Subparser subparser) {
subparser.addArgument("-foobar")
.dest("foobar")
.type(String.class)
.required(true)
.help("the foobar value for the application");
subparser.addArgument("-baz")
.dest("baz")
.type(String.class)
.required(true)
.help("the baz value for the application");
}
@Override
public void run(Bootstrap<?> bootstrap, Namespace namespace) throws Exception {
foobar = namespace.getString("foobar");
baz = namespace.getString("baz");
if (foobar == null || foobar.length() == 0
|| baz == null || baz.length() == 0) {
throw new IllegalArgumentException(
"One or more required command-line arguments is missing!");
}
// do something with the additional arguments
}
}
public final类ArgsCommand extends命令{
私人字符串foobar;
私有字符串baz;
公共ArgsCommand(){
超级(“args”,“设置附加应用程序参数”);
}
公共字符串getFoobar(){
返回foobar;
}
公共字符串getBaz(){
返回baz;
}
@凌驾
公共void配置(子parser子parser){
subparser.addArgument(“-foobar”)
.dest(“foobar”)
.type(String.class)
。必需(正确)
.help(“应用程序的foobar值”);
subparser.addArgument(“-baz”)
.dest(“baz”)
.type(String.class)
。必需(正确)
.help(“应用程序的baz值”);
}
@凌驾
公共void运行(引导引导、命名空间)引发异常{
foobar=namespace.getString(“foobar”);
baz=namespace.getString(“baz”);
如果(foobar==null | | foobar.length()==0
||baz==null | | baz.length()==0){
抛出新的IllegalArgumentException(
“缺少一个或多个必需的命令行参数!”);
}
//对附加参数做些什么
}
}
…在应用程序中设置如下:
@Override
public void initialize(final Bootstrap<FoobarBazConfiguration> bootstrap) {
bootstrap.addCommand(new ArgsCommand());
}
java -jar <jar file> args -foobar asdf -baz 123
@覆盖
公共无效初始化(最终引导引导引导){
addCommand(新的ArgsCommand());
}
…并从命令行执行,如下所示:
@Override
public void initialize(final Bootstrap<FoobarBazConfiguration> bootstrap) {
bootstrap.addCommand(new ArgsCommand());
}
java -jar <jar file> args -foobar asdf -baz 123
java-jar args-foobar asdf-baz 123
我想这样做(不工作):
java-jar服务器args-foobar asdf-baz 123
我现在是否需要一个自定义命令参数来传递和处理.yml文件?好的,因此采用不同的方法,这比我想象的要容易--
1) --将自定义键/值对添加到.yml配置文件:
foobar: asdf
baz: 123
args:
foobar: asdf
baz: 123
2) --在FoobarBazConfiguration.java中注册自定义密钥:
import io.dropwizard.Configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private String foobar;
@NotEmpty
private String baz;
@JsonProperty("foobar")
public String getFoobar() {
return foobar;
}
@JsonProperty("foobar")
public void setFoobar(String foobar) {
this.foobar = foobar;
}
@JsonProperty("baz")
public String getBaz() {
return baz;
}
@JsonProperty("baz")
public void setBaz(String baz) {
this.baz = baz;
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
import io.dropwizard.Configuration;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private Map<String, String> args;
@JsonProperty("args")
public Map<String, String> getArgs() {
return args;
}
@JsonProperty("args")
public void setArgs(Map<String, String> args) {
this.args = args;
}
@JsonIgnore
public String getFoobar() {
return args.get("foobar");
}
@JsonIgnore
public String getBaz() {
return args.get("baz");
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
3) --从FoobarbazaApplication.java中的配置对象检索值:
import io.dropwizard.Configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private String foobar;
@NotEmpty
private String baz;
@JsonProperty("foobar")
public String getFoobar() {
return foobar;
}
@JsonProperty("foobar")
public void setFoobar(String foobar) {
this.foobar = foobar;
}
@JsonProperty("baz")
public String getBaz() {
return baz;
}
@JsonProperty("baz")
public void setBaz(String baz) {
this.baz = baz;
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
import io.dropwizard.Configuration;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private Map<String, String> args;
@JsonProperty("args")
public Map<String, String> getArgs() {
return args;
}
@JsonProperty("args")
public void setArgs(Map<String, String> args) {
this.args = args;
}
@JsonIgnore
public String getFoobar() {
return args.get("foobar");
}
@JsonIgnore
public String getBaz() {
return args.get("baz");
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
4) --按常规从命令行运行应用程序:
java -jar <jar file> server <yml file>
java-jar服务器
不过,我仍然不知道如何将
命令的子类与服务器一起使用。好的,所以采用不同的方法,这比我想象的要容易--
1) --将自定义键/值对添加到.yml配置文件:
foobar: asdf
baz: 123
args:
foobar: asdf
baz: 123
2) --在FoobarBazConfiguration.java中注册自定义密钥:
import io.dropwizard.Configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private String foobar;
@NotEmpty
private String baz;
@JsonProperty("foobar")
public String getFoobar() {
return foobar;
}
@JsonProperty("foobar")
public void setFoobar(String foobar) {
this.foobar = foobar;
}
@JsonProperty("baz")
public String getBaz() {
return baz;
}
@JsonProperty("baz")
public void setBaz(String baz) {
this.baz = baz;
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
import io.dropwizard.Configuration;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private Map<String, String> args;
@JsonProperty("args")
public Map<String, String> getArgs() {
return args;
}
@JsonProperty("args")
public void setArgs(Map<String, String> args) {
this.args = args;
}
@JsonIgnore
public String getFoobar() {
return args.get("foobar");
}
@JsonIgnore
public String getBaz() {
return args.get("baz");
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
3) --从FoobarbazaApplication.java中的配置对象检索值:
import io.dropwizard.Configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private String foobar;
@NotEmpty
private String baz;
@JsonProperty("foobar")
public String getFoobar() {
return foobar;
}
@JsonProperty("foobar")
public void setFoobar(String foobar) {
this.foobar = foobar;
}
@JsonProperty("baz")
public String getBaz() {
return baz;
}
@JsonProperty("baz")
public void setBaz(String baz) {
this.baz = baz;
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
import io.dropwizard.Configuration;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private Map<String, String> args;
@JsonProperty("args")
public Map<String, String> getArgs() {
return args;
}
@JsonProperty("args")
public void setArgs(Map<String, String> args) {
this.args = args;
}
@JsonIgnore
public String getFoobar() {
return args.get("foobar");
}
@JsonIgnore
public String getBaz() {
return args.get("baz");
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
4) --按常规从命令行运行应用程序:
java -jar <jar file> server <yml file>
java-jar服务器
但是我仍然不知道如何将命令的子类与服务器一起使用。如果要在.yml文件中使用嵌套的键/值对,可以使用映射:
1) --将自定义键/值对添加到.yml配置文件:
foobar: asdf
baz: 123
args:
foobar: asdf
baz: 123
2) --在FoobarBazConfiguration.java中注册映射:
import io.dropwizard.Configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private String foobar;
@NotEmpty
private String baz;
@JsonProperty("foobar")
public String getFoobar() {
return foobar;
}
@JsonProperty("foobar")
public void setFoobar(String foobar) {
this.foobar = foobar;
}
@JsonProperty("baz")
public String getBaz() {
return baz;
}
@JsonProperty("baz")
public void setBaz(String baz) {
this.baz = baz;
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
import io.dropwizard.Configuration;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private Map<String, String> args;
@JsonProperty("args")
public Map<String, String> getArgs() {
return args;
}
@JsonProperty("args")
public void setArgs(Map<String, String> args) {
this.args = args;
}
@JsonIgnore
public String getFoobar() {
return args.get("foobar");
}
@JsonIgnore
public String getBaz() {
return args.get("baz");
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
如果要在.yml文件中使用嵌套的键/值对,可以使用映射
:
1) --将自定义键/值对添加到.yml配置文件:
foobar: asdf
baz: 123
args:
foobar: asdf
baz: 123
2) --在FoobarBazConfiguration.java中注册映射:
import io.dropwizard.Configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private String foobar;
@NotEmpty
private String baz;
@JsonProperty("foobar")
public String getFoobar() {
return foobar;
}
@JsonProperty("foobar")
public void setFoobar(String foobar) {
this.foobar = foobar;
}
@JsonProperty("baz")
public String getBaz() {
return baz;
}
@JsonProperty("baz")
public void setBaz(String baz) {
this.baz = baz;
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());
import io.dropwizard.Configuration;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public final class FoobarBazConfiguration extends Configuration {
@NotEmpty
private Map<String, String> args;
@JsonProperty("args")
public Map<String, String> getArgs() {
return args;
}
@JsonProperty("args")
public void setArgs(Map<String, String> args) {
this.args = args;
}
@JsonIgnore
public String getFoobar() {
return args.get("foobar");
}
@JsonIgnore
public String getBaz() {
return args.get("baz");
}
}
System.out.println(configuration.getFoobar());
System.out.println(configuration.getBaz());