我有一个Java应用程序要部署,并且已经制作了一个systemd脚本来启动它。我的Java应用程序取决于Neo4j数据库,该数据库也随systemd一起安装。
这是我的Java应用程序的系统脚本:
[Unit]
Description=My Java app
Requires=neo4j.service
After=network.target neo4j.service
[Service]
WorkingDirectory=/opt/my_app
ExecStart=/bin/sh -ec "java ..."
我的问题是我的Java应用程序在Neo4j螺栓端口尚未准备好时启动了。确实,neo4j.service进程正在快速启动,但是neo4j进程启动后约10秒,7687螺栓端口已启动。因此,使用上面的脚本,我的Java应用启动得太早,并且处于错误状态。 Neo4j螺栓端口准备就绪后,我必须手动重新启动它。
如何在启动脚本之前告诉我的Java应用程序在我的systemd脚本中等待Neo4j专用的螺栓端口就绪?我正在使用Ubuntu 18.04。