You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Giorgio Zoppi (JIRA)" <tu...@ws.apache.org> on 2007/10/20 00:14:50 UTC

[jira] Updated: (TUSCANY-1804) @OneWay repeted invocations doesn't work in web service binding

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

Giorgio Zoppi updated TUSCANY-1804:
-----------------------------------

    Attachment: patch.diff

This  the patch which it needs to be reviewed.

> @OneWay repeted invocations doesn't work in web service binding
> ---------------------------------------------------------------
>
>                 Key: TUSCANY-1804
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-1804
>             Project: Tuscany
>          Issue Type: Bug
>    Affects Versions: Java-SCA-0.99
>         Environment: Eclipse/JDK 1.5 / Ubuntu Linux 7.04
>            Reporter: Giorgio Zoppi
>             Fix For: Java-SCA-1.0.1
>
>         Attachments: patch.diff
>
>
> i've found the bug that it doens't permit myself to use SCA Binding over
> WebService modifying the distributed-calculator. I found it (on Tuscany
> 1.0 rc3) following the chain towards the wire, and i discovered that
> it's an Axis Fault. If you modify in your distributed calculator sample
> the SubtractionService in the following way:
> @Remotable
> public interface SubtractService {
>    @OneWay
>    void subtract(double n1, double n2);
> }
> public class SubtractServiceImpl implements SubtractService {
>    public void subtract(double n1, double n2) {
>        System.out.println("SubtractService - subtract " + n1 + " and "
> + n2);
>        //return n1 - n2;
>    }
> }
> I know that it doesn't nothing...but it's a proof of concept.
> And in the calculator node:
>  for (int k = 0; k < 10; ++k)
>                    calculatorService.subtract(2*k+3, k);
> The nodeC with current Axis2OneWayBindingInvoker, even if it's called 10
> times..the receiver gets two messages..
> So in the nodeC terminal you can see only for example:
> [java] SubtractService - subtract 15.0 and 6.0
> [java] SubtractService - subtract 17.0 and 7.0
> The reason is due to the Axis HTTP REUSE:
> If you change in Axis2OneWayBindingInvoker
>  requestMC.getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT,
> Boolean.TRUE);
> to:
>  requestMC.getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT,
> Boolean.FALSE);
> It works! I suspect that there's a bug or a queue full in Axis because
> it seems that if you send something too fast it doesn't work (I'll see
> it tomorrow, because I don't know how the http client reuse works in Axis).
> The next test, I'll do it :
> for (int k = 0; k < 50; ++k)
>                    calculatorService.subtract(2*k+3, k);
> It seems to work, but in a strange way.
> During the debugging i discovered your nice structure in order to invoke
> methods over ws.
> Mainly for the Remote SCA over Web Services your structure has the
> following stages (correct me if i'm wrong):
> 1) JDKInvocationHandler, where you proxies the method call, create the
> message, set the source, the target and the operation. Here still you do
> some sort of initialization for handling callback.
> 2) DataTrasformationInterceptor, where you create the soap body of the
> message given the operation and parameters, for example:
> <_ns_:add
> xmlns:_ns_="http://calculator/xsd"><_ns_:param0>3.0</_ns_:param0><_ns_:p
> aram1>2.0</_ns_:param1></_ns_:add>
> 3) NonblockingInterceptor, where Tuscany schedules invocation in a
> workpool (here with jdk 1.5 , you could remove dependency from commonj
> package)
> 4) At time of scheduling, the next invoker is Axis2SCABindingInvoker,
> which it's a wrapper for Axis2BindingInvoker if the invocation is
> Request-response or for the Axis2BindingInvoker's child
> (Axis2OneWayBindingInvoker) if the invocation is OneWay. In
> Axis2*BindingInvoker you create the soap envelope,  the Axis's
> OperationClient, set the axis invocation options and Axis's
> MessageContext and the you send all the stuff on the wire.

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