問題タブ [ejb-timer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
395 参照

java - callerPrincipal を EJB タイマーから変更するにはどうすればよいですか?

EJB タイマーは常にUNAUTHENTICATEDユーザーと共に実行されます。入れてみました@RunAsがうまくいきませんでした。リフレクションで値を変更しようとしましたが、うまくいきませんでした。これからリモート EJB を呼び出す必要があり、権限を持つユーザーが必要です。

0 投票する
2 に答える
3668 参照

wildfly - WildFly 8.2 でのタイマー復元エラー

JBoss 5.1 から WildFly 8.2 にアップグレードした後、次のエラー ログを取得しました。同時に - すべての作品。

ペア - 2 つの値を含む (シリアル化可能)

StorageData - Long trId フィールドを含む一部のデータ (シリアライズ可能)

豆で:

このエラーを取り除く方法は?

0 投票する
0 に答える
201 参照

java - MQ Queue トランザクションが 2 フェーズ トランザクションでロールバックされない

Bean 管理トランザクションを持つ EJB タイマー (EJB 2.1) があります。

タイマー コードは、1 つのトランザクションで 2 つのリソースを処理するビジネス メソッドを呼び出します。1 つはデータベースで、もう 1 つは MQ キュー サーバーです。

使用するアプリケーション サーバーは Websphere Application Server 7 (WAS) です。2 つのリソース (データベースとキュー マネージャー) 間の整合性を確保するために、WAS で 2 フェーズ コミットをサポートするオプションを有効にしました。これは、データベース操作中に何らかの例外が発生した場合に、キューに投稿されたメッセージがデータベースのロールバックと共にロールバックされ、その逆も同様であることを保証するためです。

以下にフローを説明します。

Timer コードでタイムアウトが発生すると、DirectProcessor の startProcess() が呼び出されます。これがビジネス メソッドです。このメソッドには、同じクラスの createPostXMLMessage() へのメソッド呼び出しがある try ブロックがあります。これには、クラス PostMsg の別のメソッド postMessage() への呼び出しがあります。

問題は、createPostXMLMessage() メソッドでデータベース例外が発生した場合、データベース部分が正常にロールバックされても、以前に投稿されたメッセージがロールバックされないことです。助けてください。

ejb-jar.xml 内

0 投票する
1 に答える
495 参照

java-ee-6 - WebSphere 8 でのスレッド スリープと EJB 3.1 タイマーによる無限ループ: バックプレッシャー

私はする必要があります

  • データベース テーブルを読み取る
  • データを処理する (dataCleanser)

スループットを向上させるために、5 分 (10 個) ごとに起動し、上記の作業を行う EJB タイマー (非永続) を実装しました。

問題は「バック プレッシャー」です。dataCleanser は 12 分ほどかかる場合があり (外部 API 呼び出しを行います)、これが発生すると、Websphere はハング スレッドを報告します。

そのような場合、プログラムでタイマーの数を (たとえば 10 から 5 に) 減らしたいと思います。タイマーが戻ってきて、実行の成功、例外、またはタイムアウトのステータスを報告する場合にのみ、それを行うことができます

そうすれば、背圧を制御できます。 is there anyway to do that in Websphere 8?

別の方法で質問するには

- can the EJB timers(with transaction_not_supported) invoke another EJB that have transaction timeouts? - can those timeouts be caught in the calling timer code?

それが不可能な場合、単純な古い無限ループをスリープ状態で使用してから呼び出して EJB (次に dataCleanser を呼び出す) をトランザクション タイムアウトで使用することの欠点は何ですか?

欠点の 1 つは、これがシングル スレッドになり、タイマーのように 10 個の並列実行を行う方法がわからないことです。

0 投票する
1 に答える
245 参照

websphere - 非永続的な ejb タイマーがトリガーされないのはなぜですか?

最近発生した問題により、永続的なプログラム タイマーを使用するアプリケーションの既存のロジックを非永続的なタイマーに置き換えようとしています。タイマーの永続的な情報を書き込むために WAS が使用するファイル システムがいっぱいになり、Derby データベースが読み取り専用モードで再起動されたため、アプリケーションがタイマー ポストをトリガーできなくなり、サーバーを再起動して同じ問題を修正する必要がありました。

これは、プログラム タイマーをトリガーするために使用される現在のコードです。

http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.htmlに引用されている例に従って、コードを次のように変更しました

しかし、以下の例外に直面しています

62 行目で、createSingleActionTimer が呼び出されます。

いくつかの分析を行いましたが、同じ問題を修正できませんでした。どんなリードも役に立ちます..

0 投票する
2 に答える
229 参照

database - 同じテーブルからデータを読み取るマルチサーバー アプリケーション

2 つの異なるサーバー インスタンスでアプリケーションを実行しています。アプリケーションには、1 分ごとに実行するようにタイマーが設定されたシングルトン EJB があります。EJB のメソッドは、テーブルからレコードを読み取り、それを削除し、キューを介して発行します (すべて 1 つのトランザクションの一部)。両方のサーバーが起動すると、同時にテーブルからレコードを読み取ろうとします。

私の質問は、トランザクションが終了するまで、1 つのアプリケーションだけがレコードを読み取れるようにする方法です。