Home

Method and system for providing high performance Web browser

image

Contents

1. Ten 40 554 H3AMH3S NI 021512345 TODOlOHd ONISN 5 OL NOLLO3NNOO NOISSAS 143151534398 MAN N3dO L 90v LNALNOO O31V20 1 NOILDANNOD NOISS3S WALSAS 5 OL Q3AIHOdH SSVd C NOISSSS NI NOISS3S 31V201 OL ANIVA A33 LX31NOO 350 L zIXJLINOO 0 LXALNOO Q3N3dO 38 OL SVH 5 535 MAN V dl 3NIW J31JG LX31NOO THN Sdi LN3NOdMWOO SS322V OL LSANDAY ANIS A1N3NOdWOO 5 VIA 071314 1 31 83002 THN ONINIVLNOD 139 5 1530033 dL LH US 6 397 253 B1 Sheet 7 of 8 May 28 2002 U S Patent SERVER TP SYSTEM TRANSACTION PROCESSING ROUTINE qp o1nDi4 SZ 1 31 09 THN Z A X LX31NOO ASVE Z AX LXALNOO THN Z A XZL1X31NOO THN 0O LXALNOD THN BROWSER 9 US 6 397 253 B1 Sheet 8 of 8 May 28 2002 U S Patent gt o x gt x ul anbl4 139 NOISS3S 18995 JNVN WHOS 1 1341495 INHO4J BROWSER US 6 397 253 B1 1 METHOD AND SYSTEM FOR PROVIDING HIGH PERFORMANCE WEB BROWSER AND SERVER COMMUNICATIONS BACKGROUND OF THE INVENTION 1 Field of Use The present invention relates to Internet applications and more spec
2. WALSAS SNILV33dO WAf 3NIHOVW TIVO LHIA WAVES 1 01 1 8 01 NOILLOANNOD IN3LSISYAd NON 83M 5 MYOMLAN 1515434 aNILNOY 5 idy NOLLWLSHYOM W31SAS US 6 397 253 B1 Sheet 2 018 May 28 2002 U S Patent c 910614 02 WALSAS MaANaS NOMJ 02 W31SAS OL anano 153 lt 5545 1 31515434 9 01 rur 914 2 5 153 034 gt SWOJ H3ANJS SWHod 91 0L qc 513 2 01 INANOdWOD SNISS32Otid eee du 3SMO 8 83M OL 2 01 6 0 ec 914 1N3NOdWOO 2 01 SNISS3OO ld 1 5 8 or 1N3NOdMOO 9d OF OL US 6 397 253 B1 Sheet 3 of 8 May 28 2002 U S Patent ec ainbi4 0 OL 02 W31SAS 5 OL yiya 153 35 ONIS NOI LO3NNOO 55835 2S ANAND LN3LSISN3d N3dO 87 01 LNANOdWOD 154 NI 25 HJLISIO3H 25 J1VH3N35 0 01 180d 034 SN IVA OS NO lt NIV LNOO H3SMO 8 WO THN S300 5153 03 NOLLOANNOD INdNi N31STT1 US 6 397 253 B1 Sheet 4 of 8 May 28 200
3. 1 o session r p A Sopen gtcreateSessoni me m PcreateFormProtocol V cresteSecurtyWrapperi 4 4 TUE N A 1 L 1 N 4 Abstract 75 i 5 x Z SocelSesson 5 Fombecorator NILUM SconcreteGEAPFactory 1 Strategy Diagram B Patterns used in TPG Diagram B shows some of the patterns used and diagram C shows some addition classes including remote form classes US 6 397 253 B1 27 28 55 Mail Label E1273644777US 52 3130 36 open URL do until EOF read browser Listener write session D do unti EOF wrap TSS etd read session 2 write browser close HTMLWrapper lt AbstractGEAPFactory gt Factory static lt Session gt n open Read Decod read Session Read write e E gt ime Create 5 CreateSession 5 CreateFormProtocol 7 CreateSecurity Wrapper DSASession Read Merge Session Read Read DSA Read Session Read ConcreteGEAPF acto Eee ConcreteGEAPFactoy Read 4 DecodeSSL Session Read alSignature Wrappe PEEEorm Write l EncodeSSL Session Write j Diagram C
4. S Baek 23 Home eps js i Securty 7 Bookmarks Location http sandpiper 1080 PHFB WEB8 0 logon E 2 5 Lookup Netcaster 24 New amp Cool Diagram 1 User enters URL for initial screen 16 32 48 main Listener listening on port 1080 16 33 27 Thread 1 New connection opened on port 2432 Local port 1080 16 40 12 Thread 1 Connection constructor new thread 16 40 12 Thread 19 Connection run 16 40 12 Thread 19 ErrorMessage init out java io DataOutputStreame24fe49 in java io DataInputStream 24fe46 16 40 12 Thread 19 PHFB WEB8 0 logon HTTP 1 0 16 40 12 Thread 19 Form open GET PHFB WEB8 0 logon HTTP 1 0 16 40 12 Thread 19 DataCache open GET PHFB WEB8 0 logon HTTP 1 0 16 40 12 Thread 19 DataCache open calling next wrapper com bull GEAP DSASession 24fa3f 16 40 12 Thread 19 DSASession open GET PHFB WEB8 0 logon HTTP 1 0 16 40 12 Thread 19 DSASession open context 0 0 16 40 12 Thread 19 DSASession openNewSession calling DSA open conn null 16 40 12 Thread 19 DSASession openNewSession opening DSA session IP PHFB node mailbox WEB8 turn false 16 40 12 Thread 19 ConTextEntry 16 40 12 Thread 19 connection com bull tcpdsa dsa_connection 24f2 b 16 40 12 Thread 19 time 907605612255 16 40 12 Thread 19 put entry com bull GEAP ContextEntry924e831 16 40 12 Thread 19 Connection run HTTPMethod GET 16 40 12 Thread
5. United States Patent Quinlan et al US006397253B1 US 6 397 253 B1 May 28 2002 10 Patent No 45 Date of Patent 54 METHOD AND SYSTEM FOR PROVIDING HIGH PERFORMANCE WEB BROWSER AND SERVER COMMUNICATIONS 75 Inventors Cian M Quinlan Michael L Giroux both of Phoenix AZ US 73 Assignee Bull HN Information Systems Inc Billerica MA US Notice Subject to any disclaimer the term of this patent is extended or adjusted under 35 U S C 154 b by 0 days 21 Appl No 09 166 877 22 Filed Oct 6 1998 GIJ Int I4 G06F 15 16 52 US eee 709 227 709 217 709 203 58 Field of Search 709 203 217 709 218 227 228 229 219 224 56 References Cited U S PATENT DOCUMENTS 5 154 772 A 5 998 Leaf 5 754 774 5 1998 Bittinger 5 754 830 A 5 1998 Butts et al 709 227 5 778 372 7 1998 Cordell et al 709 218 5 784 562 7 1998 Diener 709 217 5 796 393 A 8 1998 MacNaughton et al 709 203 5857201 A 1 1999 Wright Jr et al 707 104 5 859 971 A 1 1999 Bittinger 5 867 661 A 2 1999 Bittinger et al 709 227 5 898 835 A 4 1999 Truong 709 217 5 918 009 6 1999 Gehani et al 709 219 5 961 601 10 1999 Iyengar 709 229 6 035 324 3 2000 Chang et al 709 203 6 035 332 3 2000 Ingrassia Jr et a
6. The establishing of the session connection involves call ing standard socket subroutines and network library subrou tines provided by the client system operating system Once a session connection has been established between the server system 20 and client system 10 component 10 40 sends the browser data to server system 20 over the newly established persistent connection i e block 10 40e As indicated if the session context value contained in the URL is not equal to zero indicating that a persistent session connection has already been established component 10 40 checks to see if the session connection is busy block 10 40 It will be noted that TPG component 10 4 allows serializes multiple requests from the same browser com ponent over the same session connection If the session connection specified by the browser request is busy then component 10 40 queues the entry until the session connec tion is available i e blocks 10 40f and 10 405 FIG 3b Gateway Response Processing Logic FIG 35 illustrates the logic of component 10 42 As indicated in block 10 42a component 10 42 receives responses messages from server system 20 If the compo nent 10 42 receives a signal to close the persistent connec tion from the server system 20 i e block 10 425 then component 10 42 operates to close the socket connection and delete the SC connection entry from PST component 10 48 identified by the SC value After ca
7. item 5 in FIG 4b The component 10 42 for wards the BASE tag to component 10 40 As indicated in block 412 using the BASE tag browser component 10 2 resets the base URL in a standard manner The result of this operation is that any link that the user selects will cause the browser component 10 2 to form an address based on the reset URL base and the link information Thus link addresses will have URLs that contain the context key When the user selects a link address via mouse 10 11 and submits a subsequent request browser component 10 2 passes an non zero context key value to the TPG component 10 4 item 6 in FIG 45 As a result as indicated in block 414 TPG component 10 4 uses the non zero context value i e x y z to locate the session information pertaining to the persistent connection in the PST component 10 48 The TPG component 10 4 passes the data received from browser component 10 2 to server system 20 over the persistent session connection located by the context key value item 6 in FIG 45 As indicated in FIG 4a this cycle of operation is repeated during the execution of a transaction processing application US 6 397 253 B1 19 program e g 20 25 Upon completing the processing of all required transactions the browser user can then generate a request signaling termination of the session More specifically the browser user generates a request to execute a logoff TPR i e a request to be discon
8. In the preferred embodiment the gateway component communicates with the server system through several layers of protocols to obviate the need to develop additional protocol software for running existing server applications The protocols used in the preferred embodiment are HTTP DSA and TCP IP According to the teachings of the present invention the browser component initiates the utilization of new session connections and reuse of existing session connections through an uniquely coded universal resource locator URL contained in each issued request Each URL is passed to the gateway component that examines a context field included within the URL If the context field has been set to a first value the gateway component opens a new session connec tion to the server system and records the session information as an entry in a persistent session table PST component maintained by the gateway component If the context field has been set to a value other than the first value then the gateway component obtains the session information in the PST component for the established session and passes the data from the browser component to the server system over the existing session connection In the preferred embodiment the server system s response to an initial request from the gateway component following the establishment of the new persistent connection generates a HTML page with a BASE tag value and also communicates the base value to the gateway
9. Some addition TPG classes including remote form classes Diagrams A through C use a popular OO design notation called Unified Modeling Language UML to illustrate class relationships For further information about such notation reference may be made to the text by Pierre Alain Muller entitled Instant UML published by Wrox Press Ltd 1997 To give a better understanding or feel of the flow of TPG component 10 4 a partial trace of the execution of TPG component 10 4 is illustrated in below The intent Un 10 20 25 US 6 397 253 B1 29 30 E ss Mail Label No Elz23644777US 52 3130 37 is to indicate the flow of TPG component 10 4 and to illustrate some of the class object and protocol interaction By way of background TPG component 10 4 is composed of a set of the following co operating objects A Listener or main object listens on a configurable port for incoming connections from a browser The Listener object upon receiving a connection creates a Connection object The Connection object creates a Factory object The Connection object calls the Factory Create method passing it the URL received from the browser component 10 2 The Factory object creates a DSASession object TPG component 10 2 uses Strategy Decorator and Abstract Factory patterns to ensure that the design is open to extension Additional functions can be added to TPG component 10 4 without changing existing classes The only change is the Fa
10. that enables a user to select either capability or elect not to use a capability in a given situation For example a user may elect not to enable the multiplexing capability because of not wanting to share a common persistent connection for rea sons of maintaining security In addition to the above the gateway component of the present invention includes facilities that enable a browser user to communicate with a particular enterprise server system using any one of a number of predefined communi cations protocols e g DSA SNA based on the require ments of the particular system In accordance with the teachings of the present invention the basic URL mecha nism is used to enable user selection of a particular com munications protocol Also in accordance with the teachings of the present invention the gateway component of the preferred embodi ment of the present invention includes a remote forms mechanism that enables storage of the static portion of a message that is local to a Web browser client system so that only variable data needs to be transmitted from a server to US 6 397 253 B1 7 the browser client system As used herein the term remote form refers to the static portion of an HTML page The mechanism provides local storage in the form of a cache component for retaining the static portions of a plurality of forms in close proximity to the client user If the remote form is present in the cache component the gateway
11. 39 Thread 1 Connection constructor 16 43 39 Thread 1 Connection constructor new thread 10 15 20 25 30 US 6 397 253 B1 41 42 E ss Mail Label No 1 5644777 118 52 3130 43 Bee Read tgk Bookmarks p Internet e Lookup DEFAULT HTML WEBS default start page Security WEB8 24f2fb d3518295d default htral This page was displaved because the URL did not specify specific document name Like most WEB servers the D complete name for a document to be displayed The files that are currently available are listed below Pig Message Tes t Allows tester to generate messages with text box containing large amounts of dal Form based file upload An example of a file upload using RFC 1867 Form based file upload specificatie An example of a customer information page ALT Customer Information An example of a customer information page using alternate scripting model with JavaScript statements POST Data Entry Form An example of a data entry form using METHOD POST GET Data Entry Form An example of a data entry form using METHOD GET Logoff Sets CONTEXT 0 Diagram 5 User selects Logoff 16 43 39 Thread 23 PHFB WEB8 24f2fb d3518296df 3618E7D7 logoff logoff htm HTTP 1 0 16 43 39 Thread 23 Connection run reading and sending browser header 16 43 39 Thread 23 DSASession write string writing 106 logoff CONT
12. 43 User Agent Mozilla 4 5b2 en WinNT I 16 40 12 Thread 19 Connection run calling write 22 Host sandpiper 1080 16 40 12 Thread 19 Connection run calling write 77 Accept image gif image x xbitmap image jpeg image pjpeg image png 16 40 12 Thread 19 Connection run calling write 23 Accept Encoding gzip 16 40 12 Thread 19 Connection run calling write 21 Accept Language en 16 40 12 Thread 19 Connection run calling write 36 Accept Charset iso 8859 1l utf 8 16 40 12 Thread 19 Connection run writing lt CRLF gt 16 40 12 Thread 19 DSASession write string writing 25 Accept text geapform 16 40 12 Thread 19 Connection run reading and sending browser body 16 40 12 Thread 19 Connection run contentLength 0 16 40 12 Thread 19 DSASession turn updating time out value907605612665 16 40 12 Thread 19 Connection run reading and sending server response 16 40 12 Thread 19 Form readLine 16 40 12 Thread 19 Form readLine calling next wrapper com bull GEAP DataCacheSession 24f9c7 16 40 12 Thread 19 DataCache read string 16 40 12 Thread 19 DataCache read string calling next wrapper com bull GEAP DSASession 24fa3f 16 40 12 Thread 19 DSASession readLine 16 40 12 Thread 19 DSASession byte readDSA line HTTP 1 0 200 CONTEXT 3618E7D7 Content type text html Pragma no cache lt html gt lt head gt title WEB8 Logon accepted lt title gt base hre
13. BASE value used in implementing persistent session connections For further information regarding other runtime routines referenced herein reference may be made to the previously cited Bull User Manual A Description of HTML BASE Runtime Routine This routine generates an HTML BASE element with application context in the form BASE href http gateway port node mbx 1234 5678 abcd Also the routine returns the application context field as a separate string to be sent by the TPR in the HTTP response header 1 0 Syntax in C HTML BASE base amp cbBase gwContext amp appContext amp err 1 1 Syntax in COBOL 85 CALL HTML BASE USING base cbBase gwContext appContext err 1 3 Parameters base Pointer to the character buffer to receive the generated BASE element string On return base contains a null terminated string that is suitable for use by C library routines cbBase Pointer to an integer comp 6 that contains the maximum size of the buffer pointed to by base On return cbBase contains the actual size of the generated BASE element COBOL 85 programs will use cbBase when processing the resulting base buffer gwContext Pointer to a character buffer to receive the appContext converted to a hexadecimal string The buffer must be eight bytes in length 10 25 30 40 1 4 B 57 US 6 397 253 B1 58 E ss Mail Label No 564477705 52 3130 51 appContext Pointer to an i
14. a predetermined HTTP request specifying the particular form and 3 upon receipt of the requested form from the server system stores the form in the cache and executes step t 27 The method of claim 25 wherein a form is deemed found if the name of the form matches a cache directory entry of the cache and if the version specified in the directory entry matches the form version 28 The method of claim 25 wherein the additional HTTP line is Accept text tpgform wherein tpg is used to identify the gateway component 29 A client system for efficiently processing requests from the client system to a remotely located server system through a communications network the client system com prising a a standard browser component for generating a request to be forwarded to the server system the request containing a standard URL having a resource name field that includes a predetermined field coded to specify a session context value for indicating the type of session connection to be initiated by the client system through the communications network for trans ferring the request to the server system and b a gateway component located between the browser component and the communications network the gate way component for managing and establishing persis tent session connections in response to browser requests the gateway component comprising 1 a table structure for storing session connection information for identifying each establi
15. component reads the form and merges it with the data returned from the server in its response The gateway component then for wards the merged data to the browser for display to the user If the remote form is not present in the local cache the gateway component will make a request to the server for a copy of the form When the form is received from the server the gateway component will write it to its cache The gateway component will then merge the form with the data previously received and forward it to the browser for display to the user The gateway component of the present invention requires no changes to the standard browser system For example the gateway component in the preferred embodiment is imple mented as a plurality of class objects that can run on the virtual machine included as part of the standard browser and utilize standard Java library routines for establishing and maintaining persistent connections Hence the present invention is able to maximize the use of capabilities included with a standard browser Further the present invention enhances performance by coding all of the pertinent connection information and any available options into the URL This avoids unnecessary scanning operations for detecting cookies in HTTP head ers and hidden form fields in HTML document pages In addition since the URL does not point to an actual file system directory it is possible to have a unique URL for every persistent co
16. component which stores it as part of the PST entry Relative links in the new HTML page when activated are built by the browser incorporating the new BASE value which results in a URL containing the new base value being used on any subsequent requests which uses these links The BASE value in the URL enables the gateway component to locate the connection 10 15 20 25 30 35 40 45 50 55 60 65 6 which enables the use of an established persistent connec tion throughout a session The arrangement of the present invention improves sys tem performance by providing client side dynamically controlled persistent connections This eliminates the need to continuously establish new sessions each time the state less browser component initiates a request Further the invention accomplishes this by extending the functionality of the client system by the addition of the gateway compo nent thereby relieving the server system from the burden of having to establish and control persistent connections Further the arrangement of the present invention enables the use of persistent connections for transferring data messages other than forms in that the connection information is preserved by the gateway component until the client system has terminated a particular session Of course it will be appreciated that when a particular session connection is being utilized by more than one client browser user as described he
17. connec tions Further this approach still is quite time consuming and only performant when the ratio of persistent applet to server to non persistent HTML page and applet loading traffic is high However even in those cases the approach still requires that time be expended in establishing additional connections 10 15 20 25 30 35 40 45 50 55 60 65 2 As well known in the art in the classical client server model connections between client and application servers remain open until the client logs off the system By contrast in the Web environment there is no mechanism provided for keeping the client to server connection open Each time a new page is requested the user Web server and additional processing must reidentified or reinitialized The reason is that the Web browser is stateless This statelessness makes it difficult to create Web based applications requiring multiform client to server interactions In Web enabled client server tools state and session is usually stored in client side cookie files or hidden fields in HyperText Markup Language HTML forms In Java appli cation server environments state and session management information is typically stored and managed on the server Some server products make use of a context pool When transactions are begun the Web server generates a unique process identifier that is maintained with state information on the serv
18. is illustrated in greater detail in FIG 3c The operations of component 10 46 will be discussed in greater detail relative to that figure DETAILED DESCRIPTION OF TPG COMPONENTS FIG 3a Gateway Request Processing Logic FIG illustrates the logic of component 10 40 As shown component 10 40 using its listening function listens for input connection requests from browser component 10 2 on the configured port 1 block 10 404 For each browser request accepted component 10 40 examines the request s URL to determine if it contains a session context SC value i e block 10 405 Next as indicated in block 10 40c the component 10 40 determines if the SC value equals zero If the SC value equals zero this indicates that a session has not been established between the browser component 10 2 and the server system 20 path As indicated in block 10 40c component 10 40 invokes its connection function to establish a persistent session connection via sockets More specifically component 10 40 first generates a session con US 6 397 253 B1 11 text SC value and registers it in one of the locations of PST component 10 48 ie block 10 40c That is as indicated in block 10 40d the component 10 40 records session information in the assigned PST location and opens new session connection via a call to protocol conversion layer component 10 5 which uses sockets i e issues a socket open call
19. name field to the server system and in response the request the server system closes the session connection and sends a response to the browser component confirming that the session has been closed 38 The system of claim 37 wherein the gateway compo nent transfers the server response to the browser component for indicating to the user that the session has been closed 39 The system of claim 30 wherein for each session context field coded for specifying a new session connection is to be established the gateway component generates for inclusion in the session context field a unique context key value containing a number of parts a first part containing a time of day value for uniquely identifying a session entry within the table structure a second part containing a token value for accessing session connection information entry within the table structure pertaining to a session connection established by the gateway component and a third portion containing an optional server application specific value for use in invalidating out of date links when selected by a browser user 10 15 20 25 30 35 40 45 50 55 60 65 68 40 The system of claim 31 wherein the server system further includes a number of transaction processing appli cation programs TPRs for processing browser user requests and wherein the resource name field further con tains another part containing an application command value identifying a
20. required as part of the response it encodes a request for a form by sending the following HTTP content type in the response followed by the form variable data Content type text tpgform name form name version lt date gt An example of such a request is Content type text tpgform name myform version TUE 04 aug 1998 17 20 05 GMT where the version is optional This informs TPG component 10 4 that a particular form is being requested TPG component 10 4 checks the directory of its cache 10 6 for the form A form is considered found if the name of the form matches a cache entry and if the versions match If no version is present on the request then any version or no version will match There only be one version of a particular form in the cache 10 6 If the form is found it is merged with the variable data and sent to the browser component 10 2 US 6 397 253 B1 47 48 E ss Mail Label No 1 gt 564477705 52 3130 46 If the form is not found the cache 10 6 component 10 4 opens new session to the form server The following request is sent by TPG component 10 4 to the server system 20 for the form as follows GET node mailbox protocol context command formname 1 0 The server system 20 responds with the requested form TPG component 10 4 stores the form in its cache 10 6 deleting any form with the same name and different version if present TPG component 10 4 then proceeds as a
21. text key value The context key value consists of the following three parts X Time of day in milliseconds as required for uniquely identifying the PST session entry Y Token to access the session entry in the PST table 10 48 and Z Optional server application specific value which can be used to invalidate an HTML link As previously discussed the server application value Z can be used by an application to invalidate links on back 10 15 20 25 30 35 40 45 50 55 60 65 18 browser pages and to prevent requests being made from bookmarked pages The value of Z is updated in the PST table 10 48 by TPG component 10 4 each time a response is sent from the server system 20 to the client system 10 If a new BASE is generated by the TPR application with the new Z value the browser component 10 2 will build a page using the new BASE This means that relative links on the new page will be built using the new context and more specifically the new Z value Subsequent requests from the browser component 10 2 with a Z value other than the current Z value in the PST table 10 48 that is build with an out of date context will be rejected Thus only links with the latest context are considered valid Also as indicated in block 406 TPG component 10 4 generates a pseudo HTTP header having the format logon context x y z nl where logon in the present example is the target applica tion obtained from
22. that issued on May 19 1998 While the system provides access to a mainframe host the system has to be able to pre allocate the required number of static connections and gateway clients beforehand making it more difficult for the system to respond to dynamic changes in operations Further the system must expend time in translating requests into the format expected by the on line transaction processing system Another relevant prior art approach utilizes a server and a web browser terminal emulator for providing a persistent connection to a legacy host system A computer network environment allows connection of a client system to a legacy host system using such a server system The server system executes a client thread under a server The client thread is operable to communicate with the legacy host system across a persistent TCP IP socket connection The computer net work environment further includes a client system executing an applet process under a web server The applet process is operable to communicate with the client thread across another persistent TCP IP socket connection and is operable to provide a terminal session to a user of the client system This approach is described in U S Pat No 5 754 830 issued on May 19 1998 The main disadvantages of this approach pertain to requiring the loading of an applet and the inclusion of a web emulation server Web browser software is well known in the art for use in retrieving and viewing e
23. 1 17 FIGS 1 through 5 The flow chart of FIG 4a illustrates the overall operation in establishing and using persistent con nections according to the teachings of the present invention These operations are diagrammatically depicted in FIG 4b Referring to FIG 4a it is seen that it is assumed that the user at the client system 10 enters an HTTP request containing a URL with a context field via the browser component 10 2 item 1 in FIG 45 More specifically the user enters a URL containing the usual fields plus a context key field contain ing a value of zero e g via keyboard 10 12 of FIG 1 By way of example the user enters the following URL HTTP sandpiper 8080 ph45 web8 dsa O logon where sandpiper 8080 address of the TPG component 10 4 ph45 web8 protocol address of the server system 20 protocol is the protocol to be used between the TPG component 10 4 and the server system 20 e g DSA SNA or SOCK 0 value of the context key logon target transaction application The browser component 10 2 sends the request via the HTTP protocol to the TPG component 10 4 in a conven tional manner 1 block 400 of FIG 4 The TPG com ponent 10 4 listening on the configured port e g 8080 receives the input connection request and examines the URL s context field value i e block 402 The specific coding of this value enables the component 10 4 determine if browser component 10 2 has requested that a new session connectio
24. 19 Connection run reading and sending browser header 16 40 12 Thread 19 Connection run calling write 23 GET 0 logon HTTP 1 0 16 40 12 Thread 19 Form write string calling next wrapper com bull GEAP DataCacheSessionG924f9c7 16 40 12 Thread 19 DataCache write string calling next wrapper com bull GEAP DSASession 24fa3f 16 40 12 Thread 19 DSASession write string writing 68 logon CONTEXT 24f2fb d3518296d GET PHFB WEB8 0 logon HTTP 1 0 16 40 12 Thread 19 Connection run calling write 87 Referer http sandpiper 1080 PHFB WEB8 24 405 d351822dfe 3618E7BC logoff logoff htm 16 40 12 Thread 19 Form write string line Referer http sandpiper 1080 PHFB WEB8 24 405 d351822dfe 3618E7BC logoff logoff htm 16 40 12 Thread 19 Form write string calling next wrapper com bull GEAP DataCacheSessione24f9c7 16 40 12 Thread 19 DataCache write string calling next wrapper com bull GEAP DSASession 24fa3f 16 40 12 Thread 19 DSASession write string calling next wrapper com bull GEAP NULLSessiona24faa6 10 15 20 35 40 45 50 55 60 US 6 397 253 B1 33 34 E 8s Mail Label No 12564477705 52 3130 39 16 40 12 19 DSASession write string writing 87 Referer http sandpiper 1080 PHFB WEB8 24f405 d351822dfe 3618E7BC logoff logoff htm 16 40 12 Thread 19 Connection run calling write 24 Connection Keep Alive 16 40 12 Thread 19 Connection run calling write
25. 2 U S Patent q 1614 5 OL 3SNOdS3MH 5 ANAS 154 LOANNOD ASLN3 NOISS3S 3S019 GNV OL NNOO 25 3SO 12 TWNOIS WALSAS HJAMHJS 5 5 US 6 397 253 B1 Sheet 5 of 8 May 28 2002 U S Patent 97 01 H3SMO S OL VIVO 35 WtOd 371154 WO VIVO 5 JOYIN 5 JHOVO SWtHOd NI 33015 3HOVO SW Od NOLLO3NNOO NOISS3S ANALSIS I3d ONILSIX3 ASNAY HO NOLLO3NNOO NOISSAS MAN N3dO 7 W3LSAS WO 4 139 1 QO3H2VD ATIVOOT WHO4J INOJd Q3HOVOD ON 3sn 01 153 034 US 6 397 253 B1 Sheet 6 of 8 May 28 2002 U S Patent ep o1nDi4 ASVE 5 JHL ONISN THN 3sva 14544 OL JSNOdSZ ANIS Odi 01 5 4548 ANAS LXALNOD ONILVHOdHOONI 9v1 3579 NV SNINIV LNOO 3SNOdS3H LONULSNOD 2 NOSO1T 5 9 ANILNOY NOILOVSNVYL 31VIBidOHddV NH L WALSAS H3AHJS 80r W31SAS 5 OL LSANDAY 7 38 OL ONf1d 5 ONILVNDISSG OGNASd A39 LX31NOO 31VH3N39 L Ddl 1 154 NOISS3S
26. 4 created a new connection and assigned a session context identifier of 1234 abcd The message sent by the browser component 10 2 to the server system 20 then is logon context 1234 abed lt CRLF gt lt CRLF gt GET sys1 tp8ws 0 logon 12345 HTTP 1 0 Usually if the page returned by the LOGON command contains a relative URL the browser component 10 2 forms a new absolute URL using the current document base which in this example is http gateway sys1 tp8ws 0 However using this document base results in yet another DSA session connection being created and the new message is sent to the new session connection To send messages to the DSA session connection that was created for the LOGON request the browser component 10 2 must estab lish that the document base is actually http gateway sys1 tp8ws 1234 abed The HTML specification provides a convenient mecha nism for this purpose the lt BASE gt tag The HTML lt BASE gt tag provides a standard method for an application to explicitly specify the base for the document that contains the lt BASE gt tag Using the lt BASE gt tag the TP transaction application program can use the HREF attribute to specify any arbitrary document base In our example the application would generate the following sequence of HTML in response to the original LOGON request lt HTML gt lt HEAD gt BASE HREF http gateway sys1 tp8ws 1234 abed gt lt HEAD gt When the browser co
27. ASessiong25844f 16 41 21 Thread 20 DSASession byte readDSA line HTTP 1 0 200 Content type text html Pragma no cache Date Mon 05 Oct 1998 15 39 08 GMT Last Modified Tue 07 Jul 1998 22 50 03 GMT lt DOCTYPE HTML PUBLIC IETF DTD html head title WEB8 default start page lt title gt head body text 000000 link 0000FF gt lt hl gt DEFAULT HTML WEB8 default start page lt hl gt lt hr gt lt p gt This page was displayed because the URL did not specify a specific document name Like most WEB servers the DOCS TPR will 16 41 21 Thread 20 DSASession readLine token 1 0 200 16 41 21 Thread 20 1 0 200 OK 16 41 22 Thread 20 Connection run End task Beck 22222 Reload Home Seach Netscape Piht Security 7 Bookmarks 8 Location ftp 1080 96887242 4351 825641 3516E7D7 fle defauk himi ER g What s Relatec 4 Lookup Netcaster 21 NewtCool DEFAULT HTML WEBS default page This page was displayed because the URL did not specify a specific document name Like most WEB servers the DOCS TPR will accept a complete name for a document to be displayed The files that are currently available are listed below Allows tester to generate messages with text box containing large amounts of data example of a upload using RFC 1867 Form based file upload specification A
28. EXT 24f2fb d3518296df GET PHFB WEB8 24 2fb d3518296df 3618E7D7 logoff logoff htm HTTP 1 0 16 43 39 Thread 23 Connection run reading and sending browser body 16 43 39 Thread 23 Connection run reading and sending server response 16 43 40 Thread 23 DSASession byte readDSA line HTTP 1 0 200 CONTEXT 0 Content type text html lt DOCTYPE HTML PUBLIC IETF DTD HTML EN gt html head meta http equiv Content Type content text html charset iso 8859 1 gt meta name GENERATOR content Microsoft FrontPad 2 0 title WEB8 Logged off lt title gt base href http sandpiper 1080 PHFB WEB8 0 gt lt head gt body bgcolor FFFFFE gt lt hl gt WEB8 Logged off lt 1 gt 16 43 Thread 23 16 43 Thread 23 16 43 40 Thread 23 16 43 40 Thread 23 US 6 397 253 B1 44 E ss Mail Label No El 5644777US 52 3130 44 Connection run reading and sending server Connection run end of read 0 contentLength 735 NULLSession close Connection run End task w y E eu LY m Beb Home Seach Netscape Print Sem x Bookmarks Location htip sandpiper 1080 PHFB 87241215 435182954 3618 707 him E What s Re 22 Lookup 20 Neteaster L New amp Cool WEBS Logged off You have requested to be disconnected from TP8 This form was sent with a
29. End task 10 15 25 30 35 40 45 US 6 397 253 B1 35 36 E ss Mail Label No Elz25644777US 52 3130 40 3 ako 1 5 pus Reload Home Search Netscape Print _ Security gt Lookup B Netcaster NewtkCool WEBS Logon Accepted Your WEBS Logon has been processed Click here for additional options Diagram 2 User clicks here for options 16 41 20 Thread 1 New connection opened on port 2472 Local port 1080 16 41 20 Thread 20 PHFB WEB8 24f2fb d3518296df 3618E7D7 file default html HTTP 1 0 16 41 20 Thread 20 DSASession open GET PHFB WEB8 24 2fb d435182964f 3618bE7D7 file default html 1 0 16 41 20 Thread 20 DSASession processContext context 24f2fb d3518296df 3618e7d7 16 41 20 Thread 20 context table 16 41 20 Thread 20 connIndex 2421499 16 41 20 Thread 20 Connection 24f2fb 16 41 20 Thread 20 Time d3518296df 16 41 20 Thread 20 Sequence 3618E7D7 16 41 20 Thread 20 LastAccess 907605612255 16 41 20 Thread 20 get key 2421499 16 41 20 Thread 20 DSASession processContext retrieved conn com bull tcpdsa dsa connection 24f2fb 16 41 20 Thread 20 NULLSession open GET PHFB WEB8 24 2fb d3518296df 3618E7D7 file default html HTTP 1 0 16 41 20 Thread 20 Connection run reading and sending browser header 16 41 20 20 Connection run calling write 60 GET 24f2fb d3518296df 3618E7D7 fil
30. a standard inter net communications protocol such as TCP IP Recently some vendors have implemented the RFC1006 specification that defines a protocol layer that closely resembles the OSI transport layer and runs on TCP IP By implementing such a layer a proprietary protocol like DSA developed by Bull HN Information Systems Inc is allowed to run over a TCP IP network While the above capability 1s available there is still need to provide an efficient way of connecting to enterprise systems that operate with different communications proto cols Accordingly it is an object of the present invention to make communications sessions between a Web browser and a server persistent without having to utilize static connec tions It is a further object of the present invention to provide access to transaction applications running on a server system without having to reformat Web browser pages or alter use of existing protocols It is still a further object of the present invention to provide fast efficient transaction conversations for transfer ring various kinds of data messages Accordingly it is another object of the present invention to provide a remote forms facility that operates in conjunc US 6 397 253 B1 5 with standard browser software that 15 easy to manage by a browser user It is a further object of the present invention to provide a remote forms capability characterized by high performance and not having to reform
31. acilities in accordance with the coding of the URL protocol field and browser selected communications class facility invoking the service component for establishing the persistent connection that implements the browser user specified communications protocol 44 The system of claim 43 wherein the first type of communications protocol includes a number of different proprietary communications protocols 45 The system of claim 44 wherein the number of different proprietary communications protocols includes DSA and SNA protocols 46 The system of claim 43 wherein the gateway compo nent in response to each browser request containing a URL resource name field having a protocol field coded to specify an internet communications protocol invokes one of the class facilities that directly establishes the persistent con nection for implementing the specified internet communi cations protocol thereby eliminating execution of step n 47 The system of claim 29 wherein an options field is included in the URL resource name field for specifying different types of user selected persistent connections and the gateway component as a function of the setting of the options field establishing the type of persistent connec tion specified by the browser user 48 The system of claim 47 wherein the different types of persistent connections includes a pool type of connection wherein the browser user can enable use of a session connection from a pre establi
32. as described herein database storage 20 4 acts as a repository for HTML form based documents In the preferred version of such software the HTML documents before being stored are passed through a parser that parses each document into static and dynamic portions This enables transmission of static HTML records without requiring the server to interpret such records This arrangement is described in greater detail in the copending application entitled Method and Apparatus For Improving Code Execution Performance By Using Parsed HTML invented by Michael Giroux filed on May 13 1998 bearing Ser No 09 078 084 and which is assigned to the same assignee as named herein Client System As illustrated in FIG 1 client system 10 includes a web browser component 10 2 a transaction protocol gateway TPG component 10 4 a protocol conversion layer com ponent 10 5 GTEA and a forms cache component 10 6 More specifically with reference to FIG 1 the client system 10 includes a central processing unit that corresponds to CPU hardware platform 10 3 a main memory 10 1 disk storage 10 10 a plurality of input devices such as a key board 10 12 and a pointing device or mouse 10 11 and an output device such as CRT display 10 14 each of which interfaces as indicated The hardware platform 10 3 runs under the control of an operating system 10 7 such as Windows NT or a UNIX based operating system The client system 10 also may utilize other s
33. ase URL to submit a request for the nxt cmd using the full URL as follows http gateway port node mbx 1234 5678 abcd nxtcmd custinfo htm Error conditions are indicated by placing a negative value in err ERR HTML BASE SIZE base too small to hold result ERR HTML BASE CTXFMT invalid context format in URL The HTTP request submitted by the browser contains an invalid context string ERR HTTP GETHDR any errors returned by HTTP GETHDR C Example char newbase 256 US 6 397 253 B1 59 60 E ss Mail Label No 564477705 52 3130 282 int cbBase sizeof newbase int gwContext 8 int appContext 1 int err 3 HTML BASE newbase amp cbBase gwContext amp appContext amp err printf HTTP 1 0 200 CONTEXT 8 8sNrNn Content type text html r n 10 Pragma no cache r n s r n lt html gt lt HEAD gt r n lt TITLE gt Web 8 Logon accepted lt TITLE gt r n 15 lt HEAD gt r n BODY Hl Logon Accepted lt H1 gt lt HR gt r n You are now logged on The lt A HREF nxtcmd custinfo htm Customer Information A form is now available 20 BODY V r n html NVrAn gwContext newbase E 25 C COBOL 85 Example data division 30 35 02 basedata pic x occurs 0 to 256 times depending on cbBase procedure div s on move 256 to cbBase call HTML_BASE using base cbBase gwContext appContext err 40 move 1 to m
34. at Web browser pages or alter use of existing protocols It is another object of the present invention to provide a facility for connecting to server systems that utilize different communications protocols SUMMARY OF THE INVENTION The above objects are achieved in a preferred embodi ment of the present invention for processing requests gen erated by a user of a client system for accessing facilities of server system through a communications network The client system includes a high performance gateway compo nent that operates in conjunction with a standard browser component In the preferred embodiment the gateway com ponent is installed on the same client system or on a client workstation system The gateway Component manages the establishment of persistent ses sions in response to client requests and maintains informa tion uniquely identifying existing persistent session connec tions opened between the client system and the server system In accordance with the present invention the client side capabilities are enhanced through the inclusion of such a gateway component The gateway component operatively couples to the standard browser component through a stan dard browser interface More specifically the browser com ponent and gateway component communicate using stan dard HTTP protocols over a standard browser interface The gateway component operatively couples to the server system through an internetwork e g Internet
35. atic and variable data associated with form documents Examples of systems that provide for the remote retrieval and display management of electronic documents and for using a dialog session context to process electronic forms data are described in U S Pat Nos 5 778 372 and 5 784 562 respectively It has been noted that typically the static portion of such responses are high in data content and the repetitious transmission of this data content for multiple requests can be an inefficient use of bandwidth Thus the above prior art approaches have not been able to achieve the same levels of network performance in processing HTML based forms as heretofore provided to users accustomed to using terminals with remote forms facilities An important aspect of the present invention is its recognition of the need for a high performance solution that implements a remote forms capability heretofore provided by enterprise systems that can be utilized with standard browser software Web browser software utilizes a standard application communications protocol such as the HyperText Transport Protocol HTTP for processing HTML formatted docu ments A number of vendor enterprise systems do not normally process HTML formatted documents and execute HTTP server programs By contrast such systems normally execute transactions using their own unique proprietary protocols e g DSA SNA specifically designed for their particular applications in contrast to using
36. ay component 10 4 copies the TP command name to the beginning of the input message For example consider the following URL lt address gt lt address extention gt lt protocol gt lt session context id gt lt command gt lt options gt Field 2 Field 3 Field 1 The first field field 1 specifies the address of the appli cation server The protocol portion specifies the session protocol to be used when establishing a session between the client and the server Examples of possible protocols and their keywords are SNA Proprietary IBM protocol DSA Proprietary Bull Information Systems protocol based on OSI This is the default protocol in the preferred implementation The default protocol can be set using an administrative page provided through a further port connection associated with the gateway component 10 4 SOCK Standard UNIX sockets protocol The remainder of this description assumes a URL where the DSA protocol has been selected in which case the URL looks like this 30 35 40 lt node gt lt mailbox gt lt DSA gt lt session context id gt lt TP8 command gt lt options gt Field 1 Field 2 Pelee Assuming a DSA protocol the first two elements of field 1 specifies a DSA node name and host mailbox for the desired enterprise server workstation These values are used by the gateway component 10 4 to establish a connection to the target enterprise server workstation The second field is a contex
37. bove as if it had found the form in the cache 10 6 10 20 30 40 US 6 397 253 B1 49 HI GTEA Component 10 5 E 50 ss Mall Label No Elz75644777US 52 3130 47 GTEA component 10 5 is a communications layer that supports a set of APIs that allow a program to open and manipulate DSA sessions over TCP IP using RFC1006 The following are code examples in C and Java programming languages showing how to initiate a DSA session to server system 20 e g Bull HN Information System s Web and timesharing systems send a command receive the output and disconnect the Session A Example in C Code using GTEA component 10 5 to communicate with server system 20 with DSA over TCP IP include include include tcpd h main int char argv 4 err conn_handle c lt stdio h gt lt string h gt char p cmd 80 int len make sure we have a command if argc lt 2 printf no command exit 1 streat strcpy cmd argv 1 r connect to dsa connect xxxx web8 0 NULL NULL if c lt 0 printf error connect exit 1 send a command and pass the turn dsa_write c cmd strlen cmd TRUE receive output until we get the turn back do if dsa_read c amp len amp e NULL break 0 fputs p stdout while dsa have turn c disconnect dsa close c 0
38. ctory class so that the Factory can build the new objects It will be appreciated that no change would be necessary if the Factory object was driven from a configuration file However since configuration files cause other problems this approach is not used As illustrated herein to extend TPG component 10 4 it is only necessary to write a new class which implements the new functionality tell the Factory about the new class and add the classes to the class library The SocketSession Class handles TCP IP communications between browser component 10 2 and TPG component 10 4 The class can be used to also handle communications between TPG component 10 4 and a standard i e non proprietary HTTP Web server TPG component 10 4 is capable of receiving multiple overlapping requests from the same browser component TPG component 10 4 processes multiple simultaneous requests with the same context by serializing the requests in the case of DSASession The Connection object will queue and dequeue the requests The dequeue method is an abstract method that is implemented for each session type derived class In this way the decision to serialize or not is implemented by each derived session class 10 15 20 30 35 40 45 50 US 6 397 253 B1 31 32 E 3s Mail Label No Elz25644777US 52 3130 38 The following edited trace and screen shots show a session where a users logs on executes a query and logs off E 4 gt
39. d in FIG 1 the components of the present invention may be contained on magnetic recordable type media such as a floppy disk 11 of FIG 1 In this case the program product components i e TPG component 10 4 and GTEA component 10 5 contained on the disk 11 would be installed 10 15 20 25 30 35 40 45 50 55 60 65 10 on client system 10 More specifically the contents of disk 11 would be read under the control of hardware platform 10 3 and then loaded onto mass storage 10 10 e g hard disk As indicated on FIG 1 these program product com ponents would also be loaded into memory 10 1 for oper ating in conjunction with the other software components of the client system 10 FIG 2 FIG 2 illustrates in greater detail the different functional components of TPG component 10 4 As shown the com ponent 10 4 includes a browser request processing compo nent 10 4 that operatively couples to the PST component 10 48 and to a connection request queue 10 49 Additionally component 10 4 includes response processing component 10 42 and server forms request processing com ponent 10 46 In the preferred embodiment the different components of TPG component 10 4 are implemented using Java classes that provide a set of cooperating objects The architecture defined by such classes and objects is described in greater detail in the Appendix The request processing component 10 40 processes browser connection requests a
40. e default html 1 0 16 41 20 Thread 20 DSASession write string writing 104 file CONTEXT 24f2fb d3518296df GET PHFB WEB8 24 2fb d43518296df 3618E7D7 file default html 1 0 16 41 20 Thread 20 Connection run calling write 24 Connection Keep Alive 16 41 20 Thread 20 Connection run calling write 22 Host sandpiper 1080 16 41 20 Thread 20 Connection run calling write 77 Accept image gif image x xbitmap image jpeg image pjpeg image png 16 41 20 Thread 20 Connection run calling write 23 Accept Encoding gzip 16 41 20 Thread 20 Connection run calling write 21 Accept Language en 16 41 21 Thread 20 Connection run calling write 36 Accept Charset iso 8859 Lt Utes 16 41 21 Thread 20 Connection run writing lt CRLF gt 16 41 21 Thread 20 Form write string line Accept text geapform 16 41 21 Thread 20 DSASession write string writing 25 Accept text geapform 16 41 21 Thread 20 Connection run reading and sending browser body 16 41 21 Thread 20 DSASession turn updating time out value907605681084 16 41 21 Thread 20 Connection run reading and sending server response 16 41 21 Thread 20 Form readLine calling next wrapper com buli GEAP DataCacheSession 2583ac 10 15 20 30 35 40 US 6 397 253 B1 37 38 E ss Mail Label No Eiz25644777US 52 3130 41 16 41 21 Thread 20 DataCache read string calling next wrapper com bull GEAP DS
41. er in a context pool Additionally the process ID or context ID is embedded in the HTML passed along to the client along with other state information While state information may change during the course of a session the process ID remains constant until the session terminates and the ID is discarded or returned to the context pool for reuse These approaches can be viewed as server based approaches Another server based approach provides for retaining mainframe connection information on a web server that locates a user s session when the browser reconnects and delivers the input to the mainframe application being run on the associated mainframe or legacy system An example of this approach is the GWEB product developed by Gallagher amp Robertson described at their website at http www gar no gweb The combination of process IDs and storage of state information in a context pool is described in such server based approaches as allowing the execution environment of Java application servers to track the states of numerous clients connected to the Web server In addition it allows users to return to Web pages and view them in the state in which they left them Further it also ensures that a session Is active during the user s entire interaction with the appli cation and keeps track of the state of the client s interaction as well as any transactions that are in progress making it possible to commit and roll back operations For a f
42. er system include a logon a number of processing TPRs and a logoff TPR 18 The method of claim 17 wherein the server system further includes API library for storing a number of runtime routines to be used in processing HTTP requests generated by the browser component one of the runtime routines for generating a BASE value for use by the browser component and wherein each TPR includes a call for access ing the one runtime routine for generating a response to the browser HTTP request 19 The method of claim 1 wherein the client system further includes a service component for converting first type of communications protocol calls into internet commu nications protocol calls for enabling the first type of com munications protocol to run over the internet communica tions protocol the service component being operatively coupled to the gateway component and wherein the URL resource name field further contains a protocol field coded to specify the communications protocol to be used in trans mitting the request the method further including the steps of 1 including in the gateway component a number of different session class facilities each of the class facili ties for generating a communications session connec tion that implements a different type of communica tions protocol m the gateway component invoking a particular one of the communications class facilities in accordance with the coding of the URL resource name pr
43. etscape Print Security Bookmarks 4 Location sandpiper 1080 PHFB WEBB 24 2Ib r 82964 361 8E7D7 fle custinlo him E Intemet 534 Lookup 8 Netcaster cx NewkCool Customer Information Form to default page Name Smith City Phoenix State Zy Diagram 4 Users Returns to mail page 16 42 51 Thread 22 PHFB WEB8 24f2fb d3518296df 3618bE7D7 file default html HTTP 1 0 16 42 51 Thread 22 Connection run reading and sending browser header 16 42 51 Thread 22 DSASession write string writing 104 file CONTEXT 24f2fb d3518296df GET PHFB WEBB8 24f 2fb d3518296df 3618E7D7 file default html 1 0 16 42 51 Thread 22 NULLSession write string Referer http sandpiper 1080 PHFB WEB8 24f2fb d3518296d 3618E7D7 file custinfo htm 16 42 52 Thread 22 Connection run reading and sending browser body 16 42 52 Thread 22 Connection run reading and sending server response 16 42 52 Thread 22 DSASession byte readDSA line HTTP 1 0 200 OK Content type text html Pragma no cache 16 42 52 Thread 22 Connection run writeBytes writing to browser HTTP 1 0 200 OK 16 42 53 Thread 22 Connection run reading and sending server body 16 42 53 Thread 22 Connection run write writing to browser 1849 16 42 53 Thread 22 Connection run End task 16 43 39 Thread 1 New connection opened on port 2478 Local port 1080 16 43
44. fs http sandpiper 1080 PHFB WEB8 24f2fb d43518296df 3618E7D7 lt head gt lt body gt lt hl gt WEB8 Logon Accepted lt hl gt lt hr gt Your Logon has been processed Click lt a href file default html gt here lt a gt for additional options lt body gt lt html gt 16 40 12 Thread 19 DSASession readLine token HTTP 1 0 200 CONTEXT 3618E7D7 16 40 12 Thread 19 Connection run writeBytes writing to browser HTTP 1 0 200 CONTEXT 3618E7D7 16 40 12 Thread 19 DSASession readLine token Content type text html 16 40 12 Thread 19 Connmection run writeBytes writing to browser Pragma no cache 16 40 12 Thread 19 Connection run 55555 reading and sending server body 16 40 12 Thread 19 Connection run content len 0 reading from server 16 40 12 Thread 19 DSASession byte read 16 40 12 Thread 19 Form read back from wrapper com bull GEAP DataCacheSession 24f9c7 16 40 12 Thread 19 lt htmls lt head gt title WEB8 Logon accepted lt title gt base hrefz http sandpiper 1080 PHFB WEB8 24 2 b d3518296df 3618E7D7 head lt body gt s lt hl gt WEB8 Logon Accepted lt hl gt lt hr gt Your WEB8 Logon has been processed Click a href file default html shere a for additional options lt body gt lt html gt 16 40 12 Thread 19 Connection run write writing to browser 295 16 40 12 Thread 19 Connection run contentLength 0 16 40 13 Thread 19 Connection run
45. h contexts which indi cate new session connections context 0 are allocated session connections by TPG component 10 4 from the session pool if the p option is set When the server system 20 indicates that the session connection is to be closed TPG component 10 4 returns the session con nection to the session pool The session pool can be administratively expanded or contracted according to usage within preset minimum and maximum limits The m option designates when a browser user has enabled use of a session that can be multiplexed over persistent session connections When a request is received with the m option set TPG component 10 4 attempts to locate a connection for the same server system e g within PST table 10 48 which is not busy and for which the m flag is set or the connection is not is use When using this option additional software is required to be installed on the server system to demul tiplex sessions and to route messages appropriately From the above it is seen how the TPG component of the preferred embodiment according to the teachings of the present invention manages persistent session connections in response to browser user requests in a manner that provides high performance Also the TPG component provides fur ther performance improvements such as handling remote forms managing and providing session connection pool and multiplex options and providing a variety of different com municat
46. ifically to methods and systems for providing efficient communications between Web browser and server systems 2 Description of Related Art Significant changes are being made by companies in how they communicate with their customers and the types of services offered due to Web technology One such change has been the use of a Web browser as a common front end to a mainframe or an enterprise system In the case of IBM hosts two basic methods have been utilized to give browsers access to such systems These methods have been generi cally called native 3270 and Hypertext Markup Language HTML conversion In the native 3270 method a special browser is utilized that contains some form of built in 3270 terminal emulator software and Java applets that know what to do with the 3270 data streams once they reach the desktop system In the conversion method 3270 formatted screens are converted into HTML format and posted to a Web server The converted screens can then be viewed using any browser These approaches are discussed in greater detail in an article entitled How To Put Mainframes on the Web by Salvatore Salamone published in the June 1996 issue of Byte Magazine A disadvantage of the conversion approach is that it may not offer acceptable performance throughput and response time in a high volume transaction environment The reason is that the message is translated in a Web server extension and possibly in an intermediate application Add
47. ions protocols By utilizing URLs in conjunction with such different capabilities a client system browser user has the ability to adapt the client system to accommodate traffic demands and different operating environments For example a browser user may select a number of different communications protocols in handling different requests involving different host server systems In response to such selections the TPG component would generate a corre sponding number of different session objects e g DSA session SNA session objects for carrying out such com munications in accordance with the teachings of the present invention The foregoing discussion of the present invention has been presented for the purposes of illustration and descrip tion Further descriptions are also provided in the Appendix Such descriptions are not intended to limit the teachings of the present invention to the forms and implementations disclosed herein Consequently many variations and modi fications commensurate with the above teachings within the skill and knowledge of the relevant art are within the scope of the present invention For example the teachings of the present invention should not be limited to the types of protocols disclosed the type of client system and server systems described or to the specific type of software dis closed herein Un US 6 397 253 B1 21 22 E s Mail Label No Ei 25644777US 52 3130 33 APPENDIX I Class Diagram
48. istent connec tion for conducting a browser session Because the gateway component 10 4 created a new persistent connection the new connection identifier is also passed to the TPR trans action program as part of the message prefix The information added by the gateway component 10 4 must conform to the HTTP protocol specification to avoid any ambiguity during the processing of each input message Consequently the line added by the gateway is terminated by a CRLF sequence The CRLF carriage return line feed is the standard HTTP protocol line terminator This sequence is also referred to as a new line and typically appears in the document as lt NL gt A line that consists of only the CRLF sequence is added to mark the end of the information in the gateway header The original HTTP request submitted by the US 6 397 253 B1 15 browser component 10 4 follows the gateway header The description of the runtime library i e API library 20 6 refers to this gateway header as an environment The HTTP GETENV family of routines which are described in the Appendix of the previously referenced Bull User Manual are used to process the gateway header For the browser component 10 2 to submit requests using the newly created DSA session connection the browser component 10 2 must determine that the base URL contains the newly assigned session context identifier Continuing with the previous example it is assumed that the gateway component 10
49. itionally the message is forced to be routed through several applications and through intermediate applications To overcome these disadvantages one system employs an applet that supports mapping screen images associated with a transaction pro cessing application to a modem intuitive Graphical User Interface GUT This eliminates the need for intermediate message translation by having the browser application applet generate and process messages that are understood by the mainframe application The applet also translates replies received from the application screen image format into a format that can be presented to and understood by the user This approach is described in the copending patent applica tion entitled Method for Reducing Message Translation and Traffic Through Intermediate Applications and Systems in an Internet Application Ser No 08 868 178 filed on Jun 3 1997 and assigned to the same assignee as named herein While the above approach improves performance by eliminating the need for intermediate message translation it is specifically designed to operate with IBM mainframe hosts Further since the approach utilizes applets it requires that the applet and HTML page be downloaded from a server over a non persistent connection The applet when executed within the browser is required to open a persistent connec tion back to the server Hence this approach necessitates the establishment of both persistent and non persistent
50. l 709 224 6 148 340 11 2000 Bittinger et al 709 224 OTHER PUBLICATIONS How to Put Mainframes on the Web by Salvatore Sala mone Byte Jun 1996 pp 53 54 The Last Word Selecting Java App Servers by Dan Kara Object Magazine Jun 1998 pp 72 and 70 71 Unlocking the Mainframe by Martin Rennhackkamp DBMS Jun 1997 pp 55 56 amp 58 59 NON PERSISTENT CONNECTION MEMORY 10 1 JAVA VIRTUAL MACHINE 10 7 NIS OPERATING SYSTEM Guaranteed Delivery by Barry Nance Byte Aug 1997 77 78 80 82 amp 84 Web Components Dick Pountain amp John Monteomery Byte Aug 1997 pp 56 60 62 64 66 amp 68 Transaction Processing On The Web by David Matthews amp Wayne Worden Group Bull Technical Update vol 6 No 3 Copyright Bull HN Information Systems Inc amp Bull S A 1996 pp 11 18 Tools amp Utilities Transaction Screen Management System 8 TSMS Reference Manual GCOS 8 Publication No 67 A2 ED42 Rev 02 Copyright 1996 Bull HN Information Systems Inc Transaction Processing TPFF System Software Release Bulletin Software Release 8F01 0 Update 5 GCOS 8 Publication No 67 A2 SA65 Rev 05 Copyright 1985 1993 Bull SA amp Bull HN Information Systems Inc cited by examiner Primary Examiner David Wiley Assistant Examiner Philip B Tran 74 Attorney Agent
51. lectronic documents in HTML for mat from part of the Internet known as the world wide web The World Wide Web part of the Internet is a collection of server computers sites on the Internet which store HTML documents that can be publicly accessed by computer users connected to the Internet HTML docu ments include as a subset forms that allow the user to supply information Thus a server system form provider can use forms to collect information and to provide back and forth interaction The use of forms is discussed in the text entitled Programming on the World Wide Web by Shishir Gundavaram Copyright 1996 O Reilly amp Associates Inc As known in the art HTML documents on the World Wide Web often contain several thousands of bytes and often incorporate several image graphic files representative of forms each of which also contain thousands of bytes At the current transfer speeds used to connect to the Internet the transmission of such forms can take considerable time e g seconds to minutes to complete downloading from a com puter site In some prior art enterprise systems so called remote forms packages have been used for terminal based appli cations to make form processing more time efficient An example of two such packages are the Transaction Processor Forms Facility TPFF product and the Transaction Screen Management System 8 TSM product developed and mar keted by Bull HN Information S
52. lz 5644777US 52 3130 49 if argv length gt i 2 dsa node 1 2 eise dsa node argv i if debug for i 0 i argv length i System out println Arg 1 argv il conn new dsa_connection debug din new DataInputStream System in try conn dsa_connect ipserver dsa_node dsa_mailbox conn VIP7200 personid proj id billing pw while true while conn dsa_have_turn in msg conn dsa_read if in msg null System out println Session terminated System exit 0 for i 0 i in msg length 1 if in msg i byte 0 7 skip null bytes System out write in msg i System out flush try out str din readLine Nr catch IOException e System out printin Error reading input e toString System exit 1 if out_str compareTo SBRK r 0 conn dsa send attn else out msg new byte out str length out str getBytes 0 out str length out msg 0 conn dsa write out msg catch dsaException e System out println e toString System exit 1 end of main 10 20 25 30 US 6 397 253 B1 55 56 ss Mail Label No E 5644777US 52 3130 50 IV API Library 20 6 The API Library 20 6 contains a number of runtime routines that are called by TPR transaction programs One of these routines is designated as HTML BASE which is called for the purpose of generating a
53. mponent 10 2 receives a document that contains the lt BASE gt HTML element the browser component 10 2 uses the information provided in the HREF attribute to resolve any relative references that are contained within the HTML document Because most TP Web applications need to generate lt BASE gt tags the API library 20 6 of the enterprise server software includes the HTML_ BASE routine illustrated in the Appendix which can be used to generate the complete lt BASE gt element The routine returns the result to the TPR transaction program which can then include the generated lt BASE gt in Web pages The gateway component 10 4 requires the TPR transac tion program to define an additional application specific suffix for the session context identifier The session context identifier generated by the gateway component 10 4 con tains two values and the complete session context identifier includes a third value that contains an application specific value TPR transaction application program must specify an application context value whenever the lt BASE gt is gener ated This context value must be non zero and has a maximum size of 32 bits 10 15 20 25 30 35 40 45 50 55 60 65 16 In addition an application can specify a new application specific value at any time to provide additional control over the application Changing this portion of the session context identifier prevents the user from submit
54. n HTTP response header indicating that the session can be released The header HTTP response header 15 HTTP 1 0 200 CONTEXT 0 To continue testing you must Diagram 6 User logged off 15 30 US 6 397 253 B1 45 46 ss Mail Label No 12 gt 56447770 5 52 3130 45 H Remote Forms Protocol Remote forms allow TPG component 10 4 to cache HTML pages on the client system 10 This can be advantageous in reducing network traffic In a response to a request from browser component 10 2 a server application e g TPR 20 2b can request a form a form is an HTML sequence to be loaded from a local TPG cache 10 6 If the form is not present in the cache 10 6 TPG component 10 4 will open a session connection to a form server program running on system 20 and request the form When the form is received from the server system 20 TPG component 10 4 will cache the form merge the form with any data that was sent with the original form request and send the result to the browser component 10 2 The form flow is depicted in Figure 5 The browser component 10 2 1 makes a request in the normal manner The following HTTP line is added to the request by TPG component 10 4 2 Accept text tpgform This informs the server application e g TPR 20 2b that the client system 10 is capable of handling forms The request is sent to the server system 20 3 by TPG component 10 4 2 If the server application 3 determines that a form is
55. n be opened or has requested that an existing session connection is to be used for forwarding the request to server system 20 As indicated in block 404 TPG com ponent 10 4 examines the context field value and in this case sees that it has a value of zero This indicates that no context for this session exists i e no session connection has been established As indicated in block 406 of FIG 4a TPG component 10 4 opens a new persistent session connection to server system 20 using the protocol specified in the server address field of the URL i e DSA in this example This is done by invoking a connection function within the browser request processing component 10 40 of FIG 2 In the simplest case the HTTP protocol i e SOCK could also be specified where the host system i e server system 20 includes the capability of utilizing this protocol The TPG component 10 4 also records the pertinent session information as an entry in the PST table 10 48 as follows class DSAContextEntry 1 private dsa connection connection null connection object private String null connection obj name private long connIndex 0 connection obj index private long time 0 TOD session was created private boolean sessionOpen false session state private String appval 0 value supplied by app private long lastAccessTime 0 TOD for time out Next the TPG component 10 4 generates a unique con
56. n example of a customer information page example of a customer information page using alternate scripting model with TPR generating only JavaScnpt statements An example of a data entry form using METHOD POST An example of a data entry form using METHOD GET Sets CONTEXT 0 Diagram 3 User selects Customer Information 16 42 3 Thread 21 PHFB WEB8 24f2fb d3518296df 3618E7D7 file custinfo htm HTTP 1 0 16 42 3 Thread 21 DSASession processContext context 24f 2fb d3518296df 3618e7d7 16 42 3 Thread 21 DSASession processContext retrieved conn com bull tcpdsa dsa 224 2 10 25 30 40 45 US 6 397 253 B1 39 40 E ss Mail Label No Elz 5644777US 52 3130 42 16 42 3 Thread 21 Connection run reading and sending browser header 16 42 3 Thread 21 DSASession write string writing 104 file CONTEXT 24f2fb d3518296df GET PHFB WEB8 24f2fb d3518296df 3618E7D7 file custinfo htm HTTP 1 0 16 42 3 Thread 21 Connection run reading and sending browser body 16 42 3 Thread 21 Connection run reading and sending server response 16 42 4 Thread 21 DSASession byte readDSA line HTTP 1 0 200 16 42 4 Thread 21 Connection run writeBytes writing to browser HTTP 1 0 200 16 42 4 Thread 21 Connection run reading and sending server body 16 42 5 Thread 21 Connection run End task Back Reload Home Search N
57. nd establishes the required persistent session connections either by establishing new session connections or using existing session connections Thus component 10 40 performs the listener and connec tion functions discussed above The logic of component 10 40 in processing input connection requests is illustrated in greater detail in FIG 3a The operations performed by component 10 40 will be discussed in greater detail relative to that figure response processing component 10 42 responds to responses received from server system 20 during sessions initiated by browser component 10 2 Accordingly it com municates with request processing component 10 40 as required for updating the status of existing persistent con nections e g close Additionally since component 10 42 provides responses to the browser component 10 2 the component also is involved in processing remote forms along with component 10 46 The logic of component 10 42 in processing server requests is illustrated in greater detail in FIG 3b The operations performed by component 10 42 will be discussed relative to that figure The server forms request processing component 10 46 responds to remote forms requests received from server system 20 via an appropriate remote forms protocol The component 10 46 passes the results of such form processing to component 10 42 for forwarding to browser component 10 2 The logic of component 10 46 in processing remote form requests
58. nd hidden form fields as in prior art approaches utilized for maintaining state information This approach provides optimum perfor mance when used in a high volume enterprise computing environment Moreover it allows use of standard browser software and standard HTTP protocols as discussed herein By way of background the URL is a standard way to specify the location of a resource e g document anywhere on the World Wide Web The exact specification of the URL is defined by the specification RFC 1738 that can be located at http www w3 org hypertext WW W Addressing Addressing html A URL is composed of three pieces of information 1 Protocol name typically HTTP 2 Server address 3 Resource name e g a file on a Web server The forms of URLs include absolute and relative An absolute URL specifies all of the addressing information protocol server address and a resource name that is nec essary to locate the desired resource By contrast a relative URL e g document contains only a relative file name The pathname supplied is relative to the path or directory of the referencing document Thus relative URLs allow collec tions of documents to be moved from one directory to another without affecting the links contained in the docu ments As well known in the art browsers combine relative URLs with a document base value to form an absolute URL Every time a browser makes a request for a document it remembers the ba
59. nected from server system 20 In greater detail the browser user enters the following URL HTTP sandpiper 8080 ph45 web8 dsa x v z logoff where the target transaction application specified is TPR 20 2c This causes TPG component 10 4 to forward to server system 20 the browser initiated HTTP GET request having the format GET ph45 web8 x y z logoff HTTP 1 0 This results in server system 20 invoking logoff TPR 20 2c TPR 20 2c provides the appropriate response to browser component 10 2 by including CONTEXT 0 in the response status line i e HTTP 1 0 200 0 This is the signal from the host system to TPG component 10 4 to close the session The TPG component 10 4 passes the server system s response to browser component 10 2 In addition TPG component 10 4 closes the browser socket connection used for communicating with browser component 10 2 Also when such session closing takes place TPG component 10 4 removes the session entry information form PST table component 10 48 Also the session may be closed by TPG component 10 4 because of browser user inactivity or by server system 20 via sending a close response In the case of inactivity if no traffic is seen on a session over a specified time interval the session is considered to be inactive In the preferred embodiment a default time out interval of 10 minutes is established by TPG component 10 4 but this value can be varied administratively For example the
60. ned field coded to specify a session context value for indicating the type of session connection to be initiated by the client system through the communications net Work for transferring the request to the server system b maintaining a table structure within a transaction protocol gateway TPG component included in the client system located between the browser component and the communications network for storing session connection information for identifying each persistent connection established by the gateway component c mapping the URL of each input connection request by the gateway component that is received from the browser component to an established persistent session connection when specified by the session context value and d the gateway component transferring each request made by the browser component during a session that contains the mapped URL to the server system over the communications network using the established persis tent session connection in lieu of opening a new session connection thereby minimizing network traffic 2 The method of claim 1 wherein the predetermined field is a session context field coded to specify a first value for designating when a new session connection is to be estab lished by the TPG component 3 The method of claim 2 wherein the server system includes a facility for generating base tag values to be transferred to the browser component and the method of claim 2 further includes the
61. nent generating a close session request containing a URL whose resource name field is coded for closing the persistent session connection for transmission to the server system and g in response to the close session request the gateway component accessing the table structure and removing the persistent connection information for the connec tion identified by the URL predetermined field thereby making the location available for establishing other persistent session connections 9 The method of claim 8 wherein the browser component generates the close session request in response to a user HTML page selection 10 The method of claim 8 wherein the browser compo nent generates the close session request in response to a browser user entering a URL whose resource name field specifies a session closure 11 The method of claim 9 wherein the selection desig nates a logoff request 12 The method of claim 10 wherein the resource name field of the URL further contains a command field coded to specify a logoff request 13 The method of claim 8 wherein the method further includes the steps of h the gateway component transferring the browser close session request containing the coded URL command field specifying the logoff request to the server system and i in response the request the server system closing the session connection and sending a response to the browser component confirming that the session has been closed 14 The me
62. nnection Thus the gateway component is able to maintain persistent connections while at the same time conforming to the requirements of the HTTP stateless protocol It will be noted that the term gateway has been used in referring to the access mechanism of the present invention In accordance with the teachings of the present invention the term gateway is used in the broad sense to refer to a software component that is installable on a standard personal computer or workstation rather than on a separate or imme diate server system such as a Web or HTTP server system DESCRIPTION OF THE DRAWINGS FIG 1 is an overall block diagram of a transaction processing system that utilizes the method and client browser access component of the present invention FIG 2 illustrates in greater detail the client browser system of the present invention FIGS through 3c illustrate in greater detail the components of the client browser system of FIG 2 FIGS 4a and 4b are flow diagrams used to describe different capabilities of the preferred embodiment of the present invention in managing persistent session connec tions FIG 5 is a diagram illustrating the protocol utilized in processing remote forms according to the teachings of the present invention DESCRIPTION OF THE PREFERRED EMBODIMENT FIG 1 illustrates a client server system 10 that includes the method and the transaction protocol gateway TPG component of the present in
63. ns protocol such as the hypertext transfer protocol HTTP 33 The system of claim 30 wherein for each session context field within the URL resource name field coded to specify the first value the gateway component generates a unique context key value that uniquely identifies a session entry within the table structure for accessing session con nection information pertaining to the particular persistent connection established by the gateway component 34 The system of claim 29 wherein the browser compo nent generates a close session request containing a URL whose resource name field is coded for closing the persistent session connection for transmission to the server system and in response to the close session request the gateway com ponent accesses the table structure and removes the persis tent connection information for the connection identified by the URL predetermined field thereby making the location available for establishing other persistent session connec tions 35 The system of claim 34 wherein the browser compo nent generates the close session request in response to a user HTML page selection 36 The system of claim 34 wherein the browser compo nent generates the close session request in response to a user entering a URL whose resource name field is coded for specifying session closure 37 The system of claim 34 wherein the gateway compo nent transfers the browser close session request containing the coded URL resource
64. nteger comp 6 that contains the err Notes application defined value to be included in the new BASE element The value of appContext becomes the third field of the session identifier portion of the base URL Pointer to an integer comp 6 to receive a value that indicates whether the call was successful A value of zero indicates a successful call A negative value indicates that an error occurred The HTML BASE routine is used to generate an HTTP response message that sets a base URL for future requests from the browser component In general a Web application will provide a logon transaction that uses this routine to establish the base URL for each new connection to TP software After the logon transaction has established the base URL all HTML pages generated by the application can use relative URLs to submit transactions over the same session connection The generated base contains URL elements up to and including the session identifier BASE HREF http gateway port node mbx 1234 5678 abcd Relative links that reside on a Web page that contains the BASE element specify the next TP command and any optional information for example You are now logged on The A HREF nxtcmd custinfo htm Customer Information lt A gt form is now available When a user selects the Customer Information link in the above example the browser appends the relative link information that is provided in the lt A gt tag to the b
65. number of session connections per server system and a multiplex type of connection wherein the browser user can enable use of a session that can be multiplexed over persistent session connections 5 10 15 20 25 35 40 45 50 55 60 65 66 25 The method of claim 1 wherein the method further includes the steps of p including in the client system a remote forms cache operatively coupled to the gateway component for storing HTML pages cached by the gateway component the HTML pages containing static HTML data representative of a number of forms q in response to each browser request the gateway component generating an additional HTTP line for adding to the browser request for informing the server system that the client system is capable of handling forms r when a form is required as part of the response to the browser request generating a predetermined type of HTTP response by the server system that indicates the particular form being requested followed by form variable data s the gateway component upon receiving the server system response searches the cache for the particular form and t when the form is found the gateway component merges the form with the form variable data 26 The method of claim 25 wherein step t further includes the steps of 1 when the particular form is not found the gateway component establishes a new session connection to the server system 2 generates
66. oftware and hardware that includes standard internetwork web browser software In the preferred embodiment the web browser component 10 2 includes commercially available application browser soft ware such as Netscape Navigator or Microsoft Explorer that may be Java enabled That is browser applets execute under control of a Java virtual machine component 10 9 Similarly the TPG component 10 4 and GTEA component 10 5 also execute under JVM component 10 9 It will also be appreciated that client system 10 also includes appropri ate interface network not shown that allow the system to send and receive data from any network to which system 10 may connect For example the network may be a local area network LAN or more specifically the Internet In this regard it should be noted that in contrast to the prior art US 6 397 253 B1 9 applets are not required for establishing persistent tions according to the teachings of the present invention As indicated the web browser component 10 2 opera tively couples to the TPG component 10 4 and communi cates with such component through a non persistent con nection established by utilizing a standard HTTP protocol e g HTTP 1 0 HTTP 1 1 The TPG component 10 4 includes routines methods for performing a listener function and a connection function The listener function involves listening on a configurable port for browser connections communicated via HTTP p
67. or Firm Faith F Driscoll John S Solakian 57 ABSTRACT A client system utilizes a standard browser component and a transaction protocol gateway TPG component that opera tively couples to the standard browser component The browser component initiates the utilization of new session connections and reuse of existing session connections as a function of the coding of the universal resource locators URLs contained in each issued request Each URL is passed to the TPG component that examines a context field included within the URL If the context field has been set to a first value the TPG component opens a new session connection to the server system and records the session connection information in a persistent session table PST component maintained by the TPG component If the con text field has been set to a second value then the TPG component obtains the session connection information in the PST component for the established session connection and passes the data from the browser component to the server system over the existing persistent session connection 55 Claims 8 Drawing Sheets APILIBRARY BASE ROUTINE 7 204 PARSED HTML ENTERPRISE SERVER SYSTEM US 6 397 253 B1 Sheet 1 018 28 2002 U S Patent L 0c W3LlSAS H3JAH3S 5 4 WO4JLIV Id AV 1dSIG
68. otocol field and n the browser selected communications class facility invoking the service component for establishing the persistent connection that implements the browser user specified communications protocol 20 The method of claim 19 wherein the first type of communications protocol includes a number of different proprietary communications protocols 21 The method of claim 20 wherein the number of different proprietary communications protocols include DSA and SNA protocols 22 The method of claim 19 wherein step m further includes the step of o the gateway component in response each browser request containing a protocol field coded to specify an internet communications protocol invokes one of the class facilities that directly establishes the persistent connection for implementing the specified internet communications protocol thereby eliminating execu tion of step n 23 The method of claim 1 wherein step a further includes the steps of including an options field in the URL for specifying different types of user selected persistent connections and the gateway component as a function of the setting of the option field establishing the type of persistent connec tion specified by the browser user 24 The method of claim 23 wherein the different types of persistent connections includes a pool type of connection wherein the browser user can enable use of a session connection from a pre established predetermined
69. particular one of the TPRs that is to process the browser request 41 The system of claim 40 wherein the number of TPRs of the server system include a logon TPR a number of processing TPRs and a logoff TPR 42 The system of claim 41 wherein the server system further includes an API library for storing a number of runtime routines to be used in processing HTTP browser requests one of the runtime routines for generating a BASE value for use by the browser component and wherein each includes a call for accessing the one runtime routine for generating a response to the browser HTTP request 43 The system of claim 29 wherein the client system further includes a service component for converting first type of communications protocol calls into internet commu nications protocol calls for enabling the first type of com munications protocol to run over the internet communica tions protocol the service component being operatively coupled to the gateway component and wherein the URL resource name field further contains a protocol field coded to specify the communications protocol to be used in trans mitting the request to the server system and the gateway component further including a number of different session class facilities each class facility for generating a communications session con nection that implements a different type of communi cations protocol the gateway component invoking a particular one of the communications class f
70. pe text html lt NL gt lt NL gt lt HTML gt lt HEAD gt BASE HRBF http gateway sysl tp8ws 1234 45 4 5678 lt HEAD gt lt BODY gt Rest of HTML response goes here lt BODY gt lt HTML gt The above example shows an HTTP response header that conforms to the HTTP version 1 0 specification The completion code of 200 i e described in the HTTP1 0 and HTTP1 1 specifications indicates that the request was pro cessed successfully The text that follows the completion code contains the reserved word and the new application context value of 5678 The gateway compo nent 10 4 copies this value to the PST entry allocated to the current DSA session connection Any subsequent input message that specifies the gateway context identifier is validated by the gateway component 10 4 to include the correct time of day and application context value Failure to match on either field results in an HTTP response indicating that the requested resource was not found In addition the BASE header element contains the complete session context identifier including the application context value The browser component 10 2 uses this new base information when constructing absolute URLs for the links that are included in the current document Description of Operation The overall operation of the preferred embodiment of the present invention will now be described with respect to US 6 397 253 B
71. put connection request received from the browser component to an established persistent session connection when specified by the session context value and transferring each request made by the browser component during a session that contains the mapped URL to the server system over the communications network using the established persistent session connection in lieu of opening a new session connection thereby minimizing network traffic 55 The program product of claim 54 wherein the program product further includes a service component containing instructions for convert ing a first type of communications protocol calls into internet communications protocol calls for enabling the first type of communications protocol used for estab lishing a persistent session connection to run over the internet communications protocol utilized by the browser component
72. rein the gateway component retains the con nection information until all browser users have completed their respective sessions In accordance with the teachings of the present invention the gateway component of the preferred embodiment may also include the capability of enabling use of session pools When the gateway component includes this capability a plurality of persistent sessions connections are initially established This allows the gateway component to immediately connect a browser component to a server system in response to a browser request having a URL specifying a new session connection The result is improved performance Also in accordance with the teachings of the present invention the gateway component may also include the capability of enabling multiplexing persistent session con nections for servicing a plurality of browser requests gen erated during a number of different user sessions This capability enables several browser users or a single browser user to conduct multiple sessions over a single shared persistent session connection An advantage of such a capa bility is an improvement in processing efficiency in handling a high volume of user requests with a limited number of connections In accordance with the teachings of the present invention the above capabilities are invoked by the browser compo nent by the same basic URL mechanism The URL of the preferred embodiment may include an optional field portion
73. return 0 B Example in Java Code using GTEA component 10 5 to communicate with timesharing system using a DSA session over 10 15 20 30 35 40 45 50 US 6 397 253 B1 51 52 E ss Mail Label No EIz275644777US 52 3130 48 import java io import java util import com bull tcpdsa dsa connection import com bull tcpdsa dsaException class gcos connection public static void main String argv String ipserver String mailbox String dsa node int msg len byte 1 in msg byte out msg String out str null boolean need logon false boolean trace false boolean debug false String personid person String proj id project String billing null String pw xyz DataInputStream din dsa connection conn int i if argv length lt 2 System err println Usage 1 d t server mbx System exit 1 for i 0 i lt 2 i if argv il startsWith if argv i compareTo 1 0 need_logon true else if 11 0 debug true else if 1 compareTo t trace true else System err println Unknown flag argv 3 System exit 1 else break LU 0 ipserver argv i mailbox argv i 1 lt dsanode gt 10 15 20 25 30 40 45 50 US 6 297 253 1 53 54 ss Label No E
74. rotocol requests e g GET The connection function involves establishing the required per sistent session connections as discussed herein As shown in FIG 1 the TPG component 10 4 further includes a persistent session table PST structure compo nent 10 48 that is used by the connection function for storing session connection information for establishing and main taining persistent connections between client system 10 and server system 20 in addition to reusing existing session connections Additionally the PST component 10 48 is used by routines methods that manage the sessions taking place such as performing standard socket session functions e g open read write close using standard Java network library routines executing under JVM component 10 9 In the preferred embodiment PST component 10 48 corre sponds to a hash table structure whose entry locations are accessed via a token value The use of such structures for identifying or tracking objects or entities by a token e g name as the identifying key is well known in the art The use of PST component 10 48 is discussed in greater detail herein In greater detail the GTEA component 10 5 is a service which converts DSA calls i e native Bull HN Information Systems GCOS communications protocol to TCP IP calls using the so called RPC1006 protocol This allows DSA to run over the TCP IP protocol In the preferred embodiment the GTEA component 10 5 establishe
75. rrying out those operations component 10 2 forwards the server response to the browser component 10 2 i e block 10 424 FIG 3c Remote Forms Logic FIG 3c illustrates the logic of component 10 46 in processing a request for a remote form from server system 20 As discussed above the remote form corresponds to the static portion of an HTML page The TPG component 10 4 provides local storage in forms cache 10 6 This provides additional performance enhancement particularly when used along with the TPG component s capability to maintain persistent connections As indicated in block 10 468 of FIG component 10 46 first determines if the HTTP request is to use a cached form If it is component 10 46 next determines if the form is cached in forms cache 10 6 i e block 10 465 This is accomplished by performing a search of the forms cache 10 6 directory If the form is located component 10 42 loads or reads out the form from cache 10 6 into a buffer area of memory i e block 10 46c Next component 10 46 merges the server data accompanying the server s request obtained from its HTML data storage 20 4 with the static portion of the HTML page ie block 10 464 The HTML page containing both the form and server data is then sent by component 10 46 to browser component 10 2 for display i e block 10 46 In the case where component 10 46 determines that the form is not cached i e block 10 465 component 10 46 will make a reque
76. s a simple API that enables users to write client applications using open TCP IP standards while at the same time utilizing the advantages of the DSA protocol The advantages of using such a protocol component are discussed in a presentation entitled G amp R Host Links BUS 1996 available at the Gallagher amp Rob ertson web site located at http www gar no presentations h196us Examples of the GTEA component are provided in the Appendix portion of this specification In a similar manner GTEA component 10 5 also enables the SNA protocol layer to run over TCP IP As well known SNA systems network architecture is a widely used communi cations protocol framework developed by IBM Corporation that enables different models of IBM computers to exchange and process data over a communications network It will be appreciated that when the SOCK protocol is to be used the GTEA component 10 5 is bypassed The selection and use of different communications protocols in conjunction with TPG component 10 4 is described in greater detail herein While the preferred embodiment of the present invention is being described relative to a client workstation system those skilled in the art will appreciate that the present invention is capable of being distributed as a program product in a variety of forms and that the present invention applies equally or operates independently of the type of media used to carry out the distribution For example as indicate
77. s and Program Flow IL Remote Forms Protocol III GTEA component 10 5 IV API library 20 6 US 6 397 253 B1 23 24 E ss Mail Label No 5644777US 52 3130 34 1 Class Diagrams and Program Flow As previously indicated the preferred embodiment of the TPG component 10 4 of present Invention is constructed as a set of cooperating objects using well known patterns to facilitate flexibility and to readily enable such features as the ability to dynamically 5 specify a per session protocol The use of well known patterns is described in the text by Gamma Erich et al entitled Design Patterns Elements of Reusable Object Oriented Software published by Addison Wesley 1995 open URL do until EOF N browser write session Connection do until EOF read session write browser close lt AbstractGEAPFactory gt Factory type static ConcreteGEAPFactory ConcreteGEAPFactory Read 1 DSA Reaa Session Read 10 Diagram A Principle TPG Classes The diagrams contained herein illustrate the specific classes used in implementing TPG component 10 4 More specifically diagram A shows the principal TPG component classes US 6 397 253 B1 25 26 E 35 Mail Label No Ei 53644777US 52 3130 35 T a decorator ty Sees
78. se name of the document for use in forming absolute URLs for any field that specifies a relative name The HREF field is contained within an HTML anchor element lt A gt included within the document for specifying a hyperlink i e resource requested when the link is selected by a user For more information regarding the use of such fields reference may be made to the Bull HN Information Systems Inc publication entitled Distributed Computing Web 8 User s Guide GCOS 8 order number 67 A2 RJ10 Rev01 Version 3 0 dated July 1998 When browser component 10 2 connects to server system 20 using the transaction gateway component 10 4 a persis tent connection is established for conducting a DSA session This enables the browser component 10 2 to reuse the DSA persistent connection for every subsequent message accomplish this the gateway component 10 4 retrieves information from the URL of each new message and selects a specific DSA connection based on the part of the URL that contains a session context identifier As discussed above a URL is composed of a protocol name server address and resource name In the preferred US 6 397 253 B1 13 embodiment the resource name specifies information that is used by the gateway to execute a specific transaction The general format of a Web URL used by the present invention Is as follows http gateway node mailbox protocol session context identifier tp8__command options
79. sgPtr string HTTP 1 0 200 CONTEXT gwContext NL Content type text html NL Pragma no cache NL NL 45 html HEAD TITLE2 Web 8 Logon accepted lt TITLE gt NL base lt HEAD gt NL lt BODY gt lt H1 gt Logon Accepted Hl HR 50 NL You are now logged on The lt HREF nxtcomd custinfo htm gt Customer Information lt A gt NL form is now available lt BODY gt 55 html US 6 397 253 B1 61 62 ss Mail Label No 1 564477705 52 3130 53 delimited size into msgText pointer msgPtr subtract 1 from msgPtr call HTTP SEND using msgText msgPtr US 6 397 253 B1 63 While in accordance with the provisions and statutes there has been illustrated and described the best form of the invention certain changes may be made without departing from the spirit of the invention as set forth in the appended claims and that in some cases certain features of the invention may be used to advantage without a corresponding use of other features What is claimed is 1 A method of efficiently processing requests from a client system to a remotely located server system through a communications network the method comprising the steps of a generating a request by a standard browser component included in the client system to be forwarded to the server system the request containing a standard URL having a resource name field containing a predeter mi
80. shed persis tent connection made by the client system 2 a component for mapping the standard URL of each input connection request by the gateway component to an established persistent session connection using the table structure when specified by the session context value and 3 component for causing the transfer each request made by the browser component during a session that US 6 397 253 B1 67 contains the mapped URL to the server system over the communications network using the established persis tent session connection in lieu of opening a new session connection thereby minimizing network traffic 30 The client system of claim 29 wherein the predeter mined field is a session context field coded to specify a first value for designating when a new session connection is to be established by the gateway component 31 The client system of claim 29 wherein the server system includes 1 a facility for generating base tag value in response to receiving a URL resource name field in a browser request containing a context field specifying the first value for transfer to the browser component and 2 means for transferring the base tag value including the mapped URL to the browser component for identifying the persistent session connection established by the gateway component 32 The client system of claim 29 wherein the browser component and gateway component communicate using a stateless common application communicatio
81. shed predetermined number of session connections per server system and a multiplex type of connection wherein the browser user can enable use of a session that can be multiplexed over persistent session connections 49 The system of claim 29 wherein the client system further includes a remote forms cache operatively coupled to US 6 397 253 B1 69 the gateway component for storing HTML pages cached by the gateway component the HTML pages containing static HTML data representative of a number of forms the gate way component in response to each request generating an additional HTTP line for adding to the browser request for informing the server system that the client system is capable of handling forms and when a form is required as part of the response to the browser request the server generates a predetermined type of HTTP response by the server system that indicates the particular form being requested followed by form variable data 50 The system of claim 49 wherein the gateway compo nent upon receiving the server system response searches the cache for the particular form and when the form is found the gateway component merges the form with the form variable data 51 The system of claim 50 wherein when the particular form is not found the gateway component establishes a new session connection to the server system generates a prede termined HTTP request specifying the particular form and upon receipt of the requested form from
82. st for a copy of the form from server system 20 The request is transferred by either opening a new session connection or by using an existing session connection 1 block 10 46 This operation is carried out by invoking component 10 40 As further described herein component 10 40 sends a request for the specified form using the remote forms protocol illustrated in FIG 5 see 10 15 20 25 30 35 40 45 50 55 60 65 12 Appendix for a discussion of this Figure The determination to open a new session connection or use an existing session connection is made by component 10 40 in the manner described above As indicated by block 10 46g upon receipt of a response containing the form i e the static portion of the HTML page component 10 46 writes the form into the forms cache 10 6 as well as updating its directory to reflect such storage Next component 10 46 merges the form with the data previously received from the server system in its HTTP request and forwards the entire HTML page to browser component 10 2 for display 1 block 10 462 Description of URL Encoding preferred embodiment of the present invention makes use of the standard Uniform Resource Locator URL in establishing persistent session connections By encoding all required connection information into the URL as described herein in greater detail the present invention avoids unnec essary scanning of HTTP headers for Cookies a
83. steps of d generating a base tag value by the facility in response to receiving a URL in a browser request containing a context field specifying the first value for transfer to the browser component and e transferring the base tag value including the mapped URL to the browser component for identifying the persistent session connection established by the gate way component 4 The method of claim 1 wherein the browser component and gateway component communicate using a stateless common application communications protocol such as the hypertext transfer protocol HTTP 5 The method of claim 2 wherein for each session context field within the URL resource name field coded to specify the first value the gateway component generates a unique context key value that uniquely identifies a session entry within the table structure for accessing session connection information pertaining to the particular persistent connec tion established by the gateway component 6 The method of claim 4 wherein communication between the browser and gateway components using the 10 15 20 35 40 45 50 55 60 65 64 stateless common application communications protocol is conducted over a non persistent connection with a standard internet communications protocol 7 The method of claim 6 wherein the standard internet communications protocol is TCP IP 8 The method of claim 1 further including the steps of f the browser compo
84. t field field 2 specifies a persistent session connection identifier value which is guar anteed to be unique The persistent session context identifier is assigned by the gateway component 10 4 when the browser submits a request that contains a zero in this field That is when the session context field is 0 the gateway creates a new DSA connection to the transaction processing TP enterprise server workstation that is identified by lt node gt lt mailbox gt When the connection is established a unique connection identifier is assigned by the gateway 55 60 65 Field 4 http gateway sys1 tp8ws 0 logon 12345 When processing this URL the browser component 10 2 makes a connection to the gateway component 10 4 at IP address gateway and uses the http protocol to submit a GET request The HTTP request message sent by the browser component 10 2 to the gateway component 10 4 is GET sys1 tp8ws O logon 12345 HTTP 1 0 The gateway component 10 4 examines this message and copies the TP command name to the beginning of the message The message submitted to the TP server worksta tion is logon context lt cid gt lt tod gt lt CRLF gt lt CRLF gt GET sys1 tp8ws 0 logon 12345 1 0 In this example the gateway component 10 4 copied the logon command name to the beginning of the message In addition the gateway component 10 4 detected a session identifier of 0 and established a new pers
85. the URL and specifies the transac tion routine i e logon TPR 20 2a to be run on server system 20 Next TPG component 10 4 forwards the HTTP header and body from the browser component 10 2 to server system 20 as indicated in block 406 i e item 2 in FIG 45 The browser request processing component 10 40 forwards the request using the per Sistent session connection in the process of being established on the client system 10 by the TPG com ponent 10 2 To complete the persistent session connection as discussed herein the server system 20 cooperates by furnishing a base tag value that enables complete identification of the session connection by both systems As indicated in block 408 upon receipt of the transaction name ie logon server system 20 invokes the logon transaction processing routine 20 2 1 item 3 in FIG 4b The TPR 20 2a during its normal processing constructs an HTML response Part of this response includes an HTML BASE tag that incorporates the context key The TRP 20 2a does this by calling the BASE routine contained in API library 20 6 The server system 20 sends the response to TPG component 10 4 over the established persistent session connection item 4 in FIG 45 As indicated in block 410 the response processing com ponent 10 42 of TPG component 10 4 forwards the server system response to browser component 10 2 via the HTTP protocol over a non persistent connection established via sockets
86. the server system stores the form in the cache and continues as if the form had been found 52 The system of claim 50 wherein a form is deemed found if the name of the form matches a cache directory entry of the cache and if the version specified in the directory entry matches the form version 53 The system of claim 50 wherein the additional HTTP line is Accept text tpgform wherein tpg is used to identify the gateway component 54 A program product for efficiently processing requests from a client system to a remotely located server system through a communications network the program product comprising gateway program component program containing instructions for 10 15 20 25 30 35 70 generating a request by a standard browser component included in the client system to be forwarded to the server system the request containing a standard URL having a resource name field containing a predeter mined field coded to specify a session context value for indicating the type of session connection to be initiated through the communications network for transferring the request maintaining a table structure within a transaction protocol gateway TPG component included in the client sys tem and located between the browser component and the communications network for storing session con nection information for identifying each persistent con nection established by the gateway component mapping the URL of each in
87. thod of claim 13 wherein the method further includes the steps of the gateway component transferring the server response to the browser component for indicating to the user that the session has been closed 15 The method of claim Z wherein the method further includes the steps of k for each session context field within the URL resource field coded for specifying a new session connection to be established the gateway component generating for inclusion in the session context field a unique context key value containing a number of parts a first part containing a time of day value for uniquely identifying a session entry within the table structure a second part containing a token value for accessing the session connection information entry within the table structure pertaining to a session connection established by the gateway component and a third portion containing an optional server application specific value for use in invalidating out of date links when selected by a browser user 16 The method of claim 3 wherein the server system further includes a number of transaction processing appli cation programs TPRs for processing browser user requests and wherein the resource name field further includes another part containing an application command value coded for identifying a particular one of the TPRs that Is to process the browser request US 6 397 253 B1 65 17 The method of claim 16 wherein the number of TPRs of the serv
88. ting requests from bookmarks thus providing an additional form of protection against misuse Whenever a TPR transaction program assigns a new application context value the new base information must be provided to the browser component 10 2 via the lt BASE gt element In addition the gateway component 10 4 must be notified of the new application context Communication between the TPR transaction program and the gateway component 10 4 takes place on the HTTP status response line using the message portion of the status record If the TPR transaction program wants to set the application context value to 5678 then the complete session context identifier in the example is 1234 abcd 5678 The TPR transaction program is responsible for generat ing the complete HTTP response header and the HTML document The HTTP response begins with an HTTP status which includes a numeric completion status code and a text message In non Web environments the text portion typi cally is ignored and is provided only as a convenience for debugging the HTTP protocol In the preferred embodiment this field is used to communicate from the TPR transaction program to the gateway component 10 4 The message sent to the browser component 10 2 includes an HTTP response header that identifies the new application context value and an HTML BASE element that identi fies the complete session context identifier HTTP 1 0 200 CONTEXT 5678 lt NL gt Content ty
89. urther discussion of Java application servers reference may be made to the article entitled Selecting Java App Servers by Dan Kara published in the June 1998 issue of Object Magazine The above approaches place the burden on the server system to generate and manage the use of such state infor mation More importantly since the use of such state infor mation does not control the establishment of connections it does not necessarily reduce the traffic on the particular internetwork over which client and server systems commu nicate reduce traffic another prior art system makes an on line transaction processing system accessible to Web browsers by establishing a predetermined plurality of trans action gateway clients to receive HTTP requests that are received by a Web server from the Web browsers Concur rent processing of multiple transaction requests from the Web browsers is performed by the plurality of transaction gateway clients Each transaction gateway client pre establishes a static connection with the on line transaction processing system The pre established connection allows requests from the Web browsers to be quickly routed to the US 6 397 253 1 3 transaction processing system The gateway client translates between HTTP formatted requests from the Web browsers and the request format expected by the on line transaction processing system This system is described in further detail in U S Pat No 5 754 772
90. value can be established by accessing an administrative page via a pre defined port e g port 8081 associated with TPG compo nent 10 4 The described technique of using a context key value allows TPG component 10 4 to map a non persistent session between browser component 10 2 and TPG component 10 4 to a persistent session connection between TPG component 10 4 and server system 20 Additional Persistent Session Related Options As indicated above the TPG component 10 4 of the preferred embodiment may include additional options that can be selected by browser users for use in different oper ating environments More specifically an option word in the URL is used to control additional options These options include session multiplexing and session pooling The format of the URL with the option field is as follows TPG address gt lt server addl gt lt server add2 gt lt protocol gt lt options gt context command where options are p pool m multiplex The p option flag designates when a browser user has enabled the use of a session connection from a session pool 5 10 20 25 30 35 40 45 50 55 20 During TPG component 10 4 startup a predetermined number of session connections per server is estab lished The TPG component 10 4 tracks the session connections in a session pool table that indexes entries in the PST table 10 48 As browser component 10 2 requests are serviced URLs wit
91. vention As shown the system 10 15 20 25 30 40 45 50 55 60 65 8 10 includes an enterprise server system 20 and a client system 10 that couple to each other through a communica tions network 14 utilizing the TCP IP protocol Server System The enterprise server system 20 is capable of running transaction processing application software 20 2 and data base storage 20 4 The server system 20 can be typically a mainframe transaction processing system conventional in design that supports a number of workstation users For example the server enterprise system 20 may take the form of the Bull GCOS8 system manufactured by Bull HN Information Systems Inc that runs transaction processing software designated as 8 The transaction processing application software stored in enterprise system s memory includes a plurality of transaction program routines TPRs designated as 20 2a through 20 2 Such routines provide for accessing HTML documents stored on database storage 20 4 and for communicating with the client system 10 using the HTTP protocol These routines operatively couple to an API library component 20 6 Component 20 6 stores a plurality of runtime routines that enables a TPR transaction program to respond to HTTP requests from browser client system 10 A particular API routine pertinent to the present invention is an HTML BASE routine that is called by a TPR application program for generating a BASE value
92. where http is the protocol gateway is the server address including the configured port number lt rest of URL gt is the resource name The protocol and server address portions of a URL are the same as for a conventional URL that targets any Web server The format of the rest of the URL is unique to the present invention as explained herein The resource name portion of the URL consists of four distinct fields 10 15 14 component 10 4 for conducting the session and all addi tional requests from the browser specify the persistent session context identifier in place of the original 0 The third field field 3 of the resource name specifies a TP command to be executed The fourth field field 4 is optional and is passed on to the server without modification by the gateway component 10 4 This field is used to specify options to be used by the TPR transaction program The TPR transaction program uses a GETPATH API routine to obtain the value of the options field Reference may be made to the Appendix in the above cited Bull Web8 User Manual for descriptions of this API Note that the TP command name does not appear at the beginning of the input message To enable the use of default TP command processing the gateway component 10 4 reorganizes or repackages i e encapsulates the URL so that it appears to TP to be a native TP command This obviates the need to change the TP executive software The gatew
93. ystems Inc Information about these software products may be found in the Bull publications entitled Transaction Processing TPFF System Software Release Bulletin Software Release 8 1 0 Update 5 GCOS 8 order number 67 A2 SA65 05 dated March 1993 and Tools amp Utilities Transaction Screen Management System 8 TSM8 Reference Manual GCOS 8 order number 67 A2 ED42 Rev02 Dated March 1995 These packages provide functionality that enables a remote forms mechanism e g TSMS to create a forms 10 15 20 30 35 40 45 50 55 60 65 4 directory for a terminal user as required and also a subdi rectory for every unique connect name e g TSMTP8 This avoids needless retransmission of forms where form versions are not synchronized among multiple TSMS instal lations Using a co operative TSMS local forms storage protocol the enterprise system connected to the terminal transmits the required forms for a particular user once The forms received by the terminal are stored on a local storage device for later use When a terminal user desires access to a form this causes the generation of a form mount request to the local storage device that results in the display of the requested form on the user s terminal As known in the art there are systems that provide for the remote retrieval and display management of electronic docu ments with incorporated images These systems are able to provide both st

Download Pdf Manuals

image

Related Search

Related Contents

SteamFast SF-210WH Use and Care Manual  NEC Express5800 User's Manual  Descargar Manual  Honda Power Equipment GX25-GX35 Automobile User Manual  2015 March  INSTALLATION MANUAL    StarTech.com 18in SATA Serial ATA Data and Power Combo Cable  Felicitaciones por comprar el Sony Ericsson Z550. Además  Service Electronics  

Copyright © All rights reserved.
Failed to retrieve file