問題タブ [ejb-3.0]
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 - JBoss と Spring を使用して Java Web アプリ間でビジネス オブジェクト インスタンスを共有する最良の方法は何ですか?
現在、ビジネス オブジェクト、DAO オブジェクト、および Hibernate のスタックをインスタンス化する Spring アプリケーション コンテキストをロードする Web アプリケーションがあります。このスタックを別の Web アプリケーションと共有して、同じオブジェクトのインスタンスが複数になるのを回避したいと考えています。
いくつかのアプローチを検討しました。JMX または JNDI、または EJB3 を使用してオブジェクトを公開します。
さまざまなアプローチにはすべて問題があり、軽量な方法を探しています。
これを解決する方法について何か提案はありますか?
編集:少し詳しく説明するように要求するコメントを受け取ったので、ここに行きます:
解決したい主な問題は、Hibernate のインスタンスを 1 つだけにしたいということです。これは、同じデータソースで動作する複数のクライアント アプリケーションを実行しているときに、Hibernate の第 2 レベル キャッシュが無効になるという問題によるものです。また、ビジネス/DAO/Hibernate スタックはかなり大きくなっているため、複製しない方が理にかなっています。
まず、ビジネス層だけを他の Web アプリに公開する方法を調べてみました。Spring は、わずかな XML の価格で JMX ラッピングを提供します。ただし、JMX エンティティを JNDI ツリーにバインドできなかったため、Web アプリからオブジェクトを検索できませんでした。
次に、ビジネス層を直接 JNDI にバインドしてみました。Spring はこれに対するメソッドを提供していませんでしたが、JNDITemplate を使用してそれらをバインドすることも簡単でした。しかし、これによりいくつかの新しい問題が発生しました。1) セキュリティ マネージャが RMI クラスローダへのアクセスを拒否するため、JNDI リソースでメソッドを呼び出そうとすると、クライアントが失敗しました。2) セキュリティの問題が解決されると、JBoss は IllegalArgumentException: object is not an instance of declaring class. をスローしました。少し読むと、JNDI リソースのスタブ実装が必要であることがわかりますが、これは面倒なように思えます (おそらく Spring が役立つのでしょうか?)。
EJB についてはまだ詳しく調べていませんが、最初の 2 回の試行の後、私たちが達成しようとしていることが本当に可能かどうか疑問に思っています。
私たちが達成しようとしていることを要約すると、1 つの JBoss インスタンス、DAO レイヤーと Hibernate の上でビジネス オブジェクトの 1 つのスタックを利用する複数の Web アプリです。
よろしくお願いします、
ニルス
java - EJB へのリストのロード
オブジェクトを検証する (true または false を返す) メソッドを持つリモート EJB があります。ArrayList オブジェクトを渡して、検証中に発生したエラーを EJB にロードさせながら、結果として true/false を受け取ることができるようにしたいと考えています。
これどうやってするの?これまでのところ、リストを送信でき、サーバー側で影響を受けますが、元のリストはクライアント側で変更されていません。
java - MDB アノテーションに対する構成可能な値
EJB3 アプリでメールを受信するためにこのメソッドを使用しようとしています。つまり、次の注釈を使用して MDB を作成することを意味します。
これは機能していますが、状況は理想的とは言えません。ホスト名、ユーザー名、およびパスワードがハードコードされています。ant と build.properties を使用してコンパイル前にこれらの値を置き換える以外に、それらを外部化する方法がわかりません。
MBean を使用するのが理想的ですが、MBean から MDB 構成に値を取得する方法がわかりません。
どうすればいいですか?
ejb-3.0 - EJB3 で WS-Security を使用するには?
私たちのプロジェクトの 1 つで、WS-Security を使用する Web サービスを呼び出すことができるはずです。つまり、SOAP 要求は X.509 証明書で署名されている必要があります。WebServiceRef アノテーションを使用して Web サービスを呼び出すいくつかのテストを行ってきましたが、WS-Security なしで Web サービスを呼び出すことができます。
私の質問は、WebServiceRef アノテーションを使用するときに WS-Security をアクティブ化および/または構成するにはどうすればよいですか?
よろしく、ステファン・レチョ。
java - 任意のデータを ejb 呼び出しコンテキストに関連付ける
チェーン内で互いに呼び出しているステートレス ejb 3.0 Bean がたくさんあります。BeanA.do(メッセージ) -> BeanB.do() -> BeanC.do() -> BeanD.do() と考えてください。今度は、BeanD.do() からメッセージ データにアクセスしたいと思います。明らかな解決策は、すべての do() 呼び出しにパラメーターとしてメッセージを渡すことです (実際にはそれが現在の動作です) が、より良い解決策が必要です。
ある種の呼び出しコンテキストはありますか? また、任意のデータを関連付けることはできますか?
私がやりたいことは、単純にメッセージを BeanA.do(message) に入れ、Bean 関数呼び出しに関連付けられたローカル ストレージに入れ、それを BeanD.do() で取得することです。
何か案は?
java - EJBタイマーは永続的/信頼できるはずですか?
たとえば、タイマーを毎日午前 0 時に満了するように設定した場合、1 つの「失火」(たとえば、サーバーがダウンしているためにコールバックがトリガーされない) が発生するとどうなりますか? ドキュメントでそれを見つけることができません。
サーバーが再起動するとすぐにこのタイマーがコールバックをトリガーする方法はありますか?
PS: Quartz については知っています。代わりに EJB タイマーを評価しています。
web-applications - JBoss 上の EJB 3.0、JPA、動的 Web プロジェクトを使用した Java EE アプリケーションのプロジェクト アーキテクチャ/組織
さまざまな動的 Web プロジェクトを持つ Web アプリケーションがあり、それぞれに一般的に EJB プロジェクトが含まれています。JNDI を介して互いの EJB から Bean とクラスを使用したり、同じデータベースを共有したり、独自のデータベースを使用したりするなど、それらの相互作用を維持したいと考えています。しかし、異なるサーバーに異なるプロジェクトを保持できるようにしたいとも考えています。
アーキテクチャと組織の観点から、この種のプロジェクトの適切な焦点は何ですか?
EAR をどのように使用する必要がありますか? それらすべてを支配し、暗闇の中でそれらを縛る1つのEAR? (申し訳ありませんが、その LOTR 参照を行う必要がありました)、またはサーバー/Web プロジェクトごとの EAR などですか?
jboss - JBoss:InterceptorRegistryからの警告EJBTHREE-1246はどういう意味ですか?
現在、JBoss AS5.0.0.GAでEJB3.0ベースのアプリケーションを開発していますが、最近、サーバーログに次の警告が表示されました。
警告は、EJB(ステートレスセッションBean)がJSFWebアプリケーションのバッキングBeanに注入されるとすぐに生成されます。Beanは問題なく機能しますが、それでも、その警告がどこから来ているのか、それを回避するために何ができるのかを知りたいと思います。
私はすでに少し調べましたが、良い答えは見つかりませんでした(Bean開発者は心配する必要はありませんが、警告なので、より良い解決策が必要です):
- http://www.jboss.com/index.html?module=bb&op=viewtopic&t=147292
- http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4180366
- http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4140136
- 警告に関するJBossJIRAの問題(私の意見ではそれほど役に立ちません)
では、警告の原因(アプリケーションサーバー開発者ではなくBean開発者の観点から)とそれを回避するために何をすべきかについて誰かが説明していますか?
更新: JBossを5.0.1.GA(ダウンロード、リリースノート)にアップグレードしましたが、残念ながら警告が表示されます。
java - コンポーネントをデプロイせずにEJB3コンポーネントを単体テストするための最良の方法は何ですか
すべてのリソース/Beanなどがローカルに注入されるように、エンタープライズBeanをモック環境でテストできるJUnit(またはその他の)システムが必要です。エンタープライズBeanはこれを達成する必要はありません。あらゆる種類の注射をサポートする必要があります。
- テストをMavenビルドから実行できるように、このためのMavenプラグインが必要です。
- 単体テスト中にトランザクションは必要ありません。これには完全なコンテナーが必要になります。
そのようなMavenプラグインまたはテストフレームワークを知っていますか?それでの経験?
hibernate - EJB3/JPAのコレクションから単一の「デフォルト」エンティティを熱心にフェッチする方法
複数の電話番号を持つPersonエンティティがあります。
ここで、熱心に取得されるPersonの「デフォルトの電話番号を取得する」メソッドを実装したいと思います。このデフォルトの電話番号は、phoneNumbersセットの電話番号の1つです。これを行う方法はありますか?
私がこれを実装しようとしている理由は、このデフォルトの電話番号を、データベース内の「すべての」人をリストするページにリストするためです。
JPAの初心者として、私は最初に次の方法で試してみました。
しかし、これはもちろん非常に遅いリストページをもたらしました。
では、クエリに基づいてエンティティのコレクションから単一のエンティティを取得する一時的なプロパティを定義する方法はありますか?永続性プロバイダーとしてHibernateを使用しています。