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

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

@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


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


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

Posted by "Raymond Feng (JIRA)" <tu...@ws.apache.org>.
     [ https://issues.apache.org/jira/browse/TUSCANY-2186?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Raymond Feng resolved TUSCANY-2186.
-----------------------------------

    Resolution: Fixed

Fixed under r644935. Thanks.

> @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


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

Posted by "Raymond Feng (JIRA)" <tu...@ws.apache.org>.
     [ 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


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

Posted by "Lou Amodeo (JIRA)" <tu...@ws.apache.org>.
    [ 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: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org