私はcglib MethodInterceptor
を使用してサービスをラップします。サービスへの各呼び出しで、データセッションを開き、呼び出しをサービスに渡し、最後にセッションを終了することになっています。cglib - MethodInterceptor&finalize?
しかし、私はそれがFinalizer
から呼び出されたときに間違っていることに気づいた。私は次のスタックトレースを取得します:
java.lang.IllegalArgumentException: interface my.pkg.SomeInterface is not visible from class loader
at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353)
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
at my.pkg.ProxyFactory.create(ProxyFactory.java:68)
at my.pkg.SomeService.make(SomeService.java:181)
at my.pkg.SomeService$SessionWrappingInterceptor.intercept(SomeService.java:1275)
at my.pkg.SomeService$$EnhancerByCGLIB$$b58faf6a.finalize(<generated>)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
私は間違って何をしていますか?どうすれば解決できますか?
冗長で非常に有益な答えをありがとう! –
これは、傍受をMethodProxyにリダイレクトするか、完全に無視して処理する必要がありますか? – halfwarp