問題タブ [cdi]
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 - 溶接での外部 (サードパーティ) Bean の解決
ほんの数か月前に仕様がリリースされたので、まだあまり普及していないことはわかっています。
私はまだ溶接を「インストール」していません。読んでいるだけです。この質問によって、この重要な点を正しく理解していることを確認したいと思います。
サードパーティの jar にある Bean の解決は<alternatives>
、beans.xml
.
そうでない場合、持っていないサードパーティのライブラリから Bean を使用する方法はbeans.xml
?
jar をクラスパスに置くことは、サードパーティの jar に当てはまらない にない限り機能しbeans.xml
ませMETA-INF
ん。(この件に関する Gavin King の投稿を参照してください)
jakarta-ee - Java EE 6 CDI 実装の相違点
JBoss の Weld Reference Implementation of JSR-299 Contexts and Dependency Injection を見てきましたが、他の CDI 実装が互いにどのように比較されるかを知りたいと思っていました。具体的には、Weld、Resin CanDI (Caucho 作)、Apache OpenWebBeans について知っています。
jakarta-ee - 1つのクラスに対して複数のCDI/溶接Beanをインスタンス化する方法は?
Springでは、xml confで対応するBeanを定義することにより、任意のクラスをインスタンス化することが可能でした。同じクラスに対して、異なるパラメーターを使用して複数のBeanをインスタンス化することも可能でした。
CDIにもそのような機能がありますか?つまり、異なる初期化パラメーターを使用して同じクラスの異なるインスタンスを作成することは可能ですか?
クラスを変更せずにBeanを作成することも可能ですか...つまり、アノテーションを追加せずに作成できますか?
追加した
例を挙げましょう。
同じクラスの2つのインスタンスをインスタンス化し、異なるフィールド値で初期化するにはどうすればよいですか?
glassfish - セッション Bean をメッセージ駆動型 Bean に注入する方法は?
私はかなりJava EEに慣れていないので、これはばかげているかもしれません..我慢してください:D
ステートレス セッション Bean をメッセージ駆動型 Bean に注入したいと考えています。基本的に、MDB は JMS メッセージを取得し、セッション Bean を使用して作業を実行します。セッション Bean は、ビジネス ロジックを保持します。
これが私のセッション Bean です。
一致するインターフェース:
ここに私のMDBがあります:
これまでのところ、ロケット科学ではありませんよね?
残念ながら、これを Glassfish v3 にデプロイし、適切な JMS キューにメッセージを送信すると、glassfish が TestBean EJB を見つけられないというエラーが発生します。
だから私の質問は:
- これは、セッション Bean を別の Bean (特にメッセージ駆動型 Bean) に注入する正しい方法ですか?
- 名前の参照が失敗するのはなぜですか?
java - JPA実装でDAOをテストするには?
私は Spring キャンプから来ました。Spring を使用したくありません。JavaEE6 に移行していますが、DAO + JPA のテストに問題があります。簡単なサンプルを次に示します。
これは非常に基本的な DAO です。私は Spring から来たので、DAO にはまだ価値があると信じているので、DAO レイヤーを追加することにしました。
これは JPA で実装された DAO です。EE コンテナーまたはテスト コンテナーが EntityManager を注入できることを願っています (Spring のように)。
これは私のテストファイルです。
OK 、ここで問題が発生します。JUnit は @javax.inject.Inject を認識しないため、PersonDao は注入できず、テストは失敗します。
EntityManager を PersonDaoImpl に注入し、 @Inject PersonDaoImpl を TestCase の PersonDao に注入できるテスト フレームワークを見つけるにはどうすればよいですか?
unitils.org を試しましたが、このようなサンプルが見つかりません。必要なものではなく、 EntityManagerFactory を TestCast に直接注入するだけです...
java - アプリケーション サーバーなしの Java EE
EJB 3 以降、組み込み可能な EJB コンテナーがあり、JPA 実装はアプリケーション サーバーなしで使用でき、コンテキストと依存性注入のための Weld などがあります。多くのシステムでは Tomcat しか利用できないため、Java EE をアプリケーション サーバーなしで、Tomcat のようなサーブレット コンテナーと共に使用できるのではないかと考えています。
Java 環境をセットアップするにはどうすればよいですか? どのような欠点が見られますか?
java - @Inject in Weld (JSR-299 RI) による依存性注入。対応する @Produces はどのように見つけられますか?
スタンドアロン アプリケーションで使用する目的で、JSR-299 リファレンス実装「Weld」を試してみました。ドキュメントを見て、その魔法に驚嘆しました。
私の質問は、@Inject される特定のオブジェクトのプロデューサーがどのように見つかるかです。
Java コンパイラーは、クラスローダーが簡単に見つけられるアノテーションのヒントを生成するか、すべてのクラスをロードして完全なクラスパスをトラバースして、それらが何を行うかを確認する必要がありますが、これは私にとって非常に非効率的に聞こえるか、まったく異なるアプローチです。
トリックは何ですか?
java - Google Guice と JSR-299 CDI / Weld の比較
JSR-299 Contexts and Dependency Injection リファレンス実装である Weld は、Spring と Guice の後継者の一種と見なされています。
CDI は、Seam、Guice、Spring など、多数の既存の Java フレームワークの影響を受けました。ただし、CDI には独自の非常に明確な特徴があります。Seam よりもタイプセーフであり、Spring よりもステートフルで XML 中心ではなく、Guice よりも Web およびエンタープライズ アプリケーションに対応しています。しかし、言及されたフレームワークからのインスピレーションと、JSR-299 Expert Group (EG) による多くのコラボレーションと努力がなければ、これらのいずれも実現できませんでした。
http://docs.jboss.org/weld/reference/latest/en-US/html/1.html
Guice と比較して、エンタープライズ アプリケーションで Weld が優れている理由は何ですか? Guiceと比べてメリット・デメリットはありますか?溶接インターセプターと比較して、Guice AOP についてどう思いますか? パフォーマンスはどうですか?
私の選択
最終的に、デフォルトで @Inject 以外にアノテーションがほとんどないクリーンなプログラミング モデルが好きなので、Guice を使用することにしました。CDI よりも Guice で外部ライブラリを使用する方がはるかに簡単です。AOP も、Guice を使用すると非常に単純です。
jsf - `で会話の伝播を抑制できますか`?
get リクエストを使用してページにリンクする<h:link>
ネストされた新しい JSF2タグを使用しています。<f:param>
ただし、会話 ID (cid) は、リンクのクエリ パラメータを介して新しいページに伝達されます。
で会話の伝播を抑制することはできます<h:link>
か? すなわち。URL に cid=# がありません...?