問題タブ [jboss-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 - Java 構成と依存性注入 (Springs IoC vs. Weld / Guice に類似)
ListCreator
構成したいクラスがあるとしましょう。ソート順とテーブルの出力方法を教えてもらいたいです。したがって、ブール値のsortDescending
プロパティと、TableWriter
によって実装されるインターフェイスがありますPdfTableWriter
(ただし、によってもXlsTableWriter
)。この例では、構成と DI は密接に関連していると思います。このSpring(疑似)の例のようなものを書きたいと思います:
現在、Spring はこれを実行できますが、Weld & Guice は実行できないようです。たとえば、Weld を使用すると、beans.xml で代替を選択できますが、アプリケーション全体に対してのみ選択できます。ListCreator
1 つを PDF 用に、もう 1 つを XLS 用に同時に使用したい場合はどうすればよいですか?
現時点では Weld と Guice の範囲がわかりません。構成の多くが許可されていないように見えるからです。new
独自のファクトリを作成または実装する必要性を軽減するだけのようです。たとえば、EJB インジェクションは同じことを行いますが、これは素晴らしいことですが、構成部分全体はどこにありますか (実際に必要なパラメーターを使用してどのインスタンスをどこで選択するか)。
要点を言えば、Spring はオーバーヘッドのように見えるので使用したくありません。私はむしろ、JSR によって指定された、せいぜいクリーンで小さいものを使用します。助言がありますか?
jsf - 検証エラー後にjsf viewparamが失われました
私は次の問題に直面しています: 1 つのページで、アプリケーションのすべてのユーザーを一覧表示し、それぞれに「編集」ボタンがあります。これは、?id=<userid>
.
編集ページには<f:viewParam name="id" value="#{editUserBean.id}"/>
in メタデータがあります。
入力ミスをして送信した場合 (CDI Weld Bean 検証を使用)、ページは再び表示されますが?id=...
、URL の が失われ、編集中のユーザーのユーザー ID が失われます。
JSF validation error, lost valueで説明されている同様の問題を見てきましたが、inputhidden (またはさらに悪いことに、過剰に見える tomahawk) を使用したソリューションには、多くの醜いコードが必要です。
CDIで「会話」を追加しようとしましたが、機能していますが、やり過ぎのように見えます。
検証エラーが発生した場合にビューパラメーターを保持するための簡単なソリューションが JSF に存在しますか?
【私の環境:Tomcat7 + MyFaces 2.1.0 + Hibernate Validator 4.2.0 + CDI(Weld) 1.1.2】
java - カスタム エラー ページが Weld と Tomcat7 で機能しない
私の Web アプリケーションでは、カスタム エラー ページを使用しようとしています。
ただし、これは Weld では機能しません。カスタム エラー ページを取得する代わりに、アプリ内の存在しないページに移動すると、Weld からの例外が表示されます。
これはTomcatのバグだと思いました:
https://issues.apache.org/bugzilla/show_bug.cgi?id=50789
ただし、v.7.0.9 で修正されています。
私のweb.xmlからの抜粋:
Tomcat 7.0.19、JSF 2.0、および Weld 1.1.2 を使用しています。
何が起こるかについてのアイデアはありますか?
jsf-2 - Richfaces 4 a4j:commandLinkアクションがrich:popupPanelで起動しない
rich:popupPanelにa4j:commandLinkがあるのに問題が発生しているようですが、アクションが実行されません。xhtmlは次のようになります。
また、マネージドBeanは次のようになります。
マネージドBeanを@ViewScopedにしました。
また、commandLinkの周りに追加しようとしました<h:form>
が、これはそれがない場合よりもさらに少なくなります。それは、実際には、commandLinkが<h:form>
popupPanelを開いたリンクが置かれている内部にあるためだと思います。
とにかく、誰かがアクションが発火しない理由の方向に私を向けることができますか?
events - メンバーを持つ修飾子で CDI イベントを動的に発生させる
JBoss AS6のバックエンドサービスでCDIイベントを使用しようとしています-理想的にはコードを最大限に再利用します。
ドキュメントから、メンバーを持つ修飾子を使用して作成する必要がある修飾子注釈クラスを削減できることがわかります。
私はこれを観察することができます
ここまでは順調ですね。ただし、必要なクラスの数をさらに削減するために、スローされるイベントの修飾子が動的である 1 つの EventFirer クラスが必要です。メンバーのない修飾子では問題ありません:
その後、次のように呼び出されます
しかし、修飾子にメンバーが必要な場合はどうでしょうか? AnnotationLiteral のコードを見ると、それは確かにメンバー用に設定されており、クラス要素のコメントには次の例があります。
これは私には理にかなっています-注釈インターフェースの value() メソッドをオーバーライドしています。しかし、私がこれを自分で試したとき:
私は例外を受け取ります
誰かが私が間違っていることを見ることができますか? MemberQualifierEventManager は、DynamicEventFirer を呼び出してイベントを発生させる ApplicationScoped Bean です。
ありがとう、ベン
java - CDI: 同じ Bean のインターセプトされていないメソッドからのインターセプトされたメソッドのネストされた呼び出し - 呼び出す必要がありますか?
メソッドがあれば
次に、最初のメソッドにも @JpaTransactional アノテーションを付ける必要がありますよね?
Bean が独自のインターセプトされたメソッドを呼び出すと、インターセプターがトリガーされないことがわかりました。これは、呼び出されたプロキシではなく、「実際のインスタンス」自体であるため、プロキシを通過しないためだと思います。
これは仕様/ドキュメントでカバーされていますか? まだ見つかりませんでした。すべてのパブリック メソッドにアノテーションを付けた場合、今後インターセプターが複数回呼び出されないようにするためです。
seam - Weld アーキタイプ vs Seam Forge
Seam 3 を使用して新しいプロジェクトを構築しています。Weld アーキタイプと Seam Forge の違いがわかりません。どちらも、最初に単純なプロジェクト テンプレートを作成するのに役立ちます。
java - ディスポーザーはいつ実行されますか?
MyResourceManager を生成する pojo プロデューサーがあります。
@TraderResouceManager @RequestScoped public MyResourceManager(){ ... ... }
MyResourceManger は SLSB に注入されます
@inject @TraderDB プライベート MyResourceManager rm;
ディスポーザーは次のとおりです。
public void close(@Disposes @TraderResouceManager MyResourceManager rm) { rm.close(); }
質問
close() はいつ実行されますか?
トランザクションを閉じる前ですか、それともトランザクションを閉じた後ですか?
編集:質問にはおそらく追加の説明が必要です。データベース接続の類推を見てみましょう。
リクエストごとに新しい接続を作成する pojo を使用して、@RequestScoped で @producer を作成します。
必要なのは、リクエストの最後に接続を破棄することです。この接続は他の Bean によって共有されます (現時点では SLSB)。特定のリクエストでは、トランザクション内で実行されている多くの Bean が含まれる場合があります。したがって、すべてのトランザクションが論理的に閉じられた後にのみ、接続を閉じる必要があります。
質問 コンテナー管理トランザクションを使用する場合、上記のコードでこの動作を実現できますか?
java - Glassfish v3デプロイメントのCDIの適格な候補をどこに配置できますか?
を含む1つのjar(a.jar)にコードがあります@Inject X x
。
別のjar(b.jar、有効なBeanアーカイブなど)での実装でインジェクションを満たしたいです。
私の理解では、a.jarとb.jarはCDIに関して独立しているため、別々のWARスタンドアロンアーカイブにデプロイすることはできません。Glassfishがすべてのデプロイメントに提供するlibフォルダーにb.jarを配置できる場合があります(ただし、これは「純粋なJava 6 EE」であり、戦争や耳と同じようにデプロイできないことを意味しますか?)。libに配置されたEARでa.warまたはa.jarと一緒にb.jarを提供できる場合がありますが、これには慣れていません。
私の質問は、Glassfish(現在は3.0.1ですが、より適切に機能する場合は3.1.1を検討します)がこの依存関係を正しく解決するように、a.jarとb.jarをデプロイするためのオプションはどれですか?網羅的なリストを探しています。
(編集:b.jarをa.jarとは独立してデプロイできるソリューションが望ましい)
dependency-injection - クラスパスのスキャンは、Weld で制御できますか?
Weld-SE (Java SE) で遊んでいて、クラスパスに多数の JAR があると、JVM の起動時間が数秒かかることに気付きました。
Apache AntやAspectJのようにパッケージパターンやパスパターンでスキャンパスを指定・制限する方法はありませんか?
PS: Weld フォーラムへの登録が機能しません。「あなたのパスワードは簡単です」と表示され続けます