Return-Path: Delivered-To: apmail-xml-axis-dev-archive@xml.apache.org Received: (qmail 2810 invoked by uid 500); 6 Sep 2002 23:36:46 -0000 Mailing-List: contact axis-dev-help@xml.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@xml.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@xml.apache.org Received: (qmail 2793 invoked from network); 6 Sep 2002 23:36:46 -0000 In-Reply-To: <01ef01c255ef$b8fb5920$1219570f@ranier> To: axis-dev@xml.apache.org Subject: [Vote] Re: Asynchronous Transport in Apache Axis, JMS and beyond MIME-Version: 1.0 Sensitivity: X-Mailer: Lotus Notes Build V60_M14_08012002 Release Candidate August 01, 2002 Message-ID: From: "James M Snell" Date: Fri, 6 Sep 2002 17:36:49 -0600 X-MIMETrack: S/MIME Sign by Notes Client on James M Snell/Fresno/IBM(Build V60_M14_08012002 Release Candidate|August 01, 2002) at 09/06/2002 04:36:50 PM, Serialize by Notes Client on James M Snell/Fresno/IBM(Build V60_M14_08012002 Release Candidate|August 01, 2002) at 09/06/2002 04:36:50 PM, Serialize complete at 09/06/2002 04:36:50 PM, S/MIME Sign failed at 09/06/2002 04:36:50 PM: The cryptographic key was not found, Serialize by Router on D03NM035/03/M/IBM(Release 5.0.10 |March 22, 2002) at 09/06/2002 05:36:51 PM, Serialize complete at 09/06/2002 05:36:51 PM Content-Type: text/plain; charset="US-ASCII" X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N I like the basic approach and have a proposal. For the Axis 1.0 release, I'd like to introduce my initial prototype (with it's several flaws) as a "Preview". Not perfect, but better than what's currently available and functional. I just ran through all of the functional tests and everything checks out. The code works, the tests work, etc etc. Then, for post 1.0, we can work on a more fully fleshed out approach that brings together the various ideas that have been discussed in this thread (specifically, those put forth by the Sonic folks, Alek and Steve). Please vote -1 or +1 . - James Snell IBM Emerging Technologies jasnell@us.ibm.com (559) 587-1233 (office) (700) 544-9035 (t/l) Programming Web Services With SOAP O'Reilly & Associates, ISBN 0596000952 Have I not commanded you? Be strong and courageous. Do not be terrified, do not be discouraged, for the Lord your God will be with you whereever you go. - Joshua 1:9 "Steve Loughran" wrote on 09/06/2002 02:52:38 PM: > ----- Original Message ----- > From: "Aleksander Slominski" > > java.nio is much more lower level than what i was thinking about > > (it can be useful to implement efficient web services server but > > i do not think it is currently under consideration in AXIS ...). > yeah, it'd be slick if tomcat picked it up. There is always axis client side > transport to consider tho'... > > instead i wanted something that is _like_ select but to > > track asynchronous responses, here is how it could work: > > > > // create select() capable object > > AsyncCallController selector = service.createAsyncCallController(); > > > > // start first async call > > Call call1 = (Call) service.createCall(); > > call1.setProperty(AsyncCall.ASYNC_CALL_PROPERTY, new Boolean(true)); > > call1.setTargetEndpointAddress( new java.net.URL(endpoint1) ); > > call1.setOperationName( new QName("namespace", "getQuote")); > > call1.setProperty(AsyncCall.ASYNC_CALL_SELECTOR, selector) > > call1.invoke( new Object[] { "IBM" } ); > > > > // start second async call > > Call call2 = (Call) service.createCall(); > > call2.setProperty(AsyncCall.ASYNC_CALL_PROPERTY, new Boolean(true)); > > call2.setTargetEndpointAddress( new java.net.URL(endpoint2) ); > > call2.setOperationName( new QName("namespace", "doFoo")); > > call2.setProperty(AsyncCall.ASYNC_CALL_SELECTOR, selector) > > call2.invoke( new Object[] { "IBM" } ); > > > > // now let wait for first response from call1 or call2 > > while(selector.hasOutstandingCalls()) { > > try { > > Call call = selector.waitForAsyncreponse(1000); > > if(call == call1) { > > // this is reposnse for call1 > > System.out.println("this is reponse for call1 > "+call.getReturnValue()); > > } else if(call == call2) { > > System.out.println("this is reponse for call2 > "+call.getReturnValue()); > > } > > } > > } catch(InterruptedException ex) { > > } > > } > > System.out.println("done!"); > > > > i think that this would allow user code to create N asynchronous > > requests and efficiently wait and process async responses. > That would work.