2012-02-01 2 views
2

アプリケーションでEJBタイマを使用していますが、タイマステータスを確認するたびにアプリケーションがハングします。ステータスを確認するときにEJBタイマーがハングアップする

これを複製するシナリオは次のとおりです。

1)タイマーを開始します。

2)タイムアウトメソッドでは、別のクラスメソッドを呼び出し、そこで30分間スリープします。

3)30分が経過する前に、下記の方法でタイマーの状態を確認してください。

public String getTimerStatus() { 
    String returnStatus = "Stopped"; 
    for (Object obj : timerService.getTimers()) { 
     Timer t = (Timer) obj; 
     try { 
      String scheduled = (String) t.getInfo(); 
      if (scheduled.equals(TIMER_NAME)) { 
       returnStatus = "Running"; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    return returnStatus; 
} 

4)アプリケーションt.getInfo()メソッドが呼び出されたときに上記のように、ハング。

この問題の解決方法を教えてください。

+0

さらにコードを表示できますか?私の考えは、あなたがコンテナによって管理されるべきスレッドを管理しているということです。これはあなたが経験しているトラブルを引き起こすかもしれません – perissf

答えて

0

私の考えは、t.getInfo()が同期されているか、別の方法でロックを取得しようとしています。 timeoutメソッドとそれが呼び出す他のクラスメソッドのコードを提供できますか?同期を使用していますか?

関連する問題