You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Raymond Feng (JIRA)" <tu...@ws.apache.org> on 2008/04/02 18:07:24 UTC

[jira] Assigned: (TUSCANY-2186) @OneWay over binding.ws arguments not being serialized properly

     [ https://issues.apache.org/jira/browse/TUSCANY-2186?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Raymond Feng reassigned TUSCANY-2186:
-------------------------------------

    Assignee: Raymond Feng

> @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: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org