You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Chris Geer <ch...@cxtsoftware.com> on 2012/03/14 00:29:28 UTC

Error with multiple CometD components

I have a need to run multiple CometD endpoints where I can selectively
dispatch messages to each one based on data in my flow (splitting via
different comet subscriptions isn't sufficient). My plan was to run each
endpoint on it's own port so they wouldn't overlap but as soon as I try and
create a second endpoint I get the following error (this is the root error).

Caused by: java.lang.IllegalStateException: STARTED
at
org.eclipse.jetty.server.handler.HandlerWrapper.setHandler(HandlerWrapper.java:70)
at
org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:131)
at
org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:99)
at
org.apache.camel.component.cometd.CometdComponent.createServletForConnector(CometdComponent.java:162)
at
org.apache.camel.component.cometd.CometdComponent.connect(CometdComponent.java:115)
at
org.apache.camel.component.cometd.CometdEndpoint.connect(CometdEndpoint.java:67)
at
org.apache.camel.component.cometd.CometdProducer.start(CometdProducer.java:48)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:56)
at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:378)
... 98 more

I suspect it has to do with the fact the cometd component starts it's own
Jetty server and something about the Jetty servers isn't unique. Below is
the config I used to recreate the problem.

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws" xmlns:cxf="
http://cxf.apache.org/blueprint/core"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
           xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf"
           xmlns:camel="http://camel.apache.org/schema/blueprint"
           xsi:schemaLocation="
             http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
             http://camel.apache.org/schema/blueprint/cxf
http://camel.apache.org/schema/blueprint/cxf/camel-cxf-2.8.3.xsd
             http://camel.apache.org/schema/blueprint
http://camel.apache.org/schema/blueprint/camel-blueprint-2.8.3.xsd
             http://cxf.apache.org/blueprint/jaxws
http://cxf.apache.org/schemas/blueprint/jaxws.xsd
             http://cxf.apache.org/blueprint/core
http://cxf.apache.org/schemas/blueprint/core.xsd
             http://cxf.apache.org/blueprint/jaxrs
http://cxf.apache.org/schemas/blueprint/jaxrs.xsd"
           default-activation="lazy">

    <camel:camelContext id="cometd-test-route">
        <camel:route>
            <camel:from uri="direct:start"/>
            <camel:filter>
                <camel:simple>${in.headers.ClientID} == 5</camel:simple>
                <camel:to uri="cometd://0.0.0.0:8082/events?baseResource=
."/>
            </camel:filter>
        </camel:route>

        <camel:route>
            <camel:from uri="direct:start"/>
            <camel:filter>
                <camel:simple>${in.headers.ClientID} == 4</camel:simple>
                <camel:to uri="cometd://0.0.0.0:8083/events?baseResource=
."/>
            </camel:filter>
        </camel:route>
    </camel:camelContext>
</blueprint>


If you comment out the second route it all works like a champ. Any help
would be appreciated.

Thanks,
Chris

Re: Error with multiple CometD components

Posted by Chris Geer <ch...@cxtsoftware.com>.
Thanks Willem.

On Thu, Mar 15, 2012 at 1:38 AM, Willem Jiang <wi...@gmail.com>wrote:

