javassistを使用してプロキシを作成していますProxyFactory
。単一のプロキシを作成する場合、すべて正常に機能します。
ただし、プロキシされたオブジェクトをプロキシメカニズムに渡すと、次のように失敗します。
javassist.bytecode.DuplicateMemberException:重複メソッド:com.mypackage.Bean _ $$ _ javassist_0 _ $$_javassist_1のsetHandler
私はこれでプロキシを作成しています:
public Object createProxiedInstance(Object originalInstance) throws Exception {
Class<?> originalClass = instance.getClass();
ProxyFactory factory = new ProxyFactory();
factory.setSuperclass(originalClass);
factory.setHandler(new MethodHandler() {..});
Class<T> proxyClass = factory.createClass();
return proxyClass.newInstance();
}
では、どうすればプロキシのプロキシを作成できますか?
更新:実際の問題は、各プロキシProxyObject
がwhichdefinesetHandler(..)
メソッドを実装していることです。したがって、2番目のプロキシは、サブクラスでメソッドをオーバーライドするのではなく、メソッドを再定義しようとしています。