Hi Giorgio Am just applying your patch to make repeated @OneWay invocations work to the tunk and it's looking good as I'm getting a clean build and the new onway itest now runs. (Am just updating your workpool demo to trunk level as well - more in this later) In the mean time I'm interested in understanding what was actually going wrong with the axis binding. Looking at the changes you made there are two main things.
First, setting UseSeparateListener and AUTO_RELEASE_CONNECTION on the operation client Second, creating an HTTPClient if one doesn't already exist, So, looking at this, it seems that Axis2 was not cleaning up connections properly after a request and that the default HTTP client was not configured correctly.. Did you specifically observe what was going on under the covers to cause the problem? Regards Simon On 11/1/07, Simon Laws (JIRA) <[email protected]> wrote: > > > [ > https://issues.apache.org/jira/browse/TUSCANY-1804?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel] > > Simon Laws reassigned TUSCANY-1804: > ----------------------------------- > > Assignee: Simon Laws > > > @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 > > Assignee: Simon Laws > > 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: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >
