2
Glassfishサーバー内でBBプロキシを実装できませんでした。私は、生成されたクラスを使用しようとするとそれがスローされます。ここではGlassfishの証拠にByte-Buddyプロキシを実装する際のエラー
Grave: java.lang.IllegalStateException: Error invoking java.lang.ClassLoader#findClass
at net.bytebuddy.dynamic.loading.ClassInjector$UsingReflection$Dispatcher$Resolved.loadClass(ClassInjector.java:401)
at net.bytebuddy.dynamic.loading.ClassInjector$UsingReflection.inject(ClassInjector.java:210)
at net.bytebuddy.dynamic.loading.ClassLoadingStrategy$Default$InjectionDispatcher.load(ClassLoadingStrategy.java:204)
at net.bytebuddy.dynamic.loading.ClassLoadingStrategy$Default.load(ClassLoadingStrategy.java:119)
at net.bytebuddy.dynamic.DynamicType$Default$Unloaded.load(DynamicType.java:4350)
at ar.gov.santafe.mpa.odbogm.proxy.ObjectProxyFactory.create(ObjectProxyFactory.java:77)
は、プロキシオブジェクトを生成するメソッドのクラスです:
public static <T> T create(T o, OrientElement oe, SessionManager sm) {
T po = null;
try {
ObjectProxy bbi = new ObjectProxy(o,oe,sm);
po = (T) new ByteBuddy()
.subclass(o.getClass())
.implement(IObjectProxy.class)
// .method(isDeclaredBy(IObjectProxy.class))
.method(any())
.intercept(MethodDelegation.to(bbi))
.make()
.load(o.getClass().getClassLoader(), ClassLoadingStrategy.Default.INJECTION)
.getLoaded().newInstance();
bbi.___setProxyObject(po);
} catch (InstantiationException ex) {
Logger.getLogger(ObjectProxyFactory.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(ObjectProxyFactory.class.getName()).log(Level.SEVERE, null, ex);
}
return po;
}
Hereは、完全なスタックトレースです。
注:コードは正常に動作し、スタンドアロンのjvmですべてのテストに合格します。
Glassfishのクラスローダーです!クラスをWEB-INF/libから読み込むことができませんでした。あなたGlassfishの設定では可能ではないと思われるもの
Class.forName(IObjectProxy.class.getName(),
false,
o.getClass().getClassLoader());
:
例外はexecitionが失敗した理由のために付属の原因を持っている必要があります。原因は何を示していますか? –
IObjectProxyクラスが見つかりませんが、そのクラスは参照するパッケージに含まれています。 パッケージに問題がありますか? OGMパッケージは、アプリケーションパッケージとは異なります。 –
Githubにプロジェクトをアップロードして、それを調べたり使用したりしたいと思っている人のために用意しました。 URLはhttps://github.com/mdre/odbogm –