問題タブ [weld2]
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.
cdi - Weld 1.1 + Solder が満たされていない依存関係を引き起こしていますか?
「WELD-001408 満たされていない依存関係」の奇妙な発生が発生していました。
すべてのルールとドキュメントにより、依存関係を解決する必要があります。それは通常の@Produces
方法であり@Inject
、他のBeanでした。
Weld 1.1.13 から 2.0.1 にアップグレードしようとしたところ、SOLDER-339で説明されている「WELD-001332 BeanManager メソッド getBeans() は、アプリケーションの初期化中に使用できません」というメッセージが表示され始めました。
はんだが奇妙な満たされていない依存関係の原因である可能性はありますか?
jsf-2 - 複数のクラスに含まれるプロパティを効率的に更新するにはどうすればよいですか?
コントローラー/バッキング Bean がコンテキスト内の単一のエンティティ インスタンスを管理するこの単純なパターンがあり@ViewScoped
ます。ビューはこれらのバッキング Bean を 2 つ取り、情報を表示します。私が使用しているアプローチは、このブログ投稿で Andy Gibson によって説明されています。
次に、Person と Contacts の 2 つのエンティティに関する情報を表示する必要があります。
ContactMgr と PersonMgr があり、最初に .via を完全にロードしPerson
ますf:viewAction
。次に、その人の連絡先のリストを表示し、ユーザーが次のように編集できるようにしますrich:popupPanel
。
リンクをクリックすると、選択した連絡先が読み込まれ、ユーザーは好きなように編集できます。ユーザーが「保存」をクリックすると、変更が保持されます。ここまでは、すべて問題ありません。
しかし、連絡先リストを再レンダリングしたいと思います。PersonMgr
連絡先の変更はどのように通知すればよいですか? 連絡先のリストは、しばらく前に入力されたもので、 では変更されていませんContactMgr
。
私はすでに3つのソリューションを見てきました:
- 連絡先を直接設定しますが、連絡先
ContactMgr
ごとにそのコストを負担したくないため、ポップアップが表示される前にさらにいくつかのフィールドを初期化する必要があります。 - サイトを完全にリロードすることも可能ですが、かなりの費用がかかります。
- 残念
@Observe
ながら、アタッチするリストごとに 1 つずつ、12 のメソッドが必要です。Person
では、ある Bean から、編集されたエンティティーの (現在は古くなった) コピーを含む他の Bean に変更情報を効率的に配布するにはどうすればよいでしょうか?
tomcat - Tomcat で Weld CDI を使用して Jersey を使用してアプリケーションをデプロイするときにエラーが発生しました
Jersey 2.7 + Weld 2.2.0 + EclipseLink (JPA 2.1)を使用してWebアプリケーションに取り組んでいます。次に、「jersey-gf-cdi.jar」で CDI を「接着」しようとしましたが、アプリケーションを Tomcat (7 または 8) にデプロイしようとすると、次のエラーが発生しました。
Weld + Tomcat はかなりうまく機能しており、Tomcat の Jersey も機能しています。
そして、「jersey-gf-cdi.jar」なしでアプリケーションをデプロイしようとすると、次のようになりました。
私の質問は、溶接 CDI を使用してジャージーを統合するにはどうすればよいですか? ありがとう!
junit - Jersey リソースへのインジェクション、Java SE での実行時に Weld の代わりにインジェクションを行う HK2 -> 満たされていない依存関係
GlassFish にデプロイする単純なテストアプリケーションがあります (1 つの単純なクラスが注入された 1 つのリソースのみ)。GlassFish では、すべて正常に動作しています (FINE をログに記録するときの例外を除きます。ここを参照してください)。リソースを正常に呼び出すことができ、Weld CDI が注入を行っています。
Java SE でアプリケーションを起動して JUnit で単体テストを実行すると、HK2 がインジェクションを提供しようとしているように見え、それが UnsatisfiedDependencyException につながります。
InjectMe クラスをバインドする AbtractBinder を定義して、HK2 が認識できるようにします。その後、注射はうまくいきます。ただし、Weld CDI は、クラスを HK2 ではなく、Jersey リソースに挿入する必要があります。
ブートストラップは、カスタム JUnit ランナー (WeldJUnit4Runner) とアノテーションを作成することによって行われます@RunWith(WeldJUnit4Runner.class)
。
Weld CDI は Java SE 環境で正常にブートストラップされ、Jersey リソースではなく、実際の JUnit テストクラスに InjectMe クラスを正常に挿入できます。InjectMe クラスは、Weld ブートストラップによって検出されます。
質問: Java SE で実行しているときに、HK2 が Weld ではなく InjectMe クラスを注入しようとするのはなぜですか?
編集: Netbeans プロジェクトを作成したので、このテストを簡単に再現できます: simple-service.zip。java ロギングのプロパティを logging.properties ファイルに設定することを忘れないでください。
これは、Netbeans の「テスト ファイル」アクション用に定義することで実現しました。プロパティ ファイルで、次のフラグを定義する必要があります。
昨日テストしていたとき、この正確なセットアップが実際に機能する時がありましたが、それらの例外はありませんでした. HK2が最初に初期化されることがある静的初期化に問題があると思いますが、これがこのエラーにつながると思います。
リソース:
アプリケーション構成:
POM:
例外:
注入されたクラス:
使用しています: Glassfish 4.0 (ビルド 89) (Java EE 7 Web)/NetBeans 8.0/maven 3.2.1/JDK 1.7/Weld 2.2.1
cdi - Wildfly 8.1 での CDI クロス BDA Bean インジェクション
次の構造の EAR ファイルがあります。
- ライブラリ
- jar.jar
- テスト1
- テスト2
- jar.jar
- ejb.jar
- Test1Impl
- 戦争.戦争
- Test2Impl
- テストサーブレット
jar.jar には 2 つのインターフェースが含まれています
- テスト1
- テスト2
TestServlet は、war.war に ejb.jar へのマニフェスト Class-Path エントリがある場合にのみ、Test1Impl に解決される Test1 を注入します。Test1Impl は、ejb.jar に war.war へのマニフェスト Class-Path エントリがある場合にのみ、Test2Impl に解決される Test2 を注入します。
ヒント エントリのMatching the classloader structure for deployment of Weld ドキュメントは、マニフェスト エントリが必要な理由を説明しています。このクロス BDA インジェクションはどのように正常に機能するはずですか? Class-Path マニフェスト エントリの追加は、実際には実装を表示したくないため、少しばかげているように思えます。他のサブデプロイメントの Bean が表示されるようにしたいだけです。それを行う方法はありますか?
ここでの実装
そして、ここで application.xml
jsf - アクセスすると、Omnifaces ViewScopeManager が NullPointerException を返す
ここで説明されているように、maven 依存関係を使用して omnifaces ライブラリ (2.0) をインストールしました。NullPointerException
しかし、CDI @SessionScoped
Beanから取得したアプリケーションにアクセスするたびに、次のように呼ばれViewScopeManager
ます。
ViewScopeManager
Bean のソース コードを確認activeViewScopes
したところ、その時点で variable が null のようです。postConstructSession
アノテーション付きの annotatedというメソッドで初期化され@PostConstruct
ます。そのメソッドにブレークポイントを設定しましたが、呼び出されていないようです。
私はwildfly 8.2.0.Final Webサーバーとweld 2.2.9.Finalを使用しています。omnifaces をスコープ ランタイムとの依存関係として使用して (Wildfly モジュールとして) 提供しようとしましたが、エラーがまだ存在します。
溶接のバグですか?bean に初めてアクセスするとき、weld は で注釈が付けられたメソッドを呼び出す必要があります@PostConstruct
。
この問題を解決するのを手伝ってください。私の英語で申し訳ありません:)
編集: OmniFaces が war モジュールの展開として使用されている場合にのみ、CDI が正しく機能しているようです。唯一の方法です。ご協力ありがとうございました。
java - カスタム ログイン モジュールに dao を挿入できない
Spring と JPA を使用している Wildfly で実行されている Web アプリケーションがあります。現在、アプリケーションのログイン モジュールをカスタム モジュールとして JBoss に移動しています。
コード スニペットは以下のとおりです。
マイログインモジュール
以下に示す DaoImpl クラス。
Pom.xml の依存関係
ビーンズ.xml
この jar が JBoss/modules にデプロイされ、サーバーが開始されると、dao オブジェクトは常に null になります。私のコードに欠けているものはありますか?