Abstract:
Methods and computer program products for using a front-end server to access content stored on one or more back-end servers. The front-end server receives requests for content from client systems. Back-end servers store the content, but to the client system, it appears as if the front-end server is the content's source. Upon receiving the request, the front-end server checks the validity of the request and examines a global catalog that dynamically maps client system requests to the back-end server or servers that store the requested content. In some circumstances, the content will be stored at a single back-end server and the front-end server directs the request to that server. Alternatively, a list of back-end servers storing the requested content may be generated. If so, the front-end then uses an authentication token as a key to a hash operation that is performed on the list and a single server that is capable of satisfying the request for content is identified. A given request and authentication token always identify the same server if the list of servers available for providing the requested content remains the same. The front-end server provides a single source for content requests so that client systems are not required to alter requests or invalidate local caches when content is moved from one back-end server to another. The front-end server also provides an additional level of security for back-end servers.
Abstract:
A method for efficiently sending notifications over a network. A client system requests to be notified when an event occurs. A server system receives the requests and monitors for the occurrence of the event. When the event occurs a single packet using a connectionless protocol (such as User Datagram Protocol) is sent to the client to notify the client of the occurrence of the event. Using a connectionless protocol to send notification reduces the overall amount of data on the network and thus reduces network congestion and the processing capacity of the server and client. When the client system receives notification an attempt to establish a connection using as connection-oriented protocol is executed. Additional data associated with the occurrence of the event is transferred over the connection. The server may repeatedly send notification using a connectionless protocol until a connection using a connection-oriented protocol is established. The server may send notification that notifies the client of the occurrence of multiple events simultaneously within a single packet. The server may also notify multiple applications of the occurrence of an event using a single notification.
Abstract:
Systems and methods for directing client requests and for selecting a back end server to service client requests. A front end server receives client requests and based on the URI of the requests, directs the request to a back end server. The client request can be for a private or a public folder and each back end server typically stores both private and public folders. If the request is for a private folder, then the front end server determines which server stores that user's private folder and directs the client request to that folder. If the request is for a home public folder, the front end server directs the client request to the server that is associated with the private folders of the users. If the request is for an application public folder, then the front end server selects one of the back end servers to service the client request. Advantageously, the front end server always directs the client request to the same server. If the selected server is unavailable, then the front end server is capable of redirecting the client request to an available server.
Abstract:
Methods and computer program products for using a front-end server to access content stored on one or more back-end servers. The front-end server receives requests for content from client systems. Back-end servers store the content, but to the client system, it appears as if the front-end server is the content's source. Upon receiving the request, the front-end server checks the validity of the request and examines a global catalog that dynamically maps client system requests to the back-end server or servers that store the requested content. In some circumstances, the content will be stored at a single back-end server and the front-end server directs the request to that server. Alternatively, a list of back-end servers storing the requested content may be generated. If so, the front-end then uses an authentication token as a key to a hash operation that is performed on the list and a single server that is capable of satisfying the request for content is identified. A given request and authentication token always identify the same server if the list of servers available for providing the requested content remains the same. The front-end server provides a single source for content requests so that client systems are not required to alter requests or invalidate local caches when content is moved from one back-end server to another. The front-end server also provides an additional level of security for back-end servers.
Abstract:
Methods and systems for generating and sending an XML document are described. In a specific implementation, methods and systems for responding to an XML client request are described. In the described embodiment, an XML response generator is provided. The XML response generator responds to a client request without having to first build and save a hierarchical tree structure in memory that represents the response. The response generator includes one or more request method objects. There is one object for each particular type of client request that might be received. Each request method object knows and gathers the data that is needed to respond to its particular associated client request. In addition, the request method object knows a particular order that the information must be provided. An emitter object is provided and receives calls from the request method object. The calls include the data that is gathered by the request method object. The calls are made in a particular order and ensure that the hierarchical nature of the response that is being built is preserved. The emitter object translates the data that it receives into response portions that are in proper XML syntactic form. A body object is provided and manages a buffer. The body object receives calls from the emitter object that include the properly-formatted XML response portions. The response portions are placed in the buffer. When a defined buffer threshold is reached, the buffered response portions are sent to the client.
Abstract:
Methods and computer program products for transparently redirecting a request for content such that a client system is unaware of the redirection. A client requests content through a front-end server that provides a single point of access for content stored on one or more back-end servers. The single point of access makes it so the client does not know and does not care which particular back-end server stores the requested content. When a back-end server provides a redirect response for content that the back-end server does not store, the front-end server receives the redirect response and reissues the request to a server identified in the redirect response. A front-end server indicator is added to requests so that the back-end server knows the request is from a front-end server. This allows the back-end server to provide a list of servers in the redirect response without causing errors in clients making direct requests to back-end servers when the clients are unable to process a list of servers contained in a redirect response.
Abstract:
Methods and structures for parsing an Extensible Markup Language (XML) data stream are described. In the described embodiment, one or more schema modules are defined and are associated with HTTP requests that are received from a client. The schema module(s) has a function that determines whether an XML data stream conforms to a given schema that is associated with the HTTP request. If a portion of the XML data stream does not conform to the given schema, then the schema module disregards that XML data stream portion. In the described embodiment, each schema module has a plurality of states associated therewith. Each state is associated with one or more schema requirements that relate to a particular element that is evaluated by the schema module. Each state is different from the other states and the number of states is a function of the number of layers or elements that are contained within a particular XML data stream.
Abstract:
Methods and structures for parsing an Extensible Markup Language (XML) data stream are described. In the described embodiment, one or more schema modules are defined and are associated with HTTP requests that are received from a client. The schema module(s) has a function that determines whether an XML data stream conforms to a given schema that is associated with the HTTP request. If a portion of the XML data stream does not conform to the given schema, then the schema module disregards that XML data stream portion. In the described embodiment, each schema module has a plurality of states associated therewith. Each state is associated with one or more schema requirements that relate to a particular element that is evaluated by the schema module. Each state is different from the other states and the number of states is a function of the number of layers or elements that are contained within a particular XML data stream.
Abstract:
Methods and computer program products for using a front-end server to access content stored on one or more back-end servers. The front-end server receives requests for content from client systems. Back-end servers store the content, but to the client system, it appears as if the front-end server is the content's source. Upon receiving the request, the front-end server checks the validity of the request and examines a global catalog that dynamically maps client system requests to the back-end server or servers that store the requested content. In some circumstances, the content will be stored at a single back-end server and the front-end server directs the request to that server. Alternatively, a list of back-end servers storing the requested content may be generated. If so, the front-end then uses an authentication token as a key to a hash operation that is performed on the list and a single server that is capable of satisfying the request for content is identified. A given request and authentication token always identify the same server if the list of servers available for providing the requested content remains the same. The front-end server provides a single source for content requests so that client systems are not required to alter requests or invalidate local caches when content is moved from one back-end server to another. The front-end server also provides an additional level of security for back-end servers.
Abstract:
Various embodiments of the invention are directed to closely integrating functionality between an internet server and a WebDAV tool. Areas of specific focus in this document include delegation of duties between the internet server and the WebDAV tool, efficient management of a resource's content-type, support for segregation of a namespace into separate virtual roots, and determinations of whether to invoke certain processing extensions to handle requests for a given HTTP verb.