如何正确配置Payara Embedded以访问其REST API(服务器的CLI)?

时间:2018-11-25 12:23:32

标签: payara glassfish-embedded

我通过以下方式启动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标头,但到目前为止没有获得任何成功。非常感谢您提出的解决建议!谢谢!

0 个答案:

没有答案