問題タブ [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.
java - CDI ビュー スコープ Bean (Weld、Seam 3) でオーバーライドされた @PostConstruct が 2 回呼び出される
@PostConstruct
基本クラス階層での重複呼び出しに問題があります。
最初の基本クラスは次のとおりです。
具体的なサブクラスは次のとおりです (init() が super.init() を呼び出すためにオーバーライドされていることに注意してください)。
一部の (表示されていない) ページがレンダリングされると、pseudoEntityManager
Bean がインスタンス化されますが、 @PostConstruct
2 回呼び出されます。これは出力です:
具体的なサブクラスのオーバーライドinit()
メソッドをコメント化して、スーパー クラスのメソッドが1 つだけになるようにすると、次の出力が生成されます。@PostConstruct
Q :
現在の CDI 仕様による正しい動作は何ですか? (誰かを参照しますか?)
ノート:
調査中に、このメーリングリストの会話も見つけました。
会話の中で、「サブクラスの @PostConstruct メソッドのみを呼び出す必要がある」と言う専門家もいます。よく読むと、Weld 1.1.5 以降に解決されたと言われている Weld バグへのリンクがあります。
https://issues.jboss.org/browse/WELD-1225
これは本当に修正されましたか?私が得た出力によると、そうではありません。
環境: (GlassFish 3.1.2 で) CDI @ViewScoped が正しく動作するように Seam 3 と共に 1.1.8 を連結します。
java-ee-6 - CDI インジェクションがマルチモジュール プロジェクトの「WELD-001408」を発生
いくつかの Web アーティファクト (.war) を含むプロジェクトがあり、単純な POJO を挿入する際に問題に直面しています。次のコードは、最も単純な作業ケースを表しています。
.war (WAR1)
.war (WAR1) の POJO
同じ POJO (MyPojo) がパッケージ化された Web アーティファクト (.war --> WAR2) をもう 1 つ追加すると、問題が発生します。意味的には、外部アーカイブ (.jar) ではなく、各 Web アーティファクトに POJO が必要です。基本的に、追加された最新のコンポーネント (WAR2) は WAR1 と同じです。つまり、マルチモジュール プロジェクトが存在するかのようにシミュレートします。実行時に、モジュールを使用しようとすると、コンテナーで次のエラーが発生します。
いくつかのシナリオの詳細:
- WAR2 を削除すると、WAR1 によるインジェクションが機能し始めます。
- 両方の成果物 (WAR1 と WAR2) には、同じ POJO と beans.xml (/WEB-INF) があります。
私が見逃している点はありますか?私が必要とするのは、たとえば「*.Helper」のようなクラスを注入する可能性だけです。私が知っているように、CDI ではプリミティブ型でさえも注入できます。
- JDK1.7
- JBoss 6.1.0
- 溶接 1.1.Beta2
java - CDI-Weld を使用して継承されたプロパティ値を注入する
私は基本的な Swing アプリケーションを開発していますが、依存性注入のために常に Spring Ioc (xml 構成を使用) を使用する傾向がありますが、CDI-Weld を試してみたいと思っています。Spring で次の構造を作成するSchoolBoy
と、コンテナは と を作成しUniversityStudent
、それぞれにその名前を付けます。
@Inject @Config
注釈を使用して CDI で同様のことを行うことが可能であることを確認しました。ただし、これを見るたびに、それらはプロパティ自体の上にあり、継承されたプロパティであるため、ここのクラスに対してそれを行うことはできません。Student
各サブクラスを達成して独自のname
値を取得するにはどうすればよいですか?
アップデート
その値をサブクラスに注入することは、必ずしも構成ファイルにそれらをハードコーディングすることを意味しません。プロパティ値自体は、 .propertiesファイルから取得できます。ただしStudent
、レガシー プロジェクトに含まれるエッジ ケースがあり、そこからクラスを継承してそのプロパティを注入したい場合、解決策は何でしょうか?
spring - Spring 3 で WildFly 8 を起動するとエラー Weld が発生する
Jboss-as 7.1.1.Final から Wildfly 8.0.0.Alpha4 にアプリケーションを更新すると、修正できないエラーが発生しました。
このエラーは、以前のバージョンの JBoss では 1.1 であった org.jboss.weld モジュールの新しいバージョンに関連していると思います。現在、この新しいバージョンの WildFly では 2.0.3 です。「JBOSS_HOME\modules\org\jboss\weld\[...]\main」にあるとおり
助けてくれてありがとう!