camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Burkard (Created) (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CAMEL-5036) Camel route with bean element sends on startup invalid message to target route that is represented by a proxy who exposes route
Date Fri, 24 Feb 2012 09:45:53 GMT
Camel route with bean element sends on startup invalid message to target route that is represented
by a proxy who exposes route
-------------------------------------------------------------------------------------------------------------------------------

                 Key: CAMEL-5036
                 URL: https://issues.apache.org/jira/browse/CAMEL-5036
             Project: Camel
          Issue Type: Bug
          Components: camel-core
    Affects Versions: 2.2.0
            Reporter: Stefan Burkard


I expose a Camel route with a direct endpoint defined in an OSGi bundle with the <camel:proxy>
and <osgi:service> tags. The reason for this is to be able to call this direct-route
in other routes (defined in other bundles) as a "sub-route" directly as bean [.bean(routeproxy,
"method")]. This works as expected.

But on route startup the toString method is called on the route (for a description) which
is propagated to the elements of the route. Therefore my bean-element (which is the direct-route-proxy)
receives the toString call and the CamelInvocationHandler converts this toString call to a
message and sends it to the direct-route. This more or less empty message is of course not
valid for the target route and produces an error on bundle startup.  

Shouldn't the toString call be suppressed by the proxy, since toString is not part of the
Interface the proxy represents? Or is my approach a not recommended or problematic approach?


Parts of stacktrace to show the way from route startup to the produced message

=> route receives "empty" message
[omitted]
	at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:45)
	at org.apache.camel.component.bean.CamelInvocationHandler.invoke(CamelInvocationHandler.java:65)
	at $Proxy568.toString(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor406.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
=> toString call is converted to message and sent to route

[omitted]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
	at $Proxy583.toString(Unknown Source)
	at org.apache.camel.component.bean.ConstantBeanHolder.toString(ConstantBeanHolder.java:48)
=> toString called on bean-element in route (bean is a proxy for a route) 

[omitted]
	at java.lang.String.valueOf(String.java:2826)
	at java.lang.StringBuilder.append(StringBuilder.java:115)
	at org.apache.camel.impl.EventDrivenConsumerRoute.toString(EventDrivenConsumerRoute.java:46)
	at org.apache.camel.management.mbean.ManagedRoute.<init>(ManagedRoute.java:41)
	at org.apache.camel.management.DefaultManagementLifecycleStrategy.onRoutesAdd(DefaultManagementLifecycleStrategy.java:368)
	at org.apache.camel.impl.RouteService.doStart(RouteService.java:109)
=> Route startup

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message