問題タブ [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.

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

annotations - 実行時にデータソースを挿入/選択する方法はありますか?

多くのデータベースを含む MySQL データベースがあり、それぞれが特定の顧客にちなんで名付けられています。

Web アプリケーションは顧客ごとにデプロイされます。Web アプリケーションの名前によって、基になるデータベース名が決まります。webapp が起動すると、変更された Spring PropertyPlaceholderConfigurer があり、可能な場合は ServletContext を取得して名前を決定します。次に、データソースのセットアップでこれを逆参照します。美しく動作します。まったく同じコードをすべての顧客にデプロイすることができ、顧客はデータベースを問題なく見つけることができます (また、MySQL ホストを見つけるための DNS 名も)。

GlassFish または JBoss AS 6 に切り替えて、そのままの JEE6 API/アノテーションを使用して同じことをしたいと考えています。

これを行う方法はありますか?セキュリティについては心配していません。データセットは、独自のマシンと Web アプリケーションを正当化するのに十分な大きさであり、データベース モデルはコードに関連付けられているため、同期を維持する必要があります。すべての顧客が手元のタスクに最新のコードを持っている必要があるわけではないため、修正率はさまざまです。

私はJEE6がSpringが持っていた多くのものを統合し、さらにいくつかを統合する便利さを気に入っていますが、アプリケーションサーバーとそのばかげたことに対処しなければならないのは嫌いですが、Springを組み合わせることも楽しいものではありません.

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

java - オブジェクトのリストを CDI に挿入 (Weld)

SocialNetworkServiceと呼ばれるインターフェースと、3 つの実装 - TwitterServiceFacebookServiceおよびがあるとしましょうFriendFeedService

ここで、マネージド Bean (または任意の Web コンポーネント) がメッセージを受信するたびに、それをすべてのソーシャル ネットワークで共有したいと考えています。私は試した:

しかし、うまくいきませんでした (展開エラー)。@Any(予選にも挑戦- 同じ結果)

では、インターフェイスのすべて (または一部) の実装のリストを挿入する方法はありますか?

特定の注入ポイントに複数の Bean を含めることはできないというルールを知っています。リストを生成するプロデューサーを作成し、 を使用することでそれを達成できると思いますがInstance<SocialNetworkService>、このタスクには多すぎるようです。

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

jboss - Spring MVC と CDI/JEE6 を混在させる最良の方法は何ですか?

私は JSF のファンではありません。Spring MVC は私にとって非常に理にかなっており、過去に使用したことがあります。

それについて私に話してくれますか、またはそれを JEE6 にうまく統合するためのヒントを提供して、CDI と共有して問題を解決できますか。

MVC のためだけにアプリケーション コンテキストを使用してもかまいませんが、MVC コントローラーで @Inject または @EJB を使用すると、何がうまくいかないのでしょうか?

Seam3 は面白そうですが、製品化の準備はできていますか?

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

java - Seam Faces causes a deploy-time error

I'm running a Java EE 6 application out of an EAR (bundling an EJB-JAR and a WAR) on GlassFish 3.0.1, using ICEfaces 2.0 Beta 1 and a Seam Faces 3.0.0 Alpha 3 Snapshot.

When I deploy the EAR, I get an error. This error doesn't happen when I remove Seam Faces. Here's the error from my GlassFish log (I redacted the first bit, where it just lists out my session beans and says that they have been transformed. I cut off the last few exceptions, because of StackOverflow's 30000-character limit.):

What gives? I've searched the web for this exception, and it looks like it happens when CDI is enabled on both an EJB-JAR and a WAR packaged inside a single EAR, but only my WAR has CDI enabled (only it has a beans.xml). I tried moving the dependency up to the EAR, but I just get a different exception then.

Thank you! :)

0 投票する
6 に答える
12925 参照

jakarta-ee - CDI: 異なるモジュール / bean アーカイブでインターセプターを使用する

私の Java EE 6 アプリケーションは、ear ファイルにパッケージ化された war と ejb モジュールで構成されています。DI に CDI を使用しています (つまり、両方のモジュールに beans.xml ファイルがあります)。war モジュールの ejb モジュールで定義されているロギング インターセプタも使用したいと考えています。ejb の beans.xml でインターセプターを有効にしました。

これは、 ejb モジュールのインターセプタで注釈が付けられたクラスに対してのみ機能します。war モジュールのクラスはインターセプトされません (ただし、インターセプターのアノテーションも付けられます)。解決策は、戦争のインターセプターでもインターセプターを有効にすることだと思いました(上記のように)。ただし、次のメッセージが表示されてアプリケーションをデプロイできません。

SEVERE: アプリのロード中に例外が発生しました: WELD-001417 有効なインターセプター クラス クラス com.test.interceptor.LoggingInterceptor は、@Interceptor に注釈が付けられておらず、ポータブル拡張機能を介して登録されていません

私の LoggingInterceptor は次のようになります。

そしてインターセプターバインディング:

両方のモジュールにインターセプターを使用するにはどうすればよいですか?

0 投票する
5 に答える
7423 参照

java - Weldで文字列定数を簡単に注入する方法は?

実行中のプログラムにマップの形式で外部構成を提供する状況があります。JSR-330 Dependency Injection は、マップを渡したり、JNDI を使用して取得したりする代わりに、コード内でその構成マップを使用するためのよりクリーンな方法を提供することを発見しました。

JSR-330 実装がこのフィールドに自動的に入力できるようにします。

Guiceを使用すると、値を設定できます

Weld でも同じことができるようにしたい (「server.username」を「foobar」などにバインドする) メカニズムはbeans.xml である可能性が最も高いことを理解していますが、単純な「このマップを Weld にフィードする」ことをお勧めします。 、してください」コードの代替。これを行うにはどうすればよいでしょうか。


@ProviderEDIT 2013-10-16: 実行時ではなくコンパイル時に動作する Dagger を調べたところ、通常、プログラムごとに 10 ~ 20 個の Dagger があるため、各構成文字列のメソッドを使用して、構成を検索することができることがわかりました。地図。これにより、メソッド固有の動作 (デフォルト値を含む)、javadoc を提供する機能、およびこれらすべてのメソッドを同じクラスに配置する機能が可能になります。また、すぐに使用できる Weld でもうまく機能します。ブログエントリでより完全な説明を書くことを検討しています。

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

eclipse - JSF2 のコンテンツ アシスト + CDI (ウェルド) Bean + Eclipse Helios

の代わりにEclipse HeliosでJSF2 CDI(溶接)ビーンを試してManagedBeansいますが、ビーンの式言語内でオートコンプリートを実行できませんNamed#{myNamedBean.Ctrl+のことSpace}

しかし、OTOH と ManagedBeans を使用すると、コンテンツ アシストはうまく機能します。CDI Bean のコンテンツ アシストは、Eclipse Helios でまだサポートされていますか?

これで経験した人はいますか?

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

java - CDI @Inject を使用して Spring Bean を注入する

Spring コンテキストで定義された Bean を CDI 管理コンポーネントに注入しようとしていますが、うまくいきません。Bean は注入されません。代わりに、注入が実行されるたびに新しいインスタンスが作成されます。私の環境は、JBoss Weld を使用した Tomcat 7 です。

Spring ApplicationContext は簡単です。

CDI マネージド Bean は次のようになります。

これは私のfaces-config.xml

ただし、testJSF ページ内からプロパティにアクセスTestすると、アクセスが発生するたびに新しいインスタンスが作成されます。これは簡単な例です:

次の出力が得られます。

リフレッシュ後:

最初の出力が正しいことがわかります。ページを頻繁に更新してもtestFromSpring、Spring コンテキストで定義された Bean から値が返されます。getTestただし、2 番目の出力は、コンポーネントのメソッドtestが呼び出されるたびにTest、Spring コンテキストのインスタンスを使用する代わりに、新しいインスタンスが作成されて注入されることを明確に示しています。

では、この行動の理由は何ですか?

Spring コンテキストから CDI マネージド Bean に Bean を注入するにはどうすればよいですか?

また、Spring コンテキストで定義された名前を使用して修飾子を使用しようとしましたが、Bean が見つからないことを示す例外がスローされました。

コードの

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

transactions - Java EE 6 CDI イベントはトランザクション対応ですか?

Java EE 6 CDI イベントはトランザクション対応ですか?

トランザクションでイベントを発生させ、その後トランザクションをロールバックすると、イベント リスナーの効果もロールバックされますか?

この動作は、トランザクションをサポートするイベント リスナー自体に依存していますか?

イベントリスナー内から例外をロールバックしようとすると、イベントを発生させたトランザクションをロールバックしますか?

0 投票する
4 に答える
7735 参照

java - 一般的なCDIプロデューサーメソッドが期待どおりに機能しない

この例に関係のないいくつかの条件に応じて、さまざまなタイプのオブジェクトを作成するCDIプロデューサーメソッドがあります。

しかし、このプロデューサーを使用すると、次の状況で常にエラーが発生します。

これは、プロデューサーのcreateメソッドがメソッドシグネチャに期待されるタイプを持っている場合にのみ機能します。

これで文字列が正しく挿入されましたが、プロデューサーメソッドから整数を生成する方法もありません。しかし、プロデューサー自体は完全にジェネリックである必要があるため、これはまさに私が避けたいことです。

私は何か間違ったことをしているのですか、それとも私が望む行動を達成する方法がありませんか?