|
Hi all, I have been trying to use
a custom RegistryBuilder using a custom ClassLoader. ClassLoader works fine on
its own! When I run the Calculator
example, it fails when trying to retrieve the Adder service: public static …main(…)
{ …
RepositoryClassLoader loader = getLoader(repos, archiveName);
Registry hivemindRegistry = RepositoryRegistryBuilder
.constructDefaultRegistry(repos,
loader, paths);
String serviceName = "org.apache.hivemind.examples.Adder";
Class adderClass = loader.findClass(serviceName);
if (hivemindRegistry.containsService(adderClass)) {
Object service = hivemindRegistry.getService(adderClass); } Internally, the javassist
tries to: public MethodFab
addMethod(int modifiers, MethodSignature ms, String body) with the following src
for the body src = "" org.apache.hivemind.internal.ser.ServiceSerializationHelper.getServiceSerializationSupport().getServiceTokenForService("examples.Adder");” Parsing this source
causes the following error !!! Is this an error with javassist ??? It proceeds to try loading
“org.class” using my custom ClassLoader, calling [RepositoryClassLoader
].getResourceAsStream(String name) !!! Anything to do with my “bogus”
URL at public URL getResource(String name) ? org.apache.hivemind.ApplicationRuntimeException:
Unable to add method java.lang.Object writeReplace() to class
$Adder_1019bc4c98d: javassist.NotFoundException: org at
org.apache.hivemind.impl.servicemodel.SingletonServiceModel.createSingletonProxy(SingletonServiceModel.java:114) at
org.apache.hivemind.impl.servicemodel.SingletonServiceModel.getService(SingletonServiceModel.java:58) at
org.apache.hivemind.impl.ServicePointImpl.getService(ServicePointImpl.java:189) at
org.apache.hivemind.impl.ServicePointImpl.getService(ServicePointImpl.java:202) at
org.apache.hivemind.impl.RegistryInfrastructureImpl.getService(RegistryInfrastructureImpl.java:207) at
org.apache.hivemind.impl.RegistryImpl.getService(RegistryImpl.java:71) at
org.planx.cmsoax.soa.hivemind.TestRepositoryRegistryBuilder.testConstruct(TestRepositoryRegistryBuilder.java:165) at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at
java.lang.reflect.Method.invoke(Unknown Source) at
junit.framework.TestCase.runTest(TestCase.java:154) at
junit.framework.TestCase.runBare(TestCase.java:127) at
junit.framework.TestResult$1.protect(TestResult.java:106) at
junit.framework.TestResult.runProtected(TestResult.java:124) at
junit.framework.TestResult.run(TestResult.java:109) at
junit.framework.TestCase.run(TestCase.java:118) at
junit.framework.TestSuite.runTest(TestSuite.java:208) at
junit.framework.TestSuite.run(TestSuite.java:203) at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474) at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342) at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194) Caused by:
org.apache.hivemind.ApplicationRuntimeException: Unable to add method
java.lang.Object writeReplace() to class $Adder_1019bc4c98d:
javassist.NotFoundException: org at
org.apache.hivemind.service.impl.ClassFabImpl.addMethod(ClassFabImpl.java:310) at
org.apache.hivemind.impl.ProxyBuilder.addSerializable(ProxyBuilder.java:84) at
org.apache.hivemind.impl.ProxyBuilder.<init>(ProxyBuilder.java:67) at
org.apache.hivemind.impl.servicemodel.SingletonServiceModel.createSingletonProxyClass(SingletonServiceModel.java:129) at
org.apache.hivemind.impl.servicemodel.SingletonServiceModel.createSingletonProxy(SingletonServiceModel.java:89) ...
21 more Caused by:
java.lang.RuntimeException: javassist.NotFoundException: org at
javassist.CtClassType.getClassFile2(CtClassType.java:197) at
javassist.CtClassType.getFieldsCache(CtClassType.java:551) at
javassist.CtClassType.getDeclaredField2(CtClassType.java:572) at
javassist.CtClassType.getField2(CtClassType.java:515) at
javassist.CtClassType.getField(CtClassType.java:507) at
javassist.compiler.MemberResolver.lookupFieldByJvmName2(MemberResolver.java:249) at
javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:774) at
javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:702) at
javassist.compiler.TypeChecker.atExpr(TypeChecker.java:504) at
javassist.compiler.ast.Expr.accept(Expr.java:67) at
javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:759) at
javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:702) at
javassist.compiler.TypeChecker.atExpr(TypeChecker.java:504) at
javassist.compiler.ast.Expr.accept(Expr.java:67) at
javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:759) at
javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:702) at
javassist.compiler.TypeChecker.atExpr(TypeChecker.java:504) at
javassist.compiler.ast.Expr.accept(Expr.java:67) at
javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:759) at
javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:702) at
javassist.compiler.TypeChecker.atExpr(TypeChecker.java:504) at
javassist.compiler.ast.Expr.accept(Expr.java:67) at
javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:759) at
javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:702) at
javassist.compiler.TypeChecker.atExpr(TypeChecker.java:504) at
javassist.compiler.ast.Expr.accept(Expr.java:67) at
javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:586) at
javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156) at
javassist.compiler.ast.CallExpr.accept(CallExpr.java:45) at
javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:586) at
javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156) at
javassist.compiler.ast.CallExpr.accept(CallExpr.java:45) at
javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:235) at
javassist.compiler.CodeGen.compileExpr(CodeGen.java:222) at
javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:591) at
javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424) at
javassist.compiler.CodeGen.atStmnt(CodeGen.java:356) at
javassist.compiler.ast.Stmnt.accept(Stmnt.java:49) at
javassist.compiler.CodeGen.atMethodBody(CodeGen.java:285) at
javassist.compiler.Javac.compileBody(Javac.java:208) at
javassist.CtBehavior.setBody(CtBehavior.java:188) at
javassist.CtBehavior.setBody(CtBehavior.java:163) at
org.apache.hivemind.service.impl.ClassFabImpl.addMethod(ClassFabImpl.java:302) public
static Registry constructDefaultRegistry(Repository repository,
ClassLoader classLoader, String[] modDescPath) {
ClassResolver resolver = new DefaultClassResolver(classLoader);
RegistryBuilder builder = new RegistryBuilder();
// default provider - class resolver
builder.addModuleDescriptorProvider(new XmlModuleDescriptorProvider(new
DefaultClassResolver()));
// default provider - repository class resolver
// builder.addModuleDescriptorProvider(new
XmlModuleDescriptorProvider(resolver));
// provide descriptor from xml file at specific location, use repository
resolver
if (modDescPath != null) {
for (int i = 0; i < modDescPath.length; i++) {
FileResource resource = new FileResource(modDescPath[i]);
builder
.addModuleDescriptorProvider(new XmlModuleDescriptorProvider(
resolver, resource));
}
}
return builder.constructRegistry(Locale.getDefault()); } public class
RepositoryClassLoader extends ClassLoader { …… public
InputStream getResourceAsStream(String name) {
try {
return new ByteArrayInputStream(loadClassData(name));
} catch (ServiceClassLoaderException e) {
System.out.println("Resource not found [" + name + "]");
return null;
} } public
URL getResource(String name) {
try {
String url = "" StringBuffer("http://").append(getServletPath()).append("repository=").append(getRepository().getName()).append("&project=").append(getProject()).append("&path=").append(name).toString();
return new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace(); return
null;
}
} --- |
- RE: difficulties with example Jensen, James B
- Re: difficulties with example Jamie Orchard-Hays
- Re: difficulties with example Brian K. Wallace
- Re: difficulties with example Jamie Orchard-Hays
- Re: difficulties with example Jamie Orchard-Hays
- Re: difficulties with example Brian K. Wallace
- Re: difficulties with example Jamie Orchard-Hays
- Re: difficulties with example Jamie Orchard-Hays
- Re: difficulties with example Brian K. Wallace
- RE: difficulties with example Jensen, James B
- Re: Problems using custom ClassLoader Kristian Mandrup
- Re: Problems using custom ClassLoader Howard Lewis Ship
- Problems using custom ClassLoaders and cus... Kristian Mandrup
- RE: difficulties with example Jensen, James B