> Hi Chris
>
> I can reproduce the error[1] and the patch is on the way.
>
> [1]https://issues.apache.org/**jira/browse/CAMEL-5087<https://issues.apache.org/jira/browse/CAMEL-5087>
>
> Willem
>
>
> On Wed Mar 14 10:27:34 2012, Chris Geer wrote:
>
>> We are using Camel 2.8.3 with ServiceMix 4.4.1. The consumer is a webpage
>> using the jquery comet library. You are correct that I didn't publish all
>> my routes in the sample I provided, I just provided enough to show the
>> error.
>>
>> I did some more experimenting and was able to start multiple cometd
>> endpoints, on different ports, when I put them in separate camel contexts.
>> The error only seems to happen when they are in the same context, which is
>> what I ultimately want.
>>
>> Chris
>>
>> On Tue, Mar 13, 2012 at 6:41 PM, Willem Jiang<wi...@gmail.com>**
>> wrote:
>>
>>  Hi,
>>>
>>> Which version of Camel are you using ?
>>> Do you deploy the Cometd producer and consumer at the same time ?
>>> I guess you doesn't past all the routes those you have.
>>>
>>>
>>>
>>> On Wed Mar 14 07:29:28 2012, Chris Geer wrote:
>>>
>>>  I have a need to run multiple CometD endpoints where I can selectively
>>>> dispatch messages to each one based on data in my flow (splitting via
>>>> different comet subscriptions isn't sufficient). My plan was to run each
>>>> endpoint on it's own port so they wouldn't overlap but as soon as I try
>>>> and
>>>> create a second endpoint I get the following error (this is the root
>>>> error).
>>>>
>>>> Caused by: java.lang.****IllegalStateException: STARTED
>>>> at
>>>> org.eclipse.jetty.server.****handler.HandlerWrapper.**
>>>> setHandler(HandlerWrapper.****java:70)
>>>> at
>>>> org.eclipse.jetty.servlet.****ServletContextHandler.<init>(****
>>>> ServletContextHandler.java:****131)
>>>> at
>>>> org.eclipse.jetty.servlet.****ServletContextHandler.<init>(****
>>>> ServletContextHandler.java:99)
>>>> at
>>>> org.apache.camel.component.****cometd.CometdComponent.**
>>>> createServletForConnector(****CometdComponent.java:162)
>>>> at
>>>> org.apache.camel.component.****cometd.CometdComponent.**
>>>> connect(CometdComponent.java:****115)
>>>> at
>>>> org.apache.camel.component.****cometd.CometdEndpoint.connect(****
>>>> CometdEndpoint.java:67)
>>>> at
>>>> org.apache.camel.component.****cometd.CometdProducer.start(**
>>>> CometdProducer.java:48)
>>>> at org.apache.camel.util.****ServiceHelper.startService(**
>>>> ServiceHelper.java:56)
>>>> at org.apache.camel.impl.****ProducerCache.doGetProducer(**
>>>>
>>>> ProducerCache.java:378)
>>>> ... 98 more
>>>>
>>>> I suspect it has to do with the fact the cometd component starts it's
>>>> own
>>>> Jetty server and something about the Jetty servers isn't unique. Below
>>>> is
>>>> the config I used to recreate the problem.
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <blueprint xmlns="http://www.osgi.org/****xmlns/blueprint/v1.0.0<http://www.osgi.org/**xmlns/blueprint/v1.0.0>
>>>> <http://**www.osgi.org/xmlns/blueprint/**v1.0.0<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>>>> >
>>>> "
>>>>            xmlns:jaxws="http://cxf.**apac**he.org/blueprint/jaxws<http://apache.org/blueprint/jaxws>
>>>> <http://**cxf.apache.org/blueprint/jaxws<http://cxf.apache.org/blueprint/jaxws>
>>>> **>"
>>>> xmlns:cxf="
>>>> http://cxf.apache.org/****blueprint/core<http://cxf.apache.org/**blueprint/core>
>>>> <http://cxf.**apache.org/blueprint/core<http://cxf.apache.org/blueprint/core>
>>>> >
>>>> "
>>>>            xmlns:xsi="http://www.w3.org/****2001/XMLSchema-instance<http://www.w3.org/**2001/XMLSchema-instance>
>>>> <http:**//www.w3.org/2001/XMLSchema-**instance<http://www.w3.org/2001/XMLSchema-instance>
>>>> >
>>>> "
>>>>            xmlns:jaxrs="http://cxf.**apac**he.org/blueprint/jaxrs<http://apache.org/blueprint/jaxrs>
>>>> <http://**cxf.apache.org/blueprint/jaxrs<http://cxf.apache.org/blueprint/jaxrs>
>>>> **>
>>>> "
>>>>            xmlns:camelcxf="http://camel.****
>>>> apache.org/schema/blueprint/****<http://apache.org/schema/blueprint/**>
>>>> cxf<http://camel.apache.org/**schema/blueprint/cxf<http://camel.apache.org/schema/blueprint/cxf>
>>>> >"
>>>>            xmlns:camel="http://camel.**ap**ache.org/schema/blueprint<http://apache.org/schema/blueprint>
>>>> <http**://camel.apache.org/schema/**blueprint<http://camel.apache.org/schema/blueprint>
>>>> >
>>>> "
>>>>            xsi:schemaLocation="
>>>>              http://www.osgi.org/xmlns/****blueprint/v1.0.0<http://www.osgi.org/xmlns/**blueprint/v1.0.0>
>>>> <http://www.**osgi.org/xmlns/blueprint/v1.0.**0<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>>>> >
>>>> http://www.osgi.org/xmlns/****blueprint/v1.0.0/blueprint.xsd<http://www.osgi.org/xmlns/**blueprint/v1.0.0/blueprint.xsd>
>>>> **<http://www.osgi.org/xmlns/**blueprint/v1.0.0/blueprint.xsd<http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd>
>>>> **>
>>>>              http://camel.apache.org/****schema/blueprint/cxf<http://camel.apache.org/**schema/blueprint/cxf>
>>>> <http://**camel.apache.org/schema/**blueprint/cxf<http://camel.apache.org/schema/blueprint/cxf>
>>>> >
>>>> http://camel.apache.org/****schema/blueprint/cxf/camel-****
>>>> cxf-2.8.3.xsd<http://camel.apache.org/**schema/blueprint/cxf/camel-**cxf-2.8.3.xsd>
>>>> <http://camel.**apache.org/schema/blueprint/**cxf/camel-cxf-2.8.3.xsd<http://camel.apache.org/schema/blueprint/cxf/camel-cxf-2.8.3.xsd>
>>>> >
>>>>              http://camel.apache.org/****schema/blueprint<http://camel.apache.org/**schema/blueprint>
>>>> <http://camel.**apache.org/schema/blueprint<http://camel.apache.org/schema/blueprint>
>>>> >
>>>> http://camel.apache.org/****schema/blueprint/camel-****
>>>> blueprint-2.8.3.xsd<http://camel.apache.org/**schema/blueprint/camel-**blueprint-2.8.3.xsd>
>>>> <http://**camel.apache.org/schema/**blueprint/camel-blueprint-2.8.**
>>>> 3.xsd<http://camel.apache.org/schema/blueprint/camel-blueprint-2.8.3.xsd>
>>>> >
>>>>              http://cxf.apache.org/****blueprint/jaxws<http://cxf.apache.org/**blueprint/jaxws>
>>>> <http://cxf.**apache.org/blueprint/jaxws<http://cxf.apache.org/blueprint/jaxws>
>>>> >
>>>> http://cxf.apache.org/schemas/****blueprint/jaxws.xsd<http://cxf.apache.org/schemas/**blueprint/jaxws.xsd>
>>>> <http://**cxf.apache.org/schemas/**blueprint/jaxws.xsd<http://cxf.apache.org/schemas/blueprint/jaxws.xsd>
>>>> >
>>>>              http://cxf.apache.org/****blueprint/core<http://cxf.apache.org/**blueprint/core>
>>>> <http://cxf.**apache.org/blueprint/core<http://cxf.apache.org/blueprint/core>
>>>> >
>>>> http://cxf.apache.org/schemas/****blueprint/core.xsd<http://cxf.apache.org/schemas/**blueprint/core.xsd>
>>>> <http://**cxf.apache.org/schemas/**blueprint/core.xsd<http://cxf.apache.org/schemas/blueprint/core.xsd>
>>>> >
>>>>              http://cxf.apache.org/****blueprint/jaxrs<http://cxf.apache.org/**blueprint/jaxrs>
>>>> <http://cxf.**apache.org/blueprint/jaxrs<http://cxf.apache.org/blueprint/jaxrs>
>>>> >
>>>> http://cxf.apache.org/schemas/****blueprint/jaxrs.xsd<http://cxf.apache.org/schemas/**blueprint/jaxrs.xsd>
>>>> <http://**cxf.apache.org/schemas/**blueprint/jaxrs.xsd<http://cxf.apache.org/schemas/blueprint/jaxrs.xsd>
>>>> >
>>>>
>>>> "
>>>>            default-activation="lazy">
>>>>
>>>>     <camel:camelContext id="cometd-test-route">
>>>>         <camel:route>
>>>>             <camel:from uri="direct:start"/>
>>>>             <camel:filter>
>>>>                 <camel:simple>${in.headers.****ClientID} ==
>>>> 5</camel:simple>
>>>>                 <camel:to uri="cometd://0.0.0.0:8082/**
>>>> events?baseResource=<http://0.**0.0.0:8082/events?**baseResource=<http://0.0.0.0:8082/events?baseResource=>
>>>> >
>>>>
>>>> ."/>
>>>>             </camel:filter>
>>>>         </camel:route>
>>>>
>>>>         <camel:route>
>>>>             <camel:from uri="direct:start"/>
>>>>             <camel:filter>
>>>>                 <camel:simple>${in.headers.****ClientID} ==
>>>> 4</camel:simple>
>>>>                 <camel:to uri="cometd://0.0.0.0:8083/**
>>>> events?baseResource=<http://0.**0.0.0:8083/events?**baseResource=<http://0.0.0.0:8083/events?baseResource=>
>>>> >
>>>>
>>>> ."/>
>>>>             </camel:filter>
>>>>         </camel:route>
>>>>     </camel:camelContext>
>>>> </blueprint>
>>>>
>>>>
>>>> If you comment out the second route it all works like a champ. Any help
>>>> would be appreciated.
>>>>
>>>> Thanks,
>>>> Chris
>>>>
>>>>
>>>>
>>>
>>> --
>>> Willem
>>> ------------------------------****----
>>> FuseSource
>>> Web: http://www.fusesource.com
>>> Blog:    http://willemjiang.blogspot.****com<http://willemjiang.**
>>> blogspot.com <http://willemjiang.blogspot.com>>(English)
>>>
>>>        http://jnn.javaeye.com (Chinese)
>>> Twitter: willemjiang Weibo: willemjiang
>>>
>>>
>>
>
>
> --
> Willem
> ------------------------------**----
> FuseSource
> Web: http://www.fusesource.com
> Blog:    http://willemjiang.blogspot.**com<http://willemjiang.blogspot.com>(English)
>         http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang
> Weibo: willemjiang
>
> --
> Willem
> ------------------------------**----
> FuseSource
> Web: http://www.fusesource.com
> Blog:    http://willemjiang.blogspot.**com<http://willemjiang.blogspot.com>(English)
>         http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang
> Weibo: willemjiang
>

Re: Error with multiple CometD components

Posted by Willem Jiang <wi...@gmail.com>.
Hi Chris

I can reproduce the error[1] and the patch is on the way.

[1]https://issues.apache.org/jira/browse/CAMEL-5087

Willem

On Wed Mar 14 10:27:34 2012, Chris Geer wrote:
> We are using Camel 2.8.3 with ServiceMix 4.4.1. The consumer is a webpage
> using the jquery comet library. You are correct that I didn't publish all
> my routes in the sample I provided, I just provided enough to show the
> error.
>
> I did some more experimenting and was able to start multiple cometd
> endpoints, on different ports, when I put them in separate camel contexts.
> The error only seems to happen when they are in the same context, which is
> what I ultimately want.
>
> Chris
>
> On Tue, Mar 13, 2012 at 6:41 PM, Willem Jiang<wi...@gmail.com>wrote:
>
>> Hi,
>>
>> Which version of Camel are you using ?
>> Do you deploy the Cometd producer and consumer at the same time ?
>> I guess you doesn't past all the routes those you have.
>>
>>
>>
>> On Wed Mar 14 07:29:28 2012, Chris Geer wrote:
>>
>>> I have a need to run multiple CometD endpoints where I can selectively
>>> dispatch messages to each one based on data in my flow (splitting via
>>> different comet subscriptions isn't sufficient). My plan was to run each
>>> endpoint on it's own port so they wouldn't overlap but as soon as I try
>>> and
>>> create a second endpoint I get the following error (this is the root
>>> error).
>>>
>>> Caused by: java.lang.**IllegalStateException: STARTED
>>> at
>>> org.eclipse.jetty.server.**handler.HandlerWrapper.**
>>> setHandler(HandlerWrapper.**java:70)
>>> at
>>> org.eclipse.jetty.servlet.**ServletContextHandler.<init>(**
>>> ServletContextHandler.java:**131)
>>> at
>>> org.eclipse.jetty.servlet.**ServletContextHandler.<init>(**
>>> ServletContextHandler.java:99)
>>> at
>>> org.apache.camel.component.**cometd.CometdComponent.**
>>> createServletForConnector(**CometdComponent.java:162)
>>> at
>>> org.apache.camel.component.**cometd.CometdComponent.**
>>> connect(CometdComponent.java:**115)
>>> at
>>> org.apache.camel.component.**cometd.CometdEndpoint.connect(**
>>> CometdEndpoint.java:67)
>>> at
>>> org.apache.camel.component.**cometd.CometdProducer.start(**
>>> CometdProducer.java:48)
>>> at org.apache.camel.util.**ServiceHelper.startService(**
>>> ServiceHelper.java:56)
>>> at org.apache.camel.impl.**ProducerCache.doGetProducer(**
>>> ProducerCache.java:378)
>>> ... 98 more
>>>
>>> I suspect it has to do with the fact the cometd component starts it's own
>>> Jetty server and something about the Jetty servers isn't unique. Below is
>>> the config I used to recreate the problem.
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <blueprint xmlns="http://www.osgi.org/**xmlns/blueprint/v1.0.0<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>>> "
>>>             xmlns:jaxws="http://cxf.**apache.org/blueprint/jaxws<http://cxf.apache.org/blueprint/jaxws>"
>>> xmlns:cxf="
>>> http://cxf.apache.org/**blueprint/core<http://cxf.apache.org/blueprint/core>
>>> "
>>>             xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance>
>>> "
>>>             xmlns:jaxrs="http://cxf.**apache.org/blueprint/jaxrs<http://cxf.apache.org/blueprint/jaxrs>
>>> "
>>>             xmlns:camelcxf="http://camel.**apache.org/schema/blueprint/**
>>> cxf<http://camel.apache.org/schema/blueprint/cxf>"
>>>             xmlns:camel="http://camel.**apache.org/schema/blueprint<http://camel.apache.org/schema/blueprint>
>>> "
>>>             xsi:schemaLocation="
>>>               http://www.osgi.org/xmlns/**blueprint/v1.0.0<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>>> http://www.osgi.org/xmlns/**blueprint/v1.0.0/blueprint.xsd<http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd>
>>>               http://camel.apache.org/**schema/blueprint/cxf<http://camel.apache.org/schema/blueprint/cxf>
>>> http://camel.apache.org/**schema/blueprint/cxf/camel-**cxf-2.8.3.xsd<http://camel.apache.org/schema/blueprint/cxf/camel-cxf-2.8.3.xsd>
>>>               http://camel.apache.org/**schema/blueprint<http://camel.apache.org/schema/blueprint>
>>> http://camel.apache.org/**schema/blueprint/camel-**blueprint-2.8.3.xsd<http://camel.apache.org/schema/blueprint/camel-blueprint-2.8.3.xsd>
>>>               http://cxf.apache.org/**blueprint/jaxws<http://cxf.apache.org/blueprint/jaxws>
>>> http://cxf.apache.org/schemas/**blueprint/jaxws.xsd<http://cxf.apache.org/schemas/blueprint/jaxws.xsd>
>>>               http://cxf.apache.org/**blueprint/core<http://cxf.apache.org/blueprint/core>
>>> http://cxf.apache.org/schemas/**blueprint/core.xsd<http://cxf.apache.org/schemas/blueprint/core.xsd>
>>>               http://cxf.apache.org/**blueprint/jaxrs<http://cxf.apache.org/blueprint/jaxrs>
>>> http://cxf.apache.org/schemas/**blueprint/jaxrs.xsd<http://cxf.apache.org/schemas/blueprint/jaxrs.xsd>
>>> "
>>>             default-activation="lazy">
>>>
>>>      <camel:camelContext id="cometd-test-route">
>>>          <camel:route>
>>>              <camel:from uri="direct:start"/>
>>>              <camel:filter>
>>>                  <camel:simple>${in.headers.**ClientID} ==
>>> 5</camel:simple>
>>>                  <camel:to uri="cometd://0.0.0.0:8082/**
>>> events?baseResource=<http://0.0.0.0:8082/events?baseResource=>
>>> ."/>
>>>              </camel:filter>
>>>          </camel:route>
>>>
>>>          <camel:route>
>>>              <camel:from uri="direct:start"/>
>>>              <camel:filter>
>>>                  <camel:simple>${in.headers.**ClientID} ==
>>> 4</camel:simple>
>>>                  <camel:to uri="cometd://0.0.0.0:8083/**
>>> events?baseResource=<http://0.0.0.0:8083/events?baseResource=>
>>> ."/>
>>>              </camel:filter>
>>>          </camel:route>
>>>      </camel:camelContext>
>>> </blueprint>
>>>
>>>
>>> If you comment out the second route it all works like a champ. Any help
>>> would be appreciated.
>>>
>>> Thanks,
>>> Chris
>>>
>>>
>>
>>
>> --
>> Willem
>> ------------------------------**----
>> FuseSource
>> Web: http://www.fusesource.com
>> Blog:    http://willemjiang.blogspot.**com<http://willemjiang.blogspot.com>(English)
>>         http://jnn.javaeye.com (Chinese)
>> Twitter: willemjiang Weibo: willemjiang
>>
>



-- 
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
          http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang

-- 
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
          http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang

Re: Error with multiple CometD components

Posted by Chris Geer <ch...@cxtsoftware.com>.
We are using Camel 2.8.3 with ServiceMix 4.4.1. The consumer is a webpage
using the jquery comet library. You are correct that I didn't publish all
my routes in the sample I provided, I just provided enough to show the
error.

I did some more experimenting and was able to start multiple cometd
endpoints, on different ports, when I put them in separate camel contexts.
The error only seems to happen when they are in the same context, which is
what I ultimately want.

Chris

On Tue, Mar 13, 2012 at 6:41 PM, Willem Jiang <wi...@gmail.com>wrote:

> Hi,
>
> Which version of Camel are you using ?
> Do you deploy the Cometd producer and consumer at the same time ?
> I guess you doesn't past all the routes those you have.
>
>
>
> On Wed Mar 14 07:29:28 2012, Chris Geer wrote:
>
>> I have a need to run multiple CometD endpoints where I can selectively
>> dispatch messages to each one based on data in my flow (splitting via
>> different comet subscriptions isn't sufficient). My plan was to run each
>> endpoint on it's own port so they wouldn't overlap but as soon as I try
>> and
>> create a second endpoint I get the following error (this is the root
>> error).
>>
>> Caused by: java.lang.**IllegalStateException: STARTED
>> at
>> org.eclipse.jetty.server.**handler.HandlerWrapper.**
>> setHandler(HandlerWrapper.**java:70)
>> at
>> org.eclipse.jetty.servlet.**ServletContextHandler.<init>(**
>> ServletContextHandler.java:**131)
>> at
>> org.eclipse.jetty.servlet.**ServletContextHandler.<init>(**
>> ServletContextHandler.java:99)
>> at
>> org.apache.camel.component.**cometd.CometdComponent.**
>> createServletForConnector(**CometdComponent.java:162)
>> at
>> org.apache.camel.component.**cometd.CometdComponent.**
>> connect(CometdComponent.java:**115)
>> at
>> org.apache.camel.component.**cometd.CometdEndpoint.connect(**
>> CometdEndpoint.java:67)
>> at
>> org.apache.camel.component.**cometd.CometdProducer.start(**
>> CometdProducer.java:48)
>> at org.apache.camel.util.**ServiceHelper.startService(**
>> ServiceHelper.java:56)
>> at org.apache.camel.impl.**ProducerCache.doGetProducer(**
>> ProducerCache.java:378)
>> ... 98 more
>>
>> I suspect it has to do with the fact the cometd component starts it's own
>> Jetty server and something about the Jetty servers isn't unique. Below is
>> the config I used to recreate the problem.
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <blueprint xmlns="http://www.osgi.org/**xmlns/blueprint/v1.0.0<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>> "
>>            xmlns:jaxws="http://cxf.**apache.org/blueprint/jaxws<http://cxf.apache.org/blueprint/jaxws>"
>> xmlns:cxf="
>> http://cxf.apache.org/**blueprint/core<http://cxf.apache.org/blueprint/core>
>> "
>>            xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance>
>> "
>>            xmlns:jaxrs="http://cxf.**apache.org/blueprint/jaxrs<http://cxf.apache.org/blueprint/jaxrs>
>> "
>>            xmlns:camelcxf="http://camel.**apache.org/schema/blueprint/**
>> cxf <http://camel.apache.org/schema/blueprint/cxf>"
>>            xmlns:camel="http://camel.**apache.org/schema/blueprint<http://camel.apache.org/schema/blueprint>
>> "
>>            xsi:schemaLocation="
>>              http://www.osgi.org/xmlns/**blueprint/v1.0.0<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>> http://www.osgi.org/xmlns/**blueprint/v1.0.0/blueprint.xsd<http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd>
>>              http://camel.apache.org/**schema/blueprint/cxf<http://camel.apache.org/schema/blueprint/cxf>
>> http://camel.apache.org/**schema/blueprint/cxf/camel-**cxf-2.8.3.xsd<http://camel.apache.org/schema/blueprint/cxf/camel-cxf-2.8.3.xsd>
>>              http://camel.apache.org/**schema/blueprint<http://camel.apache.org/schema/blueprint>
>> http://camel.apache.org/**schema/blueprint/camel-**blueprint-2.8.3.xsd<http://camel.apache.org/schema/blueprint/camel-blueprint-2.8.3.xsd>
>>              http://cxf.apache.org/**blueprint/jaxws<http://cxf.apache.org/blueprint/jaxws>
>> http://cxf.apache.org/schemas/**blueprint/jaxws.xsd<http://cxf.apache.org/schemas/blueprint/jaxws.xsd>
>>              http://cxf.apache.org/**blueprint/core<http://cxf.apache.org/blueprint/core>
>> http://cxf.apache.org/schemas/**blueprint/core.xsd<http://cxf.apache.org/schemas/blueprint/core.xsd>
>>              http://cxf.apache.org/**blueprint/jaxrs<http://cxf.apache.org/blueprint/jaxrs>
>> http://cxf.apache.org/schemas/**blueprint/jaxrs.xsd<http://cxf.apache.org/schemas/blueprint/jaxrs.xsd>
>> "
>>            default-activation="lazy">
>>
>>     <camel:camelContext id="cometd-test-route">
>>         <camel:route>
>>             <camel:from uri="direct:start"/>
>>             <camel:filter>
>>                 <camel:simple>${in.headers.**ClientID} ==
>> 5</camel:simple>
>>                 <camel:to uri="cometd://0.0.0.0:8082/**
>> events?baseResource= <http://0.0.0.0:8082/events?baseResource=>
>> ."/>
>>             </camel:filter>
>>         </camel:route>
>>
>>         <camel:route>
>>             <camel:from uri="direct:start"/>
>>             <camel:filter>
>>                 <camel:simple>${in.headers.**ClientID} ==
>> 4</camel:simple>
>>                 <camel:to uri="cometd://0.0.0.0:8083/**
>> events?baseResource= <http://0.0.0.0:8083/events?baseResource=>
>> ."/>
>>             </camel:filter>
>>         </camel:route>
>>     </camel:camelContext>
>> </blueprint>
>>
>>
>> If you comment out the second route it all works like a champ. Any help
>> would be appreciated.
>>
>> Thanks,
>> Chris
>>
>>
>
>
> --
> Willem
> ------------------------------**----
> FuseSource
> Web: http://www.fusesource.com
> Blog:    http://willemjiang.blogspot.**com<http://willemjiang.blogspot.com>(English)
>        http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang Weibo: willemjiang
>

Re: Error with multiple CometD components

Posted by Willem Jiang <wi...@gmail.com>.
Hi,

Which version of Camel are you using ?
Do you deploy the Cometd producer and consumer at the same time ?
I guess you doesn't past all the routes those you have.
 

On Wed Mar 14 07:29:28 2012, Chris Geer wrote:
> I have a need to run multiple CometD endpoints where I can selectively
> dispatch messages to each one based on data in my flow (splitting via
> different comet subscriptions isn't sufficient). My plan was to run each
> endpoint on it's own port so they wouldn't overlap but as soon as I try and
> create a second endpoint I get the following error (this is the root error).
>
> Caused by: java.lang.IllegalStateException: STARTED
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.setHandler(HandlerWrapper.java:70)
> at
> org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:131)
> at
> org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:99)
> at
> org.apache.camel.component.cometd.CometdComponent.createServletForConnector(CometdComponent.java:162)
> at
> org.apache.camel.component.cometd.CometdComponent.connect(CometdComponent.java:115)
> at
> org.apache.camel.component.cometd.CometdEndpoint.connect(CometdEndpoint.java:67)
> at
> org.apache.camel.component.cometd.CometdProducer.start(CometdProducer.java:48)
> at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:56)
> at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:378)
> ... 98 more
>
> I suspect it has to do with the fact the cometd component starts it's own
> Jetty server and something about the Jetty servers isn't unique. Below is
> the config I used to recreate the problem.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
>             xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws" xmlns:cxf="
> http://cxf.apache.org/blueprint/core"
>             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>             xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
>             xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf"
>             xmlns:camel="http://camel.apache.org/schema/blueprint"
>             xsi:schemaLocation="
>               http://www.osgi.org/xmlns/blueprint/v1.0.0
> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
>               http://camel.apache.org/schema/blueprint/cxf
> http://camel.apache.org/schema/blueprint/cxf/camel-cxf-2.8.3.xsd
>               http://camel.apache.org/schema/blueprint
> http://camel.apache.org/schema/blueprint/camel-blueprint-2.8.3.xsd
>               http://cxf.apache.org/blueprint/jaxws
> http://cxf.apache.org/schemas/blueprint/jaxws.xsd
>               http://cxf.apache.org/blueprint/core
> http://cxf.apache.org/schemas/blueprint/core.xsd
>               http://cxf.apache.org/blueprint/jaxrs
> http://cxf.apache.org/schemas/blueprint/jaxrs.xsd"
>             default-activation="lazy">
>
>      <camel:camelContext id="cometd-test-route">
>          <camel:route>
>              <camel:from uri="direct:start"/>
>              <camel:filter>
>                  <camel:simple>${in.headers.ClientID} == 5</camel:simple>
>                  <camel:to uri="cometd://0.0.0.0:8082/events?baseResource=
> ."/>
>              </camel:filter>
>          </camel:route>
>
>          <camel:route>
>              <camel:from uri="direct:start"/>
>              <camel:filter>
>                  <camel:simple>${in.headers.ClientID} == 4</camel:simple>
>                  <camel:to uri="cometd://0.0.0.0:8083/events?baseResource=
> ."/>
>              </camel:filter>
>          </camel:route>
>      </camel:camelContext>
> </blueprint>
>
>
> If you comment out the second route it all works like a champ. Any help
> would be appreciated.
>
> Thanks,
> Chris
>



-- 
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
         http://jnn.javaeye.com (Chinese)
Twitter: willemjiang 
Weibo: willemjiang