問題タブ [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.
java - 複数のキューをリッスンするように MDB を構成する
EJB 3.1 を使用しており、複数のキューをリッスンするように MDB を構成したいと考えています。
XML を介してキュー名を定義することをお勧めしますが、その他の定義は注釈を介して行います。
これはできますか?
jakarta-ee - インバウンドメッセージを処理した後、新しい JMS メッセージを非同期的にポストする方法は?
受信メッセージ A をメッセージ駆動型 Bean で処理した後、フォローアップ メッセージ B を別のキューに書き込むシナリオがあります。Glassfish 3.1を使用しています。
この場合の 1 つの目標は、メッセージ B の投稿が非同期的に行われ、信頼できる必要がないことです。つまり、メッセージ A の処理後にメッセージ B の投稿を試みて失敗した場合、メッセージ A の処理をロールバックしません。 .
2 番目の目標は、メッセージ B を投稿することで、メッセージ A をカバーするトランザクションの範囲をブロックしたり、拡張したりしないことです。メッセージ A をカバーするトランザクションをできるだけ早く閉じ、メッセージ B の処理中に開いたままにしないでください。
1 つのアイデアは、この目的のために @Asynchronous とマークされたメソッドを持つ特別な EJB を作成し、onMessage() の最後でその EJB をルックアップして呼び出すことです。ただし、この場合のベスト プラクティスであるかどうかはわかりません。
このようなケースやより複雑なケースを処理する追加のオーケストレーション ソリューション (ESB など) を導入することには関心がありません。
jakarta-ee - EJB3.0 MDBの使い方
ねえ、私はj2eeでコーディングするのが初めてです。私の質問はMDBに関するものです。すでに weblogic 11g サーバーをセットアップしています。そしてキューが設定されました。
メッセージをキューに送信する Java SE クライアントであるクライアント コードを作成しました。
weblogic の管理コンソールのキューにメッセージが表示されます。
ただし、サーバー側の mdb は呼び出されません。
誰が何が間違っているのか教えてもらえますか。私は、ソリューションが Java アノテーションにあることを好みます。これを読んでくれてありがとう。
ここに私のサーバーコードがあります:
spring - Spring Integration および Tomcat ソリューション vs Websphere MDB ソリューション: 機能性?
エンタープライズ統合ソリューションを次のいずれかに実装するかの選択を検討しています。
- Spring/Spring Integration/JMS/Spring Web MVC
- Websphere アプリケーション サーバー/MDB/Spring
長所/短所は何ですか?
WAS/MDB ソリューションが機能的に優れている点に特に関心があります。
乾杯
ポール
jakarta-ee - メッセージ駆動型Beanへのメッセージ配信を停止する方法は?
質問
メッセージ駆動型Beanを(プログラムで)停止して、新しいメッセージを消費せず、実行中のトランザクションを通常どおりに処理することは可能ですか?
(これは、アンデプロイする前にメッセージ処理を停止する方法のフォローアップです?)。
与えられた
- JBossMessagingを使用したJBoss4.2.3
- EJB2.0に準拠したメッセージ駆動型Bean
失敗した試み
- MBeanメソッドを使用したいのです
stopDelivery
が、残念ながらトランザクションがすぐに閉じられ(バグ#EJBTHREE-1870を参照)、多くの例外が発生します。 - JMXコンソールで最大プールサイズを0に減らしようとしましたが、アクティブなセッションの数はまったく影響を受けません。
- キューを停止することはできますが
NameNotFoundException
、プロデューサー内でsを処理する必要があります。
java - WAS 7.0 - MDB のデフォルト インターセプター
Websphere 7.0 AS でデフォルトのインターセプターを使用して MDB をアドバイスする際に問題があります。Glassfish AS を使用して同じコードをテストしたところ、問題なく動作しました。奇妙なことに、WAS インターセプターはステートレス Bean には適用されますが、MDB には適用されません。
weblogic - Weblogic MDB インスタンスがゼロになり、キュー内のメッセージが取得されない
ローカル バインディングを介して MQ Queue から MDB を読み取っています。MQ キューからのメッセージが取得されていないことに気付く場合があります。キューの深さが 50000 に増加し、インスタンスの数がゼロになります。実行スレッドの総数は 25 です。物理マシンには 8 つの管理対象サーバーがあります。
deployment - WebSphere7のEJB3.0MDBへのキューのバインド
私はWebSphere7でBaby'sFirstMDBを書いている、または書き込もうとしています。動作させるためにすべてを引き出したので、髪の毛がほとんど残っていません。すべてが正しく設定されているように見えますが、関連するキューにメッセージを入れても応答がありません。
EARファイルの設定は次のとおりです。
ejb-jar.xmlでキューのJNDI名を定義するための構文が見つからないため、代わりに次のようにします。
- WebSphereアクティベーション仕様を定義します。名前SimpleMDBActivationSpec、JNDI名jms / SimpleActivationSpec、宛先jms/SimpleMDBQueue。
- WebSphereキューを定義します。名前SimpleMDBQueue、JNDI名jms / SimpleMDBQueue、キュー名SIMPLE.MDB.QUEUE。
- MQキューを定義し、SIMPLE.MDB.QUEUEという名前を付けます。
- EARファイルをデプロイします。展開中に、バインディング情報を入力するように求められます。[アクティベーション仕様]を選択し、ターゲットリソースのJNDI名と宛先JNDI名をそれぞれアクティベーション仕様とキューにポイントします。
(MDBコードには注釈がありません。)この時点で、アプリはスペックとキューを指し、スペックはキュー(ベルトとサスペンダー)を指します。当然、アプリはキューを認識していると思います。希望に満ちて、私はメッセージをキューに入れました、そして...何も。onMessageイベントは、System.outを使用してメッセージをログに記録することになっています。メッセージが表示されません。
これに関する明確な文書は、その欠如によって目立ちます。グーグルはたくさんの結果を出します、しかしそれらのどれも構成がすべて一緒にどのように合うかを詳述しません。ibm-ejb-jar-bnd.xmiについては多くの手がかりがありますが、ファイルの例は難解で、生成方法や構成の他の部分との関係についての説明がない不透明な数字でいっぱいです。
善のために。私がやりたいのは、MDBをデプロイし、メッセージをキューに入れるときに「Hello、world」と書き込むことだけです。開発およびビルドツールとしてviとantを使用しています。誰かが私が欠けているものについて私にアイデアを与えることができますか?
編集:「zos」タグが追加されました。
java - メッセージ駆動型 Bean (MDB) での新しい Java スレッドの生成
/spawn 新しい Java スレッドを MDB 内から開始できますか? MDB のコードからいくつかの並列処理を実行してから、コントロールを MDB に戻す必要があります。
要件: メッセージが MDB に到着し、コードの処理が行われます。次に、いくつかの並列作業を行う 2 つの新しいスレーブ スレッドが開始されます。それまでMDBは待っています。スレッドが作業を終了したとき。その後、制御が MDB に戻され、関連する最終/クリーンアップ作業が完了します。
MDB から新しいスレッド (Runnable) を開始するのは良い考えですか? そうでない場合、代替手段は何ですか?