felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard S. Hall" <he...@ungoverned.org>
Subject Re: Embedded Felix giving NumberFormatException
Date Thu, 26 Apr 2007 20:57:11 GMT
After a quick look at your code, I noticed one thing that looks somewhat 
strange...I don't know if it is the root of your issues, but it is 
something to look at...

Below you appear to read Felix' configuration properties from the 
roland.properties, which sets the org.osgi.framework.system.packages 
property inside of it, including all of the packages exported from the 
underlying JRE. Your code below then overwrites this value and sets it 
to only export the core OSGi packages along with your "simpleservice" 
package.

The end result is that no JRE packages are being exported any more after 
you overwrite the value. To remedy this situation, you should either:

   1. Add your "simpleservice" package to org.osgi.system.packages
      property in roland.properties or
   2. Append your "simpleservice" package to the existing value in the
      code below.

I am not sure if this will solve anything, but I am still working to get 
your example to compile since the pom files included with it are not 
working for me.

One other minor thing I noticed below, you have an extraneous ';' 
character when you add your "simpleservice" package.  I think Felix 
would ignore this, but you should probably still remove it. The ';' is 
used to separate packages that share attributes or to separate the 
attributes themselves.

I will keep trying to build your code. Let me know if any of the above 
makes a difference or if you discover the issue in the meantime.

-> richard


Sameera Withanage 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 <heavy@ungoverned.org> 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 <stuart.mcculloch@jayway.net> wrote:
>> >>
>> >> On 25/04/07, Sameera Withanage <sameera.withanage@gmail.com> 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 <heavy@ungoverned.org> 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
>> >>
>> >
>>
>

Mime
View raw message