Hi,

    dorry, in my previous post it was
client.send(me);
     me.setStatus(ExchangeStatus.DONE);

Best Regards
Param



smx_user wrote:
> 
> Hello,
> 
>        Exception doesn't occur but doesn't help. If i do
> 
>      client.sendSync(me);
>      me.setStatus(ExchangeStatus.DONE);
> 
> then the call just exits from the processInOnly method of the actual
> endpoint, the control doesn't come till where the sendsync is sent to the
> other component.
> 
> Is there any problem if we use the same component context for the creation
> of ME and do a sendsync more than once in a flow is there any problem.
> What i feel is my first sendsync is still waiting, where in the same flow
> using the same context iam creating another exchange and doing a sendsync
> again, which is might be interrupting the waiting thread. 
> 
> Best Regards
> Param
> 
> 
> Gert Vanthienen wrote:
>> 
>> L.S.,
>> 
>> Could you try sending the DONE status for the original MessageExchange
>> with a send() instead of a sendSync()?  Also, could you verify that
>> all MEPs are finished correctly -- your code shows very few DONE
>> messages being sent but perhaps you just omitted them for brevity?
>> 
>> Gert Vanthienen
>> ------------------------
>> Open Source SOA: http://fusesource.com
>> Blog: http://gertvanthienen.blogspot.com/
>> 
>> 
>> 
>> 2009/3/23 smx_user <[email protected]>:
>>>
>>> Hello Gert,
>>>
>>>  Here is the main piece of code that i have.
>>>
>>> The test class code :
>>>
>>>  DefaultServiceMixClient client = new DefaultServiceMixClient(jbi);
>>>        InOnly me = client.createInOnlyExchange();
>>>
>>>        me.getInMessage().setProperty("property1", list);//List is filled
>>> with some data
>>>
>>>
>>>        me.setService(new QName("urn:test", "service"));
>>>
>>>        client.sendSync(me);
>>>
>>> //This is the code of actual endpoint
>>>    protected void processInOnly(MessageExchange exchange,
>>>            NormalizedMessage in) throws Exception {
>>>
>>>        if (in.getProperty("property1") != null) {
>>>
>>>            List dataList = (List) in
>>>                    .getProperty("property1");
>>>
>>>    }
>>>
>>>
>>> //This is sendSync part to the other component
>>>
>>> //context here is the component context
>>>        final InOut inOutexchange = context.getDeliveryChannel()
>>> .createExchangeFactory().createInOutExchange();
>>>
>>>       inOutexchange.setService(targetService);//targetService is
>>> constructed one
>>>
>>>        final NormalizedMessage inMessage =
>>> inOutexchange.createMessage();
>>>        inMessage.setProperty("inProperty",/*Some Object*/);
>>>        inOutexchange.setMessage(inMessage, "in");
>>>
>>>        context.getDeliveryChannel().sendSync(inOutexchange);
>>>
>>>        NormalizedMessage outResponse = inOutexchange.getOutMessage();
>>>
>>> and then work with out message to extract the required property.
>>>
>>> Exception happens when sendSync is called.
>>>
>>> //and this is the piece of code that i have in my testprovider end point
>>>    protected void processInOut(MessageExchange exchange,
>>>            NormalizedMessage in, NormalizedMessage out) throws Exception
>>> {
>>>        out.setProperty("property2",/* some constructed object*/);
>>>        exchange.setMessage(out, "out");
>>>
>>>    }
>>>
>>> The spring.xml doesn't have any problem as it is able to recognise
>>> mocked
>>> target service.
>>>
>>> Do see any problem here? Or if there any other way with which i can test
>>> my
>>> sendsync part plzz let me know.
>>>
>>> Best Regards
>>> Param
>>>
>>>
>>>
>>>
>>>
>>>
>>> Gert Vanthienen wrote:
>>>>
>>>> L.S.,
>>>>
>>>> The exception indicates that the thread that was waiting for the sync
>>>> exchange to come back somehow got interrupted.  In ServiceMix itself,
>>>> this will probably happen if you close the DeliveryChannel or the Flow
>>>> that is carrying the exchange.  Do you do anything like this in your
>>>> test code?  Or do you perhaps do any other thread manipulation in that
>>>> code yourself?
>>>>
>>>> If this doesn't help you solve the problem, we might be able to help
>>>> you better if you post the source code for the testing endpoint and/or
>>>> the spring XML file that configures the endpoints.
>>>>
>>>> Regards,
>>>>
>>>> Gert Vanthienen
>>>> ------------------------
>>>> Open Source SOA: http://fusesource.com
>>>> Blog: http://gertvanthienen.blogspot.com/
>>>>
>>>>
>>>>
>>>> 2009/3/23 smx_user <[email protected]>:
>>>>>
>>>>> Hello,
>>>>>
>>>>>         Iam facing the problem while doing a sendsync. A messaging
>>>>> exception(InterruptedException) is thrown with the following
>>>>> stacktrace
>>>>>
>>>>> javax.jbi.messaging.MessagingException: java.lang.InterruptedException
>>>>>        at
>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:508)
>>>>>        at
>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:442)
>>>>>        at
>>>>> org.apache.servicemix.common.EndpointDeliveryChannel.sendSync(EndpointDeliveryChannel.java:95)
>>>>>        at test.JbiMsgSender.dosendsync(JbiMsgSender.java:82)
>>>>>        at
>>>>> Caused by: java.lang.InterruptedException
>>>>>        at java.lang.Object.wait(Native Method)
>>>>>        at
>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.waitForExchange(DeliveryChannelImpl.java:709)
>>>>>        at
>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:472)
>>>>>        ... 10 more
>>>>>
>>>>> where JbiMsgSender is my test class.
>>>>>
>>>>> Just to give background, I have a component which contains 2 provider
>>>>> endpoints. Lets Name it
>>>>>
>>>>> ActualProviderEndpoint
>>>>> TestingProviderEndpoint
>>>>>
>>>>> Now Actualprovider endpoint is making sendsync call to the other
>>>>> component
>>>>> in the JBI environment for consuming some service. Now for the testing
>>>>> purpose of ActualProviderEndpoint, i have created the
>>>>> TestingProviderEndpoint in the same component . In the spring.xml i
>>>>>  have
>>>>> configured the targetservice to be TestingProviderEndpoint for
>>>>> ActualProviderEndpoint. I have created inout exchange and doing a
>>>>> sendSync.
>>>>> Now the exception is thrown @ waitForExchange  method in
>>>>> DeliveryChannelImpl.java:709.
>>>>>
>>>>> In actual JBI environment same code works, but only in the testing
>>>>> environement this exception is thrown.
>>>>>
>>>>> Any clue to resolve this error? If there is better way to test the
>>>>> provider
>>>>> endpoint consuming a service via spring framework plzz let me know
>>>>>
>>>>> Thanks in advance
>>>>> Param
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/Problem-With-SendSync---InterruptedException%28Test-environment%29-tp22657797p22657797.html
>>>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>
>>>>
>>>> -----
>>>> ---
>>>> Gert Vanthienen
>>>> http://gertvanthienen.blogspot.com
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Problem-With-SendSync---InterruptedException%28Test-environment%29-tp22657797p22663872.html
>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>
>>>
>> 
>> 
>> -----
>> ---
>> Gert Vanthienen
>> http://gertvanthienen.blogspot.com
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Problem-With-SendSync---InterruptedException%28Test-environment%29-tp22657797p22683431.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to