camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <willem.ji...@gmail.com>
Subject Re: Error with multiple CometD components
Date Thu, 15 Mar 2012 08:38:16 GMT
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<willem.jiang@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

Mime
View raw message