[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [equinox-dev] Bundle lookup

Hi Michael,
This is a compile time solution, of course. If you want to link URL:s to
changing actual bundle locations, you could do it on linux of curse via
Symlinks in the file system, but a more generic way would be to install
a custom protocol handler. Eclipse does this with the platform:/
protocol, another system using this, including links from one URL to
another is here:
http://wiki.ops4j.org/dokuwiki/doku.php?id=hansa:hansa#link

There is a Transit bundle registering that kind of system into OSGi, so
you can use it to update your bundles at runtime
(http://wiki.ops4j.org/dokuwiki/doku.php?id=pax:pax)

If nothing else, the code should show how to register custom URL
Handlers.


/peter 

> -----Original Message-----
> From: Michael Mangeng [mailto:mm@xxxxxx] 
> Sent: Sunday, January 22, 2006 10:19 PM
> To: Equinox development mailing list
> Subject: Re: [equinox-dev] Bundle lookup
> 
> Hello Peter,
> 
> thanks for your input!
> 
> Hmm - I'm searching for a automatic bundle lookup which works 
> at runtime but I'll think wether the solution you suggested 
> is enought for my needs or not. Maybe it is enought and i 
> don't really need what i'm looking for :-)
> 
> greets,
> Michael
> 
> Peter Neubauer wrote:
> > Hi Michael,
> > On Sunday 22 January 2006 21:29, Michael Mangeng wrote:
> > 
> >>The problem is that I dont know which approach I have to 
> take when I 
> >>want to install "the highest version" of e.g. bundle1 so the upper 
> >>sample-xml should install bundle1-1.2.0.jar (if this is the highest 
> >>version available).
> > 
> > For our development we use ivy 
> (http://www.jayasoft.org/ivy), and have 
> > written a little ant task that produces a config.ini fole 
> that Equinox 
> > reads for deploying bundles. That way, we specify start 
> levels as Ivy 
> > configurations and get dependency and of course version 
> handling for 
> > free. The scenario you discribe is very common for us, a 
> usual Ivy.xml 
> > file for a product assembly (that is, a product consisting 
> of several 
> > bundles that are compiled using a previous stage in the 
> process) would look something like:
> > 
> > <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet 
> > type="text/xsl"
> > href="http://www.jayasoft.fr/org/ivyrep/ivy-doc.xsl";?>
> > <ivy-module version="1.0">
> >     <info organisation="scancoin" module="test.assembly" 
> status="integration">
> >         <repository name="scancoin" url="https://test"/>
> >     </info>
> >     
> >     <configurations>
> >         <conf name="default"/>
> > 	<!--these are the runlevels, picked up by an ant task 
> and inserted 
> > into the config.ini bundles statement-->
> >         <conf name="1" visibility="private"/>
> >         <conf name="2" visibility="private"/>
> >         <conf name="3" visibility="private"/>
> >         <conf name="4" visibility="private"/>
> >         <conf name="5" visibility="private"/>
> >         <conf name="6" visibility="private"/>
> >         <conf name="localdir" visibility="private"/>
> >     </configurations>
> >     
> >     <publications>
> >         <artifact name="test.assembly" type="zip" conf="default"/>
> >     </publications>
> >     
> >     <dependencies>
> >         <!-- core bundles -->
> >         <!-- knopflerfish bundles -->
> >         <dependency org="knopflerfish" name="cm" 
> rev="latest.integration" 
> > conf="1->*">
> >             <artifact name="cm_all" type="jar"/>
> >         </dependency>
> >         
> >         <dependency org="knopflerfish" name="console" 
> rev="latest.integration" 
> > conf="1->*">
> >             <artifact name="console_all" type="jar"/>
> >         </dependency>
> >         
> >         <dependency org="knopflerfish" name="log" 
> rev="latest.integration" 
> > conf="1->*">
> >             <artifact name="log_all" type="jar"/>
> >         </dependency>
> >         
> >         <!-- core bundles -->
> >         <dependency org="scancoin" name="com.scancoin.core.module1" 
> > transitive="false" rev="latest.integration" conf="3->*"/>
> >         <dependency org="scancoin" name="com.scancoin.core.module2" 
> > transitive="false" rev="latest.integration" conf="4->*"/>
> >         <dependency org="scancoin" name="com.scancoin.core.module3" 
> > transitive="false" rev="latest.integration" conf="2->*"/>
> > 
> >         <!-- OSGi container -->
> >         <dependency org="eclipse" name="org.eclipse.osgi" 
> > rev="latest.integration" conf="localdir->*"/>
> >         <dependency org="eclipse" name="org.eclipse.osgi.services" 
> > rev="latest.integration" conf="1->*"/>
> >         
> >     </dependencies>
> > </ivy-module>
> > 
> > Ivy will then copy the dependencies without the version into 
> > ${basedir}/lib/3/com.scancoin.core.module1.jar etc. and the 
> ant task 
> > builds a config.ini from it that looks something like
> > 
> > ....
> > osgi.bundles=lib/3/com.scancoin.core.module1@3:start etc.
> > ....
> > 
> > 
> > 
> > This works great. If it helps and you want more info, maybe 
> I can help 
> > you further.
> > 
> > /peter
> > _______________________________________________
> > equinox-dev mailing list
> > equinox-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/equinox-dev
> > 
> 
> _______________________________________________
> equinox-dev mailing list
> equinox-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>