2

私は Java を初めて使用し、小さいながらも非常に重要なリサイクル サービスを Java で作成しました。

エラー メッセージが表示されずにサービスが停止する場合があることに気付きました。スタック トレースや例外なしで、Java プロセスがランダムに停止しているようです。

エラーが発生した後でもこのプロセスが存続することを保証する最善の方法は何でしょうか? 役立つ場合は、主な機能を次に示します。

public static void main(String [] args) {
    try {
        MyAppServiceHandler handler = new MyAppServiceHandler();
        MyApp.Processor processor = new MyApp.Processor(handler);
        TServerTransport serverTransport = new TServerSocket(8080);
        TServer server = null;
        server = new TSimpleServer(processor, serverTransport);
        System.out.println("Starting thrift server...");
        server.serve();
    }
    catch (TTransportException e) {
        e.printStackTrace();
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}
4

2 に答える 2

1

私はより良い解決策に変更しました。

Java での私のmain関数は次のようになります。

public static void main(String [] args) {
    try {
      MyAppServiceHandler handler = new MyAppServiceHandler();
      MyApp.Processor processor = new MyApp.Processor(handler);
      TServerTransport serverTransport = new TServerSocket(8080);
      TServer server = null;
      server = new TSimpleServer(processor, serverTransport);
      System.out.println("Starting thrift server...");
      server.serve();
    }
    catch (TTransportException e) {
      e.printStackTrace();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
}

これにより、サーバーが停止することになります。これは、元のソリューションから求めていたものに反します。ただし、Java プロセス/サーバーはスーパーバイザーから開始され、プロセスを監視し、プロセスが停止した場合は再生成されますが、元のソリューション (while ループを使用する) ではサーバーは存続しますが、スタック トレースが存在する場合は出力されます。ポートへの接続に問題があり、それらのエラー メッセージが見逃される可能性があります。

于 2010-02-08T09:41:00.933 に答える