問題タブ [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.
tomcat7 - Tomcat 7 での展開時の Omnifaces 例外
Omnifaces 2.1 を Web アプリケーションに追加して、FullAjaxExceptionHandler および Omnifaces 2.1 の他の機能を使用しようとしています。
BallusC による次の投稿を読んでフォローしましたが、まだ行き詰まっています: Tomcat に CDI をインストールして使用するにはどうすればよいですか?
Weld 2.2.9.Final をインストールして、上記のように構成しようとしました。私は以下を使用しています:
JSF 2.2、EL 2.2、サーブレット 3、Java 7
web.xml:
起動時に、まだ次の例外が発生します。
Catalina.log:
Localhost.log:
jar は実際に存在し、アプリケーションに追加されています。
他に何がこのエラーを引き起こしている可能性がありますか?
cdi - プロデューサーは Arquillian プロセスで Weld によって発見されます
Glassfish 組み込みプラグインを使用して Arquillian で単体テストを実行しているときに、次の CDI エラーが発生します。
修飾子 @SupportedLocales を持つ Set(Locale) は、テスト済みの WebArchive にデプロイされたモジュールで定義されます。アーカイブの内容は次のとおりです。
このオブジェクトは、「common-cdi」モジュールにあるプロデューサー メソッドによって提供されます。同じモジュールが ThreadScoped のような CDI 拡張機能を提供します。このプロデューサーは、テストの開始時に Weld によって検出されず、Weld は「commons-cdi」モジュールから Bean を検出しません。それはどのように可能ですか?同じモジュールで CDI 拡張機能と CDI Bean を提供できますか?
@SupportedLocales は、「commons-cdi」で次のように宣言されています。
プロデューサーは、「commons-cdi」で次のように宣言されています。
JUnit テスト ケース定義:
MyCurrentLocale クラス定義:
宣言に何か問題がありますか?
jsf - スーパークラスからの JSF+WELD CDI+EL MethodNotFound
環境:
ワイルドフライ 9.0.1
JSF: jsf-impl-2.2.11-jbossorg-1
溶接: wildfly-weld-9.0.1
私はこのシナリオを持っています:
CustomerController.java
Type1CustomerController.java
Type2CustomerController.java
CustomerSelectionController.java
Type2CustomerController
が選択されると、すべて正常に動作します。Type1CustomerController
災害が発生した場合:
Type1Controller でオーバーライドされたスーパークラス メソッドが EL で見つからないという問題は何ですか?
cdi - 溶接 CDI カスタム スコープのシード値
Guice のバックグラウンドから来て、使用してスコープからオブジェクト値をシードできることを知っています。
から値を取得する Bean を登録することでこれを行うことができると思いますがAbstractBoundContext
、カスタム スコープから 1 つの値をシードするだけの例は見つけにくいようです。他の場所に注入できる値をシードするカスタム スコープを作成するにはどうすればよいですか?
編集:
現在、次の回避策を使用しています。これは、スコープに入るときにインターセプターに挿入して設定しConfiguration
、スレッドローカルプロバイダーを介して挿入できます。ただし、ハックが少ないと感じたり、Weldのスコープ/スコープコンテキストシステムとより統合されているオプションをまだ探しています。
java - Jersey 2.23で組み込みの例外マッパーをオーバーライドするには?
私のプロジェクトの 1 つで、すでに Jersey をバージョン2.14
から にアップグレードしました2.23
。しかし、私は1つの問題で何時間も苦労しています。私のプロジェクトでは独自ExceptionMapper
の a を定義しValidationException
ていますが、残念ながら、Jersey にはこの例外用の組み込みの例外マッパーが既にあり、それをオーバーライドすることはできません。
以下に示す独自のマッパーを正しく登録しました(チェックしました):
しかし、それは決して呼び出されていません。ジャージーは常にorg.glassfish.jersey.server.validation.internal.ValidationExceptionMapper
. カスタムマッパーにも注釈を使用しようとしまし @Priority
たが、残念ながらJerseyはそれを考慮していません.
それで、何が起こっているのですか?以前のジャージー バージョンでは問題なく動作していたので、回帰バグのようです。
あきらめる。手がかりはありますか?
cdi - Deltaspike データ (CDI + JPA) UTC でのカスタム java.time.ChronoLocalDateTime のカスタム PrePersistAuditListener および PreUpdateAuditListener
Wildfly 9.0.2.Final の Deltaspike バージョン 1.7.2
エンティティ Bean でJPA@EntityListeners(AuditEntityListener.class)
と Deltaspike Data ( @CreatedOn
、@ModifiedOn
および注釈) の監査機能を使用していますが、 + OR aを UTC の日付と時刻に変換@ModifiedBy
するカスタム実装があるという違いがあります。java.time.ChronoLocalDateTime
LocalDateTime
ZoneOffset
ZonedDateTime
UTCDateTime
エンティティ Bean のパーツ
エポック値がデータベースに保存されるため、UTCDateTime クラスのカスタム AttributeConverter もあります。
エンティティを永続化すると、次の例外が発生します (本当の原因の最後のビット)。
org.apache.deltaspike.data.impl.audit.PrePersistAuditListener
独自のものを実装し、org.apache.deltaspike.data.impl.audit.PreUpdateAuditListener
それらを使用して のインスタンスを作成する方法はありますUTCDateTime
か?
独自の EntityListener を作成して -->アプローチの次の場所でUTCDateTimeAuditListener
使用するのは正しいでしょうか?@EntityListeners(UTCDateTimeAuditEntityListener.class)
UTCDateTimeAuditListener
org.apache.deltaspike.data.impl.audit.AuditEntityListener
次に、インスタンスの構築方法を知ってUTCDateTimeAuditEntityListener
いる正しい実装への参照を確実に取得するために、どこかで CDI 修飾子を使用する必要がありPrePersistAuditListener
ますか?PreUpdateAuditListener
UTCDateTime
最後に、関連性があるかどうかはわかりませんが、org.apache.deltaspike.data.impl.audit.TimestampsProvider
このシナリオのどこに当てはまりますか?
アップデート
質問への回答が少し進みました。私がこれまでにやってきたこと。カスタムの必要はありませんAuditEntityListener
。DeltaSpike が提供するもので十分です。
オブジェクトTimestampsProvider
を処理できる の新しい実装を作成しました。UTCDateTime
beans.xml には、これも CDI @Alternative としてリストされています。
の内容apache-deltaspike.properties
問題は、両方のAuditProvider
インスタンスが実行されることです。最初に実装 ( UTCDateTimeAuditProvider
) が実行され、次にデフォルトが実行されます。TimestampsProvider
@Alternative 実装をアノテーションのみ、またはbeans.xmlのみ、およびクラスとbeans.xmlの両方で指定するさまざまな組み合わせを試しました。
TimestampsProvider
@Alternative の実装後にデフォルトが実行される理由を知っている人はいますか?
Wildfly 9.0.2 の Deltaspike バージョン 1.7.2.Final with Weld 2.2.16 (SP1)