Hi

Cool I have added a ticket to get it back
https://issues.apache.org/activemq/browse/CAMEL-1879


On Wed, Aug 5, 2009 at 10:52 AM, jjb<[email protected]> wrote:
>
> Hi, Claus.
>
> I built a framework to receive status related messages from a topic as the
> route is traversed.  Consider the routes the define DerivedClass -> A -> B
> -> C.  As each segment in the route executes, it sends JAXB/XML messages to
> a topic that are then forwarded back to the client via a callback.  As the
> DerivedClass receives these messages, it sends them back over the HTTP
> socket (via the HttpServletResponse) to the invoking web client.  This gives
> the web client a realtime flow of XML status updates while the different
> endpoints are traversed.  Since I do not want DerivedClass to know about
> Camel or JMS, there is a class which DerivedClass submits a request to
> (manager instance below) that also listens on this topic for related status
> messages.  These I get via callback and write them to the web client
> accordingly:
>
>
> public interface Client
> {
>    public void notify(String status);
> }
>
> public DerivedClass implements Client
> {
>    HttpServletResponse response;
>
>    public void process(Exchange exchange)
>    {
>        HttpServletResponse response = ....;   // need to know how to get
> this
>        String request = "MY XML REQUEST";   // this is actually a JAXB
> serialized object
>
>        // submit XML request to class which listens on topic and calls
> notify with stuff for us
>        manager.submit(request, this);
>    }
>
>    // we get our stuff from the manager object which listens on a topic and
> correlates status
>    // messages and calls this notify method
>    public notify(String status)
>    {
>         response.getWriter().println(status);
>    }
> }
>
> I was hoping 2.0-M3 Camel would allow access to HttpServletRequest as before
> 2.0-M3 so I can make my own synchronous writes to the HTTP client from
> DerivedClass with no dependence on Camel.
>
> Regards
>
> response.getWriter().println(statusStr)
>
> Claus Ibsen-2 wrote:
>>
>> Hi
>>
>> Ah the response may be missing on the HttpMessage.
>>
>> What do you need it for?
>>
>> On Wed, Aug 5, 2009 at 9:51 AM, jjb<[email protected]> wrote:
>>>
>>> Hi, Claus.
>>>
>>> Thank you so much for looking into the issue.  My last request has to do
>>> with how to obtain a reference to the HttpServletResponse in the new (>=
>>> 2.0-M3) Camel API.  I can get the HttpServletRequest as you suggested
>>> (using
>>> HttpMessage), but how do I obtain a reference to the HttpServletResponse
>>> from a method with is the "to" endpoint of a camel-jetty "from" route
>>> that
>>> takes an Exchange parameter as so:
>>>
>>> public void process(Exchange exchange)
>>> {
>>>    HttpMessage in = (HttpMessag) exchange.getIn();
>>>    HttpServletRequest = in.getRequest();
>>>
>>>    // how do I get to the HttpServletResponse which used to be accessed <
>>> 2.0-M3
>>>    // like this: HttpServletResponse response =
>>> ((HttpExchange)exchange).getResponse();
>>> }
>>>
>>> Regards
>>>
>>>
>>> Claus Ibsen-2 wrote:
>>>>
>>>> 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
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/bean-binding-with-inheritance---2.0-M3-camel-http-tp24802648p24822320.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-tp24802648p24823165.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

Reply via email to