私はJavaEEでREST APIを構築しています。私はTomEEをアプリケーションサーバーとして使用しています。私は、GET
、POST
、DELETE
のメソッドを持つ自分のRESTfullクラスにメソッドを提供するために、Singleton
JPA DAOをPostgresデータベースに、Stateless
にサービスを提供しています。今まで私はURLルートをテストするのにrest assuredを使用しています。すべてが正常に動作しているが、私は私のシステムを強調したかったので、私はこれでした:どのように並行処理を正しく扱うか?
java.lang.IllegalStateException: Transaction already active
どのように行うことができます
Runnable r1 =() -> {
for (int i = 0; i < 10; i++) {
RegisterAndLogService service = new RegisterAndLogService();
//lots of service calls
}
};
Runnable r2 =() -> {
for (int i = 0; i < 10; i++) {
RegisterAndLogService service2 = new RegisterAndLogService();
//lots of service calls
}
};
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
をしかし、私のスレッドの1に2回目の反復が始まるだろうというとき、私はこれを得ました私はDAOの再募集を積み重ねて、現在の取引を待っている間に適切に1つずつ処理します。 EJB/JPAは何らかの形でこれに関与できますか?要求を保存し、できるだけ早くそれらに対処するには?
ありがとうございます。私は自分のケースが最初のものであると信じています(複数のスレッドを持つ単一のJPAトランザクションマネージャを使用しようとしています)。ステートレスBeanのインスタンスがたくさん要求されている間に、単一のjpaトランザクションマネージャーを維持することに関する設計パターンはありますか? – GabrielRado