[ 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]