問題タブ [message-driven-bean]
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.
spring - EAR で見つかった間違った Spring AppContext
複数の MDB を含む EAR があります。各 MDB jar には、独自のアプリケーション コンテキストがあります。メッセージが到着すると、ロギングから適切な MDB が初期化することがわかりますが、別の MDB からアプリケーション コンテキストを取得します!
各 EJB には独自のクラスローダーが必要だと思いました。そうではないようです。各 MDB に独自のアプリ コンテキストを読み込むように強制するにはどうすればよいですか?
WebSphere 7 を使用しています。
私のプロジェクト構造は次のとおりです。
mdb jar の内容は次のとおりです。
jakarta-ee - JMS コンシューマーとメッセージ駆動型 Bean (MDB) の違いは何ですか?
非同期 JMS (Java Messaging Service) コンシューマーと実際の MDB (メッセージ駆動型 Bean) の間に違いはありますか。私が見る唯一の違いは、MDB クラスには@MessageDriven
、非同期 JMS コンシューマーにはないアノテーションがあることです。
私が見逃しているものは他にありますか?
hibernate - JPA/Hibernateを使用してデータベースで一意の制約を持つマルチスレッド挿入を処理する方法は?
メッセージ駆動型 Bean では、一意のエントリを持つルックアップ テーブルにエントリを永続化します。基本的に、条件 API を使用して select ステートメントを作成し、エントリが見つからない場合は作成します。
em.persist(entry)
特定のケースでは、このエントリの作成 ( ) がデータベースの一意の制約に違反するため、現在、このコードで mysql エラーが発生しています。私の mdb の別のインスタンスが、ルックアップ エントリを見つけられず、作成する前に作成しました。
この同期の問題を処理するにはどうすればよいですか?
multithreading - メッセージ駆動型Bean(MDB)は、他のEJB Beanと同じ制限にバインドされていますか?
メッセージ駆動型Beanでは、セッションBean(EJB3またはEJB3.1)と同じルールに制限されていますか。
- java.lang.reflect Java Reflection APIを使用して、Javaランタイム環境のセキュリティルールで利用できない情報にアクセスします。
- 非最終静的フィールドの読み取りまたは書き込み
- これを使用して、メソッドパラメータまたは結果でインスタンスを参照します
- Javaプログラミング言語のルールによって利用できなくなったパッケージ(およびクラス)にアクセスする
- パッケージでクラスを定義する
- java.awtパッケージを使用してユーザーインターフェイスを作成します
- クラスローダーとセキュリティマネージャーを作成または変更する
- 入力、出力、およびエラーストリームをリダイレクトします
- コードソースのセキュリティポリシー情報を取得する
- セキュリティ構成オブジェクトにアクセスまたは変更する
- スレッドを作成または管理する
- スレッド同期プリミティブを使用して、アクセスを他のエンタープライズBeanインスタンスと同期します
- Java仮想マシンを停止します
- ネイティブライブラリをロードする
- ネットワークソケットをリッスンする、接続を受け入れる、またはネットワークソケットからマルチキャストする
- java.net.Socketまたはjava.net.ServerSocketのソケットファクトリを変更するか、java.net.URLのストリームハンドラファクトリを変更します。
- ファイル記述子を直接読み取りまたは書き込みます
- ファイルシステム内のファイルを作成、変更、または削除する
- Javaシリアル化プロトコルのサブクラスおよびオブジェクト置換機能を使用する
jms - この例外の後、MDB は動作を停止します
エンタープライズ イベント ドリブン アプリケーションを使用しています。JMS キューから読み取る 16 の MDB があります。制御されていない例外が発生すると、次のスタックを受け取ります。
この後、すべての MDB がキューからの読み取りを停止し、アプリケーションを再起動する必要があります。
これは MDB の onMessage コードです。
何か案が?よろしくマッシモ
java - MDB onMessage は、ejbTimeout が終了するまで開始されません。非同期で開始するべきではありませんか?
メッセージをMDB のキューに入れるjavax.ejb.TimedObjectがあります...
これを (Weblogic 10.3.1.0 で) デバッグするとき、sender.sent(txtMsg) 行をステップ オーバーすると、onMessage ブレークポイントがほぼ瞬時にヒットすることが予想されます。ejbTimeout を実行するまで (実際には、TimerImpl.timerExpired から抜け出すとき)、ブレークポイントに到達しません。メッセージ キューは、メッセージを生成する同じサーバー上にあります。
私には奇妙に思えます。
- MDB メッセージは非同期で送信されませんか?
- これは構成の問題でしょうか、それともこれがどのように機能するはずですか?
dependency-injection - メッセージ駆動型Beanに文字列を挿入します
mdbの1つの動作を文字列で構成したいと思います。setMessageTypeメソッドを作成し、ejb-jar(デプロイメント記述子)の構成によって識別子文字列をmdbに挿入したいと思います。
ejb-jarでBeanを宣言する方法は知っていますが、依存性注入を制御するにはどうすればよいですか?
ご挨拶、
ローレス
java - EJB/MDB アプリケーションでの DI
私は現在、IBM Websphere Application Server 7 (Java EE 5) 上で動作する小さな EJB アプリケーションを開発しています。アプリは主に、変換されて DB に格納される受信 MQ メッセージをリッスンする 1 つの MDB で構成されます。現在、構成、マッピング、データソース ルックアップなどを共有するために、多くのシングルトン/ファクトリを使用しています。解決策は、guice/spring のような (単純な) DI フレームワークを使用して、さまざまなインスタンスを注入することです。問題は、初期化/セットアップ コードをどこに配置するかということです。アプリケーションのメイン エントリ ポイントはどこですか。インスタンスを MDB に挿入するにはどうすればよいですか?
jakarta-ee - アンデプロイする前にメッセージ処理を停止するには?
与えられた:
- JMS メッセージ キュー。
- (データベースから) 定期的にそのキューにメッセージを入れるタイマー サービス。
- キューから読み取る JEE6 メッセージ駆動型 Bean。
- タイマー サービスとメッセージ駆動型 Bean は、異なるデプロイメント ユニットの一部です。
問題:
メッセージが処理中である限り、ワークフローの状態を壊さずにメッセージ駆動型 Bean をアンデプロイすることはできません。そのため、最初にタイマー サービスを停止し、すべてのメッセージが終了するまで待ちます。
その動作を自動化する方法はありますか? または、タイマー サービスがまだ実行されている場合、アンデプロイを防ぐことは可能ですか? 現在、JBoss 4.2.3 を使用しています。
非解決策:
- 複数の部門が関与するため、展開ユニットをリファクタリングします。
- システムのクラッシュはカバーされず、防弾ソリューションには回復戦略が含まれている必要があることを知っています.
jms - JBoss AS で Oracle AQ キューをリッスンする MDB を作成するにはどうすればよいですか?
JBoss AS 5.1 で実行される Java EE アプリケーションで Oracle AQ キューをリッスンする必要があります。
Oracle の JMS クライアント ライブラリを使用して通常の JMS クライアントを作成することはできましたが、これは Java EE アプリケーションであるため、どうしても MDB を使用したいと考えています。
これに関するドキュメントは実際には見つかりません。また、JCA を使用してこれを実行できるリソース アダプタも見つかりません。
これを機能させるために何が必要か誰か教えてもらえますか?