Firstly thank you for all the help. I checked out the latest code and able to run it without that numberformat exception. I think I've done something wrong.
But the spring service registration issue is still there. When I launched Felix from command line I can see the registered services of my sample spring bundle, but in embedded application it still returns null for services[]. Sameera On 4/26/07, Sameera Withanage <[EMAIL PROTECTED]> wrote:
This is the host application.... import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.felix.framework.Felix ; import org.apache.felix.framework.cache.BundleCache; import org.apache.felix.framework.util.MutablePropertyResolver; import org.apache.felix.framework.util.MutablePropertyResolverImpl; import org.apache.felix.framework.util.StringMap ; import org.osgi.framework.Bundle; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; import org.osgi.util.tracker.ServiceTracker; import org.springframework.osgi.samples.simpleservice.MyService; public class FelixHost { private HostActivator m_activator = null; private Felix m_felix = null; private ServiceTracker m_tracker = null; public FelixHost() { Map configMap = new StringMap(false); Properties p = new Properties(); try { p.load(this.getClass().getClassLoader().getResourceAsStream( "roland.properties")); } catch (IOException e) { e.printStackTrace(); } p.put(Constants.FRAMEWORK_SYSTEMPACKAGES, " org.osgi.framework; version=1.3.0," + "org.osgi.service.packageadmin; version=1.2.0," + "org.osgi.service.startlevel; version=1.0.0," + " org.osgi.service.url; version=1.0.0," + "org.springframework.osgi.samples.simpleservice ;"); p.put(BundleCache.CACHE_PROFILE_DIR_PROP, "/home/sameera/.felix/new1"); try { m_felix = new Felix(); m_activator = new HostActivator(); List<BundleActivator> act = new ArrayList(); act.add(m_activator); MutablePropertyResolver resolver = new MutablePropertyResolverImpl( p); m_felix.start(resolver, act); System.out.println("Felix started."); } catch (Exception ex) { System.err.println("Could not create framework: " + ex); ex.printStackTrace(); } m_tracker = new ServiceTracker(m_activator.getContext(), MyService.class.getName(), null); m_tracker.open(); } public String callService() { Object[] services = m_tracker.getServices(); System.out.println("sevices length :" + services.length); for (int i = 0; (services != null) && (i < services.length); i++) { try { return ((MyService) services[i]).stringValue(); } catch (Exception ex) { System.out.println(ex); } } return "):"; } public Bundle[] getInstalledBundles() { return m_activator.getContext().getBundles(); } public BundleContext getContext() { return m_activator.getContext(); } public void shutdownApplication() { System.out.println("Shutting down Felix."); m_felix.shutdown(); } } and from another class .... FelixHost host = new FelixHost(); BundleContext context = host.getContext(); Bundle bundle = context.installBundle("file:/work/bundle.jar"); bundle.start(); Additionally the activator ... import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; public class HostActivator implements BundleActivator { private BundleContext m_context = null; public void start(BundleContext context) { m_context = context; } public void stop(BundleContext context) { m_context = null; } public BundleContext getContext() { return m_context; } } Thank you. Sameera On 4/25/07, Richard S. Hall <[EMAIL PROTECTED]> wrote: > > I cannot see what is going wrong...it definitely appears to be getting a > different manifest file, because the bundle version number giving you an > exception is ${pom...} rather than a real version. > > Perhaps you should let us see your code for launching Felix and > installing the bundle. > > -> richard > > Sameera Withanage wrote: > > I checked all the manifest entries in all jar files and found no > entries. > > But the entries I found were in pom.xml. > > > > I think something wrong the way I launched Felix, because standalone > is > > working fine. > > > > I'm loading bundle from a jar. It is from the simple-service-bundle > > sample > > comes with spring-osgi. > > > > -----Bundle Content--- > > > > META-INF/ > > META-INF/MANIFEST.MF > > META-INF/spring/ > > META-INF/spring/simpleservice-osgi.xml > > META-INF/spring/simpleservice.xml > > META-INF/maven/ > > META-INF/maven/org.springframework.osgi.samples/ > > > > META-INF/maven/org.springframework.osgi.samples/simple-service-bundle/ > > > > > META-INF/maven/org.springframework.osgi.samples/simple-service-bundle/pom.xml > > > > > > > > META-INF/maven/org.springframework.osgi.samples/simple-service-bundle/pom.properties > > > > org/ > > org/springframework/ > > org/springframework/osgi/ > > org/springframework/osgi/samples/ > > org/springframework/osgi/samples/simpleservice/ > > org/springframework/osgi/samples/simpleservice/impl/ > > > > > org/springframework/osgi/samples/simpleservice/impl/MyServiceImpl.class > > org/springframework/osgi/samples/simpleservice/MyService.class > > > > -----Manifest file---- > > > > Manifest-Version: 1.0 > > Archiver-Version: Plexus Archiver > > Created-By: Apache Maven > > Built-By: sameera > > Build-Jdk: 1.5.0_09 > > Extension-Name: simple-service-bundle > > Specification-Title: The Spring-OSGi project makes it easy to build Sp > > ring applications > > that run in an OSGi framework. A Spring applicati > > on written in this > > way provides better separation of modules, the a > > bility to > > dynamically add, remove, and update modules in a running > > system, the > > ability to deploy multiple versions of a module simulta > > neously (and > > have clients automatically bind to the appropriate one > > ), and a dynamic > > service model. > > Specification-Vendor: Spring Framework > > Implementation-Vendor: Spring Framework > > Implementation-Title: simple-service-bundle > > Implementation-Version: 1.0-m1 > > Bundle-Version: 1.0 > > Bundle-Vendor: Spring Framework > > Bundle-DocURL: http://www.springframework.org/osgi > > Bundle-ClassPath: .,target/classes/ > > Bundle-SymbolicName: org.springframework.osgi.samples.simpleservice > > Bundle-Name: Simple-Service-Sample > > Export-Package: org.springframework.osgi.samples.simpleservice > > > > ----Simpleservice.xml --- > > <?xml version="1.0" encoding="UTF-8"?> > > <beans xmlns="http://www.springframework.org/schema/beans" > > xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" > > xsi:schemaLocation="http://www.springframework.org/schema/beans > > http://www.springframework.org/schema/beans/spring-beans.xsd"> > > > > <bean name="simpleService" class=" > > org.springframework.osgi.samples.simpleservice.impl.MyServiceImpl" /> > > > > </beans> > > > > ----Simpleservice-OSGi.xml --- > > > > <?xml version="1.0" encoding="UTF-8"?> > > <beans xmlns="http://www.springframework.org/schema/beans" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance " > > xmlns:osgi="http://www.springframework.org/schema/osgi" > > xsi:schemaLocation=" http://www.springframework.org/schema/beans > > http://www.springframework.org/schema/beans/spring-beans.xsd > > http://www.springframework.org/schema/osgi > > http://www.springframework.org/schema/osgi/spring-osgi.xsd "> > > > > <osgi:service id="simpleServiceOsgi" ref="simpleService" > > > > interface="org.springframework.osgi.samples.simpleservice.MyService" > /> > > > > </beans> > > > > ------------------------------------------- > > > > Thank you > > > > Sameera > > > > > > On 4/24/07, Stuart McCulloch < [EMAIL PROTECTED]> wrote: > >> > >> On 25/04/07, Sameera Withanage <[EMAIL PROTECTED]> wrote: > >> > I'm using the Felix built from trunk. > >> > > >> > Here is the exception... > >> > > >> > java.lang.NumberFormatException: For input string: "${pom" > >> > >> Looks like it's using a manifest that hasn't been filtered by maven > >> and still has the ${pom....} variable, which of course is not valid. > >> The warnings from spring-osgi are possibly related - build issue? > >> > >> Are you loading this bundle from a jar or directory? > >> > >> Could you provide a jar / directory listing along with the manifest? > >> > >> > at java.lang.NumberFormatException.forInputString( > >> > NumberFormatException.java :48) > >> > at java.lang.Integer.parseInt(Integer.java:447) > >> > at java.lang.Integer.parseInt(Integer.java:497) > >> > at org.osgi.framework.Version.<init>(Version.java:127) > >> > at org.osgi.framework.Version.parseVersion (Version.java:208) > >> > at org.apache.felix.framework.Felix.createModule(Felix.java > :3112) > >> > at org.apache.felix.framework.Felix.createBundleInfo ( > Felix.java > >> :3057) > >> > at org.apache.felix.framework.Felix.installBundle > >> (Felix.java:1961) > >> > at org.apache.felix.framework.Felix.start(Felix.java:443) > >> > at com.aeturnum.athiva.rnd.FelixHost.<init>(FelixHost.java:82) > >> > at com.aeturnum.athiva.rnd.Main.main(Main.java:17) > >> > org.osgi.framework.BundleException : Could not create bundle > object. > >> > at org.apache.felix.framework.Felix.installBundle(Felix.java > :2012) > >> > at org.apache.felix.framework.Felix.start(Felix.java:443) > >> > at com.aeturnum.athiva.rnd.FelixHost .<init>( FelixHost.java > :82) > >> > at com.aeturnum.athiva.rnd.Main.main(Main.java:17) > >> > Caused by: java.lang.NumberFormatException: For input string: > "${pom" > >> > at java.lang.NumberFormatException.forInputString( > >> > NumberFormatException.java :48) > >> > at java.lang.Integer.parseInt(Integer.java:447) > >> > at java.lang.Integer.parseInt(Integer.java :497) > >> > at org.osgi.framework.Version.<init>(Version.java:127) > >> > at org.osgi.framework.Version.parseVersion (Version.java:208) > >> > at org.apache.felix.framework.Felix.createModule (Felix.java > :3112) > >> > at org.apache.felix.framework.Felix.createBundleInfo(Felix.java > >> :3057) > >> > at org.apache.felix.framework.Felix.installBundle > >> (Felix.java:1961) > >> > ... 3 more > >> > > >> > > >> > And additionally once I start a spring bundle it gives this > >> warnings and > >> not > >> > registering services exported from it. > >> > > >> > WARNING: META-INF/spring.handlers ( > >> > org.apache.felix.moduleloader.ResourceNotFoundException: > >> > META-INF/spring.handlers) > >> > WARNING: META-INF/spring.schemas ( > >> > org.apache.felix.moduleloader.ResourceNotFoundException: > >> > META-INF/spring.schemas) > >> > > >> > I'm still new to relate this exception to some place, but this > bundle > >> works > >> > fine in standalone felix and it registers the services as well. > >> > > >> > Thank you > >> > > >> > Sameera > >> > > >> > > >> > On 4/24/07, Richard S. Hall <[EMAIL PROTECTED]> wrote: > >> > > > >> > > Could you post the exception? > >> > > > >> > > Also, are you using Felix built from trunk or 0.8.0-incubator ? > >> > > > >> > > -> richard > >> > > > >> > > Sameera Withanage wrote: > >> > > > Hi, > >> > > > > >> > > > I'm embedding Felix in a host application following the > examples > >> given > >> > > in > >> > > > Felix site. When I'm trying to install a bundle, for instance > >> > > > spring-osgi, > >> > > > it gives NumberformatException. I installed the same set of > >> bundles > >> > > using > >> > > > standalone Felix console and all started successfully. I > couldn't > >> > > > figure out > >> > > > why the same is not happening at embedded version. > >> > > > > >> > > > I tried removing all the META-INF/maven folders from jar > >> bundles and > >> > > > found > >> > > > all bundles are starting, but it seems not practicle to always > >> edit > >> > > > bundles. > >> > > > > >> > > > Any help would be greatly appreciated. > >> > > > > >> > > > Sameera > >> > > > > >> > > > >> > > >> > >> > >> -- > >> Cheers, Stuart > >> > > >