將 Java 應用註冊為作業系統服務,可實現開機自啟、無視窗後台運行、統一服務管理(systemd / services.msc)。本文分別給出 Linux(System V init / systemd)與 Windows(WinSW / Procrun)的標準化部署方案。
編輯 /etc/init.d/boot.local(或建立 /etc/init.d/myapp 腳本),加入啟動命令:
/opt/appServer/MessageServer2.1/run.sh
run.sh 內容範例:
#!/bin/bash
export JAVA_HOME=/usr/lib/jvm/java-11
nohup $JAVA_HOME/bin/java -Xms512m -Xmx1024m -jar app.jar > /var/log/myapp.log 2>&1 &
建立 /etc/systemd/system/myapp.service:
[Unit]
Description=My Java Application
After=network.target
[Service]
Type=simple
User=appuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar app.jar
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
啟用:systemctl daemon-reload && systemctl enable --now myapp。
WinSW.NET4.exe 重命名為 myapp.exe。myapp.xml:
myapp
My Java App
Java 後台服務
java
-Xms512m -Xmx1024m -jar "C:\app\app.jar"
rotate
.\myapp.exe install、.\myapp.exe start。使用 prunsrv.exe 註冊服務,配置較繁瑣,適合需與 Tomcat 整合的場景。
步驟:instsrv MyService C:\path\srvany.exe → 註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters 新增 Application(java.exe 路徑)、AppParameters(-jar app.jar)、AppDirectory(工作目錄)。