2012-03-05 9 views
0

プロジェクトの一環として、06:35 AMから11:59 PMまで実行するJava Server Socketベースのアプリケーションを実装しました。 11:59 PM後にこのプロセスを停止し、06:35 AMに再開しました。 今週は週末を除いてこのプロセスを継続的に実行する必要があります。 このプロセスを連続して実行すると問題が発生します。問題が発生しますか? java.net.ConnectException:接続が拒否されましたか?継続的にこのジョブを実行すると、ソケットはタイムアウトになりますか?私の要求は生産であり、このプロセスは連続的に実行されるためにエラーを投げてはなりません。 何かアドバイスしますか?Javaサーバーソケットを連続して実行するときの問題

コード:

SocketConnection socketConnection = new SocketConnection(); 
ServerSocket serverSocket = socketConnection.getSocketConnection(); 
while (true) 
{ 
    Socket socket = serverSocket.accept(); 
    ServerThreadHandler serverThreadHandler = null; 
    try 
    { 
     PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 
     BufferedReader in =new BufferedReader(new InputStreamReader(socket.getInputStream())); 
     String requestXml = in.readLine(); 
     //TODo the process 
     out.println(responseXml); 
    } catch (Exception e) 
    { 
    } 
} 

よろしく、 キランT

+0

テストを検討しましたか? – EJP

答えて

1

理論的に連続的に受け入れるServerSocketに問題がありません。しかし、closeserverSocket.accept()からsocketを得る必要はありませんか?

ドキュメントを確認してください。終了する必要があり、終了していない場合は、リソースが足りなくなり、最終的にエラーが発生する可能性があります。

既に例外が発生している場合は、スタックトレースを質問に追加してください。

+0

もちろん、彼はそれを閉じる必要があります。これはシステムリソースで、Closeableです。close()メソッドを持っています。 – EJP

関連する問題