1

Windows で、mysql サービスを停止して my.ini ファイルを更新する Java プログラムを作成してから、mysql サービスを開始しようとしています。それは正常に動作します。Javaコードを使用して、起動/停止されたmysqlサービスのステータスを確認できます。予期しない状況が発生した場合、指定されたサービスは開始または停止できず、ループする可能性もあります。私のコードを確認してください:

public void processStatusOfMySQLService() {

    String[] commandScript = { "cmd.exe", "/c", "sc", "query", "MySQL" };

    String STATE_PREFIX = "STATE              : ";



    Process process;

    try {

        process = new ProcessBuilder(commandScript).start();

        InputStream is = process.getInputStream();

        InputStreamReader isr = new InputStreamReader(is);

        BufferedReader br = new BufferedReader(isr);

        String line;

        while ((line = br.readLine()) != null) {

            // check that the temp string contains the status prefix

            int indexStatus = line.indexOf(STATE_PREFIX);

            if (indexStatus >= 0) {

                // compare status number to one of the states

                String stateStr = line.substring(

                        indexStatus + STATE_PREFIX.length(),

                        indexStatus + STATE_PREFIX.length() + 1);

                int state = Integer.parseInt(stateStr);

                switch (state) {

                case (1): 

                    // service stopped

                    break;

                case (4):

                    // service started

                    break;

                case (2):

                case (3):

                    // service pending

                    try {

                        Thread.sleep(1000);

                        processStatusOfMySQLService();

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                }

            }



        }

        br.close();

        isr.close();

        is.close();

        process.destroy();



    }

サービスを開始/停止できない場合は、特定の時間後にループから抜け出す必要があります。適切なタイムアウト値を設定する方法???

4

0 に答える 0