我通过以下方式启动Payara Embedded实例:
public static void main(String[] args) {
try {
System.out.println("[INFO] Starting embedded Payara...");
BootstrapProperties bootstrap = new BootstrapProperties();
GlassFishRuntime runtime = GlassFishRuntime.bootstrap();
GlassFishProperties glassfishProperties = new GlassFishProperties();
glassfishProperties.setPort("http-listener", 8180);
glassfishProperties.setPort("https-listener", 8183);
GlassFish glassfish = runtime.newGlassFish(glassfishProperties);
glassfish.start();
Deployer deployer = glassfish.getDeployer();
deployer.deploy(new File(System.getProperty("target.project")), "--name=app", "--contextroot=/", "--force=true");
} catch (GlassFishException ex) {
LOG.log(Level.SEVERE, null, ex);
}
}
一旦Payara实例启动,我需要使用单独的应用程序对其进行管理,因为我打算使用Payara REST API。 (两个应用程序都必须在同一台PC上运行)
API可以访问并且可以正常读取,但是一旦我尝试通过向端点发送POST请求来停止服务器:http://localhost:4848/management/domain/stop-它在控制台中给出以下异常:
Nov 25, 2018 8:00:30 PM com.sun.enterprise.admin.util.CommandSecurityChecker authorize
WARNING: com.sun.enterprise.v3.admin.StopDomainCommand
java.lang.IllegalArgumentException: subject
at com.sun.enterprise.admin.util.CommandSecurityChecker.authorize(CommandSecurityChecker.java:172)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1249)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:111)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1857)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1733)
at org.glassfish.admin.rest.utils.SseCommandHelper.run(SseCommandHelper.java:98)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
显然,它需要正确的身份验证...
问题:如何正确向REST API提供身份验证数据?
我尝试使用Basic auth处理Authorization request标头,但到目前为止没有获得任何成功。非常感谢您提出的解决建议!谢谢!