gpt4 book ai didi

java - 在 Linux 中将 Java 进程作为服务运行

转载 作者:IT王子 更新时间:2023-10-29 00:38:59 24 4
gpt4 key购买 nike

我需要在 (Red Hat 6.4) Linux 中将 Java 进程作为服务运行(它需要在启动时运行并保持运行)。我大部分时间都在使用它,只是它在“服务配置”窗口中的状态似乎不正确。

为了说明,我做了一个简单的 Java 程序:

package service;

public class JavaService {

public static void main(String args[]){

System.out.println("Starting Java-Service");
while(true){

try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("Java-Service is still running..");
}
}
}

我把它弄乱了,把它放在这个位置:/opt/service/lib

然后,我创建了这个脚本:/opt/service/bin/run_java_service

#!/bin/tcsh
#
# chkconfig: 2345 80 30
# description: java-service Service

setenv JAVA_SERVICE_HOME /opt/service
setenv CLASSPATH $JAVA_SERVICE_HOME/lib/JavaService.jar

setenv SERVICE_PID `ps aux | grep JavaService | grep -v grep | awk '{print $2}'`;

if ( (stop == $1 || restart == $1)) then
echo "java-service stop";
kill -9 $SERVICE_PID
setenv SERVICE_PID
endif

if ( start == $1 || restart == $1 ) then
if($SERVICE_PID) then
echo "java-service is already running"
else
echo "java-service start";
java service.JavaService&
endif
endif

if (status == $1) then
if($SERVICE_PID) then
echo "java-service (pid $SERVICE_PID) is running...";
else
echo "java-service is stopped";
endif
endif

然后我在/etc/rc.d/init.d 目录中创建了一个符号链接(symbolic link)并将其添加到 chkconfig 中:

sudo ln –s /opt/service/bin/run_java_service /etc/rc.d/init.d/java-service
sudo chkconfig --add java-service

此时,像这样的命令在命令行中按预期工作:

sudo service java-service stop
sudo service java-service start
sudo service java-service status

问题是“服务配置”对话框中的状态不正确。例如,在这张截图中,我点击了“停止按钮”,它仍然显示为“已插入”。

enter image description here

我错过了什么拼图?

最佳答案

您可以尝试使用 jsvc来自 Apache 。 Tomcat 使用它作为服务启动。

关于java - 在 Linux 中将 Java 进程作为服务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17069543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com