5

(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 ディレクトリに作成し、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

問題は、「サービス構成」ダイアログで状況が正しく表示されないことです。たとえば、このスクリーンショットでは、「停止ボタン」をクリックしましたが、まだ「プラグイン」と表示されています。

ここに画像の説明を入力

パズルのどのピースが欠けていますか?

4

1 に答える 1