No ! I think the same mechanism works for the scenario you describe here as well by having the client pass an extra "session id" for each request it make. In other words, the client will use different session id for each different server it contacts.

Rgds, Ricky

At 10:23 AM 11/27/2002 -0800, Pae Choi wrote:
That would be a scenario only for the server that has one-to-one
relationship
with clients. Then if a client, e.g., a Web services browser, that needs to
access
multiple Web services with a same API, e,g., "Docment exchangeMessage() {}"
which is a higher API that makes the SOAP specific calls transparent, will
be
a totally different story.

In the second scenario, we do need to spawn a seperate thread so that the
caller is not locked to a one-to-one boundary unless we instantiate the
class
that contains the method that the caller is utilizing.


Pae



> As you see in my sample code, I think the right way is NOT to spawn a
> thread at the calling client, but have the server immediately return after
> buffering the request.  In fact, the thread is spawned at the server which
> take the request from the buffer to handle at a later time.
>
> At the same time, the callback address of ws1 is passed as an extra WSDL
> parameter to downstream services (w2, w3).  If you want to differentiate
> between different user session, then an extra "sessionId" parameter need
to
> be passed as well.
>
> Rgds, Ricky
>
>
> At 06:50 PM 11/27/2002 +1100, Trond Hjelmaas wrote:
> >Hi,
> >
> >thanks for your answers!
> >
> >I think I've made a mistake...
> >I actually don't need a return value from a web service, the reason is
> >that I want several web services (ws) to execute in a chain manner.
> >1 - Say that a client/user calls ws1, ws1 calls ws2 which calls ws3.
> >2 - I don't want ws1 to hang and wait for answer, but continue to
> >execute (fire and forget invocation)
> >3 - After ws3 is finished it will note ws1 (not by returning a value to
> >ws2 which returns value to ws1) but by calling ws1 directly
> >
> >..in short, every ws on the way will only send message forward to
> >another ws and don't return a reply (never look back)
> >
> >The 2  major issues are
> >-how to get ws1 to continue executing (using thread that waits for
> >reponse is not wanted, I want a peer2peer execution)
> >-in ws1 how to map the 'answer' from ws3 to the correct request (say ws1
> >has 100 users)
> >
> >This problem is hard to communicate with few words.
> >
> >Suggstions/views are appriciated!
> >
> >Thanx again!
> >
> >-----------------------------------
> >
> >I guess the behavior you observe is "implementation dependent".  The
> >SOAP
> >server you've used doesn't take advantage of the optimization
> >opportunity
> >where things can be execute in parallel.
> >
> >But you certainly can achieve what you want in the following ways ...
> >
> >public class AsyncService {
> >          static Buffer buffer = Buffer.getSingleton();
> >
> >          public String submitRequest(Request request) {
> >                  String trackerId = buffer.save(request); // save in
> >buffer
> >                  return trackerId;
> >          }
> >
> >          public Response pollForResponse(String trackerId) {
> >                  if (buffer.isResponseReady(trackerId)) {
> >                          return (buffer.getResponse(trackerId));
> >                  } else {
> >                          return (null);
> >                  }
> >          }
> >
> >          public void submitRequestWithCallback(Request request,
> >ICallback
> >callback) {
> >                  buffer.save(request, callback);
> >          }
> >}
> >
> >public class Execution extends Thread {
> >          public void run () {
> >                  Request request = buffer.takeRequest();
> >                  Response response = handle(request);
> >                  if (request.needsCallback()) {
> >                          ICallback callback =
> >buffer.getCallback(request.getTrackerId());
> >                          callback.sendResponse(response);
> >                  } else {
> >                          buffer.saveResponse(request.getTrackerId(),
> >response)
> >                  }
> >          }
> >}
> >
> >Rgds, Ricky
> >
> >At 02:29 PM 11/27/2002 +1100, Trond Hjelmaas wrote:
> > >Hi,
> > >
> > >I have a problem with finding relevant info regarding asynch Web
Services.
> > >
> > >
> > >For example, I've got this javaclass, all it does is wait 10 seconds
> > >
> > >public class delay{
> > >         public void wait10sec(){
> > >                 /*some code for 10 sec delay*/
> > >         }
> > >
> > >}
> > >
> > >it has WSDL like:
> > >......
> > >    <message name="wait10sec0Request"/>
> > >    <portType name="blahPortType">
> > >       <operation name="wait10sec">
> > >          <input name="wait10sec0Request"
message="tns:wait10sec0Request"/>
> > >       </operation>
> > >    </portType>
> > >    <binding name="blahBinding" type="tns:blahPortType">
> > >       <soap:binding style="rpc"
> > >                 transport="http://schemas.xmlsoap.org/soap/http"/>
> > >       <operation name="wait10sec">
> > >          <soap:operation soapAction="" style="rpc"/>
> > >          <input name="wait10sec0Request">
> > >             <soap:body use="encoded" namespace="blah"
> > >
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
> > >          </input>
> > >       </operation>
> > >    </binding>
> > >    <service name="blah">
> > >       <port name="blahPort" binding="tns:blahBinding">
> > >          <soap:address
> > >                 location="http://some_URTL:8888/blah_ctx/blah"/>
> > >       </port>
> > >    </service>
> > >
> > >NOTE: I have change WSDL to have no response, the original has reponse
> > >message listed, but is was empty.....
> > >
> > >According to some mail I read Web Services are async if they don't have
> > >any reponse method.
> > >
> > >I uploaded this and invoke the method using Oracle9ias (9.0.0.3), the
> > >invocation halts for 10 seconds, and does NOT return ASAP (which is
what I
> > >need).
> > >
> > >Any suggestions about how to make asynch Web Services are very
> > >appreciated!
> > >
> > >Regards, Trond
>



Reply via email to