That sounds like a bug. id should be optional. Could you open a bug in JIRA please?
Thanks, Jeremy On 4 October 2010 11:15, Alex Hutter <[email protected]> wrote: > I figured it out - turns out I was missing one small bit from my > blueprint.xml; my <service> tag was missing an 'id'. I had: > > <service ref="persistenceImpl" > interface="alex.mjpa.api.persistence.ThingPersistenceService" > > </service> > > but needed: > > <service ref="persistenceImpl" id="ThingPersistenceService" > interface="alex.mjpa.api.persistence.ThingPersistenceService" > > </service> > > This looks to be either a bug in Aries or a bug in the blog sample; I am > not sure which. > > regards, > > alex > > > > From: Valentin Mahrwald <[email protected]> To: > [email protected] Date: 01/10/2010 19:10 Subject: Re: > Looking up a Blueprint service via JNDI / InitialContext > ------------------------------ > > > > Hi Alex, > > what you do all sounds entirely reasonable. The one thing I wonder is from > where your lookup originates. For the osgi:service to work, I believe the > caller has to be a bundle in the same OSGi framework as the service. If you > are doing the lookup out of say a JEE application it is not going to work. > > If you are using a bundle then I would try to see whether a lookup via the > BundleContext works when JNDI doesn't (-> that would be a bug :). Otherwise, > there might also be a class space incompatibility between the bundle that > does the lookup and the one that has the service. > > Valentin > > > On 1 Oct 2010, at 12:05, Alex Hutter wrote: > > Hello, > > I am using Blueprint / Managed OpenJPA in a scenario based on the blog > sample. I need a way to fetch a Blueprint service from a point in the code > that starts with no reference to anything Blueprint related. As I > understand it, this should be possible using something that looks a bit like > this: > > InitialContext ic = new InitialContext(); > Object s = ic.lookup("osgi:service/" + > ThingPersistenceService.class.getName()); > > Where ThingPersistenceService is the interface my service is implementing. > However when I try this code, I get this unhelpful exception: > > javax.naming.NameNotFoundException: > osgi:service/alex.mjpa.api.persistence.ThingPersistenceService > at > org.apache.aries.jndi.url.ServiceRegistryContext.lookup(ServiceRegistryContext.java:110) > at > org.apache.aries.jndi.url.ServiceRegistryContext.lookup(ServiceRegistryContext.java:141) > at org.apache.aries.jndi.DelegateContext.lookup(DelegateContext.java:148) > at javax.naming.InitialContext.lookup(InitialContext.java:455) > at alex.mjpa.ThingCommandProvider.getThingPS(ThingCommandProvider.java:22) > ... > > I know the service is registered in the OSGi environment because typing > "services" at the OSGi console includes this line: > > {alex.mjpa.api.persistence.ThingPersistenceService}={osgi.service.blueprint.compname=persistenceImpl, > service.id=51} > Registered by bundle: alex.mjpa.persistence.jpa_1.0.0.qualifier [35] > No bundles using service. > > The service is registered in Blueprint using the following blueprint.xml: > > <?xml version="1.0" encoding="UTF-8"?> > <blueprint > xmlns="*http://www.osgi.org/xmlns/blueprint/v1.0.0*<http://www.osgi.org/xmlns/blueprint/v1.0.0> > " > > xmlns:xsi="*http://www.w3.org/2001/XMLSchema-instance*<http://www.w3.org/2001/XMLSchema-instance> > " > > xmlns:tx="*http://aries.apache.org/xmlns/transactions/v1.0.0*<http://aries.apache.org/xmlns/transactions/v1.0.0> > " > > xmlns:jpa="*http://aries.apache.org/xmlns/jpa/v1.0.0*<http://aries.apache.org/xmlns/jpa/v1.0.0> > " > default-activation="lazy" > > > <bean id="persistenceImpl" > > class="alex.mjpa.persistence.jpa.ThingPersistenceServiceImpl" > > <tx:transaction method="*" value="Required" /> > <jpa:context property="entityManager" > unitname="thingExample" /> > </bean> > > <service ref="persistenceImpl" > > interface="alex.mjpa.api.persistence.ThingPersistenceService" > > </service> > > </blueprint> > > I feel that I am missing something obvious here, but after an hour of > experimentation I am still not making any progress. Can anyone here help me > solve this? If I have not provided enough information, please let me know. > > thanks in advance, > > alex > > > > ------------------------------ > * > * > > *Unless stated otherwise above: > IBM United Kingdom Limited - Registered in England and Wales with number > 741598. > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU > * > > > > > > > > > > ------------------------------ > > * > * > > *Unless stated otherwise above: > IBM United Kingdom Limited - Registered in England and Wales with number > 741598. > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU > * > > > > > > >
