我在CentOS 7上使用了以下systemf脚本来处理GlassFish 4:
[Unit] Description = GlassFish Server v4.1 After = syslog.target network.target [Service] User=glassfish ExecStart = /usr/bin/java -jar /home/glassfish/glassfish4/glassfish/lib/client/appserver-cli.jar start-domain ExecStop = /usr/bin/java -jar /home/glassfish/glassfish4/glassfish/lib/client/appserver-cli.jar stop-domain ExecReload = /usr/bin/java -jar /home/glassfish/glassfish4/glassfish/lib/client/appserver-cli.jar restart-domain Type = forking [Install] WantedBy = multi-user.target
当通过Web应用程序本身或通过NetBeans IDE或通过GlassFish Webpipe理页面执行命令“asadmin restart-domain”时,GlassFish的所有进程都被暂停,因此没有人能够重新启动GlassFish。
在具有原始GlassFish脚本(SysV)的CentOS 6中 – 一切正常。
任何想法如何解决?
编辑1:
1)重启失败后的进程状态
# systemctl status glassfish ● glassfish.service - GlassFish Server v4.1.2 Loaded: loaded (/etc/systemd/system/glassfish.service; enabled; vendor preset: disabled) Active: inactive (dead) since Thu 2017-05-25 02:25:46 CDT; 11s ago Process: 13465 ExecStop=/usr/bin/java -jar /local/glassfish4/glassfish/lib/client/appserver-cli.jar stop-domain (code=exited, status=0/SUCCESS) Process: 13338 ExecStart=/usr/bin/java -jar /local/glassfish4/glassfish/lib/client/appserver-cli.jar start-domain (code=exited, status=0/SUCCESS) Main PID: 13351 (code=exited, status=0/SUCCESS) May 25 02:25:24 dev3.local systemd[1]: Starting GlassFish Server v4.1.2... May 25 02:25:28 dev3.local java[13338]: Waiting for domain1 to start .... May 25 02:25:28 dev3.local java[13338]: Successfully started the domain : domain1 May 25 02:25:28 dev3.local java[13338]: domain Location: /local/glassfish4/glassfish/domains/domain1 May 25 02:25:28 dev3.local java[13338]: Log File: /local/glassfish4/glassfish/domains/domain1/logs/server.log May 25 02:25:28 dev3.local java[13338]: Admin Port: 4848 May 25 02:25:28 dev3.local java[13338]: Command start-domain executed successfully. May 25 02:25:29 dev3.local systemd[1]: Started GlassFish Server v4.1.2. May 25 02:25:46 dev3.local java[13465]: CLI306: Warning - The server located at /local/glassfish4/glassfish/domains/domain1 is not running. May 25 02:25:46 dev3.local java[13465]: Command stop-domain executed successfully.
2)失败重启后的进程状态(在systemdconfiguration文件中有RestartForceExitStatus = SIGUSR1)
#systemctl status glassfish ● glassfish.service - GlassFish Server v4.1.2 Loaded: loaded (/etc/systemd/system/glassfish.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Thu 2017-05-25 02:15:16 CDT; 15s ago Process: 12994 ExecStop=/usr/bin/java -jar /local/glassfish4/glassfish/lib/client/appserver-cli.jar stop-domain (code=exited, status=0/SUCCESS) Process: 12859 ExecStart=/usr/bin/java -jar /local/glassfish4/glassfish/lib/client/appserver-cli.jar start-domain (code=exited, status=0/SUCCESS) Main PID: 12872 (code=exited, status=12) May 25 02:13:36 dev3.local java[12859]: domain Location: /local/glassfish4/glassfish/domains/domain1 May 25 02:13:36 dev3.local java[12859]: Log File: /local/glassfish4/glassfish/domains/domain1/logs/server.log May 25 02:13:36 dev3.local java[12859]: Admin Port: 4848 May 25 02:13:36 dev3.local java[12859]: Command start-domain executed successfully. May 25 02:13:37 dev3.local systemd[1]: Started GlassFish Server v4.1.2. May 25 02:15:15 dev3.local systemd[1]: glassfish.service: main process exited, code=exited, status=12/n/a May 25 02:15:16 dev3.local java[12994]: CLI306: Warning - The server located at /local/glassfish4/glassfish/domains/domain1 is not running. May 25 02:15:16 dev3.local java[12994]: Command stop-domain executed successfully. May 25 02:15:16 dev3.local systemd[1]: Unit glassfish.service entered failed state. May 25 02:15:16 dev3.local systemd[1]: glassfish.service failed.
我怀疑它是发送一个SIGUSR1信号给glassfish进程,然后默认退出。 我会尝试通过添加RestartForceExitStatus=SIGUSR1到服务,看看是否有帮助。