felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brad Cox <b...@virtualschool.edu>
Subject Composites, Components, POJOs; oh my!
Date Sun, 23 Nov 2008 18:50:22 GMT
Woot! Moved another notch further down the line in my osgi saga, but 
immediately went right into the weeds again:

-> ps
START LEVEL 1
    ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.4.0)
[   1] [Active     ] [    1] Apache Felix Shell Service (1.0.2)
[   2] [Active     ] [    1] Apache Felix Shell TUI (1.0.2)
[   3] [Active     ] [    1] Apache Felix Bundle Repository (1.2.1)
[   4] [Active     ] [    1] aQute.fileinstall (1.0)
[   5] [Active     ] [    1] osgi (4.0)
[   6] [Active     ] [    1] iPOJO (1.0.0)
[   8] [Active     ] [    1] soakit.core (1.0.0.SNAPSHOT)
[   9] [Active     ] [    1] soakit.transform.identity (1.0.0.SNAPSHOT)
[  10] [Active     ] [    1] soakit.port.file (1.0.0.SNAPSHOT)
[  11] [Active     ] [    1] soakit.port.http (1.0.0.SNAPSHOT)
[  12] [Active     ] [    1] soakit.port.jms (1.0.0.SNAPSHOT)
[  13] [Active     ] [    1] soakit.transform.log (1.0.0.SNAPSHOT)
[  14] [Active     ] [    1] soakit.transform.pep (1.0.0.SNAPSHOT)
[  15] [Active     ] [    1] soakit.transform.xsl (1.0.0.SNAPSHOT)
[  16] [Active     ] [    1] soakit.test (1.0.0.SNAPSHOT)

The trick to my ClassNotFoundException problem was to add 
<scope>provided</scope> to my parent pom. Who'd have thought it?

<dependencies>
	<dependency>
		<groupId>org.apache.felix</groupId>
		<artifactId>org.apache.felix.framework</artifactId>
		<version>1.4.0</version>
		<scope>provided</scope>
	</dependency>
</dependencies>

The problem now is; nothing's happening. How do I tell what's going on? 
I've got printouts scattered in obvious places but none are getting 
triggered; for example:

public class TestServiceImpl implements ServiceFactory
{
	private BundleContext context;
	private Properties properties;
	
	public TestServiceImpl(BundleContext context, Properties properties)
	{
		System.err.println("new TestServiceImpl(c, p)");
		log.info("new TestServiceImpl(..,..)");
		this.context = context;
		this.properties = properties;
	}
...

I'm guessing they're all waiting on some prerequisite to start but I 
don't have a clue as to what. Suspecting a metadata.xml problem. 
Struggled to understand the ipojo documentation but its just not 
connecting for me.

What I'm trying to do build a software bus (soakit.core), several 
software cards (soakit.ports and soakit.transforms), and a test case 
(soakit.test). The metadata.xml files are:

soakit.core
<ipojo>
	<component classname="com.gestalt.soakit.core.internal.CoreServiceImpl">
		<provides/>
	</component>
	<instance component="com.gestalt.soakit.core.internal.CoreServiceImpl"/>
</ipojo>

soakit.transform.identity (one of the cards):
<ipojo>
	<component 
classname="com.gestalt.soakit.transform.identity.internals.IdentityTransformServiceImpl">
		<provides/>
	</component>
	<instance 
component="com.gestalt.soakit.transform.identity.internals.IdentityTransformServiceImpl"/>
</ipojo>

soakit.test:
<ipojo>
	<composite name="soakit.test">
		<instance component="com.gestalt.soakit.core"/>
		<instance component="com.gestalt.soakit.port.file"/>
		<instance component="com.gestalt.soakit.port.http"/>
		<instance component="com.gestalt.soakit.port.jms"/>
		<instance component="com.gestalt.soakit.transform.identity"/>
		<instance component="com.gestalt.soakit.transform.log"/>
		<instance component="com.gestalt.soakit.transform.pep"/>
		<instance component="com.gestalt.soakit.transform.xsl"/>
	</composite>
	<instance component="soakit.test"/>
</ipojo>

Can someone help me dig out of the weeds with the declarations? Any tips 
for diagnosing WTF is going on would be helpful too. Its discouraging 
that even basic System.err.println() doesn't help.









Mime
View raw message