問題タブ [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 に答える
758 参照

java - jar にパッケージ化された CDI Activate プロデューサー

私はプロデューサーを持っています。それを jar に入れたいので、diff war ファイルが同じ実装を参照できるようにします。

しかし、今では、グラスフィッシュ (3.0.1) はプロデューサー メソッドを自動検出できません。

これを修正するには?

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

jpa - CDI + WS/RS + JPA を使用してアプリを構築する

ここにユーザーマネージャーの実装があります

問題は、UserService を @Stateless としてマークしないと、manager フィールドが null になることです

しかし、@Stateless をマークすると、マネージャー フィールドを挿入することができ、データベースに保存されたデータを取得できるため、アプリケーションが機能します。

この背後にある理由は何ですか?

これは、アプリケーションを配線するための推奨される方法ですか?

さて、EntityManager をプロデューサーに引き出して、共有できるようにしようと考えています。

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

jsf - setInterval jsf2.0 glassfish v3 とメモリ リーク

みんな私は新しく、英語ではありません。送信ボタンでX秒ごとにユーザーのクリックをシミュレートするjs setIntervalの使用に問題があります。このページには、h:form と h:commandButton が 1 つだけあります。プロファイラーを使用すると、java.util.HashMap のサイズが継続的に増加することがわかります。数時間後、使用されるヒープ サイズは、開始点を基準にして大きくなります。

私を助けてください、この問題は私を夢中にさせます。

これはコードです:


更新: 1 日後、アプリケーションが再びクラッシュします。今は setInterval だけを使用していますが、glassfish によって生成された heapDump があります。これはスクリーンショットですが、評判が低すぎるため投稿できません。ただし、java.lang.Object[] はヒープの 20%、java.util.HashMap$Entry[]18%、HashMap 10% を消費します。

更新: こんにちは、皆さん、問題を解決し、CDI 依存関係/インジェクションのバグを発見しました。@ManagedBean でアノテーション @Named を変更する問題を解決しました。これで問題が解決しました。この例では、CDI にはバグがないと思われるため、コードを省略しました。明らかに、@Named で注釈が付けられた Bean はリクエスト スコープを持ちますが、ApplicationScoped Bean はバグを生成しません。私は CDI に比較的慣れていないので、どこにバグを報告する必要がありますか?

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

scope - CDI - カスタム コンテキストとスコープの記述

いくつかの CDI ベースのプロジェクト用に独自のコンテキストを持ちたいと考えています。コンポーネントの存続期間と場所を分離できるように、カスタム スコープが必要 (欲しい) です。

独自のコンテキストを実装するには、Context インターフェースを実装する必要があります。

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

jakarta-ee - 同じインスタンス内の CDI コール インターセプター アノテーション付きメソッド

これが私のDAO実装です。テーブル全体をロードし、一定期間メモリにキャッシュします

ここに私のジャージークライアントがあります

クライアントで dataAccessFacade.loadAllTranslation() を呼び出すと、インターセプター ロジックが実行されていることがわかります

内部で loadAllTranslation() を呼び出す dataAccessFacade.getTranslation() を呼び出すと、インターセプターが実行されたことを確認できませんでした。

ここで何が問題なのですか?

それを解決する方法は?

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

tomcat - Tomcat で単純な POJO クラスを使用して CDI (Weld) を使用する

2日間のデバッグと試行の後、解決策を尋ねる以外に考えがありません.

Tomcat WebApp で CDI (JEE6 上) を使いたいのですが、単純な単純な古い Java オブジェクト (まだ) しかありません。私の知る限り、POJO Java クラスを他の POJO Java クラスに注入することは簡単に可能ですか?!

これが私のサンプルクラスです

  • クラス ToBeInjected (アプリケーション スコープ / シングルトン)
  • クラス InjectingExample
  • ServletListener "ApplicationContextListener"

アプリケーション スコープ (シングルトン)クラス "ToBeInjected" :

上記のクラスを注入するクラス「InjectingExample」 :

最後に、InjectingExampleのインスタンスを作成し、sayHello() を呼び出すContextListener があります。

次のWEB-INF/web.xmlで Tomcat 6 を使用しています。

そしてMETA-INF/context.xml :

最後に、「weld-tomcat-support-1.0.1-Final.jar」を ${CATALINA_HOME}/libs にコピーしました。

Tomcat で webapp をデプロイして実行すると、クラス InjectingExample のメンバー「bean」が null (注入されていない) であるため、NullPointerException がスローされます。

私が理解している限り、これはうまくいくはずです。私が間違っている?

ここまでお気遣いいただきありがとうございます。うまくいけば、あなたが私を助けるために重要なことはすべて言及しました. それ以外の場合は、必要なものを教えてください。

最後にcataling.logのログファイル出力:

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

jsf-2 - @ManagedBeanの代わりにCDIを使用する:スーパークラスには引数なしのコンストラクターがないため、UnproxyableResolutionException

JSF /JavaEEアプリケーションにCDIを使用しようとしています。次のクラス階層があります。

アプリケーションをGF3.1にデプロイしようとすると、次のCDI/Weld例外が発生します。

重大:アプリのロード中の例外:WELD-001435通常のスコープのBeanクラスcom.web.AbstractCrudControllerは、引数なしのコンストラクターがないため、プロキシできません。org.jboss.weld.exceptions.UnproxyableResolutionException:WELD-001435通常のスコープのBeanクラスcom.web.AbstractCrudControllerは、引数なしのコンストラクターがないため、プロキシ可能ではありません。org.jboss.weld.util.Proxies.getUnproxyableClassException(Proxies.java:215)at org.jboss.weld.util.Proxies.getUnproxyableTypeException(Proxies.java:166)at org.jboss.weld.util.Proxies.getUnproxyableTypesException (Proxies.java:191)org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:134)、org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:148)、org.jboss。 weld.bootstrap.Validator。

基本クラスに引数なしのコンストラクターを追加しても、Weldは、finalメソッドがあるため、クラスがプロキシ可能ではないという同じ例外を除いて文句を言います。WELDがクラスの設計を変更するように強制するのはなぜですか?JSF@ManagedBeanアノテーションを使用するとすべてが正常に機能しました。

助けていただければ幸いです。ありがとう、テオ

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

java - CDI-オブザーバーがイベントを観察したときに発信者に通知されますか?

CDIを使用していますが、オブザーバーがイベントを監視した、または監視しなかったことが発信者に通知される方法を知りたいです。そのイベントにオブザーバーが行動しない場合、私は何かをしたいと思います。発信者に通知されるというヒントがあったことを除いて、これがドキュメントのどこにも文書化されていないようです。

ありがとう、

ウォルター

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

tomcat - CDI / 溶接 Web アプリケーションに便利な環境

私は溶接が初めてで、CDI (Weld) を使用する Web アプリケーションにどのような環境が役立つかを検討しています。プレゼンテーションには JSF または Wicket を使用し、永続層 (Transaction-Management を含む) には JPA/Hibernate を使用したいと考えています。明白なシナリオは、JBoss または Glassfish アプリケーション サーバーを EJB3 を取り囲むように使用することですが、Tomcat やその他の「軽量」サーブレット コンテナーを賢明な方法で使用する機会はありませんか? それとも、EJB/Seam のサラウンドなしで CDI Web アプリケーションを開発しようとするのはばかげていますか?
ユーザーエクスペリエンスに興味があります!

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

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

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

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

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

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

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