2016-07-27 4 views
2

С командой systemctl systemctl restart glassfish GF перезапускается должным образом.Glassfish не может перезагрузиться с веб-портала, но работает с командой asadmin

Но когда я пытаюсь перезапустить через веб-порт https://127.0.0.1:4848=> server => Перезагрузите, он не работает без каких-либо причин. Glassfish останавливается, но никогда не перезапускается.

Я использую Glassfish 3.1.2.2 на Fedora 20 с Java 1.6.0_45 x86_64. (Я также попытался с GF 4.1 на Centos 7 с Java 1.8.0_66 x86_64 с тем же результатом)

Вот мой glassfish.service файл:

[Unit] 
Description=GlassFish Server 

[Service] 
User=glassfish 
ExecStart=/usr/share/glassfish3/glassfish/bin/asadmin start-domain 
ExecStop=/usr/share/glassfish3/glassfish/bin/asadmin stop-domain 
ExecReload=/usr/share/glassfish3/glassfish/bin/asadmin restart-domain 
Type=forking 

[Install] 
WantedBy=multi-user.target 

Вот состояние службы systemctl status glassfish -l:

glassfish.service - GlassFish Server 
    Loaded: loaded (/usr/lib/systemd/system/glassfish.service; enabled) 
    Active: failed (Result: exit-code) since Wed 2016-07-27 11:17:22 CEST; 52s ago 
    Process: 9366 ExecStop=/usr/share/glassfish3/glassfish/bin/asadmin stop-domain (code=exited, status=0/SUCCESS) 
    Process: 877 ExecStart=/usr/share/glassfish3/glassfish/bin/asadmin start-domain (code=exited, status=0/SUCCESS) 
Main PID: 1420 (code=exited, status=10) 

Jul 27 10:24:20 decoder asadmin[877]: Successfully started the domain : domain1 
Jul 27 10:24:20 decoder asadmin[877]: domain Location: /usr/share/glassfish3/glassfish/domains/domain1 
Jul 27 10:24:20 decoder asadmin[877]: Log File: /usr/share/glassfish3/glassfish/domains/domain1/logs/server.log 
Jul 27 10:24:20 decoder asadmin[877]: Admin Port: 4848 
Jul 27 10:24:20 decoder asadmin[877]: Command start-domain executed successfully. 
Jul 27 10:24:20 decoder systemd[1]: Started GlassFish Server. 
Jul 27 11:17:22 decoder systemd[1]: glassfish.service: main process exited, code=exited, status=10/n/a 
Jul 27 11:17:22 decoder asadmin[9366]: CLI306 Warning - The server located at /usr/share/glassfish3/glassfish/domains/domain1 is not running. 
Jul 27 11:17:22 decoder asadmin[9366]: Command stop-domain executed successfully. 
Jul 27 11:17:22 decoder systemd[1]: Unit glassfish.service entered failed state. 

Вот GF server.log:

