Wildfly swarm 应用程序的 ManagementFraction 中的 keystoreRelativeTo 选项有问题。
这是代码:
public static void main(String[] args) throws Exception {
Swarm swarm = new Swarm(args);
Archive<JAXRSArchive> archive = createJaxRsArchive();
swarm
.fraction(createManagementFraction())
.fraction(createUndertowFraction())
.fraction(createSecurityFraction())
.start()
.deploy(archive);
}
ManagementFraction managementFraction = new ManagementFraction().securityRealm("UndertowRealm", (realm) -> {
realm.truststoreAuthentication((authn) -> { authn
//.keystoreRelativeTo("/certs")
.keystorePath("sometruststore.jks")
.keystorePassword("pass");
});
realm.sslServerIdentity(new SslServerIdentity<>()
//.keystoreRelativeTo("/certs")
.keystorePath("somekeystore.jks")
.keystorePassword("pass")
.alias("x")
.keyPassword("pass")
);
});
return managementFraction;
}
没有 ".keystoreRelativeTo("/certs")" 只要 *.jks 文件位于项目根目录中,它就可以正常工作。使用选项“.keystoreRelativeTo("/certs")" 我希望它会检查 projectRootDir/certs 中的 jks 文件,但事实并非如此。我也尝试过使用绝对路径,例如 C:/certs 但效果不佳。我有错误:
2017-01-03 21:56:26,638 错误 [org.jboss.as.controller.management-operation](控制器引导线程)WFLYCTL0013:操作(“添加”)失败 - 地址:([(“子系统”=>“ undertow"), ("server" => "default-server"), ("https-listener" => "https") ]) - 失败描述:{ "WFLYCTL0180: Services with missing/unavailable dependencies" => undefined, “WFLYCTL0288:由于一个或多个间接依赖不可用,一个或多个服务无法启动。” => { "无法启动的服务:" => ["jboss.undertow.listener.https"], "可能是原因的服务:" => ["jboss.server.path./certs/"] } }
2017-01-03 21:56:26,639 错误 [org.jboss.as.controller.management-operation](控制器引导线程)WFLYCTL0013:操作(“添加”)失败 - 地址:([(“核心服务”= > "management"), ("security-realm" => "UndertowRealm") ]) - 失败描述:{ "WFLYCTL0412: 未安装的必需服务:" => ["jboss.server.path./certs/" ], "WFLYCTL0180: 缺少/不可用依赖项的服务" => [ "jboss.server.controller.management.security_realm.UndertowRealm.trust-manager is missing [jboss.server.path./certs/]", "jboss.server .controller.management.security_realm.UndertowRealm.key-manager 丢失 [jboss.server.path./certs/]" ] }
我不知道“jboss.server.path”是什么,我认为它是一些 jboss 属性但找不到或设置它。我也尝试过使用 jboss.server.config.dir 参数(之前将其设置为 /certs/ 或 C:/certs/): .keystoreRelativeTo("jboss.server.config.dir")
但错误消息是相同的:(...)“无法启动的服务:”=> [“jboss.undertow.listener.https”],“可能是原因的服务:”=> [“jboss. server.path.\"jboss.server.config.dir\""] (...)
是不是什么bug?任何帮助,将不胜感激。