問題タブ [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.
jms - 既存の2フェーズ対応リソースで1フェーズ対応リソースをコミットする違法な試み
WebSphere6にMDBがあります。MessageListenerはTibcoEMSキューにリンクされています。MDBで、WebSphereMQキューに書き込もうとしています。次のエラーが発生します。
QueueConnectionFactoryインスタンスはcom.ibm.ejs.jms.JMSQueueConnectionFactoryHandle
です。これからXAConnectionを取得できますか?する必要がありますか?可能であれば、バニラJMSを使用したいと思います。
MDBの実装は次のようなものです。
jakarta-ee - MDB : 動的セレクター
同じコードを実行している複数のサーバーがありますが、それぞれが特定のメッセージを処理しています (それらは地理的な領域に分散しており、その領域に関連するすべてのメッセージを処理する必要があります)
単一のキューとメッセージ セレクターを使用して、さまざまなメッセージをフィルター処理することを考えました。
問題は、アプリケーション・サーバーの構成ファイル (Geronimo 2.2) に基づいて、セレクターが動的に構成されるように Java コードとデプロイメント・プランを作成する方法です。
目標は、すべてのサーバーに同じ EAR をデプロイすることです。
ありがとうございました。
jakarta-ee - MDBと重複メッセージ
MDBがメッセージを受信し、CMT / Requiredトランザクションでメッセージの処理を開始したと仮定して、トランザクションが完了するまでに時間がかかる可能性があると仮定します。
このようなシナリオでは、最初のトランザクションがまだ進行中のときに、別のトランザクションで別のMDBインスタンスが重複メッセージを受信して処理する可能性がありますか?
または、コンテナは、MDBがCMT / Requiredトランザクションでメッセージの処理でビジー状態になっている間、他のMDBインスタンスが同じメッセージの複製を受信しないことを保証しますか?
servlets - リモート jboss サーバー (サーブレット) から EJB メソッドを呼び出す
ケース 1: ある jboss サーバーで戦争が発生し、別の jboss サーバーで ejb jar が発生しています。別のサーバーにあるサーブレットから ejb を呼び出したいです。呼び方。実用的なサンプルと必要な構成を手伝ってくれる人はいますか?
ケース 2: 私のトランザクション jboss サーバーのメッセージ駆動型 Bean (MDB) と別の jboss サーバーのビジネス メソッド。トランザクション サーバーからビジネス メソッドを呼び出す方法。
この事件を解決するのを手伝ってください
前もって感謝します
jakarta-ee - MDBと耐久性
耐久性を理解するために、MDBがデプロイされているアプリサーバーをJMSプロバイダー(サーバー)から分離して、アプリサーバーがシャットダウンして後で再起動した場合に、MDBに送信されたメッセージを送信できるようにする必要があります。アプリサーバーがダウンしている間に逃した?
timeout - MDB トランザクションがタイムアウト時に電子メールをロールバックしない
キューをリッスンする MDB があります。メッセージを受信するたびに、多くのロジック、更新などを持つステートレス セッション Bean に実行を転送します。ロジック/呼び出しチェーンの流れは次のとおりです。
キュー -> mdb -> セッション Bean -> セッション Bean -> 電子メール -> ロギング
最終的な結果は、電子メールとその後のログです。
デフォルトでは、MDB トランザクションはコンテナーによって管理され、タイムアウトは 30 秒です。
ただし、タイムアウトに達すると、タイムアウト例外がスローされ、メッセージが再試行されますが、ネストされたトランザクションとそのプロセスは (セッション Bean から) ロールバックされません。その結果、再試行のために複数の電子メールが送信されますが、MDB 自体からログに記録されたものを除いて、すべてのログが (セッション Bean から) ロールバックされます。
MDB ログ、特に電子メールを含む MDB ロールバックから呼び出されるすべてのトランザクションをすべきではありませんか?
セッション Bean はすべて、デフォルトのトランザクション タイプが「必須」になっています。
また、TransactionManagement タイプを CONTAINER として、TransactionType を REQUIRED として明示的に設定しました。メールはまだ出ます。セッション Bean からのロギングはロールバックしますが、再試行が発生します。
次に、TransactionType を REQUIRES_NEW に設定します。メールはまだ出ます。セッション Bean からのロギングはロールバックしますが、再試行は行われません。
MDB によって開始されたトランザクション全体と、MDB から呼び出されたすべてのトランザクションがロールバックされ、再試行が行われるようにするには、どのような設定をすればよいですか?
失敗時に再試行したいので、Bean 管理のトランザクションを使用したくありません。
私のアプリケーション サーバーは、ejb 3 仕様の weblogic 10.3 です。
jboss - Hornetq の実装
システムに JMS を実装する正しいアプローチを明確にする必要があります。
現在、エンド ユーザー トランザクションの目的で負荷分散された 2 つの JBoss サーバーがあり、トランザクションのさまざまなイベントに基づいて通知機能を拡張しています。これを機能させるために、次のアプローチを使用することにしました。hornetQ はトランザクション Jboss サーバーに組み込まれ、MDB は同じ JBoss サーバーに接続されてリッスンし、別の JBoss サーバーを呼び出します。別の JBoss サーバーは送信されるユーザーを分類するビジネス コードを持ち、最終的にはそのサーバーは、適切なユーザーを使用して XMPP サーバーを呼び出します。
ここで私の疑問は、トランザクション JBoss サーバーに MDB (イベント コンシューマー) をデプロイするのが良いアプローチであるか、MDB を通知目的専用の JBoss サーバーに移動することです。より良いアプローチのためのアイデアを投げてください。
よろしく、ヴァイラム
jms - JavaEEでのJMSおよびJTAトランザクション
私はJMSとJTAで何かがうまくいかないと思います。すべてのCMTを備えたJavaEEコンテナで実行しています。これが私がしていることです:
- SLSBで、データベースに何かを書き込みます
- SLSBと同じ方法で、JMSキューにメッセージを送信します
- 同じコンテナ内のMDBがJMSキューをリッスンし、メッセージを取得します
- MDBはデータベースを読み取ります
問題は、MDBがステップ1でデータベースに加えられた変更を認識しないことです。
予想どおり、手順1と2が単一のXAトランザクション内で発生することを確認しました。私の期待は、最初のXAがコミットされた後、2番目のXAトランザクションがステップ3で開始されることです。しかし、MDBは、メッセージを送信したXAトランザクションがコミットされる前にメッセージを受信しているようです。
私の期待は間違っていて、私が見ているものは正常ですか?
JBoss6で実行しています。SLSBはローカルです。SLSBとMDBの両方が同じアプリケーションにあります。
java - EJB Jar を Glassfish にデプロイする際の例外
これは、JMS を使用する最初の試みです。ファイルのアップロードに使用できるサーブレットを含む war ファイルを正常に作成/デプロイしました。ファイルがアップロードされると、JMS キューにメッセージが送信されます。次に、アップロードされたメッセージをキューから取得するリスナーを作成しましたが、デプロイしようとすると、次のエラーが発生します。
これは、Maven を使用して構築された、1 つのクラスを持つ非常に単純なプロジェクトです。クラスは次のようになります。
私の pom.xml は次のようになります。
これにより jar ファイルが作成され、Glassfish 3.1 サーバーに (管理コンソール経由で) デプロイしようとすると、上記のエラーが発生します。
クラスに @MessageDriven アノテーションがあるため、何が間違っているのかわかりません。残念ながら、server.log ファイルには、エラーに関するこれ以上の詳細は含まれていません。
瓶を耳に詰めて展開する必要がありますか?
----------編集----------
ejb jar を含む ear を作成しましたが、ear を Glassfish にデプロイすると同じエラーが発生します。だから、それは注釈と関係があるに違いないと思います。ただし、複数の例/チュートリアルを見てきましたが、何が問題なのかわかりません。
どんな洞察/提案も大歓迎です!!
----------編集 2 ----------
MANIFEST.MF ファイルの内容:
application.xml の内容:
----------編集 3 ----------
ejb-jar ファイルの内容:
jakarta-ee - Glassfish v3:MessageDrivenBeanをデプロイできません-宛先JNDI名がありません
EJBjarを含むearをデプロイしようとしています。jarには、MDBクラスが1つだけ含まれています。
Glassfish 3.1.1(ビルド12)管理コンソールを使用して、次のように設定しました。
リソース->JMSリソース->接続ファクトリ:
リソース->JMSリソース->JMS宛先リソース:
設定->server-config->Javaメッセージサービス:
EJB jarを含むearをデプロイしようとすると、次のエラーが発生します。
Glassfishの設定を見逃したことがありますか?