[#|2016-07-27T11:17:20.805+0200|INFO|glassfish3.1.2|javax.enterprise.system.tools.admin.com.sun.enterprise.v3.admin|_ThreadID=23;_ThreadName=Thread-2;|Server restart initiated|#] 

[#|2016-07-27T11:17:20.810+0200|WARNING|glassfish3.1.2|javax.enterprise.system.tools.admin.com.sun.enterprise.v3.admin|_ThreadID=23;_ThreadName=Thread-2;|There should be only 1 primordial module but 0 primordial modules were found.|#] 

Jul 27, 2016 11:17:21 AM com.sun.enterprise.admin.launcher.GFLauncherLogger info 
INFO: JVM invocation command line: 
-XX:+UnlockDiagnosticVMOptions 
-XX:PermSize=64m 
-XX:MaxPermSize=192m 
-XX:NewRatio=2 
-Xmx512m 
-client 
-javaagent:/usr/share/glassfish3/glassfish/lib/monitor/flashlight-agent.jar 
-Dfelix.fileinstall.disableConfigSave=false 
-Djavax.net.ssl.keyStore=/usr/share/glassfish3/glassfish/domains/domain1/config/keystore.jks 
-Djava.awt.headless=true 
-Dfelix.fileinstall.poll=5000 
-Djava.endorsed.dirs=/usr/share/glassfish3/glassfish/modules/endorsed:/usr/share/glassfish3/glassfish/lib/endorsed 
-Dfelix.fileinstall.bundles.startTransient=true 
-Djavax.net.ssl.trustStore=/usr/share/glassfish3/glassfish/domains/domain1/config/cacerts.jks 
-Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as 
-DANTLR_USE_DIRECT_CLASS_LOADING=true 
-Djava.security.auth.login.config=/usr/share/glassfish3/glassfish/domains/domain1/config/login.conf 
-Dgosh.args=--nointeractive 
-Dosgi.shell.telnet.maxconn=1 
-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver 
-Dfelix.fileinstall.dir=/usr/share/glassfish3/glassfish/modules/autostart/ 
-Dosgi.shell.telnet.port=6666 
-Djava.security.policy=/usr/share/glassfish3/glassfish/domains/domain1/config/server.policy 
-Dfelix.fileinstall.log.level=2 
-Duser.timezone=Europe/Zurich 
-Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory 
-Dosgi.shell.telnet.ip=127.0.0.1 
-Dcom.sun.aas.instanceRoot=/usr/share/glassfish3/glassfish/domains/domain1 
-Dcom.sun.aas.installRoot=/usr/share/glassfish3/glassfish 
-Djava.ext.dirs=/usr/java/jdk1.6.0_45/lib/ext:/usr/java/jdk1.6.0_45/jre/lib/ext:/usr/share/glassfish3/glassfish/domains/domain1/lib/ext 
-Dfelix.fileinstall.bundles.new.start=true 
Jul 27, 2016 11:17:22 AM com.sun.enterprise.admin.launcher.GFLauncherLogger info 
INFO: Successfully launched in 3 msec. 

У меня нет отказов SELinux, здесь единственный след:

type=SERVICE_STOP msg=audit(1467638602.044:1652): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg=' comm="glassfish" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed' 

Настройка режима SELinux к разрешительным не имеет никакого эффекта. Я совершенно не знаю, что происходит не так ...


Я также испытанный GF 3.1.2.2 на Centos 6 и он работает. Может быть, это связано с systemctl (по умолчанию Fedora 20 и Centos 7 используют systemctl)?

+0

Может быть, это является основной причиной [http://serverfault.com/questions/112795/how-to-run-a-server-on- порт-80-а-а-нормальный пользователь-на-Linux] (http://serverfault.com/questions/112795/how-to-run-a-server-on-port-80-as-a-normal -user-on-linux) этой проблемы –

+0

Glassfish не прослушивает порт 80/443, но 8080/8181 (по умолчанию, по крайней мере, это моя конфигурация) –

+1

Иметь аналогичную проблему, размещенную здесь: https: // serverfault.com/questions/851683/glassfish-on-centos-7-systemd-asadmin-restart-domain-doesnt-work-as-expec –

ответ

0

Мне пришлось оставить порт администрирования по умолчанию в 8080 и добавить правило брандмауэра «Переадресация портов» с 80 до 8080, а затем перезапуск Glassfish работает правильно.

От https://serverfault.com/a/112798/393296 и правило FirewallD было (для Centos7)

  • Sudo брандмауэр-CMD --zone = "ДЗ" --add вперед-порт = порт = 80: прото = ТСР: toport = 8080 --permanent
  • Судо брандмауэр-CMD --reload

Примечание: Не забудьте изменить зону вашего активного одного (в данном случае моя активная зона ДЗ - more info about FirewallD Centos7)

+0

Я использую Apache для перенаправления входящего HTTP-запроса на Glassfish. Glassfish имеет конфигурацию по умолчанию (прослушивание для 8080 и 8181), поэтому здесь проблема не проблема. –

0

необходимо добавить в раздел [Service] Restart=on-failure

+0

Просто попробовал, поведение остается неизменным с или без. Спасибо, в любом случае –