Not sure.  Why would you want to overwrite the MessageExchange ? The
exact same object is used when the response is received, so I don't
really see the point.

On Wed, Oct 8, 2008 at 9:59 PM, raulvk <[EMAIL PROTECTED]> wrote:
>
>
> Yes, you are right. Just two remarks about that:
>
>  1) I doubt that Camel processors ever actually look into the JBI
> MessageExchange. They just look into the out, in, and fault messages
> AFAIK... Do you agree?
>
>  2) On my version of the code, I have created a new public setter on
> JbiExchange that allows us to overwrite the current MessageExchange with the
> response. Does this seem logical? In fact, this new setter doesn't only just
> set the MessageExchange, but also sets the in, out and fault messages on the
> JbiExchange by extracting them from the MessageExchange, in order to keep
> everything consistent.
>
> Does this seem OK?
>
> Thanks!
>
>
>
>
> gnodet wrote:
>>
>> The problem is that if we don't set the fault on the exchange, i fear
>> it will never really end up on the exchange.
>> The createFault() method does not associate the fault to the exchange.
>>
>> On Wed, Oct 8, 2008 at 8:26 PM, raulvk.soa <[EMAIL PROTECTED]> wrote:
>>>
>>> Hi everyone,
>>>
>>> Nice conversation with myself... ;)
>>>
>>> I have been looking into this problem and it seems that when a JBI Fault
>>> is
>>> received as a result of an InOut Exchange, a Fault Message will be
>>> initialized on the JbiExchange (which is Camel's representation of the
>>> actual JBI Exchange). The intention is to fill this new Fault Message
>>> with
>>> the content of the received Fault.
>>>
>>> Everything is OK and rational up until here. However, when the new Fault
>>> message is initialized, the servicemix-camel component attempts to SET
>>> the
>>> Fault message on the underlying MessageExchange as well, thus resulting
>>> in
>>> the "java.lang.IllegalStateException: component is not owner" exception,
>>> evidently because it is not within the consumer's scope to set a Fault!
>>>
>>> I guess this attempt to set the Fault on the JBI Message is done with
>>> good
>>> intention.... To keep the whole Camel Exchange consistent. However, it is
>>> not logically correct in practice.
>>>
>>> So my question is, in the createMessage(...) method of the
>>> org.apache.servicemix.camel.JbiExchange class, would it be safe to
>>> comment
>>> out the messageExchange.setFault() statement, to stop it from trying to
>>> set
>>> the Fault on the underlying MessageExchange?? Or could this have some
>>> negative impact elsewhere?
>>>
>>> The final result would be the following:
>>>
>>>
>>>  private JbiMessage createMessage(String name) {
>>>        if (messageExchange != null) {
>>>            try {
>>>                NormalizedMessage msg = messageExchange.getMessage(name);
>>>                if (msg == null) {
>>>                    if ("fault".equals(name)) {
>>>                        Fault f = messageExchange.createFault();
>>>                        //messageExchange.setFault(f);
>>>                        msg = f;
>>>                    } else {
>>>                        msg = messageExchange.createMessage();
>>>                        messageExchange.setMessage(msg, name);
>>>                    }
>>>                }
>>>                return new JbiMessage(msg);
>>>            } catch (JBIException e) {
>>>                throw new RuntimeException(e);
>>>            }
>>>        } else {
>>>            return new JbiMessage();
>>>        }
>>>    }
>>>
>>>
>>> Many thanks!!
>>>
>>>
>>>
>>> raulvk.soa wrote:
>>>>
>>>>
>>>> Hi everyone,
>>>>
>>>> A fix was provided and the issue was closed on JIRA. However, we are
>>>> encountering another problem derived from the fix, and Camel is still
>>>> not
>>>> able to work with JBI Faults......
>>>>
>>>> Please see my comment on
>>>> https://issues.apache.org/activemq/browse/SM-1589
>>>> for follow-up on this issue.
>>>>
>>>> Thanks.
>>>>
>>>>
>>>>
>>>> raulvk.soa wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> Has anyone come across this same bug?
>>>>> Could someone please give me a hand to fix this? I would very much
>>>>> appreciate your help as we are pretty much stuck in our development
>>>>> until
>>>>> this bug is fixed....
>>>>>
>>>>> Thanks!!
>>>>>
>>>>>
>>>>> raulvk.soa wrote:
>>>>>>
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I have been trying to fix this bug. I have modified the
>>>>>> org.apache.servicemix.camel.JbiExchange.createMessage(String name) to
>>>>>> the following:
>>>>>>
>>>>>> private JbiMessage createMessage(String name) {
>>>>>>         if (messageExchange != null) {
>>>>>>             try {
>>>>>>                 NormalizedMessage msg =
>>>>>> messageExchange.getMessage(name);
>>>>>>                 if (msg == null) {
>>>>>>                     if(name.equals("fault")) {
>>>>>>                             msg = messageExchange.createFault();
>>>>>>                             messageExchange.setFault((Fault) msg);
>>>>>>                     }
>>>>>>                     else {
>>>>>>                         msg = messageExchange.createMessage();
>>>>>>                         messageExchange.setMessage(msg, name);
>>>>>>                     }
>>>>>>                 }
>>>>>>                 return new JbiMessage(msg);
>>>>>>             } catch (JBIException e) {
>>>>>>                 throw new RuntimeException(e);
>>>>>>             }
>>>>>>         } else {
>>>>>>             return new JbiMessage();
>>>>>>         }
>>>>>>     }
>>>>>>
>>>>>>
>>>>>> However, now I get the following exception when a Fault is received as
>>>>>> a
>>>>>> response:
>>>>>>
>>>>>> 18:26:41,053 | ERROR - org.apache.camel.processor.Logger - Failed
>>>>>> delivery for exchangeId: ID-XXX-B624E47AF0/4562-1222189666671/0-147.
>>>>>> On
>>>>>> delivery attempt: 1 caught: java.lang.IllegalStateException: component
>>>>>> is not owner
>>>>>> java.lang.IllegalStateException: component is not owner
>>>>>>         at
>>>>>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.setMessage(MessageExchangeImpl.java:338)
>>>>>>         at
>>>>>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.setFault(MessageExchangeImpl.java:290)
>>>>>>         at
>>>>>> org.apache.servicemix.camel.JbiExchange.createMessage(JbiExchange.java:170)
>>>>>>         at
>>>>>> org.apache.servicemix.camel.JbiExchange.createFaultMessage(JbiExchange.java:158)
>>>>>>         at
>>>>>> org.apache.servicemix.camel.JbiExchange.createFaultMessage(JbiExchange.java:39)
>>>>>>         at
>>>>>> org.apache.camel.impl.DefaultExchange.getFault(DefaultExchange.java:251)
>>>>>>         at
>>>>>> org.apache.servicemix.camel.JbiExchange.getFault(JbiExchange.java:83)
>>>>>>         at
>>>>>> org.apache.servicemix.camel.JbiExchange.getFault(JbiExchange.java:39)
>>>>>>         at
>>>>>> org.apache.camel.impl.DefaultExchange.getFault(DefaultExchange.java:246)
>>>>>>         at
>>>>>> org.apache.servicemix.camel.JbiExchange.getFault(JbiExchange.java:78)
>>>>>>         at
>>>>>> org.apache.servicemix.camel.JbiExchange.getFault(JbiExchange.java:39)
>>>>>>         at
>>>>>> org.apache.servicemix.camel.ToJbiProcessor.process(ToJbiProcessor.java:98)
>>>>>>         at
>>>>>> org.apache.servicemix.camel.JbiEndpoint$1.process(JbiEndpoint.java:57)
>>>>>>         at
>>>>>> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43)
>>>>>>         at
>>>>>> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:75)
>>>>>>         .....................
>>>>>>
>>>>>>
>>>>>> Any suggestion as to why this is happening and how can I fix this bug,
>>>>>> which is really blocking our development?
>>>>>>
>>>>>> Thank you.
>>>>>>
>>>>>>
>>>>>>
>>>>>> raulvk.soa wrote:
>>>>>>>
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I have found the corresponding JIRA issue
>>>>>>> (https://issues.apache.org/activemq/browse/SM-1589), but it has minor
>>>>>>> priority.
>>>>>>>
>>>>>>> Honestly, I believe that the priority of this one should be very
>>>>>>> high,
>>>>>>> as it is preventing Camel and ServiceMix to interact correctly. In
>>>>>>> our
>>>>>>> scenario, we are have come across this bug and as far as I can
>>>>>>> imagine,
>>>>>>> there is really no workaround to this until it is fixed!
>>>>>>>
>>>>>>> Raul.
>>>>>>>
>>>>>>>
>>>>>>> Gert Vanthienen wrote:
>>>>>>>>
>>>>>>>> Garry,
>>>>>>>>
>>>>>>>> As far as I can see, you are absolutely right about this.  Could you
>>>>>>>> raise a JIRA issue for it, please?  Feel free to add a unit test and
>>>>>>>> a
>>>>>>>> patch off course, we welcome contributions ;)!
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Gert
>>>>>>>>
>>>>>>>> Garry wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> While doing fault handling with Camel, I've been getting an
>>>>>>>>> exception:
>>>>>>>>>
>>>>>>>>>   javax.jbi.messaging.MessagingException: Setting fault, but
>>>>>>>>> message
>>>>>>>>> is not
>>>>>>>>> a fault
>>>>>>>>>
>>>>>>>>> In my version of org.apache.servicemix.camel.JbiExchange, around
>>>>>>>>> line
>>>>>>>>> 153,
>>>>>>>>> method 'createFaultMessage' calls 'createMessage' with argument
>>>>>>>>> "fault."
>>>>>>>>> Method 'createMessage' might then create a normal - not fault -
>>>>>>>>> message and
>>>>>>>>> set it on the exchange as a FAULT which will, if I'm looking at it
>>>>>>>>> correctly,
>>>>>>>>> trigger the above exception. Does this make sense?
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks, Garry
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> -----
>>>>>>>> ---
>>>>>>>> Gert Vanthienen
>>>>>>>> http://www.anova.be
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Getting-Camel-fault-exception-tp19401580p19884604.html
>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> Cheers,
>> Guillaume Nodet
>> ------------------------
>> Blog: http://gnodet.blogspot.com/
>> ------------------------
>> Open Source SOA
>> http://open.iona.com
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/Getting-Camel-fault-exception-tp19401580p19886435.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://open.iona.com

Reply via email to