`a2) Patent Application Publication co Pub. No.: US 2004/0143645 Al
`
` Cheenath (43) Pub. Date: Jul. 22, 2004
`
`
`US 20040143645A1
`
`(54) ASYNCHRONOUS WEB SERVICE
`INVOCATION MODEL
`
`(52) US. C1). ieeessessss crs seesessnesecessenessneees 709/218
`
`(76)
`
`Inventor: Manoj Cheenath, Alameda, CA (US)
`Correspondence Address:
`Sheldan R. Mever. Es ,
`FLIESLER DUBE MEYER & LOVEJOY LLP
`Fourth Floor
`Four Embarcadero Center
`San Francisco, CA 94111-4156 (US)
`’
`.
`.
`=
`(21) Appl. No.:
`10/348,515
`(22) Filed:
`Jan.21, 2003
`°
`Publication Classification
`
`(SL) Tite CU? ieceecccecccsssseceeteeccesssesssssstneseeseeeee GO6F 15/16
`
`ABSTRACT
`(57)
`Asystem and method for asynchronously invoking a remote
`web service on a server by application code residing on a
`client. The web service invoke request received from appli-
`cation code residing on the client, passes an invoke request
`to a web service residing on a server, receives a result from
`the web service, the result relating to the invoke request
`passcd by the clicnt, and transmits the result to the appli-
`calion code. Once the invoke request is passed to the web
`service by the client, the application codeis freed to perform
`other tasks. The result may be transmitted to the application
`code from the client as part of a call back object passed to
`the client by the application code, as a result of application
`code polling of the client, or by the application code ending
`the task generated bythe client.
`
`a
`Cstart) 305
`_
`iy
`Application Code
`Invokes Web
`
`Service, Passes
`Call Back
`
`
`
`
`
`
`
`|
`dn a i)
`
`KaRoio
`
`330
`
`qaconio
`
`Ko(op)io
`
`Client Passes|
`Request to Web
`
`Service
`
`'
`Web Service
`Recieves and
`Processes
`
`Request
`
`WebService
`Transmits Results
`to Client
`
`
`
`Client Receives
`Result, Calls Back
`
`Application Code
`
`
`
`
`
`Application Code
`Receives Call
`Back, Obtains
`Result
`
`Cond) 905
`
`Booking, Exh. 1042, Page 1
`
`Booking, Exh. 1042, Page 1
`
`
`
`Patent Application Publication
`
`Jul. 22,2004 Sheet 1 of 5
`
`US 2004/0143645 Al
`
`
`
`Processor
`
`|
`
`121
`
`Application |
`
`
`
`
`
`
`
`
`
`Client Web
`Service
`Application
`
`
`
`-
`
`on
`
`— RO [o?)
`
`
`
`Booking, Exh. 1042, Page 2
`
`Booking, Exh. 1042, Page 2
`
`
`
`Patent Application Publication Jul. 22,2004 Sheet 2 of 5
`
`US 2004/0143645 Al
`
`
`
`NONO So
`
`NO
`
`io
`
`
` NO — So
`Application Code
`Requests Web
`
`
`Service
`
`Client Invokes
`
`
`Web Service on
`
`Server
`
`
`Web Service
`Receives and
`
`
`
`
`Processes
`
`
`Request
`
`
`
`Web Service
`
`
`Transmits Results
`
`to Client
`
`240No Client Receives
`
`
` NOo>io
`
`
`
`
`
`
`
`NO
`
`Co
`
`Results
`
`|
`
`Client Provides
`
`Results to
`
`Application Code
`
`
`
`FIG. 2. Prior Art
`
`Booking, Exh. 1042, Page 3
`
`Booking, Exh. 1042, Page 3
`
`
`
`Patent Application Publication Jul. 22,2004 Sheet 3 of 5
`
`US 2004/0143645 Al
`
`GoOo On|
` w = co|
`
`
`
`Application Code
`Invokes Web
`
`Service, Passes
`
`
`Call Back
`
`
`
`Client Passes
`Service
`Request to Web|3209
`
`
`
`
`Web Service
`
`Recieves and
`
`Processes
`
`Request
`
`
`Web Sernice
`
`Transmits Results
`
`
`to Client
`
`
`
`
`
`
`
`
`
`Client Receives
`
`Result, Calls Back
`_Application Code
`
`
`
`
`
`
`
`
`Application Code
`Receives Call
`Back, Obtains
`Result
`
`Kn>io
`
`Booking, Exh. 1042, Page 4
`
`Booking, Exh. 1042, Page 4
`
`
`
`Patent Application Publication Jul. 22,2004 Sheet 4 of 5
`
`US 2004/0143645 Al
`
`
`
`start_) 405
`
`Application Code
`Invokes Web
`Service
`
`> — joo}
`
`& iO
`
`
`
`
`Client Passes
`
`
`Request to Web
`
`
`Service, Frees
`Application Code
`Request
`
`
`
`Web Service
`
`
`Receives and
`Processes
`
`Request
`
`
`
`
`Web Service
`Transmits Results
`
`to Client
`
`
`
`
`
`Application Codé
`Polls Client-
`
`esult Received?
`
`Application Code
`Obtains Result
`
`Booking, Exh. 1042, Page 5
`
`Booking, Exh. 1042, Page 5
`
`
`
`Patent Application Publication Jul. 22,2004 Sheet 5 of 5
`
`US 2004/0143645 Al
`
`
`
`
`
`Application Code
`Invokes Web
`
`
`Service
`
`
`
`
`
`Client Passes
`Request to Web
`
`Service
`
` Web Service
`Receives and
`Processes
`Request
`
`
`
`Web Service
`
`Transmits Results
`to Client
`
`Client Receives
`Results
`
` Application Code
`
`
`Performs Other
`
`
`
`Tasks
`
`
`
`
`
`
`|
`an oes io
`
`cnRO iO
`
`|
`awooO
`
`540
`
`Application Code
`calls End
`
`Application Code
`
`
`
`
`
`
`Obtains Result
`
`
`
`Booking, Exh. 1042, Page 6
`
`Booking, Exh. 1042, Page 6
`
`
`
`US 2004/0143645 Al
`
`Jul. 22, 2004
`
`ASYNCHRONOUS WEB SERVICE INVOCATION
`MODEL
`
`COPYRIGHT NOTICE
`
`[0001] A portion of the disclosure of this patent document
`contains material which is subject to copyright protection.
`The copyright owner has no objection to the facsimile
`reproduction by anyoneof the patent documentorthe patent
`disclosure, as it appears in the Patent and Trademark Office
`patent file or records, but otherwise reserves all copyright
`rights whatsoever.
`
`FIELD OF THE INVENTION
`
`‘The current invention relates generally to remote
`[0002]
`web services, and more particularly to asynchronously
`invoking a remote web service.
`
`BACKGROUND OF THE INVENTION
`
`Java standards for web services are constantly
`[0003]
`being developed. Concurrently, businesses are building
`important applications on top of web services infrastruc-
`tures, such as that available in WebLogic Server from BEA
`Systems of San Jose, Calif. As these applications evolve,
`they become more complex with more operations to per-
`form.
`
`[0004] A-system illustrating a client-server system is illus-
`trated in FIG. 1. A typical web service 135 residing on a
`server 130 maybe accessed by a client 120. The client may
`be implemented as a stand alone machine that communicates
`with the server over a physical connection or a logically
`implemented client that resides on the same machine as the
`server. If implemented on a stand alone machine, the clicnt
`includes a processor 121, RAM 122, input means 123 and
`output means 124. In either embodiment,
`the client
`is
`configured to include vendor-addedapplication code 125 as
`well as standard JAVA objects such as client web service
`applications 126 such as client web service Runtime. The
`server 130 includes a web service 135. A user may invoke
`the web service 135 through the client 120.
`
`[0005] FIG.2 illustrates a method 200 for invoking a web
`service in accordance with one embodimentof the present
`invention. Operation of method 200 begins with start step
`205. Application code requests a web service at step 210. In
`one embodiment, application code residing within the client
`initiates a call to the client’s runtime routine to request a web
`service residing on a server. This may be initiated by a user
`or other code within the client. Next, the client invokes the
`webservice on the server in step 220. The invocation request
`initiates the generation of an application thread by runtime
`in which the request is carried out. The server receives the
`request and processes the request at step 230. Next,
`the
`server returns a result to the client at step 240. The client
`receives the result in step 250 and provides the application
`code with the result at step 260. The thread is then complete
`and operation of method 200 then endsal step 265. Through-
`out steps 220-260, the synchronized operation initiated by
`the application code is performed within a single thread.
`Thus, the synchronized operation involves the application
`code waiting for a response from the client before perform-
`ing other tasks. Thus, the thread is blocked until the web
`service invoke is complete. An Enterprise Java Bean (EJB)
`does not allow application code to create new threads. As a
`
`result, the method currently used by client server systems to
`process user requests is slow and inefficient.
`
`[0006] Whatis needed is a web service invocation model
`that allows a user to perform other tasks while a requestis
`being processed.
`
`SUMMARYOF THE INVENTION
`
`invention provides asynchronous
`[0007] The present
`remote web service invocation. Asystem in accordance with
`one embodiment of the present invention includes a client
`and a remote server. Invocation of a web service on the
`server bythe client is initiated from an application thread.
`This application thread is then freed by the client web
`service runtime to allow the application to process other
`tasks while the web service is invoked. In one embodiment,
`asynchronous webservice invocation for a system in Java is
`implemented by freeing the thread used by the application to
`invoke the webservice. (ok to remove?) Oncethefirst thread
`is free, the application code may perform other tasks while
`the second thread carries out the web service invocation.
`Results from the invoked remote webservice are transmitted
`to the client.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0008] FIG. 1 is an illustration of a system for providing
`access to a remote web service bya user in accordance with
`one embodiment of the present invention.
`
`[0009] FIG.2 is anillustration of a prior art method for
`providing synchronousinvocation of a remote web service.
`
`(0010] FIG.3 is an illustration of a method for providing
`asynchronous invocation of a remote web service using, a
`callback technique in accordance with one embodiment of
`the present invention.
`
`(0011] FIG.4 is an illustration of a method for providing
`asynchronous invocation of a remote web service using a
`polling technique in accordance with onc embodimentof the
`present invention.
`
`[0012] FIG. 5 is an illustration of a method for providing
`asynchronous invocation of a remote web service using a
`delayed end call technique in accordance with one embodi-
`ment of the present invention.
`
`DETAILED DESCRIPTION
`
`invention provides asynchronous
`[0013] The present
`remote web service invocation. A system in accordance with
`one embodiment of the present invention includes a client
`and a remote server. Invocation of a web service on the
`server by the client
`initiates an application thread. The
`application initiated thread is used to access the web service.
`The user generated thread is then freed to allow the appli-
`cation to process other tasks while the web service is
`invoked. In onc cmbodiment, asynchronous web scrvicc
`invocation for a system in Java is implemented by freeing
`the thread initiated by the application to invoke the web
`service. In one embodiment, the client web service run time
`frees the first thread and uses a secondthread to carry out the
`web service invocation. Once the first thread is free, the
`application code may perform other tasks while the second
`thread carries out the web service invocation. Results from
`the invoked remote web service are transmitted to the client.
`
`Booking, Exh. 1042, Page 7
`
`Booking, Exh. 1042, Page 7
`
`
`
`US 2004/0143645 Al
`
`Jul. 22, 2004
`
`[0014] A method 300 for providing asynchronous invoca-
`tion of a remote web service using a call back technique in
`accordance with one embodimentof the present invention is
`illustrated in FIG. 3. Operation of method 300 begins with
`start step 305. Application code invokes a web service and
`passesa call back parameterto the client in step 310. During
`the invocation of the web service by the application code,
`the client web service Runtime Routine generates a first
`thread to carry out the invocation. The application code may
`be located on a stand alone client machine or implemented
`logically as discussed above in reference to FIG. 1. In one
`embodiment, the application code creates an async context
`and passes a call back object to the client as part of asynch
`context creation. The asyne context may contain informa-
`tion. A start method call made subsequently by the client
`mayinclude the asynchronous context (AC) and arguments.
`
`In step 320, the client passes a request to the web
`[0015]
`service. In one embodiment, passing a request to the web-
`service includes invoking an operation to access the remote
`web service by generating a second thread while the first
`application thread is freed. Freeing the first application
`thread allows the user to process other tasks instead of
`waiting to receive the result from the web service invoca-
`tion. In one embodiment, a call is made to the asynInvoke
`method on the client stub. The operation then sends a
`message to a clicnt dispatcher located on the client. The
`client dispatcher then creates a FutureResult object,
`the
`object
`to be sent back to the user, creates a task, and
`schedules this task to the thread pool. The created task
`includes sending a request to the web service and receiving
`a result from the web service. Scheduling a task to the thread
`pool allows a second thread to handle execution of the task.
`The task is then executed by calling a method of the web
`service. The second thread processes the call that invokes
`the task. The task uses a protocol binding to transmit the task
`request data over a network to a web service for processing.
`
`[0016] The Web service located on the server receives and
`processes the request at step 330. Processing the request
`includes invoking the requested web service and obtaining a
`result. The server will use the parameters passed by the
`chent, if any, to obtain a result from the web service. Once
`the remote method of the web service has been invoked and
`a result is generated, the result is transmitted by the web
`service backto the client at step 340. In one embodiment, the
`result is received by the protocol binding. The task then sets
`the future result value to the value of the result received from
`the web service.
`
`[0017] The client receives the result and invokes a call
`back to the application code at step 350. In one embodiment,
`the call back indicates the result is available at the client for
`
`the application code to access. In one embodiment, this
`includes the web service client runtimeinitiating the context
`to notify anylistening entities.
`
`[0018] The application code receives the call back and
`obtains the result
`from the client at step 360.
`In one
`embodiment, the application code accesses the web service
`client runtime andretrieves stored F'utureResult value.In yet
`another embodiment, the client invokes the client stub. The
`client stub then retrieves the future result from the client and
`
`provides the application code with the result. Operation of
`method 300 then ends at step 355.
`
`[0019] An example of application code that may be used
`to implement the method of FIG. 3 along with client code
`(not shown) is shown below.
`
`public class Main{
`public void test () throws Exception{
`SimpleTest echoService = new SimpleTest_Impl ( );
`SimpleTestSoap echoPort = echoService.getSimpleTestSoap ();
`{/ /eallback style
`WSContext wsContext = new WSContext();
`wsContext.setResultListener( new ResultListener () {
`public void onCompletion ( InvokeCompletedEvent event ) {
`SimpleTesiSoap source = (SimpleTestSoap)
`event.getSource (
`
`%
`
`try
`
`String result = source.endEchoString(
`event. getFutureResult ( ) );
`weblogic.utils.Debug.say ( Acallback result: @ +
`
`result );
`
`gotCallback = true;
`}eatch ( RemoteException e ) {
`e.printStackTrace ( System.out);
`
`}
`
`echoPort.startEchoString ( A94501”, wsContext );
`
`In another embodimentof the present invention, a
`[0020]
`polling technique may be used to asynchronously invoke a
`remote web service. A method 400 for providing asynchro-
`nous invocation of a remote web service using a polling
`technique in accordance with one embodimentof the present
`invention is illustrated in FIG. 4. Operation of method 400
`begins with start step 405. Application code invokes a web
`service in step 410. In one embodiment, application code
`invokesa call to remote method of a remote webservice in
`step 410. In contrast to the call back technique of method
`300 in FIG.3, no call back is passed with the remote method
`call. As in method 300,
`the web service client runtime
`generates a thread upon the invocation request by the
`application code. The web service invocation maybe initi-
`ated by a user action at a console, on a graphical user
`interface, or by application code. The application code may
`be located on a remote or logically implemented client. In
`one embodiment,
`the application code creates an async
`context and calls a start method. The start method call may
`include the asynchronous context (AC) and arguments.
`
`[0021] Next, the client calls a remote method of the web
`service and passes the request to the web service in step 420.
`In this embodiment, the client invokes an operation using a
`second thread while freeing the first thread associated with
`the application code. Freeing thefirst thread allows the user
`to process other tasks instead of waiting to receive the result
`from the web service invocation. In one embodiment, calling
`a remote method includes calling an asynInvoke operation
`on the clicnt stub. The operation then scnds a message to a
`client dispatcher located on the client. The client dispatcher
`then creates a FutureResult object, the value to be sent back
`to the user, creates a task, and schedules this task to the
`thread pool. The created task includes sending a request to
`the web service and receiving the result of the remote
`method from the web service. Scheduling a task to the thread
`pool allows a second thread to handle execution ofthe task.
`The task is then executed using an execute call. The second
`
`Booking, Exh. 1042, Page 8
`
`Booking, Exh. 1042, Page 8
`
`
`
`US 2004/0143645 Al
`
`Jul. 22, 2004
`
`thread processes the execute commandthat invokesthe task.
`The task uses a protocol binding to send the result back to
`the client. The binding issued to transmit the task over a
`network to a web service for processing.
`
`[0022] The server receives and processes the request to
`obtain a result at step 430. After the server obtains a result,
`the server sendsthe result to the client, as shown in step 440.
`In onc cmbodiment,
`the result is reccived by the clicnt
`binding. The task then sets a future result object with the
`value received from the web service. The application code
`then polls the client Runtime to determine if the client has
`received a result from the server in step 450. If the client
`indicates it has not received a result from the server, opera-
`tion loops back to step 450 where the application code
`continues to poll the client. In one embodiment, the user will
`poll the client at some intervalof time after the previouspoll.
`If the client indicates it has received a result from the server,
`operation continues to step 460. In step 460, the user obtains
`the result from the clicnt runtime Opcration of mcthod 400
`then ends at step 465. In another embodiment, the poll of
`step 460 occurs at some other point during operation of
`method 400 than after step 450. For example, the polling
`step may occur immediately after the client passes the
`request to the web service.
`
`an operation to access the remote web service in step 520.
`In this embodiment, the client invokes an operation using a
`second thread and passes arguments needed to invoke the
`webservice.he arguments may have been generated from
`the application code or the clicnt itself. Invoking an opera-
`tion may include the client stub calling an asynInvoke
`operation. The operation then sends a message to a client
`dispatcher located on the client. The client dispatcher then
`creates a FutureResult value, the value to be sent back to the
`application code, creates a task, and schedules the task to the
`thread pool. The created task includes sending a request to
`the web service and receiving a result from the web service.
`Scheduling a task to the thread pool allows a second thread
`to handle execution of the task. The task is then executed
`
`using an execute command. ‘he second thread processesthe
`execute commandthat invokesthe task. The task is then sent
`to the client binding. The binding sends the task over a
`network to a web service for processing.
`
`to the web
`[0026] After the client passes the request
`service in step 520, the application code may perform other
`tasks at step 530. These other tasks will
`include tasks
`performedbythe application code that do not requirea result
`from the invoked web service. Thoughlisted as step 530 in
`method 500 of FIG. 5, the other tasks may be performed at
`any time after the start call is made in step 510 and the end
`call is made in step 570.
`
`[0023] An example of application code that may be used
`to implement the method of FIG. 4 is shown below.
`[0027] After the application code has madeastart call, the
`webservice located on the server receives and processes the
`request in step 540. Processing the request includes gener-
`ating a result from the web service. The web service then
`transmits the result to the client in step 550. he client
`receivesthe result in step 560. In one embodiment, the result
`is received by the binding. The task created earlier then sets
`FutureResult to the value of the result received from the web
`service.
`
`public class Main{
`public void lest () throws Exception{
`SimplcTest cchoScrvice = new SimplcTest_Impl();
`SimpleTestSoap echoPort = echoService.getSimpleTestSoap ( );
`{ / /async poll style
`FutureResult futureResult = echoPort.startEchoString( A94501”,
`null );
`while ( !futureResult.isCompleted () ) {
`weblogic.utils.Debug.say ( Aasynepolling ...@ );
`// other tasks performed by the application code here. .
`
`String result = echoPort.endEchoString ( futureResult );
`weblogic.utils.Debug.say ( Apoll result: @ + result ),
`
`w
`
`In another embodimentof the present invention, a
`[0024]
`delayed end call technique may be used to asynchronously
`invoke a remote web service. In this embodiment, an end
`method may be called to obtain the result from an asyn-
`chronous invocation. A method 500 for providing asynchro-
`nous invocation of a remote web service using a static end
`technique in accordance with one embodimentof the present
`invention is illustrated in FIG. 5. Operation of method 500
`begins with start step 505. Application code invokes a
`remote web service in stcp 510. As in methods 300 and 400,
`the invocation request by the application code requires the
`generation ofa first thread to process the request. The web
`service invocation may be initiated by a user action at a
`console, on a graphical user interface, or by application
`code. The application code may be located on the client
`computer or on some other system or machine.
`In one
`embodiment, the application code creates an async context
`and calls a start method. The start method call may include
`the asynchronous context (AC) and arguments.
`
`to the web
`the client passes the request
`[0025] Next,
`service in step 520. In one embodiment, the client invokes
`
`[0028] Atsomepoint before the application code requires
`the result, the application code will invoke endXXX(_) to
`endthe first thread, as shown in step 570. The end call serves
`to end the first thread. In step 580, the application code
`obtains the FutureResult
`from the client. Operation of
`method 500 then endsat step 585. An example of user code
`that may be used to implement the mcthod of FIG. 5 is
`shown below.
`
`public void test () throws Exception{
`SimpleTest echoService = new SimpleTest_Impl( );
`SimpleTestSoap echoPort = echoService.getSimpleTestSoap ();
`{/ / syne invoke using asyncstyle
`FutureResult futureResult = echoPort.startEchoString ( A94501”,
`null )=
`// other tasks performed by the application code here.
`String resull = echoPorl.endEchoString ( fulureResull );
`woblogic.utils.Debug.say ( Asyne result:@ + result );
`
`.
`
`.
`
`In one embodimentof the invention, the systems
`[0029]
`illustrated in FIGS. 3, 4 and 5 may be a request-response
`service. In a request-response service,
`the client sends a
`request to a server and receives a response from the server
`over the same socket connection. In another embodimentof
`
`the present invention, a server may send the result back to
`the client on a second socket connectionthat differs from the
`
`Booking, Exh. 1042, Page 9
`
`Booking, Exh. 1042, Page 9
`
`
`
`US 2004/0143645 Al
`
`Jul. 22, 2004
`
`line the request was received on by the server. In this
`embodiment, the thread driving the request is free when the
`client sends the request to the server. Once the request is
`processed and a result is obtained by the server, the server
`uses a new thread to drive the transmittal of the result back
`to the client. Since the first thread is freed whenthe client
`sends the request, the user is free to process other tasks. The
`user is not restricted from doing other tasks while waiting to
`receive the result from the web service. The systemsillus-
`trated in FIGS. 3, 4 and 5 maybe used to implement a
`system with a server having two one-way transmissions.
`
`In one embodimentof the present invention, asyn-
`[0030]
`chronous web service invocation is enabled when an
`
`attribute generateAsyncMethods in clientgen task is set to
`true. This will generate a client stub with asynchronous web
`invocation methods that start and stop the asynchronized
`invocation.
`
`invention provides asynchronous
`[0031] The present
`remote web service invocation. Asystem in accordance with
`one embodiment of the present invention includes a client
`and a remote server. Invocation of a web service on the
`server by the client
`initiates an application thread. The
`application initiated thread to access the web service. The
`user generated thread is then freed to allow the application
`to process other tasks while the web service is invoked. In
`one embodiment, asynchronous web service invocation for
`a system in Java is implemented by freeing the thread
`initiated by the application to invoke the web service. In one
`embodiment, the client web service run time frees the first
`thread and uses a second thread to carry out the web service
`invocation. Oncethe first thread is free, the application code
`may perform other tasks while the second thread carries out
`the web service invocation. Results fromthe invoked remote
`webservice are transmitted to the client.
`
`[0032] Other features, aspects and objects of the invention
`can be obtained from a reviewofthe figures and the claims.
`It is to be understood that other embodiments of the inven-
`
`tion can be developed and fall within the spirit and scope of
`the invention and claims.
`
`[0033] The foregoing description of preferred embodi-
`ments of the present invention has been provided for the
`purposesofillustration and description. It is not intended to
`be exhaustive or to limit the invention to the precise forms
`disclosed. Obviously, many modifications and variations
`will be apparent to the practitioner skilled in the art. The
`embodiments were chosen and described in order to best
`
`explain the principles of the invention and its practical
`application,
`thereby enabling others skilled in the art
`to
`understand the invention for various embodiments and with
`various modifications that are suited to the particular use
`contemplated. It is intended that the scope of the invention
`be defined by the following claims and their equivalence.
`
`In addition to an embodiment consisting of spe-
`[0034]
`cifically designed integrated circuits or other electronics, the
`present invention may be conveniently implemented using a
`conventional general purpose or a specialized digital com-
`puter or microprocessor programmedaccordingto the teach-
`ings of the present disclosurc, as will be apparent to those
`skilled in the computerart.
`
`[0035] Appropriate software coding can readily be pre-
`pared by skilled programmers based onthe teachings ofthe
`
`present disclosure, as will be apparent to those skilled in the
`software art. The invention may also be implemented by the
`preparation of application specific integrated circuits or by
`interconnecting an appropriate network of conventional
`component circuits, as will be readily apparent to those
`skilled in the art.
`
`[0036] The present invention includes a computer pro-
`gram product which is a storage medium (media) having
`instructions stored thereon/in which can be used to program
`a computer to perform any of the processes of the present
`invention. [he storage medium can include, but
`is not
`limited to, any type of disk including floppy disks, optical
`discs, DVD, CD-ROMs, microdrive, and magneto-optical
`disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs,
`VRAMs,flash memory devices, magnetic or optical cards,
`nanosystems(including molecular memory ICs), or any type
`of media or device suitable for storing instructions and/or
`data.
`
`readable
`[0037] Stored on any one of the computer
`medium (media), the present invention includes software for
`controlling both the hardware of the general purpose/spe-
`cialized computer or microprocessor, and for enabling the
`computer or microprocessorto interact with a humanuser or
`other mechanism utilizing the results of the present inven-
`tion. Such software mayinclude, butis notlimited to, device
`drivers, operating systems, and user applications. Ulti-
`mately, such computer readable media further includes soft-
`ware for performing at least one of additive model repre-
`sentation and reconstruction.
`
`Included in the programming (software) of the
`[0038]
`general/specialized computer or microprocessor are soft-
`ware modules for implementing the teachings of the present
`invention, including,but not limited to, separating planes of
`a source image, averaging at least one of foreground and
`background colors, replacing colors, and compensating, for
`error introduced by color replacement
`in one plane by
`feeding crror into a sccond planc, storage, communication of
`results, and reconstructing an image according to the pro-
`cesses of the present invention.
`
`In the claims:
`
`1. A method for asynchronously invoking a remote web
`service on a server by a client, the method comprising:
`
`receiving a web service invoke request by a client, the
`webservice invoke request received from application
`code residing on the client;
`
`passing an invoke request by the client to a web service
`residing on a server;
`
`receiving a result by the client from the web service, the
`result relating to the invoke request passed by the
`client;
`
`notifying the application code that the result is available;
`
`receiving a result request from the application code by the
`client; and
`
`transmitting the result to the application code.
`2. The method of claim 1 wherein said receiving a web
`service invoke request includes:
`
`Booking, Exh. 1042, Page 10
`
`Booking, Exh. 1042, Page 10
`
`
`
`US 2004/0143645 Al
`
`Jul. 22, 2004
`
`receiving a call back object by the client from the appli-
`cation code, wherein notifying the application code
`includes returning the call back object to the applica-
`tion code from the client.
`
`3. The method of claim 2 wherein the call back object is
`contained in an asynchronouscontext.
`4. The method of claim 3 wherein passing an invoke
`request by the client to a web service residing on a server
`includes:
`
`passing the asynch context to the web service from the
`chient.
`
`5. The method of claim 1 wherein said passing an invoke
`request by the client to a web service residing on a server
`includes:
`
`generating a secondthread to process a task generated by
`the client, the task configured to handle invoking the
`webservice, wherein a first thread generated from the
`web service invoke request received by the client is
`freed upon the generation of the second thread.
`6. A method for asynchronously invoking a remote web
`service on a server by a client, the method comprising:
`
`receiving a web service invoke request by a client, the
`webservice invoke request received from application
`code residing on the client;
`
`passing an invoke request by the client to a web service
`residing on a server;
`
`freeing the web service invoke request by the client;
`
`receiving a result by the client from the web service, the
`result relating to the invoke request passed by the
`client;
`
`receiving a poll from the application code;
`
`notifying the application code that the result is available;
`
`receiving a result request trom the application code by the
`clicnt; and
`
`transmitting the result to the application code.
`7. The method of claim 4 wherein said passing an invoke
`request by the client to the web service residing on a server
`includes:
`
`the result provided by the web service in
`service,
`response to the web service invocation; and
`
`obtaining the result from the client by the application
`code.
`
`9. The method of claim 6 further comprising:
`
`receiving a result ready signal from the client by the
`application code, the result ready signal received in
`response to the application code polling and indicating
`the result is ready.
`10. A method for asynchronously invoking a remote web
`service on a server by a client, the method comprising:
`
`receiving a web service invoke request by a client, the
`web service invoke request received from application
`code residing on the client;
`
`passing an invoke request by the client to a web service
`residing on a server; freeing the web service invoke
`request by the client, wherein the application code is
`configured to perform additional tasks once the web
`service invoke request is freed;
`
`receiving a result by the client from the web service, the
`result relating to the invoke request passe