You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Dhiego Abrantes de Oliveira Martins <dh...@gmail.com> on 2013/01/24 06:34:39 UTC
Using XStream in OSGi Project
Hi all,
I'm developing a project that uses XStream lib to manipulate XML. There are
a Project1 that is a service and have a maven dependence to xstream.
The Project2 is a implementation of Project1 and have a transient
dependency of XStream through Project1.
The Project3 is just a client of Project2, just a consumer.
I can start Project1 and Project2 normally. But, when I start the Project3
and some method try to use XStream lib, I get that error:
Exception in thread "Thread-12" java.lang.NoClassDefFoundError:
org/xmlpull/v1/XmlPullParserFactory
at com.thoughtworks.xstream.io.xml.XppDriver.createParser(XppDriver.java:57)
at
com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:58)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:895)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:886)
at
br.ufpe.cin.main.ServiceDescriptorImpl.__getServiceDescriptors(ServiceDescriptorImpl.java:24)
at
br.ufpe.cin.main.ServiceDescriptorImpl.getServiceDescriptors(ServiceDescriptorImpl.java)
at
ipojo.example.hello.client.HelloClient.__invokeHelloServices(HelloClient.java:94)
at
ipojo.example.hello.client.HelloClient.invokeHelloServices(HelloClient.java)
at ipojo.example.hello.client.HelloClient.__run(HelloClient.java:54)
at ipojo.example.hello.client.HelloClient.run(HelloClient.java)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException:
org.xmlpull.v1.XmlPullParserFactory not found by
com.springsource.org.xmlpull [53]
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)
at
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at
org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1317)
at
org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1481)
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
at
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 11 more
My installed bundles:
START LEVEL 1
ID State Level Name
[ 0] [Active ] [ 0] System Bundle (4.0.3)
[ 1] [Active ] [ 1] Distributed OSGi Distribution Software
Single-Bundle Distribution (1.3.1)
[ 2] [Active ] [ 1] Apache Felix Bundle Repository (1.4.3)
[ 3] [Active ] [ 1] Apache Felix Configuration Admin Service
(1.2.6)
[ 4] [Active ] [ 1] Apache Felix EventAdmin (1.2.2)
[ 5] [Active ] [ 1] Apache Felix iPOJO (1.6.0)
[ 6] [Active ] [ 1] Apache Felix iPOJO Arch Command (1.6.0)
[ 7] [Active ] [ 1] Apache Felix Shell Service (1.4.2)
[ 8] [Active ] [ 1] Apache Felix Shell TUI (1.4.1)
[ 9] [Active ] [ 1] Hello Service (1.0.0)
[ 10] [Active ] [ 1] Hello Service Provider (1.0.0)
[ 12] [Active ] [ 1] Adder Service Provider (0.0.1.SNAPSHOT)
[ 13] [Active ] [ 1] Adder Service Interface (0.0.1.SNAPSHOT)
[ 36] [Active ] [ 1] Hello Client (1.0.0)
[ 42] [Active ] [ 1] Thoughtworks XStream (1.4.1)
[ 49] [Active ] [ 1] Service Descriptor Specification (1.0.0)
[ 50] [Active ] [ 1] Service Descriptor Provider (1.0.0)
[ 52] [Active ] [ 1] Java XML Stream API (StAX) (1.0.1)
[ 53] [Active ] [ 1] XMLPULL V1 API (1.1.4.c)
Best regards!
[]'s
Dhiego
Re: Using XStream in OSGi Project
Posted by Dhiego Abrantes de Oliveira Martins <dh...@dhiegoabrantes.com>.
Thanks Jodi!
Is the best approach to work with xstream? Can I just start xstream bundle?
I'm was trying to find some approach more 'automatic', like: a) embbed into
project1
Abs,
__
*Dhiego** **Abrantes** de Oliveira Martins*
*Computer Science, M.Sc. Candidate at UFPE*
www.dhiegoabrantes.com
+55 83 9999.1081
***Any fool can write code that a computer can understand. Good programmers
write code that humans can understand*. (Martin Fowler)
2013/1/24 Jordi Deu-Pons <jo...@jordeu.net>
> Hi Dhiego,
>
> that means that the class loader of the XStream bundle don't have
> access to your Project2 class loader. You need to register a composed
> class loader to XStream.
>
> Have a look to this code:
>
> https://github.com/onexus/onexus/blob/develop/org.onexus.resource.serializer.xstream/src/main/java/org/onexus/resource/serializer/xstream/internal/ResourceSerializer.java
>
> The important part is:
> this.xstream.setClassLoader(new RegisteredClassLoader());
>
> And then at activation time all the bundles that produce classes that
> you want to be able to serialize you must register their class loader
> using the "register" method.
>
> I still have one problem with XStream, imagine I serialize an
> instance of class A (Project2 bundle) then I reload Project2 bundle
> then it's imposible to recover the serialized instance because we have
> a new version of class A. May be someone in the list knows a better
> aproach.
>
> Regards,
> Jordi
>
>
> On Thu, Jan 24, 2013 at 6:34 AM, Dhiego Abrantes de Oliveira Martins
> <dh...@gmail.com> wrote:
> >
> > Hi all,
> >
> > I'm developing a project that uses XStream lib to manipulate XML. There
> are
> > a Project1 that is a service and have a maven dependence to xstream.
> >
> > The Project2 is a implementation of Project1 and have a transient
> > dependency of XStream through Project1.
> >
> > The Project3 is just a client of Project2, just a consumer.
> >
> > I can start Project1 and Project2 normally. But, when I start the
> Project3
> > and some method try to use XStream lib, I get that error:
> >
> > Exception in thread "Thread-12" java.lang.NoClassDefFoundError:
> > org/xmlpull/v1/XmlPullParserFactory
> > at
> com.thoughtworks.xstream.io.xml.XppDriver.createParser(XppDriver.java:57)
> > at
> >
> com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:58)
> > at com.thoughtworks.xstream.XStream.fromXML(XStream.java:895)
> > at com.thoughtworks.xstream.XStream.fromXML(XStream.java:886)
> > at
> >
> br.ufpe.cin.main.ServiceDescriptorImpl.__getServiceDescriptors(ServiceDescriptorImpl.java:24)
> > at
> >
> br.ufpe.cin.main.ServiceDescriptorImpl.getServiceDescriptors(ServiceDescriptorImpl.java)
> > at
> >
> ipojo.example.hello.client.HelloClient.__invokeHelloServices(HelloClient.java:94)
> > at
> >
> ipojo.example.hello.client.HelloClient.invokeHelloServices(HelloClient.java)
> > at ipojo.example.hello.client.HelloClient.__run(HelloClient.java:54)
> > at ipojo.example.hello.client.HelloClient.run(HelloClient.java)
> > at java.lang.Thread.run(Thread.java:722)
> > Caused by: java.lang.ClassNotFoundException:
> > org.xmlpull.v1.XmlPullParserFactory not found by
> > com.springsource.org.xmlpull [53]
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> > at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1317)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1481)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> > at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> > ... 11 more
> >
> > My installed bundles:
> > START LEVEL 1
> > ID State Level Name
> > [ 0] [Active ] [ 0] System Bundle (4.0.3)
> > [ 1] [Active ] [ 1] Distributed OSGi Distribution Software
> > Single-Bundle Distribution (1.3.1)
> > [ 2] [Active ] [ 1] Apache Felix Bundle Repository (1.4.3)
> > [ 3] [Active ] [ 1] Apache Felix Configuration Admin Service
> > (1.2.6)
> > [ 4] [Active ] [ 1] Apache Felix EventAdmin (1.2.2)
> > [ 5] [Active ] [ 1] Apache Felix iPOJO (1.6.0)
> > [ 6] [Active ] [ 1] Apache Felix iPOJO Arch Command (1.6.0)
> > [ 7] [Active ] [ 1] Apache Felix Shell Service (1.4.2)
> > [ 8] [Active ] [ 1] Apache Felix Shell TUI (1.4.1)
> > [ 9] [Active ] [ 1] Hello Service (1.0.0)
> > [ 10] [Active ] [ 1] Hello Service Provider (1.0.0)
> > [ 12] [Active ] [ 1] Adder Service Provider (0.0.1.SNAPSHOT)
> > [ 13] [Active ] [ 1] Adder Service Interface (0.0.1.SNAPSHOT)
> > [ 36] [Active ] [ 1] Hello Client (1.0.0)
> > [ 42] [Active ] [ 1] Thoughtworks XStream (1.4.1)
> > [ 49] [Active ] [ 1] Service Descriptor Specification (1.0.0)
> > [ 50] [Active ] [ 1] Service Descriptor Provider (1.0.0)
> > [ 52] [Active ] [ 1] Java XML Stream API (StAX) (1.0.1)
> > [ 53] [Active ] [ 1] XMLPULL V1 API (1.1.4.c)
> >
> > Best regards!
> >
> > []'s
> >
> > Dhiego
>
>
>
>
> --
> a10! i fins aviat.
> J:-Deu
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>
Re: Using XStream in OSGi Project
Posted by Jordi Deu-Pons <jo...@jordeu.net>.
> The classloader solution is a workaround?
I don't think it's a workaround. Because of the OSGi class loading
mechanism, there is a need to use the correct class loader when you
are unserializing your class instance. I don't known if there is a
better way to do this.
--
a10! i fins aviat.
J:-Deu
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org
Re: Using XStream in OSGi Project
Posted by Dhiego Abrantes de Oliveira Martins <dh...@gmail.com>.
Thanks Jordi!
Is the best approach to work with xstream? Can I just start xstream bundle?
I'm was trying to find some approach more 'automatic', like: a) embbed
xstream libs into project1; or just install xstream bundles in container to
project1 use it automatically;
The classloader solution is a workaround?
Best regards!
[]'s
Dhiego
2013/1/24 Jordi Deu-Pons <jo...@jordeu.net>
> Hi Dhiego,
>
> that means that the class loader of the XStream bundle don't have
> access to your Project2 class loader. You need to register a composed
> class loader to XStream.
>
> Have a look to this code:
>
> https://github.com/onexus/onexus/blob/develop/org.onexus.resource.serializer.xstream/src/main/java/org/onexus/resource/serializer/xstream/internal/ResourceSerializer.java
>
> The important part is:
> this.xstream.setClassLoader(new RegisteredClassLoader());
>
> And then at activation time all the bundles that produce classes that
> you want to be able to serialize you must register their class loader
> using the "register" method.
>
> I still have one problem with XStream, imagine I serialize an
> instance of class A (Project2 bundle) then I reload Project2 bundle
> then it's imposible to recover the serialized instance because we have
> a new version of class A. May be someone in the list knows a better
> aproach.
>
> Regards,
> Jordi
>
>
> On Thu, Jan 24, 2013 at 6:34 AM, Dhiego Abrantes de Oliveira Martins
> <dh...@gmail.com> wrote:
> >
> > Hi all,
> >
> > I'm developing a project that uses XStream lib to manipulate XML. There
> are
> > a Project1 that is a service and have a maven dependence to xstream.
> >
> > The Project2 is a implementation of Project1 and have a transient
> > dependency of XStream through Project1.
> >
> > The Project3 is just a client of Project2, just a consumer.
> >
> > I can start Project1 and Project2 normally. But, when I start the
> Project3
> > and some method try to use XStream lib, I get that error:
> >
> > Exception in thread "Thread-12" java.lang.NoClassDefFoundError:
> > org/xmlpull/v1/XmlPullParserFactory
> > at
> com.thoughtworks.xstream.io.xml.XppDriver.createParser(XppDriver.java:57)
> > at
> >
> com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:58)
> > at com.thoughtworks.xstream.XStream.fromXML(XStream.java:895)
> > at com.thoughtworks.xstream.XStream.fromXML(XStream.java:886)
> > at
> >
> br.ufpe.cin.main.ServiceDescriptorImpl.__getServiceDescriptors(ServiceDescriptorImpl.java:24)
> > at
> >
> br.ufpe.cin.main.ServiceDescriptorImpl.getServiceDescriptors(ServiceDescriptorImpl.java)
> > at
> >
> ipojo.example.hello.client.HelloClient.__invokeHelloServices(HelloClient.java:94)
> > at
> >
> ipojo.example.hello.client.HelloClient.invokeHelloServices(HelloClient.java)
> > at ipojo.example.hello.client.HelloClient.__run(HelloClient.java:54)
> > at ipojo.example.hello.client.HelloClient.run(HelloClient.java)
> > at java.lang.Thread.run(Thread.java:722)
> > Caused by: java.lang.ClassNotFoundException:
> > org.xmlpull.v1.XmlPullParserFactory not found by
> > com.springsource.org.xmlpull [53]
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> > at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1317)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1481)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> > at
> >
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> > at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> > ... 11 more
> >
> > My installed bundles:
> > START LEVEL 1
> > ID State Level Name
> > [ 0] [Active ] [ 0] System Bundle (4.0.3)
> > [ 1] [Active ] [ 1] Distributed OSGi Distribution Software
> > Single-Bundle Distribution (1.3.1)
> > [ 2] [Active ] [ 1] Apache Felix Bundle Repository (1.4.3)
> > [ 3] [Active ] [ 1] Apache Felix Configuration Admin Service
> > (1.2.6)
> > [ 4] [Active ] [ 1] Apache Felix EventAdmin (1.2.2)
> > [ 5] [Active ] [ 1] Apache Felix iPOJO (1.6.0)
> > [ 6] [Active ] [ 1] Apache Felix iPOJO Arch Command (1.6.0)
> > [ 7] [Active ] [ 1] Apache Felix Shell Service (1.4.2)
> > [ 8] [Active ] [ 1] Apache Felix Shell TUI (1.4.1)
> > [ 9] [Active ] [ 1] Hello Service (1.0.0)
> > [ 10] [Active ] [ 1] Hello Service Provider (1.0.0)
> > [ 12] [Active ] [ 1] Adder Service Provider (0.0.1.SNAPSHOT)
> > [ 13] [Active ] [ 1] Adder Service Interface (0.0.1.SNAPSHOT)
> > [ 36] [Active ] [ 1] Hello Client (1.0.0)
> > [ 42] [Active ] [ 1] Thoughtworks XStream (1.4.1)
> > [ 49] [Active ] [ 1] Service Descriptor Specification (1.0.0)
> > [ 50] [Active ] [ 1] Service Descriptor Provider (1.0.0)
> > [ 52] [Active ] [ 1] Java XML Stream API (StAX) (1.0.1)
> > [ 53] [Active ] [ 1] XMLPULL V1 API (1.1.4.c)
> >
> > Best regards!
> >
> > []'s
> >
> > Dhiego
>
>
>
>
> --
> a10! i fins aviat.
> J:-Deu
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>
Re: Using XStream in OSGi Project
Posted by Jordi Deu-Pons <jo...@jordeu.net>.
Hi Dhiego,
that means that the class loader of the XStream bundle don't have
access to your Project2 class loader. You need to register a composed
class loader to XStream.
Have a look to this code:
https://github.com/onexus/onexus/blob/develop/org.onexus.resource.serializer.xstream/src/main/java/org/onexus/resource/serializer/xstream/internal/ResourceSerializer.java
The important part is:
this.xstream.setClassLoader(new RegisteredClassLoader());
And then at activation time all the bundles that produce classes that
you want to be able to serialize you must register their class loader
using the "register" method.
I still have one problem with XStream, imagine I serialize an
instance of class A (Project2 bundle) then I reload Project2 bundle
then it's imposible to recover the serialized instance because we have
a new version of class A. May be someone in the list knows a better
aproach.
Regards,
Jordi
On Thu, Jan 24, 2013 at 6:34 AM, Dhiego Abrantes de Oliveira Martins
<dh...@gmail.com> wrote:
>
> Hi all,
>
> I'm developing a project that uses XStream lib to manipulate XML. There are
> a Project1 that is a service and have a maven dependence to xstream.
>
> The Project2 is a implementation of Project1 and have a transient
> dependency of XStream through Project1.
>
> The Project3 is just a client of Project2, just a consumer.
>
> I can start Project1 and Project2 normally. But, when I start the Project3
> and some method try to use XStream lib, I get that error:
>
> Exception in thread "Thread-12" java.lang.NoClassDefFoundError:
> org/xmlpull/v1/XmlPullParserFactory
> at com.thoughtworks.xstream.io.xml.XppDriver.createParser(XppDriver.java:57)
> at
> com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:58)
> at com.thoughtworks.xstream.XStream.fromXML(XStream.java:895)
> at com.thoughtworks.xstream.XStream.fromXML(XStream.java:886)
> at
> br.ufpe.cin.main.ServiceDescriptorImpl.__getServiceDescriptors(ServiceDescriptorImpl.java:24)
> at
> br.ufpe.cin.main.ServiceDescriptorImpl.getServiceDescriptors(ServiceDescriptorImpl.java)
> at
> ipojo.example.hello.client.HelloClient.__invokeHelloServices(HelloClient.java:94)
> at
> ipojo.example.hello.client.HelloClient.invokeHelloServices(HelloClient.java)
> at ipojo.example.hello.client.HelloClient.__run(HelloClient.java:54)
> at ipojo.example.hello.client.HelloClient.run(HelloClient.java)
> at java.lang.Thread.run(Thread.java:722)
> Caused by: java.lang.ClassNotFoundException:
> org.xmlpull.v1.XmlPullParserFactory not found by
> com.springsource.org.xmlpull [53]
> at
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)
> at
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> at
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> at
> org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1317)
> at
> org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1481)
> at
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
> at
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> at
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> ... 11 more
>
> My installed bundles:
> START LEVEL 1
> ID State Level Name
> [ 0] [Active ] [ 0] System Bundle (4.0.3)
> [ 1] [Active ] [ 1] Distributed OSGi Distribution Software
> Single-Bundle Distribution (1.3.1)
> [ 2] [Active ] [ 1] Apache Felix Bundle Repository (1.4.3)
> [ 3] [Active ] [ 1] Apache Felix Configuration Admin Service
> (1.2.6)
> [ 4] [Active ] [ 1] Apache Felix EventAdmin (1.2.2)
> [ 5] [Active ] [ 1] Apache Felix iPOJO (1.6.0)
> [ 6] [Active ] [ 1] Apache Felix iPOJO Arch Command (1.6.0)
> [ 7] [Active ] [ 1] Apache Felix Shell Service (1.4.2)
> [ 8] [Active ] [ 1] Apache Felix Shell TUI (1.4.1)
> [ 9] [Active ] [ 1] Hello Service (1.0.0)
> [ 10] [Active ] [ 1] Hello Service Provider (1.0.0)
> [ 12] [Active ] [ 1] Adder Service Provider (0.0.1.SNAPSHOT)
> [ 13] [Active ] [ 1] Adder Service Interface (0.0.1.SNAPSHOT)
> [ 36] [Active ] [ 1] Hello Client (1.0.0)
> [ 42] [Active ] [ 1] Thoughtworks XStream (1.4.1)
> [ 49] [Active ] [ 1] Service Descriptor Specification (1.0.0)
> [ 50] [Active ] [ 1] Service Descriptor Provider (1.0.0)
> [ 52] [Active ] [ 1] Java XML Stream API (StAX) (1.0.1)
> [ 53] [Active ] [ 1] XMLPULL V1 API (1.1.4.c)
>
> Best regards!
>
> []'s
>
> Dhiego
--
a10! i fins aviat.
J:-Deu
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org