java - Glassfish 无法从 Web 门户重新启动,但可以使用 asadmin 命令

标签 java linux glassfish glassfish-3 glassfish-4.1

使用 systemctl 命令 systemctl restart glassfish,GF 可以正常重启。

但是当我尝试通过门户网站 https://127.0.0.1:4848 => server => Restart 重启时,它无缘无故地失败了。 Glassfish 停止但永远不会重新启动。

我在 Fedora 20java 1.6.0_45 x86_64 上使用 Glassfish 3.1.2.2。 (我还尝试在 Centos 7 上使用 GF 4.1java 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 模式设置为 permissive 没有任何效果。我完全不知道出了什么问题......


我还在 Centos 6 上测试了 GF 3.1.2.2,它可以工作。可能跟systemctl有关(Fedora 20和Centos 7都默认使用systemctl)?

最佳答案

我必须保留 8080 中的默认管理端口并添加从 80 到 8080 的“端口转发”防火墙规则,然后 Glassfish 重新启动才能正常工作。

来自 https://serverfault.com/a/112798/393296并且 FirewallD 规则是(对于 Centos7)

  • sudo firewall-cmd --zone="dmz"--add-forward-port=port=80:proto=tcp:toport=8080 --permanent
  • sudo firewall-cmd --reload

注意:记得将您的区域更改为您的 Activity 区域(在这种情况下,我的 Activity 区域是 dmz -- more info about FirewallD Centos7)

关于java - Glassfish 无法从 Web 门户重新启动,但可以使用 asadmin 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38609584/

相关文章:

java - Base64 编码基本身份验证 header Apache HTTP 客户端

java - 无法从 CursorWindow 读取第 0 行第 5 列。在访问数据之前确保游标已正确初始化

python - 使用 Python 脚本切换进程(运行时终止,不运行时启动)

linux - 部署工具后Matlab UI程序运行不正常

java - Android arraylist 大量字符串对象

java - Jlist 中 JList 的输入事件处理问题

linux shell 在变量中保留空格

java - 如何在 AWS Elastic Beanstalk、连接池和领域上配置 Glassfish

java - 如何使用 EJB 3.1 在我的测试中注入(inject) PesistenceContext?

java - 使用 IntelliJ IDEA 配置 Spring MVC