camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William Tam" <email.w...@gmail.com>
Subject Re: Starting Camel context causes JMX exception.
Date Mon, 07 Jul 2008 04:56:24 GMT
Hi Claus,

Camel does keep track of mbeans that it registers in order to
unregister them.  However, as we have seen in deploying camel in
websphere, the mbean server could register a mbean under a different
objectname than we specify.  Say, we want to register a mbean with
objectname "endpoint=abc".  We check our registered objectnames map
first.  If the objectname is there, then don't try to register.  The
check won't work in the websphere's case because websphere mbean
server always adds (cell, server, etc) to the objectname.

After looking at it, I think we should register the repeated processor
(generate a new objectname) found in a route because the repeated
processor is actually different instance.  If we don't register it, we
won't see it's performance counter.   So, if you send an exchange to
the route from("direct:start").to("bean:test").to("bean:test"), we
only see one exchange processed by "bean:test".  If we register both
instance, at least we can see one exchange processed by each instance.

- William


On Mon, Jul 7, 2008 at 12:10 AM, Claus Ibsen <ci@silverbullet.dk> wrote:
> Hi
>
> When people see stracktraces in log files they immediately assume its an ERROR.
>
> I am wondering if Camel should be smarter there and keep an internal map of what mbean
names it have registerered and if there is a duplication exception (if we get an expilicit
exception about this) then it should not log it at WARN level with stacktraces etcs. But either:
> - WARN without stacktrace
> - DEBUG with stacktrace
> - SKIP the error all together.
>
> I would appreciate if Camel is able to startup without any stacktraces in its logging.
>
> Any thoughts?
>
>
> Med venlig hilsen
>
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
>
> -----Original Message-----
> From: William Tam [mailto:email.wtam@gmail.com]
> Sent: 7. juli 2008 05:52
> To: camel-user@activemq.apache.org
> Subject: Re: Starting Camel context causes JMX exception.
>
> Sergey, I don't need to see your routes.  The exception was thrown
> during registering (duplicated) processors wthin route.  Again, it is
> a warning not an error.
>
> On Sun, Jul 6, 2008 at 11:24 PM, William Tam <email.wtam@gmail.com> wrote:
>> Sergey,
>>
>> Actually, the above is a warning message and it does continue.  The
>> stacktrace shows that the failure was caused by a duplicated
>> ManagedRoute mbean.  Is it possible to send me the routes within your
>> camel context?  Perhaps, the camel naming strategy that generates
>> objectnames for routes needs some tweaking.
>>
>> Thanks,
>> William
>>
>> On Sun, Jul 6, 2008 at 9:37 PM, William Tam <email.wtam@gmail.com> wrote:
>>> Hi Sergey,
>>>
>>> It looks like the instrumentation agent should handle mbeans that have
>>> already been registered.   It should catch the
>>> InstanceAlreadyExistsException and continue.  I'll open a JIRA.  BTW,
>>> the reason you start seeing the exception in 1.4 is because JMX is now
>>> enabled by default.  If you need to disable it, please follow the wiki
>>>  http://activemq.apache.org/camel/camel-jmx.html.
>>>
>>> Thanks,
>>> William
>>>
>>>
>>> On Sun, Jul 6, 2008 at 2:46 PM, S.R. <srassokhin@gmail.com> wrote:
>>>>
>>>> When Camel context is starting
>>>> javax.management.InstanceAlreadyExistsException is thrown.
>>>>
>>>> This happens ONLY for 1.4.0 version AND if the route has 2 equal bean
>>>> endpoints, for example:
>>>> from("jms:queue").to("bean:testBean?methodName=test").to("bean:testBean?methodName=test")
>>>> or
>>>> from("jms:queue").to("bean:testBean").to("bean:testBean").
>>>>
>>>> However, the following example doesn't cause that exception:
>>>> from("jms:queue").to("bean:testBean?methodName=test1").to("bean:testBean?methodName=test2").
>>>>
>>>> Original stack trace:
>>>> WARNING: Could not register Counter MBean
>>>> javax.management.InstanceAlreadyExistsException:
>>>> org.apache.camel:context=srassokhin-pc/camelContext,route=[jms]Queue.IMB.System@-2079852353,type=processor,name="To[bean:systemReplyBean\?methodName=replyLogin]"
>>>>        at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453)
>>>>        at
>>>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerInterceptor.java:1484)
>>>>        at
>>>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:963)
>>>>        at
>>>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:917)
>>>>        at
>>>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)
>>>>        at
>>>> com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:482)
>>>>        at
>>>> org.apache.camel.management.DefaultInstrumentationAgent.registerMBeanWithServer(DefaultInstrumentationAgent.java:224)
>>>>        at
>>>> org.apache.camel.management.DefaultInstrumentationAgent.register(DefaultInstrumentationAgent.java:165)
>>>>        at
>>>> org.apache.camel.management.DefaultInstrumentationAgent.register(DefaultInstrumentationAgent.java:146)
>>>>        at
>>>> org.apache.camel.management.InstrumentationLifecycleStrategy.onRouteContextCreate(InstrumentationLifecycleStrategy.java:173)
>>>>        at org.apache.camel.model.RouteType.addRoutes(RouteType.java:216)
>>>>        at org.apache.camel.model.RouteType.addRoutes(RouteType.java:90)
>>>>        at
>>>> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:520)
>>>>        at
>>>> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:512)
>>>>        at
>>>> org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:149)
>>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:47)
>>>>        at
>>>> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:103)
>>>>        at
>>>> org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
>>>>        at
>>>> org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
>>>>        at
>>>> org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
>>>>        at
>>>> org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:275)
>>>>        at
>>>> org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:737)
>>>>        at
>>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:384)
>>>>        at
>>>> org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
>>>>        at
>>>> org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
>>>>
>>>> Sergey
>>>>
>>>> --
>>>> View this message in context: http://www.nabble.com/Starting-Camel-context-causes-JMX-exception.-tp18304692s22882p18304692.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>
>

Mime
View raw message