Hi. Attached is an example which recreates the bean issue. My goal is to create a framework which localizes JMS/ActiveMQ and Camel stuff to one package. Then none of our business logic depends on it (it just passes POJOs around that are created from XSD using JAXB). This is why I can't put the @Handler annotation in the DerivedClass. http://www.nabble.com/file/p24813432/camel_bug.tgz camel_bug.tgz
About the 2.0-M3 Camel interface for HttpServletResponse - how do I get it from the Exchange? Thanks! Claus Ibsen-2 wrote: > > On Tue, Aug 4, 2009 at 9:26 AM, jjb<[email protected]> wrote: >> >> Hi. >> >> Thanks for the quick response. I switched to 2.0-M3 and still had the >> problem - the BaseClass.onMessage still gets called. Is there a newer >> release or something I can check out that might have this fix? Also, >> when I >> use 2.0-M3, how do I get the HttpServletResponse (your suggestion to get >> the >> HttpServletRequest worked for me - thanks)? >> >> Regards > > Hi > > About the bean problem. Could you create a ticket for it and attach a > small sample with the issue? > > You can use the @Handler annotation to mark the method that Camel > should use and then avoid using the ?method=xxxx. > But I am interested in fixing why method=xxx does not work for you. > > See more here > http://camel.apache.org/bean-binding.html > > >> >> >> Claus Ibsen-2 wrote: >>> >>> Hi >>> >>> On Tue, Aug 4, 2009 at 7:52 AM, jjb<[email protected]> wrote: >>>> >>>> I have a hierarchy of objects which looks like this: >>>> >>>> public BaseClass implements javax.jms.MessageListener >>>> { >>>> public void onMessage(javax.jms.Message message) >>>> { >>>> // do something >>>> } >>>> } >>>> >>>> public DerivedClass extends BaseClass >>>> { >>>> public void process(String body) >>>> { >>>> // do something >>>> } >>>> } >>>> >>>> I then have the following XML in my camel-context.xml: >>>> >>>> <bean id="processor" class="DerivedClass"/> >>>> >>>> <route> >>>> <from uri="activemq:request.queue"/> >>>> <to uri="bean:processor?method=process"/> >>>> </route> >>>> >>>> When I run this code, all messages from request.queue always go to >>>> BaseClass.onMessage, even though I explicitly want them to go to >>>> DerivedClass.process. Have I done something wrong or is this a bug (I >>>> read >>>> through the bean binding and it said it would first use methods that >>>> were >>>> explicitly specified in the bean's method parameter)? >>>> >>> >>> We have fixed a bug in this relation in 2.0.x (cant remember the >>> version, might be the 2.0m3). >>> >>> In older versions you can work around this by adding an @Body >>> annotation to your base class >>> public void process(@Body String body) >>> And Camel should prefer to use this method. >>> >>> >>> >>>> I also notice that the new 2.0-M3 version of camel-http no longer >>>> contains >>>> the class org.apache.camel.component.http.HttpExchange. Therefore, >>>> this >>>> code no longer compiles: >>>> >>>> public void process(Exchange exchange) >>>> { >>>> try >>>> { >>>> HttpServletResponse response = >>>> ((HttpExchange)exchange).getResponse(); >>>> HttpServletRequest request = >>>> ((HttpExchange)exchange).getRequest(); >>>> HttpSession session = null; >>>> if (request != null) >>>> session = request.getSession(true); >>>> } >>>> catch (Exception e) >>>> { e.printStackTrace(); } >>>> } >>>> >>>> Is there a new way to get the HttpServletResponse and such from the >>>> Exchange >>>> parameter? >>> >>> Its on the HttpMessage instead. >>> >>> HttpMessage in = (HttpMessag) exchange.getIn(); >>> HttpServletRequest = in.getRequest(); >>> >>> >>>> >>>> Regards >>>> -- >>>> View this message in context: >>>> http://www.nabble.com/bean-binding-with-inheritance---2.0-M3-camel-http-tp24802648p24802648.html >>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>> >>>> >>> >>> >>> >>> -- >>> Claus Ibsen >>> Apache Camel Committer >>> >>> Open Source Integration: http://fusesource.com >>> Blog: http://davsclaus.blogspot.com/ >>> Twitter: http://twitter.com/davsclaus >>> >>> >> >> -- >> View this message in context: >> http://www.nabble.com/bean-binding-with-inheritance---2.0-M3-camel-http-tp24802648p24803535.html >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> > > > > -- > Claus Ibsen > Apache Camel Committer > > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus > > -- View this message in context: http://www.nabble.com/bean-binding-with-inheritance---2.0-M3-camel-http-tp24802648p24813432.html Sent from the Camel - Users mailing list archive at Nabble.com.
