問題タブ [invocationhandler]

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.

0 投票する
2 に答える
2077 参照

java - Java-呼び出しハンドラーを作成しますか?

オブジェクトを生成し、すべてのパブリックメソッドをインターセプトするファクトリクラスを実装しようとしています。

ここで2つのメソッドを呼び出そうとしています。1:すでに呼び出されたメソッド2:私のベースのメソッド。どうすればこれを達成できるか考えていますか?

私の抽象クラス:

0 投票する
1 に答える
951 参照

annotations - ネストされた Jsr 303 検証アノテーション

クラス レベルの注釈制約を使用したいと思います。ただし、内部制約を自動的に検証することはできません。この手法に検証グループを組み込むために、一部を支援したいと思います。

私は現在、そのように制約をトリガーしています。

ただし、これは明らかにひどいものです。最終的には AnnotationInvocationHandler.invoke() メソッドを呼び出して isValid メソッドをトリガーするようにリファクタリングしますが、まだ少し先です。

私の問題は、すべての ConstraintB インスタンスが ConstraintA に渡されることです。適切なグループを持つものだけが ConstraintA に渡されることを望みます。この能力が存在するとは思えないので、どのグループがトリガーされる必要があり、どのグループがトリガーされないかをどのように識別できますか?

どのグループをトリガーするかを指定するオブジェクトがデバッグに表示されませんか?

何か案は?

0 投票する
2 に答える
1986 参照

java - 動的プロキシ: ネストされたメソッド呼び出しを処理する方法

Java で動的プロキシを学習しようとしています。

それらがどのように機能するかは知っていますが、私の問題の解決策を見つけることができません: インターフェイスと、メソッド a()、b() および c() を使用したその実装がネストされている場合 (a() が b( を呼び出すとしましょう) ) c()) を呼び出します。オブジェクトをプロキシして、メソッドへの各呼び出しをログに記録したいと思います。

そのため、実行前にログ行を出力する invoke() メソッドなどの InvocationHandler をコーディングします。

しかし、proxy.a() を呼び出すと、メソッド a() の呼び出しのみが記録され、メソッドのチェーン全体は記録されません。

私は何が欠けていますか?プロキシのターゲットはプロキシ自体でなければなりませんか?

0 投票する
1 に答える
1033 参照

android - android 汎用 SQLite データベース

メソッド呼び出しを (json Web サービスから) インターセプトし、結果をローカル SQLite データベースにキャッシュする小さな java.lang.reflect.InvocationHandler を開発しました。インターネット接続がない場合、結果はローカル キャッシュから読み取られます。

すべて正常に動作します。私の問題は次のとおりです。

傍受されたすべてのメソッドは異なるエンティティを返すことができ、リフレクションを使用して各エンティティを異なるテーブルに保存します。作成する必要があるすべてのテーブルを事前に把握していないため、「{ENTITY_NAME} が存在しない場合はテーブルを作成する」という SQLiteOpenHelper を作成するたびに、データベースのバージョンを 1 増やすたびに onUpgrade メソッドが呼び出されます。 .

これは開発環境で機能しますが、私はそれがまったく好きではありません。

データベースを新しいテーブルで更新するためのより良い解決策を誰かが推奨できますか?

ありがとうございました

0 投票する
1 に答える
875 参照

java - InvocationHandler でのプロキシされたオブジェクトのインスタンス変数の設定

Proxy オブジェクト ( を実装するオブジェクトjava.lang.reflect.InvocationHandler) で、プロキシされたオブジェクトにインスタンス変数を設定しようとしています。

次のように:

これは安全ですか?

編集

実際のコード:

Edit2 : プロキシされたオブジェクトは、同じプロキシされたオブジェクトの複数のメソッドを同時に呼び出す GWT クライアントから呼び出されています。これが発生すると、(プロキシされたクラスの) セッション インスタンス フィールドが閉じられ、予期しない方法で開かれます。

0 投票する
1 に答える
153 参照

java - アスペクトを使用して Proxy クラスなしで InvocationHandlers を注入する

メソッドへのすべての呼び出しをログ情報 (たとえば before/after ステートメント) を使用してスーパークラスにプロキシするクラスを作成したいと考えています。

ただし、このクラスを使用するフレームワークは、新しい (..) 呼び出しを介して、または他のリフレクション メカニズムを介してクラスをロードするため、プロキシ セマンティクスを使用してクラスを起動することはできません。

すべての場合にプロキシを使用するために new および newInstance() 操作を取得する方法はありますか? または、プロキシ API を使用して InvocationHandler クラスのインスタンスを明示的に作成する必要がありますか?

具体的には、実行時に XML ファイルからクラス インスタンスを作成する独自の方法 (hadoop - mapreduce) を既に持っている分散フレームワークをデバッグしています。

0 投票する
0 に答える
2553 参照

java - Javaで静的メソッドをインターセプトする方法

クラス Test には静的メソッド 'say' があります。この静的メソッドをインターセプトするにはどうすればよいですか? InvocationHandler を使用して作業する方法はありますか?

前もって感謝します

0 投票する
0 に答える
411 参照

java - Jersey ResourceMethodInvocationHandlerProvider で例外をスローする

このスレッドRegistering a custom ResourceMethodInvocationHandler in Jerseyに基づいて、JSON をアンマーシャリングした後、Jersey リソース メソッド呼び出しをインターセプトすることができました。

しかし、メソッドを呼び出す前に、MyInvocationHandler で何らかのロジック (例: 禁止された例外) に基づいてカスタム例外をスローするにはどうすればよいですか。これを行うと、500 エラーが発生しますjavax.servlet.ServletException

403 禁止の代わりに 500 エラー コードでエラーを下回る

0 投票する
1 に答える
825 参照

java - 呼び出しハンドラを使用して SQL セッションを開いたり閉じたりする

Mybatis を使用してデータベースの CRUD アプリケーションを作成していますが、SQL セッションを開いたり閉じたりするときにすべてのメソッドに繰り返しコードが含まれているため、呼び出しハンドラーを使用してコードの繰り返しを最小限に抑えたいと考えています。ほとんどすべてのメソッドは次のようになります。

私の質問は、アプリケーションがスレッドセーフのままであることを念頭に置いて、呼び出しハンドラーを適切に作成して呼び出すにはどうすればよいですか?