Я запускаю экземпляр 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.(оба приложения должны быть запущены на одном компьютере)
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)
Очевидно, что требуется правильная аутентификация ...
Вопрос: как правильно предоставить данные аутентификации для RESTAPI?
Я пытался поиграть с заголовком запроса авторизации с базовой аутентификацией, но пока не добился успеха.Большое спасибо за ваши советы по решению этой проблемы!Спасибо!