Nedávno jsem zkoušel své ruce s SSO pomocí pluginu OpenID connect single sign-on od Gluu. Jedním z předpokladů pro plugin je nainstalovat Oxd server a spustit jej na portu 8099. Instalace Oxd serveru proběhla hladce, ale nepodařilo se spustit démona. Tento výukový program vysvětluje, jak opravit „Unrecognized VM option MaxMetaspaceSize ‘ chyba, která zabránila spuštění serveru oxd.
root@opidclient:~# /etc/init.d/oxd-server start oxd-server is already running ... PID: [1370]
Ačkoli výše uvedený snímek říká oxd-server
bylo zahájeno, ale nezačalo. Ve standardním výstupu ani v souborech protokolu serveru oxd nebyly žádné chybové zprávy nebo podobně. Mohl jsem však najít nějaké informace o oxd-server
konfiguraci pomocí '/etc/init.d/oxd-server status'
příkaz.
root@opidclient:~# /etc/init.d/oxd-server status oxd server NOT running OXD_HOME = /opt/oxd-server OXD_BASE = /opt/oxd-server OXD_CONF = OXD_PID_FILE = /var/run/oxd-server.pid OXD_START = org.xdi.oxd.server.ServerLauncher OXD_LOGS = /var/log/oxd-server OXD_STATE = /opt/oxd-server/oxd-server.state CLASSPATH = JAVA = /usr/bin/java JAVA_OPTIONS = -server -Xms256m -Xmx512m -XX:MaxMetaspaceSize=256m -XX:+Disab leExplicitGC -Doxd.server.config=/etc/oxd/oxd-server/oxd-conf.json -Dlog4j.confi guration=/etc/oxd/oxd-server/log4j.xml -cp /opt/oxd-server/lib/bcprov-jdk15on-1. 54.jar:/opt/oxd-server/lib/oxd-server-jar-with-dependencies.jar -Doxd.logging.di r=/var/log/oxd-server -Doxd.home=/opt/oxd-server -Doxd.base=/opt/oxd-server -Dja va.io.tmpdir=/tmp OXD_ARGS = oxd-server.state=/opt/oxd-server/oxd-server.state RUN_CMD = /usr/bin/java -server -Xms256m -Xmx512m -XX:MaxMetaspaceSize=256m -XX:+DisableExplicitGC -Doxd.server.config=/etc/oxd/oxd-server/oxd-conf.json -Dlog4j.configuration=/etc/oxd/oxd-server/log4j.xml -cp /opt/oxd-server/lib/bcp rov-jdk15on-1.54.jar:/opt/oxd-server/lib/oxd-server-jar-with-dependencies.jar -D oxd.logging.dir=/var/log/oxd-server -Doxd.home=/opt/oxd-server -Doxd.base=/opt/o xd-server -Djava.io.tmpdir=/tmp org.xdi.oxd.server.ServerLauncher oxd-server.state=/opt/oxd-server/oxd-server.state
Z výše uvedeného výstupu jsem poznal příkaz (RUN_CMD
), který ve skutečnosti spouští oxd-server
démon.
Právě jsem provedl příkaz a našel problém, který bránil oxd-server
od startu. Zde je jeho snímek.
root@opidclient:~# /usr/bin/java -server -Xms256m -Xmx512m -XX:MaxMetaspaceSize=256m -XX:+DisableExplicitGC -Doxd.server.config=/etc/oxd/oxd-server/oxd-conf.json -Dlog4j.configuration=/etc/oxd/oxd-server/log4j.xml -cp /opt/oxd-server/lib/bcp rov-jdk15on-1.54.jar:/opt/oxd-server/lib/oxd-server-jar-with-dependencies.jar -D oxd.logging.dir=/var/log/oxd-server -Doxd.home=/opt/oxd-server -Doxd.base=/opt/o xd-server -Djava.io.tmpdir=/tmp org.xdi.oxd.server.ServerLauncher oxd-server.sta te=/opt/oxd-server/oxd-server.state Unrecognized VM option MaxMetaspaceSize=256m Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
Chyba „Nerozpoznaná možnost VM MaxMetaspaceSize=256m “ zabránil vytvoření Java Virtual Machine.
Jak opravit možnost Unrecognized VM MaxMetaspaceSize=256m
Démon Oxd-server je závislý na Javě. Zkontrolujeme verzi Javy pomocí níže uvedeného příkazu.
root@opidclient:~# java -version java version "1.7.0_181" OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.1) OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)
Java verze 1.7.0 nerozpozná možnost virtuálního počítače MaxMetaspaceSize
, místo toho MaxPermSize
by měl být použit. Nicméně MaxMetaspaceSize
je podporována v Javě verze 8 (tj. Java 1.8). Nainstalujme tedy Oracle Java verze 8, jak je uvedeno níže:
$ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java8-installer $ sudo apt-get install oracle-java8-set-default
Podívejme se na verzi Javy:
root@opidclient:~# java -version 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)
Nyní jsem zkusil spustit oxd-server
a fungovalo to.
root@opidclient:~# /etc/init.d/oxd-server start Starting oxd-server: Checking logs for possible errors: PID: [3797] OK Thu Jun 28 07:27:22 UTC 2018 root@opidclient:~# ps -aef|grep oxd jetty 3797 1 51 07:27 ? 00:00:04 /usr/bin/java -server -Xms256m -Xmx512m -XX:MaxMetaspaceSize=256m -XX:+DisableExplicitGC -Doxd.server.config=/etc/oxd/oxd-server/oxd-conf.json -Dlog4j.configuration=/etc/oxd/oxd-server/log4j.xml -cp /opt/oxd-server/lib/bcprov-jdk15on-1.54.jar:/opt/oxd-server/lib/oxd-server-jar-with-dependencies.jar -Doxd.logging.dir=/var/log/oxd-server -Doxd.home=/opt/oxd-server -Doxd.base=/opt/oxd-server -Djava.io.tmpdir=/tmp org.xdi.oxd.server.ServerLauncher oxd-server.state=/opt/oxd-server/oxd-server.state start-log-file=/var/log/oxd-server/start.log root 3827 1581 0 07:27 pts/0 00:00:00 grep --color=auto oxd
root@opidclient:~# telnet 0 8099 Trying 0.0.0.0... Connected to 0. Escape character is '^]'.
A je to!. Doufám, že to pomůže někomu v nouzi.