felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Kriens <peter.kri...@aqute.biz>
Subject Re: How do I avoid ClassCastExceptions with a split package?
Date Thu, 16 Feb 2012 12:48:39 GMT
The cometd support looks very interesting but it does not work for me. I want to start using
your bundle but I get the same class cast exception. I also do not understand how it could
work since the HTTP bundle does not export the org.mortbay classes but the cometd must use

I also do not understand how your sample bundle works, where does it gets the dojo.js from?

Would be great if this works though! Kind regards,

	Peter Kriens

On 15 jul. 2008, at 04:53, Tim Moloney wrote:

> Tim Moloney wrote:
>> Tim Moloney wrote:
>>> I'm trying to get cometd working with Felix.  I believe that I have it mostly
working but I'm getting a ClassCastException on cometd requests, specifically "can not cast
org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation to org.mortbay.util.ajax.Continuation"
(this is from memory so it may be a bit off).  I think that this is a classloader issue since
the RetryContinuation class implements the Continuation interface.  I know that split packages
can cause ClassCastExceptions due to different classloaders but I'm not sure this is the problem.
>>> I'm using the following bundles:
>>> - org.apache.felix:org.apache.felix.http.jetty:0.9.0-SNAPSHOT (modified to use
jetty 6.1.11)
>>> - org.mortbay.jetty:jetty:6.1.11
>>> - org.mortbay.jetty:jetty-util:6.1.11
>>> - org.mortbay.jetty:servlet-api-2.5:6.1.11
>>> - a custom comet bundle that
>>> - inlines org.mortbay.jetty:cometd-api:0.9.20080221and org.mortbay.jetty:cometd-bayeux:6.1.11
>>> - maps org.mortbay.cometd.continuation.ContinuationCometdServlet to /cometd
>>> jetty-util exports org.mortbay.util but cometd-bayeux has org.mortbay.util.ArrayQueue.
 I managed to get my custom comet bundle to compile by making org.mortbay.util a private package.
 However, this duplicates all of org.mortbay.util in my bundle which I think is causing the
>>> What is the best way to handle the split package and avoid ClassCastExceptions?
>>> Tim
>> I found the split-package command in the bnd documentation.  I tried both merge-first
and merge-last but I still got the ClassCastExceptions.  I think this is because the org.mortbay.util
package was still being duplicated in my bundle.  I then tried first which only copied org.mortbay.util.ArrayQueue
into my bundle but then the rest of org.mortbay.util couldn't be found.  I finally tried using
the following but I'm still getting the original ClassCastExceptions.
>> <Private-Package>org.mortbay.util;-split-package:=first</Private-Package>
>> <Import-Package>!org.mortbay.log,!org.mortbay.thread,!org.mortbay.util.ajax,*</Import-Package>

>> <Require-Bundle>org.mortbay.jetty.util</Require-Bundle>
>> I'm out of ideas.  Does anyone have any suggestions?
>> Tim
> I managed to get things working by adding ArrayQueue to the jetty-util bundle and modifying
how http.jetty is packaged.
> For http.jetty, I simply changed the Private-Package instruction as shown below.  Can
someone review the change and commit it, if it doesn't break anything?
> Tomorrow, I'll investigate if I really needed to move ArrayQueue to the jetty-util bundle.
> Index: pom.xml
> ===================================================================
> --- pom.xml     (revision 676451)
> +++ pom.xml     (working copy)
> @@ -97,7 +97,7 @@
>                        </Export-Package>
>                        <Private-Package>
>                            org.apache.felix.http.jetty,
> -                            org.mortbay.*;-split-package:=merge-first
> +                            org.mortbay.jetty.*;-split-package:=merge-first
>                        </Private-Package>
>                        <Import-Package>
>                            javax.net.ssl; javax.security.cert;
> Tim

View raw message