Hi Thanks for the sample. I can reproduce the issue.
The issue is that your base class implements the javax.jms.MessageListener. I will dig into why Camel prefers to invoke this method over the method name specified. On Tue, Aug 4, 2009 at 8:02 PM, jjb<[email protected]> wrote: > > 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. > > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
