Hi all, after having run along the classical Felix tutorials (creating bundles through maven), i was quite interested by the promises of OSGi, but a little worried by the way dependencies were resolved. Fortunatly, my eye felt on iPOJO. I can say I was quite pleased by the promise of IoC between plugins (what seems to offer iPOJO) especially using annotations, which may be a fad, but are to my mind very useful.
Before all, I must confess I'm a converted maven user, which may alter some of my points of view. So, I've tried to do the maven tutorial (http://felix.apache.org/site/ipojo-hello-word-maven-based-tutorial.html) using a well-known maven way : a superpom containing my poms basic definitions and one module for each feature : a hello-service module, and a hello-client one. Before all, I have to say I used this architecture for classical Felix tutorials, and it perfectly worked. So, my modules pom were quite light, and so were my classes. In these classes, I defined the HelloService interface, a HelloImpl provider (with @Component and @Provides) annotation, and a HelloClient using @Requires annotation, as well as @Validates one to start the hello world code. Having done so, it seemed to me I didn't had to create a metada.xml file, since all informations were in these annotations. Was I theorically right ? Well, in the facts, i was wrong since : - my jars METADATA.INF don't contain any of the data defined by both parent and module maven-bundle-plugin configuration - the maven log don't reveal any maven-bundle-plugin execution (which may be the reason for the lack of METADATA.INF) ... well, this one was found and resolved : my modules didn't packaged themselves as "bundle" ... stupid of me ! - once the above is corrected, my METADA.INF were created, my bundles had their correct names set in felix, but the @Validate method of my client was never called. FTR, here is my full hello client : @Component(name="Da Hello Klient") public class HelloClient { private static final Logger logger = Logger.getLogger(HelloClient.class .getName()); @Requires private HelloService service; private String user = System.getProperty("user.name"); @Validate public void hello() { logger.info(service.sayHello(user)); } @Invalidate public void goodbye() { logger.info(service.sayGoodbye(user)); } } And the associated METADATA.INF Manifest-Version: 1.0 Export-Package: com.mycompany.hello.api Built-By: ndx Tool: Bnd-0.0.238 Bundle-Name: com.mycompany.hello Created-By: Apache Maven Bundle Plugin Bundle-Vendor: Perigee Build-Jdk: 1.6.0_16 Bundle-Version: 0.0.1.SNAPSHOT Bnd-LastModified: 1270632257171 Bundle-ManifestVersion: 2 Bundle-Description: Dis bonjour au monde ! Import-Package: com.mycompany.hello.api Bundle-SymbolicName: com.mycompany.hello-service Bundle-DocURL: http://www.mycompany.fr So, here are my questions : - Do I absolutely need a metada.xml file ? - Is the validate method really called once all dependencies have been resolved and my iPOJO can be started ? Thanks -- Nicolas Delsaux --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

