2017-12-29 13 views
1

Java EE EJBタイマーとWildfly 8.2.1サーバーでoracle databaseを使用しています。クラスタ環境でアプリケーションでスケジューラを実行すると、選択されたトランザクション分離:TRANSACTION_SERIALIZABLEがWildflyで実行されます。それは2つのノードからアクセスしますが、私は1つのノードしか必要としません。 EJBでなぜJava EEタイマーがクラスタリングしていないのですか?

DaoImplで
@Singleton 
public class TimerSessionBean implements TimerSessionBeanRemote { 
@Timeout 
    @Schedule(
      hour="11",minute="0",second="00,30" 
      ) 
    public void createTimer(){ 
     System.out.println("timeoutHandler : "+new Date()); 
DAO.getInboxDaoImpl().updateStatus(); 

    } 

@Override 
    public Boolean updateStatus(String chngCustStus){ 
     int resVal = 0; 

      String sql = "INSERT INTO bonus SELECT ename, job, sal, comm FROM emp 
    WHERE comm > sal * 0.25"; 

     } 
    } 

Wildflyサーバーで:これは確かに予想される動作である

Transaction Isolation: TRANSACTION_SERIALIZABLE 

答えて

0

として選択。

Java EE仕様にはクラスタの概念はありません。したがって、ポータブルなソリューションはありません。 JBossで私は過去に石英のタイマーを使っていました。 特にWildfly 8の場合、this postがあなたの質問に答えているかどうかを確認してください。

0

クラスタ化されたEJBタイマーは、WildFly 9以降で使用できます。

  1. WildFly 9 | EJB3 Clustered Database Timers
  2. WildFly 10 | EJB3 Clustered Database Timers

ほとんどのJava Eの実装はこの1つの方法または別のをサポートしていますが、38leinad @この動作が指定されていないことを確かに正しいです:

ドキュメントで見つけることができますどこでも。

JBossAS 7 - > WildFly 8.xの初期バージョンは、仕様の全く新しい実装であり、Java EE 6とJava EE 7に準拠していたため、忘れてしまった。

関連する問題