[ 
https://issues.apache.org/jira/browse/TUSCANY-2186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12585074#action_12585074
 ] 

Lou Amodeo commented on TUSCANY-2186:
-------------------------------------

I found that changing the RuntimeWireImpl as follows  seems to fix the problem. 

org.apache.tuscany.sca.core.assembly.RuntimeWireImpl.java (around line 295)

chain.addInterceptor(Phase.SERVICE, new NonBlockingInterceptor(workScheduler));
 

> @OneWay over binding.ws arguments not being serialized properly
> ---------------------------------------------------------------
>
>                 Key: TUSCANY-2186
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-2186
>             Project: Tuscany
>          Issue Type: Bug
>            Reporter: Lou Amodeo
>            Assignee: Raymond Feng
>
> I am finding that @Oneway operations over binding.ws are not having method 
> arguments marshalled properly apparently due to a change in  the sequence of 
> interceptors. Previously the NonBlockingInterceptor was being added after the 
> DataTransformationInterceptor.  The data transformation needs to occur prior
> to the thread switch to the non-blocking interceptor to allow Axiom to 
> marshall  the message payload before the thread switch.  
> In the Tuscany revision level  I have R634808 the 
> DataBindingRuntimeWireProcessor does this:
>                 chain.addInterceptor(0, interceptor);
> In the past the index of 0 would have put the databinding interceptor at the 
> front of the interceptor chain, ahead of the NonBlockingInterceptor (which 
> has already been added at this point).  However in this Tuscany revision the 
> index is ignored and instead a new phase-based ordering mechanism is used.  
> The above call to addInterceptor obviously wasn't changed yet at this level 
> to replace the index with a phase.  It has been changed in the trunk and now 
> looks like this:
> String phase =
>     (wire.getSource().getContract() instanceof ComponentReference) ? 
> Phase.REFERENCE_INTERFACE
>         : Phase.SERVICE_INTERFACE;
> chain.addInterceptor(phase, interceptor);
> RuntimeWireImpl is doing this to add the NonBlockingInterceptor:
> chain.addInterceptor(Phase.SERVICE_BINDING, new 
> NonBlockingInterceptor(workScheduler));
> Here are the relevant phase definitions in PhaseManager:
>     private final static String[] SYSTEM_SERVICE_PHASES =
>         {Phase.SERVICE_BINDING, Phase.SERVICE_POLICY, 
> Phase.SERVICE_INTERFACE, Phase.SERVICE};
> I assume this is an ordered list, so this means the NonBlockingInterceptor 
> (phase SERVICE_BINDING) is before the DataBindingInterceptor (phase 
> SERVICE_INTERFACE), which is still opposite of what we want to solve this 
> problem.   
> Thanks for your help! 
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to