[ https://issues.apache.org/jira/browse/TUSCANY-1804?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Giorgio Zoppi resolved TUSCANY-1804. ------------------------------------ Resolution: Incomplete I have a patch for resolving agaisnt revision 586626, but I tried only against tuscany 1.0 so it needs an accurate review and if it breaks something. I still use sca 1.0 for my develop. > @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 > > > 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]