【问题标题】:Why can't access to glassfish admin console remotely?为什么无法远程访问 glassfish 管理控制台?
【发布时间】:2018-05-16 15:04:00
【问题描述】:

我有一个虚拟机 Centos7 虚拟机。我从这里安装了 glassfish 5.0:Full platform - glassfish 5.0。我只是将文件夹解压缩到 /opt 中。我正在使用“仅限主机”。

以下是我的java版本:

java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

我已使用以下命令启用安全管理员:

asadmin --host localhost --port 4848 enable-secure-admin

我进入 vm shell 并输入“ifconfig”来了解 IP。 然后,我进入 Windows 主机的 power shell (win + x) 并键入,通过 ssh 连接:

ssh user@x.x.x.x

然后:

cd /opt/glassfish5/bin
./asadmin start-domain domain1

然后我回到我的主机,我打开谷歌浏览器并:

  1. http://x.x.x.x:8080 看起来不错
  2. http://x.x.x.x:4848 强制使用 https,然后浏览器告诉我无法访问该网站

我曾尝试卸载 secure-admin(至少在 glassfish 给我异常说 DAS 或类似的东西需要 secure-admin 之前):

./asadmin --host localhost --port 4848 disable-secure-admin

但我得到以下异常:

NCLS-ADMIN-00010
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
Command disable-secure-admin failed.

调用管理控制台后,我的日志中出现以下异常:

[2018-05-16T16:35:59.644+0200] [glassfish 5.0] [WARNING] [] [org.glassfish.grizzly.filterchain.DefaultFilterChain] [tid: _ThreadID=42 _ThreadName=admin-listener(3)] [timeMillis: 1526481359644] [levelValue: 900] [[
  GRIZZLY0013: Exception during FilterChain execution
java.lang.NoClassDefFoundError: sun/security/ssl/SupportedEllipticCurvesExtension
        at sun.security.ssl.HelloExtensions.<init>(HelloExtensions.java:82)
        at sun.security.ssl.HandshakeMessage$ClientHello.<init>(HandshakeMessage.java:362)
        at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:223)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:984)
        at sun.security.ssl.Handshaker$1.run(Handshaker.java:924)
        at sun.security.ssl.Handshaker$1.run(Handshaker.java:921)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1379)
        at org.glassfish.grizzly.ssl.SSLUtils.executeDelegatedTask(SSLUtils.java:274)
        at org.glassfish.grizzly.ssl.SSLBaseFilter.doHandshakeStep(SSLBaseFilter.java:708)
        at org.glassfish.grizzly.ssl.SSLBaseFilter.doHandshakeStep(SSLBaseFilter.java:622)
        at org.glassfish.grizzly.ssl.SSLBaseFilter.handleRead(SSLBaseFilter.java:334)
        at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
        at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
        at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:231)
        at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
        at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
        at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:539)
        at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
        at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
        at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
        at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
        at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593)
        at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573)
        at java.lang.Thread.run(Thread.java:748)
]]

【问题讨论】:

    标签: ssl https glassfish virtual-machine virtualbox


    【解决方案1】:

    答案是您的 Java 版本对于 GlassFish 来说太新。我已经在这里回答了这个问题:https://stackoverflow.com/a/49998266/212224

    要停止java.lang.NoClassDefFoundError,您需要使用不高于8u151

    的Java版本

    这是由于 Grizzly 使用的内部 JDK 类发生了变化 HTTP/2。

    GlassFish 5.0 没有有最新版本的 Grizzly 与最新的 Java 8 更新兼容。如果您使用的是 GlassFish 5.0 看到这些错误,你有两个选择:

    1. 将 Java 降级到 8u152 或更早版本
    2. Download the latest GlassFish 5.0.1 nightly,应该修复这个问题

    参考: https://github.com/javaee/glassfish/issues/22436#issuecomment-374829430

    【讨论】:

    • 我试过了,实际上它可以将 jdk 降级到 1.8.0 u152
    • 我会稍等片刻才能看到其他回复,然后我会投票。
    • @Mike 我正在运行 ubuntu 16.0.4 和 glassfish5.0.1 和 java 1.8 131。但有同样的问题。启用安全管理后,我无法访问端口 4848 管理页面
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    相关资源
    最近更新 更多