問題タブ [weld]

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.

0 投票する
3 に答える
2860 参照

unit-testing - CDI-Unit Jglue を使用した CDI の単体テスト

CDI アプリケーションの単体テストに Jglue フレームワークを使用したいと考えています。ビルドにはgradleを使用しています。

次のようなものを用意しました。

1) テストするクラス:

2) インターフェース:

3) Gradle の設定 ( http://jglue.org/cdi-unit/の開始に従いました)

4) テストクラス:

この単純なテストを実行すると、常に次の例外が発生します。

/build/reports/tests/index.html には次のものがあります。

この例外を回避する方法を知っている人はいますか? 必要に応じて、さらに詳細を追加できます。

0 投票する
1 に答える
5945 参照

jsf - Apache Tomcat 7.0.47 の BeanManager がリソース インスタンスを作成できない

実行中: Apache Tomcat 7.0.47 OmniFaces 1.6.3 JSF Mojarra 2.1.26 CDI Weld 2.1.0.Final

RuntimeExceptionJNDI "java:comp/BeanManager" にアクセスすることにより、Apache Tomcat 7.0.47 上に 3つあります。CDI BenManager はjava:comp/env/BeanManager、BeanManager クラスに到達していない " " vut にバインドされています。

スタックトレース: 追加

Faces-Config:

web.xml:

META-INF の下に context.xml を追加しました。

0 投票する
2 に答える
7587 参照

jakarta-ee - @SessionScoped CDI Bean を @Stateless EJB に注入する

セッションスコープの CDI Bean をステートレス EJB に注入したいと考えています。EJB のアクセス時に、sessionscoped cdi Bean の正しいインスタンス (つまり、呼び出し元の sessionscope にあるインスタンス) を使用する必要があります。ステートフル EJB でこれを解決できることはわかっていますが、CDI でも解決できるかどうか知りたいです。EJB とサーブレットは同じ war で実行されるため、それらは同じスレッドを共有し、コンテナは EJB で正しいセッション スコープ Bean を見つけられるはずだと思いますか?

例えば:

EJB:

CDI ビーン:

サーブレットなどからステートレス EJB にアクセスするとき、呼び出し元の HTTPSession に関連付けられている CDI Bean を testMethod で使用したいと考えています。したがって、異なるブラウザ/http セッションから 2 つのクライアントがサーブレットにアクセスする場合、両方とも異なる結果文字列を取得する必要があります。

Providerの代わりにCDI が必要Instanceですか? はいの場合、特定のセッションに対して Bean の正しいインスタンスを生成するにはどうすればよいですか? おそらく BeanManager を取得して SessionData のインスタンスを検索することを考えましたが、正しいものを取得する方法がわかりません。

どんな助けでも大歓迎です、ありがとう!

0 投票する
1 に答える
655 参照

java - CDI がマネージド Bean と見なすものを制限するにはどうすればよいですか?

私は何年にもわたってSpringを使用し、JEE7とCDIを見始めたばかりなので、この質問に行き着きました。

Spring の世界では、Bean に固執@Componentして、Spring が依存関係を注入する Spring Bean に変える必要がありますが、CDI では に相当するものはないようです@Component

私にとって CDI は、私の Web アプリケーションのすべてのクラスが CDI Bean と見なされることを暗示しているように思われます。これは、インジェクションを使用していない Java クラスがたくさんあり@Inject、それらのクラスに固執して CDI を持っている人を望んでいないためです。その魔法を行います。

2 つの質問:

  • CDI が jar ファイル内のマネージド Bean と見なすものを制限するにはどうすればよいですか?
  • CDI がすべての Bean をマネージド Bean と見なすことの利点は何ですか?
0 投票する
3 に答える
15431 参照

java - CDI デプロイメントの失敗: WELD-001414 Bean 名があいまいです

複数のモジュールとさまざまな依存関係を持つアプリケーションがあります。アプリケーションを Glassfish 4 にデプロイすると、次のエラーが発生します。

原因は何ですか?これに関するトピックは既に見ましたが、解決策は注釈を編集することでしたが、これは私のものではなくEJB、単なる依存関係です。この例外を回避するにはどうすればよいですか?

Java EE 6 と JDK 1.7 および Glassfish 4.0 を使用しています。

0 投票する
1 に答える
392 参照

cdi - CDI 拡張機能、処理されたタイプの変更

Arquillian でのテストで Weld 1.1.13.Final を使用する....

フィールドに揮発性の何かを注入するとしましょう。変更されるプロパティのようなもので、注入ポイントを所有する Bean が変更イベントを受け取るようにする必要があります。CDI 拡張機能の作成について考えました。

ProcessAnnotatedType イベントをキャッチし、フィールド インジェクション ポイントにカスタム アノテーションを持つすべてのフィールドを探します。

その後、フィールドのすべての注入ポイントを取得し、基礎となる WeldField を「ラッパー」タイプに対応する新しいフィールドに置き換えました。そうでない場合、Bean の検証は失敗します。

しかし、これは起動中のセットアップでのみ機能します。たとえば、Arquillian が Bean Manager を使用して「ラップ」の 1 つを注入するクラスを初期化する場合ではありません。Bean Resolver は Type をハッシュ キーとして使用して Bean を検索するため、失敗します。

基本的に、カスタム イベントを受け取るための追加のメソッドを使用して、CDI によって注釈が付けられた (Bean になった) クラスを "マスク" できるとは思いません。クールだったでしょうが、Type は Type です (つまり、equals/hashCode をプロキシまたは偽造する方法がわかりません)。

0 投票する
0 に答える
2115 参照

java - JBoss と Weld が Eclipse にインポートしない

Beginning Java EE7 book の例に取り組んでいます。最初の例では、単純な Maven プロジェクトで Weld を使用する必要があります。すべてのファイルを Eclipse (Kepler) の Maven プロジェクトにコピーしました。しかし、Main.java アプリケーションには、機能しないインポート ステートメントがあります。Eclipse は、import org.jboss.weld.environment.se.Weld「インポート org.jboss を解決できません。」私は Eclipse Marketplace に行き、最新の JBoss バンドルをダウンロードしました。これには Weld が含まれていると思われますが、それでもエラーが発生します。

行を右クリックして「プロジェクトのセットアップを修正する」を選択すると、ポップアップしていた他のエラーのいくつかを助ける修正を選択することができました。しかし、この特定の問題に対して行ったのは、「インポート org.jboss.weld.environment を解決できません」というメッセージを拡張したことだけでした。プロジェクトのセットアップの修正を再度実行しようとすると、解決策が提示されません。

ビルド パス ツールを調べてみましたが、このインポートを機能させる方法がわかりません。