-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
As far as I know, the service id of a service point should not contain
any '.' [dots]. Do you see any other errors from HiveMind before you
get to where you are now?
Johan
Do you see any other errors from hivemind
GUMMOW JR, DONALD R [AG/1000] wrote:
> Sure - here is the method that builds the registry...
>
>
>
> private Registry buildRegistry(String fileName)
>
> {
>
> String projectRoot = System.getProperty("PROJECT_ROOT", ".");
>
> String path = projectRoot +
> "/com/monsanto/tcc/domain/service/descriptor/" + fileName;
>
> verifyDomainDescriptor(path);
>
>
>
> ClassLoader classLoader = getClass().getClassLoader();
>
> ClassResolver resolver = new DefaultClassResolver(classLoader);
>
> RegistryBuilder builder = new RegistryBuilder();
>
>
>
> System.out.println("buildRegistry: classLoader="+classLoader);
>
> System.out.println("buildRegistry: classLoader.hashCode()=" +
> classLoader.hashCode());
>
>
>
> builder.addModuleDescriptorProvider(new
> XmlModuleDescriptorProvider(resolver));
>
> builder.addModuleDescriptorProvider(new
> XmlModuleDescriptorProvider(resolver,
>
> new FileResource(path)));
>
>
>
> return builder.constructRegistry(Locale.getDefault());
>
> }
>
>
>
> Console output: è
>
> buildRegistry: classLoader=PluginClassLoader(Domain Repository Service)
>
> buildRegistry: classLoader.hashCode()=17764792
>
>
>
> ...and here is the method that attempts to access the service...
>
>
>
> public DomainRepository getRepository(Class repositoryClass)
>
> {
>
> ClassLoader classLoader = repositoryClass.getClassLoader();
>
> ClassLoader impl_Loader = CropRepositoryImpl.class.getClassLoader();
>
> System.out.println("ClassLoader(interface):"+classLoader.toString()
>
> + " (#"+classLoader.hashCode()+")");
>
> System.out.println("ClassLoader(class):"+impl_Loader.toString()
>
> + " (#"+impl_Loader.hashCode()+")");
>
>
>
> return (DomainRepository) registry.getService(repositoryClass);
>
> }
>
>
>
> Console output: è
>
> ClassLoader(interface):PluginClassLoader(Domain Repository Service)
> (#17764792)
>
> ClassLoader(class):PluginClassLoader(Domain Repository Service) (#17764792)
>
>
>
> The exception is thrown on retgistry.getService(repositoryClass)
>
>
>
> Console output: è
>
>
>
> [Severe] Uncaught exception during Plugin start: Apollo Core
>
> org.apache.hivemind.ApplicationRuntimeException: Service
> com.monsanto.tcc.domain.crop.CropRepository does not implement the
> requested interface (com.monsanto.tcc.domain.crop.CropRepository). The
> declared service interface type is
> com.monsanto.tcc.domain.crop.CropRepository.
> [./com/monsanto/tcc/domain/service/descriptor/domainServices.xml, line
> 53, column 101]
>
> at
> org.apache.hivemind.impl.ServicePointImpl.getService(ServicePointImpl.java:226)
>
> at
> org.apache.hivemind.impl.RegistryInfrastructureImpl.getService(RegistryInfrastructureImpl.java:242)
>
> at
> org.apache.hivemind.impl.RegistryImpl.getService(RegistryImpl.java:73)
>
> at
> com.monsanto.tcc.domain.service.impl.DomainRepositoryServiceImpl.getRepository(DomainRepositoryServiceImpl.java:66)
>
> at
> com.monsanto.tcc.apollo.settings.CropSetting.getCropRepository(CropSetting.java:53)
>
> at
> com.monsanto.tcc.apollo.settings.CropSetting.init(CropSetting.java:42)
>
> at
> com.monsanto.tcc.apollo.settings.SettingsManager.register(SettingsManager.java:129)
>
> at
> com.monsanto.tcc.apollo.settings.SettingsManager.registerSettings(SettingsManager.java:58)
>
> at
> com.monsanto.tcc.apollo.settings.SettingsManager.<init>(SettingsManager.java:37)
>
> at
> com.monsanto.tcc.apollo.workspace.WorkspaceManagerImpl.attachToWorkbench(WorkspaceManagerImpl.java:162)
>
> at
> com.monsanto.tcc.apollo.workbench.internal.WorkbenchImpl.registerCollaborator(WorkbenchImpl.java:50)
>
> at
> com.monsanto.tcc.apollo.ApolloCorePluginLifecycle.start(ApolloCorePluginLifecycle.java:30)
>
> at
> org.platonos.pluginengine.StartPluginQueue$PoolWorker.run(StartPluginQueue.java:63)
>
> at java.lang.Thread.run(Thread.java:534)
>
>
>
> ...and the descriptor for the registered service...
>
>
>
> <module id="com.monsanto.tcc.domain" version="1.0.0">
>
>
>
> <service-point id="crop.CropFactory"
> interface="com.monsanto.tcc.domain.crop.CropFactory">
>
> <invoke-factory>
>
> <construct
> class="com.monsanto.tcc.domain.crop.impl.CropFactoryImpl"/>
>
> </invoke-factory>
>
> <interceptor service-id="hivemind.LoggingInterceptor"/>
>
> </service-point>
>
>
>
> <service-point id="crop.CropRepository"
> interface="com.monsanto.tcc.domain.crop.CropRepository">
>
> <invoke-factory>
>
> <construct
> class="com.monsanto.tcc.domain.crop.impl.CropRepositoryImpl"/>
>
> </invoke-factory>
>
> <interceptor service-id="hivemind.LoggingInterceptor"/>
>
> </service-point>
>
>
>
> </module>
>
>
>
>
>
> -----Original Message-----
> *From:* James Carman [mailto:[EMAIL PROTECTED]
> *Sent:* Tuesday, August 09, 2005 9:07 AM
> *To:* [email protected]
> *Subject:* RE: Classloaders and Registry
>
>
>
> How are you getting these two different classloaders? Can you try
> printing out the classloaders at each point (registry creation and when
> you ask for the service) so that we can verify that you are actually
> using the exact same one (print out there "identity hashcode")?
>
>
>
> ------------------------------------------------------------------------
>
> *From:* GUMMOW JR, DONALD R [AG/1000]
> [mailto:[EMAIL PROTECTED]
> *Sent:* Tuesday, August 09, 2005 9:58 AM
> *To:* [email protected]
> *Subject:* RE: Classloaders and Registry
>
>
>
> -->
>
> James, thanks for the response. I've tried this, making sure that the
> classloader I pass into DefaultClassResolver is the same as the loader
> reported for the interface that I later pass into registry.getService( )
> - but am still getting the app run-time exception:
>
>
>
> org.apache.hivemind.ApplicationRuntimeException: Service
> com.monsanto.tcc.domain.Item does not implement the requested interface
> (com.monsanto.tcc.domain.Item). The declared service interface type is
> com.monsanto.tcc.domain.Item.
> [./com/monsanto/tcc/domain/service/descriptor/domainServices.xml, line
> 53, column 101]
>
> at
> org.apache.hivemind.impl.ServicePointImpl.getService(ServicePointImpl.java:226)
>
> at
> org.apache.hivemind.impl.RegistryInfrastructureImpl.getService(RegistryInfrastructureImpl.java:242)
>
> at
> org.apache.hivemind.impl.RegistryImpl.getService(RegistryImpl.java:73)
>
> at
> com.monsanto.tcc.domain.service.impl.DomainRepositoryServiceImpl.getRepository(DomainRepositoryServiceImpl.java:62)
>
> ...
>
>
>
> I don't see any place else in the API where you can inject a
> ClassLoader, but the "does not implement the requested interface" really
> does seem to be loader related, since it all works just fine in the UT.
>
>
>
> Any good ideas on how to proceed from here?
>
>
>
> Thanks,
>
> ...Don
>
>
>
>
>
>
>
>
>
> -----Original Message-----
> *From:* James Carman [mailto:[EMAIL PROTECTED]
> *Sent:* Tuesday, August 09, 2005 6:48 AM
> *To:* [email protected]
> *Subject:* RE: Classloaders and Registry
>
>
>
> You need to build your registry differently...
>
>
>
> RegistryBuilder builder = new RegistryBuilder();
>
> builder.addModuleDescriptorProvider( new XmlModuleDescriptorProvider(
> new DefaultClassResolver( MY_CLASSLOADER ) ) );
>
> Registry reg = builder.constructRegistry( Locale.getDefaultLocale() );
>
>
>
> That code's off the top of my head, so the method names may be changed.
> Also, this is HiveMind 1.1 code.
>
>
>
> ------------------------------------------------------------------------
>
> *From:* GUMMOW JR, DONALD R [AG/1000]
> [mailto:[EMAIL PROTECTED]
> *Sent:* Tuesday, August 09, 2005 7:42 AM
> *To:* [email protected]
> *Subject:* Classloaders and Registry
>
>
>
> Hello - I've got a situation where the service interface and
> implementation classes use a different class loader than the default
> loader for the registry, and I'm getting an ApplicationRuntimeException
> when I call to registry.getService( ) telling me that the service does
> not implement the requested interface. (The code works perfectly in my
> unit test, where both are using the same classloader.)
>
> Does anyone have any tips on how this situation should be approached
> within HiveMind?
>
> Regards,
>
> ...Don
>
>
>
> //This e-mail message may contain privileged and/or confidential
> information, and is intended to be received only by persons entitled to
> receive such information. If you have received this e-mail in error,
> please notify the sender immediately. Please delete it and all
> attachments from any servers, hard drives or any other media. Other use
> of this e-mail by you is strictly prohibited.//
>
> //All e-mails and attachments sent and received are subject to
> monitoring, reading and archival by Monsanto. The recipient of this
> e-mail is solely responsible for checking for the presence of "Viruses"
> or other "Malware". Monsanto accepts no liability for any damage caused
> by any such code transmitted by or accompanying this e-mail or any
> attachment.//
>
> //This e-mail message may contain privileged and/or confidential
> information, and is intended to be received only by persons entitled to
> receive such information. If you have received this e-mail in error,
> please notify the sender immediately. Please delete it and all
> attachments from any servers, hard drives or any other media. Other use
> of this e-mail by you is strictly prohibited.//
>
> //All e-mails and attachments sent and received are subject to
> monitoring, reading and archival by Monsanto. The recipient of this
> e-mail is solely responsible for checking for the presence of "Viruses"
> or other "Malware". Monsanto accepts no liability for any damage caused
> by any such code transmitted by or accompanying this e-mail or any
> attachment.//
>
> /This e-mail message may contain privileged and/or confidential
> information, and is intended to be received only by persons entitled to
> receive such information. If you have received this e-mail in error,
> please notify the sender immediately. Please delete it and all
> attachments from any servers, hard drives or any other media. Other use
> of this e-mail by you is strictly prohibited./
>
> /All e-mails and attachments sent and received are subject to
> monitoring, reading and archival by Monsanto. The recipient of this
> e-mail is solely responsible for checking for the presence of "Viruses"
> or other "Malware". Monsanto accepts no liability for any damage caused
> by any such code transmitted by or accompanying this e-mail or any
> attachment./
>
- --
you too?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFC+NIxHS6c76+IdrwRAvj7AKCXAAVDB+DRU/zKiDErGvOk2q9bPQCcCPQo
y8je/UGDgUmogDTj6MVfK6Q=
=gwv7
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]