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

Reply via email to