は私が迎撃と注釈が共通-utilsのと呼ばれるモジュールである InterceptorBindingは
@Traceable
@Interceptor
public class EnterExitLogger {
@AroundInvoke
public Object aroundInvoke(InvocatiobContext c) {}
}
下のような迎撃を書いた
@InterceptorBinding
@Retention(RUNTIME)
@Target(TYPE, METHOD)
public @interface Traceable {}
の下のようなカスタムアノテーションを作成動作しません。
ターゲットクラスが含まれている
<interceptors>
<class>my.package.EnterExitLogger</class>
</interceptors>
以下のように私は私のbeans.xmlファイルでインターセプタエントリを宣言し
@Traceable
public class CDIManagedBean {
}
以下のように私はクラスレベルで@Traceableと私のターゲットクラスを注釈付き別のモジュール。 beans.xmlは、ターゲットクラスのモジュールのMETA-INFディレクトリにあります。
ターゲットクラスのメソッドは、レストクラスから呼び出されます。メソッドを呼び出すと、インターセプタのAroundInvokeメソッドは呼び出されません。
私はドキュメントを読んで、インターセプタにパブリック引数なしコンストラクタが含まれるべきであることを理解しました。私はそれを加えた。しかし、依然としてインターセプタは呼び出されていませんでした。
ドキュメントを読んだ後にカスタムアノテーションに@Inheritedを追加しました。しかし、依然としてインターセプタは呼び出されていませんでした。
ドキュメントから、私はSerializableインターフェイスを実装しているインターセプタに気付きました。私はSerializableを実装していません。まだ動作しませんでした。
次に、インターセプタ、beans.xmlファイル、およびターゲットクラスからカスタムアノテーションを削除しました。私はまた、インターセプタから引数なしコンストラクタを削除し、Serializableを削除しました。
次に、ターゲットクラスに@Interceptors(EnterExitLogger.class)
という注釈を付け、フローを呼び出しました。私の迎撃隊が呼ばれました。
InterceptorBindingを使用してどのようにすればいいですか?
P.S.
私はWAS 8.5サーバーに耳を配置しています。
私は残念ながらbeans.xmlを追加して、タグを宣言する必要がありました(Java EE 7でも)!ありがとう。 –