2016-12-09 7 views
2

Javaアプリケーションを実行するWindowsサービスを作成したいとします。Javaアプリケーションを作成してWindowsサービスとして実行

エラー1053:サービスが開始または制御 に応答しませんでした

これは私が私の作成したサービスを開始しようとすると、私はこの応答を取得

sc.exe create myService binPath= "java -jar C:\to\my\service.jar" 

を使用しても問題はなかったです適時にリクエストする

残念ながら、私のプログラムは、実行中のWindowsサービスに応答しなかったようです。

私のプログラムが実行しているWindowsサービスとどのように通信できますか?

私はNSSMでうまくいきました。しかし、私は別のthirdpartyアプリを使いたくありません。 私が回答を検索したとき、私はいつもほとんどの人がJava Service Wrapperを使用していることを知っています。

Windowsサービスからのメッセージを受け入れるようにJavaコードを構造化するにはどうすればいいですか?

ここでは、サービスとして実行したい時間印刷プログラムの簡単な例を示します。私は何をしなければならないのですか?

package tst; 

import java.util.Date; 

public class Tester 
{ 

    public static void main(String[] args) 
    { 
     Thread thread = new Thread() 
     { 

      public void run() 
      { 
       long start = System.currentTimeMillis(); 
       long end = start + 20 * 1000; 

       while (System.currentTimeMillis() < end) 
       { 
        Date date = new Date(); 
        System.out.println("Time: " + date.toString()); 

        try 
        { 
         Thread.sleep(5000); 
        } 
        catch (Exception e) 
        { 
         e.printStackTrace(); 
        } 
       } 

      } 
     }; 
     thread.start(); 
    } 
} 
+0

*「ほとんどの人がJava Service Wrapperを使用していることが常にわかります」*ほとんどの人がそれを使用していると、おそらくあなたもそうであるはずです。 – Andreas

+0

問題は、私はライセンスが必要だが、それは私のための選択肢ではない。 – fty4

+0

JavaExeを試しましたか?それは使いやすいです。 – bb67

答えて

0

アプリケーションがWindows Service Control Manager (SCM)と対話するために必要なインターフェイスを実装していない限り、あなたはサービスとしてアプリケーションを起動、停止または操作することはできません。あなたの唯一の選択肢は、NSSM、JSW、またはMicrosoftの古い機能だがまだ機能しているSrvany utilityのようなサービスラッパーを使用することです。

+0

SCMをサポートするために自分のクラスに実装するための定義済みのインターフェイスはありますか?または、どのように私のプログラマーにその機能を追加することができますか? – fty4

+0

[このMSDNページ](https://msdn.microsoft.com/en-us/library/windows/desktop/ms685942(v = vs.85).aspx)には、Windowsサービスで実装する必要のある関数の一覧があります。これらの関数は、Javaの場合はネイティブインタフェースを介してのみ利用可能です... – CoreTech

関連する問題