Gargh! Okay, silly mistake on my part. The composite jar had no Bundle-* information in it, hence no Bundle-SymbolicName and so no name being reported to the logging system.
Everything now working as planned. On 29 Jun 2012, at 17:22, Mark Bools wrote: > Hi all. Very new to this iPOJO composite stuff (actually, new to the whole > OSGi & iPOJO thing too). > > I'm having an issue with some logging during startup. I've created a logger > that presents an SLF4J interface and passes log messages off to the OSGi > logging service, and I provide a LogListener that interfaces to LogBack. All > seemed to be working fine, but I ran into a timing issue when I create a > composite using the following metadata.xml. > > <ipojo > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="org.apache.felix.ipojo > http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd > org.apache.felix.composite > http://felix.apache.org/ipojo/schemas/SNAPSHOT/composite.xsd" > xmlns="org.apache.felix.ipojo" > xmlns:comp="org.apache.felix.ipojo.composite"> > > <comp:composite name="DataSourceManager"> > <comp:instance > component="com.itslm.omneity.data.service.DataSourceManagerImpl" /> > <comp:provides action="export" > > specification="com.itslm.omneity.data.api.DataSourceManager" /> > > <!-- Will programmatically identify and load Adaptor plugins, > this next > entry pulls in Adapters in the global scope (so, only > those that are in the > main bundle directory) --> > <comp:subservice action="import" > specification="com.itslm.omneity.adapter.api.Adapter" /> > > <comp:subservice action="import" > specification="org.osgi.service.log.LogService" /> > > </comp:composite> > > <comp:instance component="DataSourceManager" name="DataSourceManager"/> > > </ipojo> > > Everything starts up fine, but any log messages output during startup of this > composite were lost because the logging service seems to be imported to the > component only when DataSourceManagerImpl has completed startup. No problem. > I just added buffering to the logger and had the system flush that buffer > when the logging service became available (a better design anyway). > > However, I now get another problem: the bundle context for > DataSourceManagerImpl seems to have no symbolic name at the point the logging > service becomes available (getSymbolicName() returns null). Since my logging > system deliberately drops 'anonymous' log messages this means nothing is > being logged from DataSourceManagerImpl. > > If I run the DataSourceManagerImpl in a plain bundle without wrapping them in > a composite everything works fine. > > > Questions. > > Is there a way to make these symbolic names available? Should I be specifying > more in the metadata for the composite? What am I missing?
signature.asc
Description: Message signed with OpenPGP using GPGMail

