US20110219107A1 - System and method for collaborative processing of distributed applications - Google Patents
System and method for collaborative processing of distributed applications Download PDFInfo
- Publication number
- US20110219107A1 US20110219107A1 US13/107,706 US201113107706A US2011219107A1 US 20110219107 A1 US20110219107 A1 US 20110219107A1 US 201113107706 A US201113107706 A US 201113107706A US 2011219107 A1 US2011219107 A1 US 2011219107A1
- Authority
- US
- United States
- Prior art keywords
- filter
- machine
- computer program
- application
- language
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
Definitions
- the present invention generally relates to computer systems, and more particularly to executing collaborative application software in a computer network.
- Computer networks have become an important platform for storing and delivering application programs to users.
- an application server is considered a central hub from which a number of clients can request and receive application software for performing a specific function.
- most applications were executed locally at a client, with application software that was locally stored in the client platform.
- applications are stored in a central server, and delivered to a client in components for local processing.
- Another common configuration is for the client to send processing requests to the server, which executes the application that is specified in the request on the server and sends the results back to the client for local processing. In this configuration, the application is maintained in the server.
- a web server is a specialized type of server that communicates according to a particular protocol, the hypertext transport protocol, or HTTP. Other hypermedia protocols are also used or are being developed.
- a host is a physical machine having operating system software that manages one or more other computer programs that reside on the physical machine.
- a computer program includes one or more software components that work together to perform the logic of the program.
- Each computer program can communicate information with other computer programs on the same host or on a different host.
- a unit of information to be communicated is referred to as a payload.
- the payload is supplemented with one or more properties. Properties include data for identifying information within and about the payload.
- a message represents a combination of the properties and the payload.
- a computer program includes a code section and a data section.
- the code section contains machine-language code, which is a sequence of byte values that are arranged in such a way to be executed directly by the central processing unit (CPU) of the host, to perform a specific task.
- the data section is a sequence of byte values, that is used to store data structures required by the computer program.
- the data section byte values may or may not be arranged in machine-language code.
- a filter string is a text-based expression of logic that is readable by a human user, and which is executed by a computer program for performing a filtering task.
- a filter string is a Boolean logic expression that includes Boolean operators such as “and” or “or” and references to the message properties and or the payload.
- Computer programs can include one or more filters to execute the Boolean logic expression on each received message to determine if the message should be processed or disregarded by the computer program.
- a filter generator When a computer program performs filtering, a filter generator is used.
- the filter generator accepts a filter string and reorganizes the filter string into a data structure.
- the data structure represents the filter string, and is stored in the data section of the computer program employing the filter.
- the filter string is represented as a tree structure.
- Each time a new message is received by the computer program the data structure representing the filter string is retrieved from the data section and is interpreted to execute machine-language code specific to the host machine in which the computer program resides. Since the machine-language code is specific to a particular type of host, it is an effective means of filtering messages.
- a method of filtering information transmitted from one computer program to another computer program or to the same computer program includes receiving a textbased filter string representing filter criteria, and converting the filter string directly into machine-language code.
- the embodiment further includes loading the machine-language code into a computer program to accept or discard information based on the filter criteria.
- a system of filtering information transmitted from one computer program to another computer program or to the same computer program includes a filter generator configured to receive a text-based filter string representing filter criteria, and a machine-language code generator coupled with the filter generator and being configured to convert the filter string to machine-language code.
- the system further includes a mechanism by which the machine-language code is loaded into a computer program. Once loaded into the computer program, the machine-language code is termed machine-language filter code and is continually executed to accept or discard information based on the filter criteria.
- FIG. 1 shows a system for collaborative processing with distributed applications, according to one embodiment of the invention.
- FIG. 2 shows communication between a host and a remote host via the messaging bus.
- FIG. 3 shows a message filtering system according to one embodiment of the invention.
- FIG. 4 shows a method for filtering messages according to an embodiment of the invention.
- This invention relates to executing and processing applications.
- An application is software that performs specific logic.
- the term application refers to an entire application, or an application component that defines a portion of an application.
- a number of application components can work together to execute the logic of the application.
- this invention provides a method for communication between client-side application components and server-side application components. Further, the invention provides for the execution and administration of applications residing within a CGI engine hosted on a server platform. The invention provides a structure for performing collaborative processing with distributed applications.
- a system and method for collaborative processing of distributed applications is embodied as one or more computer programs configured to work together. Every computer program includes at least one code section and at least one data section.
- the code section is a sequence of bytes that can be executed directly by the central processing unit (CPU) of a host.
- the data section includes sequences of bytes that may be executed by the CPU of the host, but which are mostly used to store data structures for use by the code section.
- FIG. 1 shows a system 100 for collaborative processing of distributed applications, according to one embodiment of the invention.
- the system 100 includes a host 102 .
- the host 102 is a physical machine having an operating system that manages one or more computer programs.
- a computer program can include one or more operations running within it that share the same data section of the computer program.
- the host 102 can also include a CPU that executes the code section of the computer programs.
- the computer programs can be resident on the host 102 in permanent or temporary storage, or can be communicated to the host 102 by external computer programs.
- the host 102 includes a computer program 130 , which includes a CGI engine 104 , which in an embodiment is an operation configured to execute and administer one or more CGIs, and a messaging bus 120 , which in an embodiment is another operation configured to enable multiple operations within the computer program to communicate with each other.
- the CGIs administered by the CGI engine 104 are servlets.
- a servlet is a particular type of CGI that can be configured to execute a certain function, such as manage an application, for example. While a servlet is typically written in the Java programming language, a CGI can be written according to other programming languages or logic structures.
- the CGI engine 104 is configured to function as an application server, including, without being limited to, logging information related to the use and operation of applications, authentication of users of CGIs, and authorization of the usage of the CGIs.
- the host can also include a web server 106 .
- the web server 106 functions as a conventional web server that communicates with a client according to the hypertext transfer protocol (HTTP).
- HTTP means any application-level protocol that is supported by a web server or a web browser, including but not limited to secure HTTP (HTTPS).
- the web server 106 also communicates with the CGI engine 104 , from which the web server 106 executes one or more CGIs running in the CGI engine 104 .
- the web server 106 invokes and executes one or more servlets, through which communications are performed between the web server 106 and an application 114 .
- One particular type of CGI according to the invention is an application CGI 112 .
- the application CGI 112 is configured to execute and manage an associated application 114 , in response to requests received from the web server 106 .
- the application CGI 112 can be a servlet.
- One specific type of servlet for the application CGI is called a sublet.
- a sublet is a servlet extension that is specifically configured for executing and managing an associated application.
- the CGI engine 104 can be configured with at least two contexts for running CGIs.
- One context is an application context 108 .
- the application context 108 is a self-sustained environment of resources within the CGI engine 104 that is configured to, but not limited to, enable multiple CGIs and other programs to commonly share resources.
- the application context 108 also provides a secure environment in which an application CGI 112 and an application 114 , and its supporting resources, can operate shielded from corruption by other CGIs or applications running in the CGI engine 104 .
- the CGI engine 104 is configured to create an application context 108 that includes an application CGI 112 and one or more administration CGIs 116 associated with the application CGI 112 .
- the application context 108 enables CGIs, such as administration CGIs 116 , and application CGIs 112 with features that include, but are not limited to, getting the actual location of a physical resource within the host 102 from a representation of that resource, and logging messages and exceptions being generated by the application.
- the application context 108 is further configured to enable the application 114 to get a reference, i.e. find where in a memory, to other applications within the CGI engine 104 that are registered to communicate with the application 114 .
- the reference can be based on a name of the application 114 .
- a second context is a gateway context 110 , an environment having resources for performing two-way asynchronous communication between applications on the same host and different hosts.
- One form of such communication is notification, in which two programs, or two operations within a program or within multiple programs, communicate data with each other without being polled for the data by the other.
- Applications 114 within the CGI engine 104 communicate with each other asynchronously via a messaging bus 120 .
- the messaging bus 120 has multiple inputs and outputs and is configured to communicate data between associated inputs and outputs.
- a unit of information that enters and leaves the messaging bus 120 is a message.
- Publishing is the act of sending a message to a topic on the messaging bus 120 .
- Subscribing is the act of registering to a topic, and receiving the messages published on that topic.
- An application 114 can be both a publisher and subscriber to one or more topics. When a message is published to a particular topic, the message is communicated to all subscribers registered to that topic simultaneously. In this way, collaborative communication and processing between publishers and subscribers to a topic, through a particular application, is enabled.
- an application 114 or client-side application 105 can employ a filter on the messaging bus to scan the content of messages on a certain topic, and determine whether the application employing the filter will either process the message or disregard it.
- a filtering mechanism is described in U.S. patent application Ser. No. 09/766,383 entitled “System and Method for Generating Machine-Language Code from Readable Text Code for Information Filtering,” incorporated by reference herein for all purposes and reproduced in part below in reference to FIGS. 3 and 4 .
- the messaging bus 120 can logically extend across multiple hosts, enabling external applications to communicate with applications 114 that reside within the local CGI engine 108 . Extension of the messaging bus 120 can occur whether or not a firewall 109 or proxy server resides in the communication path between the local CGI engine 104 and the external applications.
- a firewall 109 or proxy server resides in the communication path between the local CGI engine 104 and the external applications.
- An external application is a client-side application 105 that resides in a client host 101 and runs within a client application server 103 .
- the messaging bus 120 is extended through the use of a multicast protocol and configured to communicate with one or more other messaging busses, and wherein each other messaging bus is resident on a remote host 135 .
- FIG. 2 illustrates a multicast communication path 140 between the host 102 and any remote host 135 . Each host must support this protocol.
- an external application can communicate asynchronously with the messaging bus 120 through a direct socket connection to the messaging bus extension 122 .
- the messaging bus extension 122 is created using the socket select method.
- the socket select( )method enables the efficient handling of large numbers of simultaneous socket connections to the messaging bus 120 .
- the socket select( ) method which can be executed by the operating system of the host 102 , waits until information is available on any of the open socket connections to the host 102 .
- the socket select( )method Upon the arrival of the information, the socket select( )method returns a data structure that indicates which socket connections have information available to be processed.
- the messaging bus extension 122 uses the information within the returned data structure to read the available information from each specified socket connection. The information read from each socket is converted to a message and published onto the messaging bus 102 on a specific topic.
- the messaging bus extension 122 multiplexes the input and output operations of the socket to publish and subscribe messages.
- the multiplexing can be directed by the operating system of the host 102 .
- a gateway CGI 118 implements the two-way asynchronous communication through a firewall 109 or proxy server.
- the gateway CGI 118 can be one or more servlets, administered and executed within the gateway context 110 .
- a messaging bus extension 122 is used.
- External applications can reside on another host, or on the same host 102 in another CGI engine. External applications can also reside on a client host 101 , where they are executed as a client-side application 105 .
- a client host 101 can include a client application server 103 in which the client-side application 105 is pre-installed, or to which the client-side application 105 is dynamically delivered from the web server 106 in the host 102 .
- the CGI engine 104 in communication with the web server 106 , provides one form of access to the application 114 .
- the web server 106 is configured to direct certain client requests from a client 101 to the relevant application CGI 112 in the CGI engine 104 .
- the application CGI 112 is configured as a sublet and interacts with the application 114 according to an interface definition.
- the interface definition is an extension of a servlet interface definition. This interface definition includes, without limitation, the following operations:
- each application CGI 112 receives the application CGI configuration and applies it to the associated application 114 to prepare it for use.
- the application CGI configuration includes, without limitation, the following information:
- the service operation of the application CGI 112 gathers and returns information about the associated application 114 .
- This information includes without limitation:
- the application CGI 112 can handle HTTP requests through its service operation.
- the implementation of the service operation in the application CGI 112 is used to administer the associated application 114 .
- the administration includes, but is not limited to, the retrieval of information about the application 114 , the retrieval and modification of its attribute values, the invocation of an operation within the application 114 and the saving of the current state of the application 114 .
- the information and status returned from the administrative tasks is forwarded to the administration servlet 116 to format this information for presentation purposes.
- the CGI engine 104 administers the application 114 through the use of the web server 106 .
- a client host 101 initiates the execution the application 114 by submitting an HTTP request to the web server 106 from the client-side application 105 .
- the client-side application 105 can be, for example, an application running inside of a web browser program.
- the web server 106 redirects the request to the CGI engine 104 .
- the CGI engine 104 invokes the application CGI 112 associated with the application 114 to process the request, which returns a response containing the result of the request to the web server 106 who forwards it on to the client host 101 , for use by the client-side application 105 .
- the CGI engine 104 When the CGI engine 104 starts, it loads the configuration files associated with each CGI. The content of a configuration file is called the CGI configuration. For each CGI in the CGI engine 104 , the CGI engine 104 scans the CGI configuration to determine which of the CGIs needs to be instantiated at startup time. The CGI engine 104 invokes a standard initialization operation on each CGI that is instantiated with the CGI configuration as an argument. Upon the successful completion of the initialization operation, the CGI is registered to run within the CGI engine 104 .
- the standard initialization operation composes a sublet configuration from the content of the scanned configuration file, and invokes the initialization operation of the associated application 114 with the application CGI configuration as an argument. If the initialization operation is successful, then the load operation of the application CFI 112 is invoked. The load operation is used to load the previously saved state of the application 114 .
- the destroy operation in each registered CGI is invoked. This inherently invokes a sublet destroy operation to terminate the application 114 .
- Administrative actions that can be requested by the client host 101 from the client-side application 105 and executed by the CGI engine 104 include, without limitation, initiating and terminating the application 114 , and modifying its logic flow.
- the client-side application 105 can publish, subscribe and process messages from the messaging bus 120 .
- the client-side application 105 receives a message, processes the message, and composes a data structure that can be understood by the client application server 103 .
- the client-side application 105 then delivers the data structure to the client application server 103 and instructs it to process the content of the delivered data structure.
- the administration CGI 116 is implemented using the Java Server Page (JSP) specification.
- JSP Java Server Page
- the information forwarded to the administration CGI 116 is packaged as an attribute value within the HTTP request.
- the administration CGI 116 retrieves the attribute value and reformats it into a document that is readable by the requesting client application 103 .
- the document format is in HTML.
- HTML means any document format that is supported by a web browser, including but not limited to Dynamic HTML (DHTML).
- the client application server 103 is a web browser
- the client-side application 105 is an HTML document-with a Java Applet.
- the web server 106 that is running in conjunction with the CGI engine 104 delivers the HTML document with the Java applet to the web browser 103 .
- the Java Applet is initiated and establishes a connection to the messaging bus 120 as described above.
- the Java Applet now contains an extension of the messaging bus 120 and is a publisher and/or subscriber to one or more topics on the messaging bus 120 .
- the Java Applet is configured to call specific functions in the HTML document upon the receipt of a message on a particular topic or topics.
- the functions within the HTML document or template accept as arguments the property values of the message and convert these values into a HTML formatted text string that is executed by a component within the HTML document or template.
- the client-side application 105 is a Java Applet and the HTML document or template can be delivered as a property value within a message.
- the Java Applet reads the HTML document or template within the message and instructs the web browser 103 to render the HTML document or template.
- the client-side application 105 is a Java Applet that dynamically generates the HTML document or template and the result is forwarded to a component in the web browser 103 for rendering.
- FIG. 3 shows a system 300 for generating machine-language code for message filtering.
- System 300 preferably includes a host 302 .
- the host 302 represents a physical machine having a central processing unit (CPU) 320 and an operating system software that manages one or more computer programs that reside on the physical machine and which are executed by the CPU 320 .
- CPU central processing unit
- a computer program 303 includes one or more software components 304 .
- one such software component is a filter generator 310 .
- the filter generator 310 accepts filter strings from a software component 304 .
- the filter string defines an acceptance criteria by which the software component 304 processes or discards messages.
- filter strings are expressed in a text-based format that is readable by a human user, and whose syntax is based on the Structured Query Language (SQL) conditional expression syntax.
- the text can include, without limitation, one or more expressions separated by a Boolean operator such as “and” or “or” for example. Each expression is made up of two elements separated by a Boolean conditional operator such “less-than” or “greater-than.”
- One element of the expression can be a numerical or functional value, or can be a reference to an element in the message.
- the filter generator 310 includes a machine-language code generator 312 .
- the filter generator 310 reorganizes each submitted filter string into a format that is acceptable to the machine-language code generator 312 .
- the machine-language code generator 312 accepts the newly formatted filter string as an input, and generates machine language filter code 317 .
- the machine language filter code 317 is then loaded into the computer program 303 to produces a filter software component 322 in machine-language code, which can be directly executed by the CPU 320 of the host 302 .
- the machine-language code generator 312 represents a JavaTM compiler
- the computer program 303 represents a Java virtual machine (JVM)
- the software component 304 is a Java class.
- the filter generator 310 accepts a filter string as an input, from which it generates a JavaTM text file that defines a JavaTM class, which implements a predefined filter interface definition.
- the filter interface definition calls for the implementation of a function that returns a Boolean value and expects as an argument an implementation of a predefined message interface definition.
- the message interface definition is empty to enable the generalization of the filter to any specific message implementation.
- the returned Boolean value indicates to the software component 304 if the received message should be processed or disregarded.
- the JavaTM text file is compiled by the JavaTM compiler 312 to produce a JavaTM class 317 .
- the JavaTM class 317 is loaded into the computer program 303 to produce the filter software component 322 for message filtering. Accordingly, each time a message 330 is received by the computer program 303 , the filter software component 322 evaluates the received message 330 by applying the filter criteria to the message and instructs the software component 304 to either process the message 335 , or reject the message 330 .
- FIG. 4 is a flowchart illustrating a method 400 according to an embodiment of the invention.
- the method 400 can be executed at other functional levels of a computer system.
- a filter string is received.
- the filter string may be received from a separate computer program residing on another host, or the same host, or from within a single computer program.
- the filter string is in a text-based format that is readable by a human user and whose syntax is based on the SQL conditional expression syntax.
- the conversion into machine-language filter code is required if there is no recollection of a recently-performed translation of a similar filter string. If conversion is required, at block 415 , the text-based filter string is prepared for the machine-language code generator. At block 420 , the prepared filter string is converted into machine-language code by the machine-language code generator. If the conversion is not required, at block 425 , a determination is made whether the machine-language filter code is already loaded into the computer program.
- the machine-language filter code is not loaded, then at block 430 the machine-language code is loaded into the computer program.
- the computer program with the filter software component is executed on multiple incoming messages. Accordingly, the multiple incoming messages are evaluated against the filter criteria represented in the filter software component, to process or discard messages in the specified manner.
Abstract
A system and method for generating and executing machine-language filter code. A filter generator receives a text-based filter string. The filter string contains filter criteria for filtering messages communicated from one computer program to another computer program or to the same computer program. A machine language generator converts the filter string to a machine-language filter code. A central processing unit of a host loads and executes the machine-language filter code to process or discard messages based on the filter criteria. The machine-language filter code is maintained by the computer program for continual reuse eliminating the interpretation and translation of the filter string from data to code for each message.
Description
- This application is a divisional of U.S. patent application Ser. No. 11/485,229, filed Jul. 11, 2006, which is a continuation of U.S. patent application Ser. No. 09/766,382, filed Jan. 19, 2001, now issued as U.S. Pat. No. 7,080,120, the contents of all of which are incorporated herein by reference.
- The present invention generally relates to computer systems, and more particularly to executing collaborative application software in a computer network.
- Computer networks have become an important platform for storing and delivering application programs to users. In a model widely referred to as client/server, an application server is considered a central hub from which a number of clients can request and receive application software for performing a specific function. In the past, most applications were executed locally at a client, with application software that was locally stored in the client platform. Today, however, in one configuration, applications are stored in a central server, and delivered to a client in components for local processing. Another common configuration is for the client to send processing requests to the server, which executes the application that is specified in the request on the server and sends the results back to the client for local processing. In this configuration, the application is maintained in the server.
- The tremendous growth of use of the Internet and World Wide Web (the “Web”) in the past few years has resulted in increasingly more communication between clients and servers. Most of the communications in the short history of the Web relate to delivery of requested content data from a web server to a client. A web server is a specialized type of server that communicates according to a particular protocol, the hypertext transport protocol, or HTTP. Other hypermedia protocols are also used or are being developed.
- Traditionally, Internet-based application processing in a client/server model occurs mostly through a web server. Network-based applications for the client/server model, such as those through the Web, are becoming increasingly complex and interactive. Problems with current software infrastructure for administering network-based applications include difficulty in the creation and delivery of application components, complexities of managing the interface between a client and a server, and processing delays and inefficiencies. The current and next generations of the Web, in its Internet, intranet and extranet embodiments, demand a platform-neutral architecture that can effectively handle complex Web-based distributed client/server applications for collaborative processing.
- A host is a physical machine having operating system software that manages one or more other computer programs that reside on the physical machine. A computer program includes one or more software components that work together to perform the logic of the program. Each computer program can communicate information with other computer programs on the same host or on a different host. A unit of information to be communicated is referred to as a payload. Before transmission, the payload is supplemented with one or more properties. Properties include data for identifying information within and about the payload. A message represents a combination of the properties and the payload.
- A computer program includes a code section and a data section. The code section contains machine-language code, which is a sequence of byte values that are arranged in such a way to be executed directly by the central processing unit (CPU) of the host, to perform a specific task. The data section is a sequence of byte values, that is used to store data structures required by the computer program. The data section byte values may or may not be arranged in machine-language code.
- An important mechanism for efficient communication of messages from one computer program to another is a filter, by which messages of interest are communicated and all other messages are discarded. A filter string is a text-based expression of logic that is readable by a human user, and which is executed by a computer program for performing a filtering task. One example of a filter string is a Boolean logic expression that includes Boolean operators such as “and” or “or” and references to the message properties and or the payload. Computer programs can include one or more filters to execute the Boolean logic expression on each received message to determine if the message should be processed or disregarded by the computer program.
- Typically, when a computer program performs filtering, a filter generator is used. The filter generator accepts a filter string and reorganizes the filter string into a data structure. The data structure represents the filter string, and is stored in the data section of the computer program employing the filter. Typically, the filter string is represented as a tree structure. Each time a new message is received by the computer program, the data structure representing the filter string is retrieved from the data section and is interpreted to execute machine-language code specific to the host machine in which the computer program resides. Since the machine-language code is specific to a particular type of host, it is an effective means of filtering messages.
- However, the interpretation of the data structure created from the filter string to execute the machine-language code is required for every message and adds significant processing delay, especially when a large volume of messages are being received by an computer program.
- The aforementioned problems are overcome with a message filtering system and method that converts the filter string directly into machine-language code once for reuse on multiple messages, thereby eliminating the intermediate step of interpreting the filter string representation to execute the appropriate machine-language code on each message. In accordance with one embodiment of the invention, a method of filtering information transmitted from one computer program to another computer program or to the same computer program includes receiving a textbased filter string representing filter criteria, and converting the filter string directly into machine-language code. The embodiment further includes loading the machine-language code into a computer program to accept or discard information based on the filter criteria.
- In accordance with an alternative embodiment of the invention, a system of filtering information transmitted from one computer program to another computer program or to the same computer program includes a filter generator configured to receive a text-based filter string representing filter criteria, and a machine-language code generator coupled with the filter generator and being configured to convert the filter string to machine-language code. The system further includes a mechanism by which the machine-language code is loaded into a computer program. Once loaded into the computer program, the machine-language code is termed machine-language filter code and is continually executed to accept or discard information based on the filter criteria.
-
FIG. 1 shows a system for collaborative processing with distributed applications, according to one embodiment of the invention. -
FIG. 2 shows communication between a host and a remote host via the messaging bus. -
FIG. 3 shows a message filtering system according to one embodiment of the invention. -
FIG. 4 shows a method for filtering messages according to an embodiment of the invention. - This invention relates to executing and processing applications. An application is software that performs specific logic. As used herein, the term application refers to an entire application, or an application component that defines a portion of an application. A number of application components can work together to execute the logic of the application. In one embodiment, this invention provides a method for communication between client-side application components and server-side application components. Further, the invention provides for the execution and administration of applications residing within a CGI engine hosted on a server platform. The invention provides a structure for performing collaborative processing with distributed applications.
- In a preferred embodiment of the invention, a system and method for collaborative processing of distributed applications is embodied as one or more computer programs configured to work together. Every computer program includes at least one code section and at least one data section. The code section is a sequence of bytes that can be executed directly by the central processing unit (CPU) of a host. The data section includes sequences of bytes that may be executed by the CPU of the host, but which are mostly used to store data structures for use by the code section.
-
FIG. 1 shows asystem 100 for collaborative processing of distributed applications, according to one embodiment of the invention. Thesystem 100 includes ahost 102. In one embodiment, thehost 102 is a physical machine having an operating system that manages one or more computer programs. A computer program can include one or more operations running within it that share the same data section of the computer program. Thehost 102 can also include a CPU that executes the code section of the computer programs. The computer programs can be resident on thehost 102 in permanent or temporary storage, or can be communicated to thehost 102 by external computer programs. - The
host 102 includes acomputer program 130, which includes aCGI engine 104, which in an embodiment is an operation configured to execute and administer one or more CGIs, and amessaging bus 120, which in an embodiment is another operation configured to enable multiple operations within the computer program to communicate with each other. In a specific exemplary embodiment, the CGIs administered by theCGI engine 104 are servlets. A servlet is a particular type of CGI that can be configured to execute a certain function, such as manage an application, for example. While a servlet is typically written in the Java programming language, a CGI can be written according to other programming languages or logic structures. According to the invention, theCGI engine 104 is configured to function as an application server, including, without being limited to, logging information related to the use and operation of applications, authentication of users of CGIs, and authorization of the usage of the CGIs. - The host can also include a
web server 106. Theweb server 106 functions as a conventional web server that communicates with a client according to the hypertext transfer protocol (HTTP). As used herein, HTTP means any application-level protocol that is supported by a web server or a web browser, including but not limited to secure HTTP (HTTPS). In an embodiment of the invention, theweb server 106 also communicates with theCGI engine 104, from which theweb server 106 executes one or more CGIs running in theCGI engine 104. In a specific embodiment, theweb server 106 invokes and executes one or more servlets, through which communications are performed between theweb server 106 and anapplication 114. One particular type of CGI according to the invention is anapplication CGI 112. Theapplication CGI 112 is configured to execute and manage an associatedapplication 114, in response to requests received from theweb server 106. Theapplication CGI 112 can be a servlet. One specific type of servlet for the application CGI is called a sublet. A sublet is a servlet extension that is specifically configured for executing and managing an associated application. - The
CGI engine 104 can be configured with at least two contexts for running CGIs. One context is anapplication context 108. Theapplication context 108 is a self-sustained environment of resources within theCGI engine 104 that is configured to, but not limited to, enable multiple CGIs and other programs to commonly share resources. Theapplication context 108 also provides a secure environment in which anapplication CGI 112 and anapplication 114, and its supporting resources, can operate shielded from corruption by other CGIs or applications running in theCGI engine 104. For eachapplication 114, theCGI engine 104 is configured to create anapplication context 108 that includes anapplication CGI 112 and one ormore administration CGIs 116 associated with theapplication CGI 112. Theapplication context 108 enables CGIs, such asadministration CGIs 116, andapplication CGIs 112 with features that include, but are not limited to, getting the actual location of a physical resource within thehost 102 from a representation of that resource, and logging messages and exceptions being generated by the application. Theapplication context 108 is further configured to enable theapplication 114 to get a reference, i.e. find where in a memory, to other applications within theCGI engine 104 that are registered to communicate with theapplication 114. The reference can be based on a name of theapplication 114. - A second context is a
gateway context 110, an environment having resources for performing two-way asynchronous communication between applications on the same host and different hosts. One form of such communication is notification, in which two programs, or two operations within a program or within multiple programs, communicate data with each other without being polled for the data by the other. -
Applications 114 within theCGI engine 104 communicate with each other asynchronously via amessaging bus 120. In a specific embodiment, themessaging bus 120 has multiple inputs and outputs and is configured to communicate data between associated inputs and outputs. A unit of information that enters and leaves themessaging bus 120 is a message. There are multiple pairs of entry and exit points on themessaging bus 120. Each pair represents a topic. Publishing is the act of sending a message to a topic on themessaging bus 120. Subscribing is the act of registering to a topic, and receiving the messages published on that topic. Anapplication 114 can be both a publisher and subscriber to one or more topics. When a message is published to a particular topic, the message is communicated to all subscribers registered to that topic simultaneously. In this way, collaborative communication and processing between publishers and subscribers to a topic, through a particular application, is enabled. - For efficient communication between applications, an
application 114 or client-side application 105 can employ a filter on the messaging bus to scan the content of messages on a certain topic, and determine whether the application employing the filter will either process the message or disregard it. Such a filtering mechanism is described in U.S. patent application Ser. No. 09/766,383 entitled “System and Method for Generating Machine-Language Code from Readable Text Code for Information Filtering,” incorporated by reference herein for all purposes and reproduced in part below in reference toFIGS. 3 and 4 . - The
messaging bus 120 can logically extend across multiple hosts, enabling external applications to communicate withapplications 114 that reside within thelocal CGI engine 108. Extension of themessaging bus 120 can occur whether or not afirewall 109 or proxy server resides in the communication path between thelocal CGI engine 104 and the external applications. One example of an external application is a client-side application 105 that resides in aclient host 101 and runs within aclient application server 103. - In one embodiment, the
messaging bus 120 is extended through the use of a multicast protocol and configured to communicate with one or more other messaging busses, and wherein each other messaging bus is resident on aremote host 135.FIG. 2 illustrates amulticast communication path 140 between thehost 102 and anyremote host 135. Each host must support this protocol. - When the communication path does not support the multicast protocol, an external application can communicate asynchronously with the
messaging bus 120 through a direct socket connection to themessaging bus extension 122. In one embodiment, themessaging bus extension 122 is created using the socket select method. The socket select( )method enables the efficient handling of large numbers of simultaneous socket connections to themessaging bus 120. The socket select( ) method, which can be executed by the operating system of thehost 102, waits until information is available on any of the open socket connections to thehost 102. Upon the arrival of the information, the socket select( )method returns a data structure that indicates which socket connections have information available to be processed. Themessaging bus extension 122 uses the information within the returned data structure to read the available information from each specified socket connection. The information read from each socket is converted to a message and published onto themessaging bus 102 on a specific topic. - The
messaging bus extension 122 multiplexes the input and output operations of the socket to publish and subscribe messages. The multiplexing can be directed by the operating system of thehost 102. - When the
host 101 is located behind afirewall 109 or proxy server, the extension of the messaging bus is implemented as described in U.S. patent application Ser. No. 09/766,439 entitled “System and Method for Maintaining Two-Way Asynchronous Notification Between a Client and a Web Server,” incorporated by reference herein for all purposes. Agateway CGI 118 implements the two-way asynchronous communication through afirewall 109 or proxy server. In one embodiment, thegateway CGI 118 can be one or more servlets, administered and executed within thegateway context 110. When an external application that is not behind afirewall 109 or proxy server communicates messages to themessaging bus 120, amessaging bus extension 122 is used. - External applications can reside on another host, or on the
same host 102 in another CGI engine. External applications can also reside on aclient host 101, where they are executed as a client-side application 105. Aclient host 101 can include aclient application server 103 in which the client-side application 105 is pre-installed, or to which the client-side application 105 is dynamically delivered from theweb server 106 in thehost 102. - The
CGI engine 104, in communication with theweb server 106, provides one form of access to theapplication 114. Theweb server 106 is configured to direct certain client requests from aclient 101 to therelevant application CGI 112 in theCGI engine 104. - In an exemplary embodiment of the invention, the
application CGI 112 is configured as a sublet and interacts with theapplication 114 according to an interface definition. In a specific embodiment, the interface definition is an extension of a servlet interface definition. This interface definition includes, without limitation, the following operations: - a) an initialization operation that accepts as an argument the application CGI configuration,
- b) a service operation to return information about the associated
application 114, - c) a destroy operation to be invoked by the termination of the execution of the
CGI engine 104 that enables the release of reserved resources and terminates theapplication CGI 112 and its associatedapplication 114, - d) operations to load and save the current state of the associated
application 114, - e) operations to set and get the internal attributes of the associated
application 114, - f) an operation to invoke an operation within the associated
application 114. - The initialization operation of each
application CGI 112 receives the application CGI configuration and applies it to the associatedapplication 114 to prepare it for use. The application CGI configuration includes, without limitation, the following information: - a) a list of initialization parameter names,
b) an initialization parameter value for a given a parameter name,
c) a reference to theapplication context 108. - The service operation of the
application CGI 112 gathers and returns information about the associatedapplication 114. This information includes without limitation: - a) a list of information about the attributes of the
application 114 that includes the attribute name, description, type, and read/write accessibility, - b) a list of information about the operations within the
application 114 that includes each operation's name, description, type of information returned and information about the operation's parameters. Information about an operation parameter includes the parameter name, description and type. - The
application CGI 112 can handle HTTP requests through its service operation. The implementation of the service operation in theapplication CGI 112 is used to administer the associatedapplication 114. The administration includes, but is not limited to, the retrieval of information about theapplication 114, the retrieval and modification of its attribute values, the invocation of an operation within theapplication 114 and the saving of the current state of theapplication 114. The information and status returned from the administrative tasks is forwarded to theadministration servlet 116 to format this information for presentation purposes. - Operation of the
system 100 is as follows. In one embodiment, theCGI engine 104 administers theapplication 114 through the use of theweb server 106. For instance, aclient host 101 initiates the execution theapplication 114 by submitting an HTTP request to theweb server 106 from the client-side application 105. The client-side application 105 can be, for example, an application running inside of a web browser program. Theweb server 106 redirects the request to theCGI engine 104. TheCGI engine 104 invokes theapplication CGI 112 associated with theapplication 114 to process the request, which returns a response containing the result of the request to theweb server 106 who forwards it on to theclient host 101, for use by the client-side application 105. - When the
CGI engine 104 starts, it loads the configuration files associated with each CGI. The content of a configuration file is called the CGI configuration. For each CGI in theCGI engine 104, theCGI engine 104 scans the CGI configuration to determine which of the CGIs needs to be instantiated at startup time. TheCGI engine 104 invokes a standard initialization operation on each CGI that is instantiated with the CGI configuration as an argument. Upon the successful completion of the initialization operation, the CGI is registered to run within theCGI engine 104. - For the
application CGI 112, the standard initialization operation composes a sublet configuration from the content of the scanned configuration file, and invokes the initialization operation of the associatedapplication 114 with the application CGI configuration as an argument. If the initialization operation is successful, then the load operation of theapplication CFI 112 is invoked. The load operation is used to load the previously saved state of theapplication 114. When theCGI engine 104 is instructed to terminate theapplication CGI 112, the destroy operation in each registered CGI is invoked. This inherently invokes a sublet destroy operation to terminate theapplication 114. - Administrative actions that can be requested by the
client host 101 from the client-side application 105 and executed by theCGI engine 104 include, without limitation, initiating and terminating theapplication 114, and modifying its logic flow. - When the
messaging bus 120 is extended to a client-side application 105 running within the environment of theclient application server 103, the client-side application 105 can publish, subscribe and process messages from themessaging bus 120. The client-side application 105 receives a message, processes the message, and composes a data structure that can be understood by theclient application server 103. The client-side application 105 then delivers the data structure to theclient application server 103 and instructs it to process the content of the delivered data structure. - In a specific exemplary embodiment of the invention, the
administration CGI 116 is implemented using the Java Server Page (JSP) specification. The information forwarded to theadministration CGI 116 is packaged as an attribute value within the HTTP request. Theadministration CGI 116 retrieves the attribute value and reformats it into a document that is readable by the requestingclient application 103. In a preferred embodiment, the document format is in HTML. As used herein, HTML means any document format that is supported by a web browser, including but not limited to Dynamic HTML (DHTML). - In the specific exemplary embodiment, the
client application server 103 is a web browser, the client-side application 105 is an HTML document-with a Java Applet. Theweb server 106 that is running in conjunction with theCGI engine 104 delivers the HTML document with the Java applet to theweb browser 103. Upon the completion of the delivery, the Java Applet is initiated and establishes a connection to themessaging bus 120 as described above. The Java Applet now contains an extension of themessaging bus 120 and is a publisher and/or subscriber to one or more topics on themessaging bus 120. - The Java Applet is configured to call specific functions in the HTML document upon the receipt of a message on a particular topic or topics. The functions within the HTML document or template accept as arguments the property values of the message and convert these values into a HTML formatted text string that is executed by a component within the HTML document or template.
- In another embodiment, the client-
side application 105 is a Java Applet and the HTML document or template can be delivered as a property value within a message. The Java Applet reads the HTML document or template within the message and instructs theweb browser 103 to render the HTML document or template. - In still another embodiment, the client-
side application 105 is a Java Applet that dynamically generates the HTML document or template and the result is forwarded to a component in theweb browser 103 for rendering. -
FIG. 3 shows a system 300 for generating machine-language code for message filtering. System 300 preferably includes ahost 302. Thehost 302 represents a physical machine having a central processing unit (CPU) 320 and an operating system software that manages one or more computer programs that reside on the physical machine and which are executed by theCPU 320. - A computer program 303 includes one or
more software components 304. In accordance with an embodiment of the invention, one such software component is afilter generator 310. Thefilter generator 310 accepts filter strings from asoftware component 304. The filter string defines an acceptance criteria by which thesoftware component 304 processes or discards messages. - In one embodiment, filter strings are expressed in a text-based format that is readable by a human user, and whose syntax is based on the Structured Query Language (SQL) conditional expression syntax. The text can include, without limitation, one or more expressions separated by a Boolean operator such as “and” or “or” for example. Each expression is made up of two elements separated by a Boolean conditional operator such “less-than” or “greater-than.” One element of the expression can be a numerical or functional value, or can be a reference to an element in the message.
- The
filter generator 310 includes a machine-language code generator 312. Thefilter generator 310 reorganizes each submitted filter string into a format that is acceptable to the machine-language code generator 312. The machine-language code generator 312 accepts the newly formatted filter string as an input, and generates machinelanguage filter code 317. The machinelanguage filter code 317 is then loaded into the computer program 303 to produces afilter software component 322 in machine-language code, which can be directly executed by theCPU 320 of thehost 302. - According to an exemplary embodiment, the machine-language code generator 312 represents a Java™ compiler, the computer program 303 represents a Java virtual machine (JVM), and the
software component 304 is a Java class. Thefilter generator 310 accepts a filter string as an input, from which it generates a Java™ text file that defines a Java™ class, which implements a predefined filter interface definition. - The filter interface definition calls for the implementation of a function that returns a Boolean value and expects as an argument an implementation of a predefined message interface definition. The message interface definition is empty to enable the generalization of the filter to any specific message implementation. The returned Boolean value indicates to the
software component 304 if the received message should be processed or disregarded. - The Java™ text file is compiled by the Java™ compiler 312 to produce a
Java™ class 317. TheJava™ class 317 is loaded into the computer program 303 to produce thefilter software component 322 for message filtering. Accordingly, each time amessage 330 is received by the computer program 303, thefilter software component 322 evaluates the receivedmessage 330 by applying the filter criteria to the message and instructs thesoftware component 304 to either process the message 335, or reject themessage 330. -
FIG. 4 is a flowchart illustrating a method 400 according to an embodiment of the invention. The method 400 can be executed at other functional levels of a computer system. Atblock 405, a filter string is received. The filter string may be received from a separate computer program residing on another host, or the same host, or from within a single computer program. The filter string is in a text-based format that is readable by a human user and whose syntax is based on the SQL conditional expression syntax. - At
block 410, a determination is made whether the filter string requires conversion into machine-language filter code. The conversion into machine-language filter code is required if there is no recollection of a recently-performed translation of a similar filter string. If conversion is required, atblock 415, the text-based filter string is prepared for the machine-language code generator. Atblock 420, the prepared filter string is converted into machine-language code by the machine-language code generator. If the conversion is not required, atblock 425, a determination is made whether the machine-language filter code is already loaded into the computer program. - If the machine-language filter code is not loaded, then at
block 430 the machine-language code is loaded into the computer program. Atblock 435, the computer program with the filter software component is executed on multiple incoming messages. Accordingly, the multiple incoming messages are evaluated against the filter criteria represented in the filter software component, to process or discard messages in the specified manner. - Other embodiments, combinations and modifications of this invention will occur readily to those of ordinary skill in the art in view of these teachings. Therefore, this invention is to be limited only by the following claims, which include all such embodiments and modifications when viewed in conjunction with the above specification and accompanying drawings.
Claims (10)
1. A method of filtering messages, comprising:
receiving a text-based filter string representing filter criteria;
automatically dynamically converting the text-based filter string directly to machine-language filter code once using a machine language generator for use by a code section of a computer program, the machine language generator being configured to dynamically convert the text based filter string directly to machine language filter code; and
using the code section, executing the machine-language filter code to accept or discard multiple messages received by or residing within one or more software components within the computer program based on the filter criteria.
2. The method of claim 1 , wherein executing the machine-language filter code is performed by a central processing unit running the computer program.
3. The method of claim 1 , wherein the machine-language filter code is directly executable by the central processing unit.
4. The method of claim 1 , wherein the text-based filter string is human-readable.
5. The method of claim 1 , wherein the text-based filter string is formatted according to a conditional expression syntax.
11. A system of filtering information transmitted from one or more software components within a computer program to one or more other software components within another computer program or the same computer program, comprising:
a filter generator configured to receive a text-based filter string representing filter criteria;
a machine language generator coupled with the filter generator and being configured to automatically dynamically convert the text-based filter string directly to machine-language filter code; and
a processor for executing the machine-language filter code for a software component of a computer program to accept or discard information received by the software component within the computer program based on the filter criteria.
12. The system of claim 11 , wherein the processor is included with a central processing unit.
13. The system of claim 11 , wherein the machine-language filter code is directly executable by the central processing unit.
14. The system of claim 11 , wherein the filter string is human readable.
15. The system of claim 11 , wherein the filter string is formatted according to a conditional expression syntax.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/107,706 US20110219107A1 (en) | 2001-01-19 | 2011-05-13 | System and method for collaborative processing of distributed applications |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/766,382 US7080120B2 (en) | 2001-01-19 | 2001-01-19 | System and method for collaborative processing of distributed applications |
US11/485,229 US7962624B2 (en) | 2001-01-19 | 2006-07-11 | System and method for collaborative processing of distributed applications |
US13/107,706 US20110219107A1 (en) | 2001-01-19 | 2011-05-13 | System and method for collaborative processing of distributed applications |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/485,229 Division US7962624B2 (en) | 2001-01-19 | 2006-07-11 | System and method for collaborative processing of distributed applications |
Publications (1)
Publication Number | Publication Date |
---|---|
US20110219107A1 true US20110219107A1 (en) | 2011-09-08 |
Family
ID=25076273
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/766,382 Expired - Fee Related US7080120B2 (en) | 2001-01-19 | 2001-01-19 | System and method for collaborative processing of distributed applications |
US11/485,229 Expired - Fee Related US7962624B2 (en) | 2001-01-19 | 2006-07-11 | System and method for collaborative processing of distributed applications |
US13/107,706 Abandoned US20110219107A1 (en) | 2001-01-19 | 2011-05-13 | System and method for collaborative processing of distributed applications |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/766,382 Expired - Fee Related US7080120B2 (en) | 2001-01-19 | 2001-01-19 | System and method for collaborative processing of distributed applications |
US11/485,229 Expired - Fee Related US7962624B2 (en) | 2001-01-19 | 2006-07-11 | System and method for collaborative processing of distributed applications |
Country Status (1)
Country | Link |
---|---|
US (3) | US7080120B2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160092551A1 (en) * | 2014-09-26 | 2016-03-31 | Oracle International Corporation | Method and system for creating filters for social data topic creation |
WO2017066804A1 (en) * | 2015-10-15 | 2017-04-20 | Push Technology Limited | Event driven subscription matching |
US9996529B2 (en) | 2013-11-26 | 2018-06-12 | Oracle International Corporation | Method and system for generating dynamic themes for social data |
US10002187B2 (en) | 2013-11-26 | 2018-06-19 | Oracle International Corporation | Method and system for performing topic creation for social data |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7080120B2 (en) * | 2001-01-19 | 2006-07-18 | Digital Orchid, Inc. | System and method for collaborative processing of distributed applications |
US20020165920A1 (en) * | 2001-04-24 | 2002-11-07 | Alcatel, Societe Anonyme | Facilitating simultaneous download of a multicast file to a plurality of end user download devices |
US7650380B2 (en) * | 2004-02-12 | 2010-01-19 | International Business Machines Corporation | System and method for messaging and collaborating in an intranet environment |
US7523317B2 (en) * | 2004-04-29 | 2009-04-21 | International Business Machines Corporation | Computer grid access management system |
US7568006B2 (en) * | 2004-11-30 | 2009-07-28 | International Business Machines Corporation | e-Business on-demand for design automation tools |
US7752658B2 (en) * | 2006-06-30 | 2010-07-06 | Microsoft Corporation | Multi-session connection across a trust boundary |
US8793705B2 (en) * | 2007-08-31 | 2014-07-29 | Red Hat, Inc. | Rich internet bus |
US8776038B2 (en) | 2008-08-07 | 2014-07-08 | Code Systems Corporation | Method and system for configuration of virtualized software applications |
US8434093B2 (en) | 2008-08-07 | 2013-04-30 | Code Systems Corporation | Method and system for virtualization of software applications |
US8954958B2 (en) | 2010-01-11 | 2015-02-10 | Code Systems Corporation | Method of configuring a virtual application |
US9104517B2 (en) | 2010-01-27 | 2015-08-11 | Code Systems Corporation | System for downloading and executing a virtual application |
US8959183B2 (en) | 2010-01-27 | 2015-02-17 | Code Systems Corporation | System for downloading and executing a virtual application |
US9229748B2 (en) | 2010-01-29 | 2016-01-05 | Code Systems Corporation | Method and system for improving startup performance and interoperability of a virtual application |
US8763009B2 (en) | 2010-04-17 | 2014-06-24 | Code Systems Corporation | Method of hosting a first application in a second application |
US9218359B2 (en) | 2010-07-02 | 2015-12-22 | Code Systems Corporation | Method and system for profiling virtual application resource utilization patterns by executing virtualized application |
US10015122B1 (en) | 2012-10-18 | 2018-07-03 | Sitting Man, Llc | Methods and computer program products for processing a search |
US10419374B1 (en) | 2010-07-09 | 2019-09-17 | Gummarus, Llc | Methods, systems, and computer program products for processing a request for a resource in a communication |
US20140172998A1 (en) * | 2012-12-16 | 2014-06-19 | Deep River Ventures, Llc | Methods, Systems, and Computer Program Products for Browsing Via a Communications Agent |
US10171392B1 (en) | 2010-07-09 | 2019-01-01 | Gummarus LLC | Methods, systems, and computer program products for processing a request for a resource in a communication |
US10212112B1 (en) | 2010-07-09 | 2019-02-19 | Gummarus LLC | Methods, systems, and computer program products for processing a request for a resource in a communication |
US10158590B1 (en) | 2010-07-09 | 2018-12-18 | Gummarus LLC | Methods, systems, and computer program products for processing a request for a resource in a communication |
US9021015B2 (en) | 2010-10-18 | 2015-04-28 | Code Systems Corporation | Method and system for publishing virtual applications to a web server |
US9209976B2 (en) | 2010-10-29 | 2015-12-08 | Code Systems Corporation | Method and system for restricting execution of virtual applications to a managed process environment |
US9094433B2 (en) | 2012-06-27 | 2015-07-28 | Qualcomm Incorporated | Systems and methods for bearer independent protocol gateway optimization |
US10021052B1 (en) | 2012-09-22 | 2018-07-10 | Sitting Man, Llc | Methods, systems, and computer program products for processing a data object identification request in a communication |
US10013158B1 (en) | 2012-09-22 | 2018-07-03 | Sitting Man, Llc | Methods, systems, and computer program products for sharing a data object in a data store via a communication |
US10019135B1 (en) | 2012-10-18 | 2018-07-10 | Sitting Man, Llc | Methods, and computer program products for constraining a communication exchange |
US10033672B1 (en) | 2012-10-18 | 2018-07-24 | Sitting Man, Llc | Methods and computer program products for browsing using a communicant identifier |
TW201733314A (en) * | 2016-03-10 | 2017-09-16 | 群暉科技股份有限公司 | Method for executing request and associated server |
CN109361694B (en) * | 2018-11-22 | 2021-11-30 | 北京未尔锐创科技有限公司 | Network communication method |
CA3167877A1 (en) * | 2020-02-25 | 2021-09-02 | Production Robots Engineering Limited | Realtime distribution of granular data streams on a network |
Citations (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175828A (en) * | 1989-02-13 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison |
US5426637A (en) * | 1992-12-14 | 1995-06-20 | International Business Machines Corporation | Methods and apparatus for interconnecting local area networks with wide area backbone networks |
US5590281A (en) * | 1991-10-28 | 1996-12-31 | The United States Of Americas As Represented By The Secretary Of The Navy | Asynchronous bidirectional application program processes interface for a distributed heterogeneous multiprocessor system |
US5608662A (en) * | 1995-01-12 | 1997-03-04 | Television Computer, Inc. | Packet filter engine |
US5644334A (en) * | 1994-05-19 | 1997-07-01 | Apple Computer, Inc. | Status indicators of an improved graphical user interface |
US5734903A (en) * | 1994-05-13 | 1998-03-31 | Apple Computer, Inc. | System and method for object oriented message filtering |
US5794049A (en) * | 1996-06-05 | 1998-08-11 | Sun Microsystems, Inc. | Computer system and method for executing architecture specific code with reduced run-time memory space requirements |
US5793972A (en) * | 1996-05-03 | 1998-08-11 | Westminster International Computers Inc. | System and method providing an interactive response to direct mail by creating personalized web page based on URL provided on mail piece |
US5812430A (en) * | 1997-06-02 | 1998-09-22 | Microsoft Corporation | Componentized digital signal processing |
US5867661A (en) * | 1996-02-15 | 1999-02-02 | International Business Machines Corporation | Method and apparatus of using virtual sockets for reducing data transmitted over a wireless communication link between a client web browser and a host web server using a standard TCP protocol |
US5913038A (en) * | 1996-12-13 | 1999-06-15 | Microsoft Corporation | System and method for processing multimedia data streams using filter graphs |
US6088796A (en) * | 1998-08-06 | 2000-07-11 | Cianfrocca; Francis | Secure middleware and server control system for querying through a network firewall |
US6144962A (en) * | 1996-10-15 | 2000-11-07 | Mercury Interactive Corporation | Visualization of web sites and hierarchical data structures |
US6182394B1 (en) * | 1999-03-25 | 2001-02-06 | Louis M. Bassler | Plant watering device |
US6195774B1 (en) * | 1998-08-13 | 2001-02-27 | Xilinx, Inc. | Boundary-scan method using object-oriented programming language |
US6253321B1 (en) * | 1998-06-19 | 2001-06-26 | Ssh Communications Security Ltd. | Method and arrangement for implementing IPSEC policy management using filter code |
US20010042094A1 (en) * | 1999-09-07 | 2001-11-15 | David C. Mitchell | Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language |
US6324686B1 (en) * | 1997-11-11 | 2001-11-27 | International Business Machines Corporation | Just in time compiler technique |
US6370655B1 (en) * | 1998-10-19 | 2002-04-09 | Winbond Electronics Corp. | Method and system for reversed-sequence code loading into partially defective memory |
US6381630B1 (en) * | 1998-06-25 | 2002-04-30 | Cisco Technology, Inc. | Computer system and method for characterizing and distributing information |
US20020100026A1 (en) * | 2001-01-19 | 2002-07-25 | Robert Betros | System and method for generating machine-language code from readable text code for information filtering |
US20020099795A1 (en) * | 2001-01-19 | 2002-07-25 | Robert Betros | System and method for maintaining two-way asynchronous notification between a client and a web server |
US6510439B1 (en) * | 1999-08-06 | 2003-01-21 | Lucent Technologies Inc. | Method and system for consistent update and retrieval of document in a WWW server |
US6529949B1 (en) * | 2000-02-07 | 2003-03-04 | Interactual Technologies, Inc. | System, method and article of manufacture for remote unlocking of local content located on a client device |
US6539430B1 (en) * | 1997-03-25 | 2003-03-25 | Symantec Corporation | System and method for filtering data received by a computer system |
US6571275B1 (en) * | 1999-04-27 | 2003-05-27 | International Business Machines Corporation | Method and apparatus for filtering messages in a data processing system |
US6604125B1 (en) * | 1999-09-24 | 2003-08-05 | Sun Microsystems, Inc. | Mechanism for enabling a thread unaware or non thread safe application to be executed safely in a multi-threaded environment |
US6606660B1 (en) * | 1999-08-31 | 2003-08-12 | Accenture Llp | Stream-based communication in a communication services patterns environment |
US6611862B2 (en) * | 1994-05-31 | 2003-08-26 | Richard R. Reisman | User station software that controls transport and presentation of content from a remote source |
US6643683B1 (en) * | 2000-05-08 | 2003-11-04 | International Business Machines Corporation | Interactive client-server environment for performing collaborative timing analysis of circuit designs |
US6839762B1 (en) * | 1998-12-31 | 2005-01-04 | U-Systems, Inc. | Ultrasound information processing system and ultrasound information exchange protocol therefor |
US6880010B1 (en) * | 1999-09-10 | 2005-04-12 | International Business Machines Corporation | Methods, systems, and computer program products that request updated host screen information from host systems in response to notification by servers |
US6925483B1 (en) * | 1998-06-25 | 2005-08-02 | Cisco Technology, Inc. | System for characterizing information from an information producer |
US7080120B2 (en) * | 2001-01-19 | 2006-07-18 | Digital Orchid, Inc. | System and method for collaborative processing of distributed applications |
US7216351B1 (en) * | 1999-04-07 | 2007-05-08 | International Business Machines Corporation | Systems and methods for synchronizing multi-modal interactions |
US7774831B2 (en) * | 2002-12-24 | 2010-08-10 | International Business Machines Corporation | Methods and apparatus for processing markup language messages in a network |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182119B1 (en) * | 1997-12-02 | 2001-01-30 | Cisco Technology, Inc. | Dynamically configurable filtered dispatch notification system |
US6192394B1 (en) * | 1998-07-14 | 2001-02-20 | Compaq Computer Corporation | Inter-program synchronous communications using a collaboration software system |
US6643686B1 (en) * | 1998-12-18 | 2003-11-04 | At&T Corp. | System and method for counteracting message filtering |
-
2001
- 2001-01-19 US US09/766,382 patent/US7080120B2/en not_active Expired - Fee Related
-
2006
- 2006-07-11 US US11/485,229 patent/US7962624B2/en not_active Expired - Fee Related
-
2011
- 2011-05-13 US US13/107,706 patent/US20110219107A1/en not_active Abandoned
Patent Citations (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175828A (en) * | 1989-02-13 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison |
US5590281A (en) * | 1991-10-28 | 1996-12-31 | The United States Of Americas As Represented By The Secretary Of The Navy | Asynchronous bidirectional application program processes interface for a distributed heterogeneous multiprocessor system |
US5426637A (en) * | 1992-12-14 | 1995-06-20 | International Business Machines Corporation | Methods and apparatus for interconnecting local area networks with wide area backbone networks |
US5734903A (en) * | 1994-05-13 | 1998-03-31 | Apple Computer, Inc. | System and method for object oriented message filtering |
US5644334A (en) * | 1994-05-19 | 1997-07-01 | Apple Computer, Inc. | Status indicators of an improved graphical user interface |
US6611862B2 (en) * | 1994-05-31 | 2003-08-26 | Richard R. Reisman | User station software that controls transport and presentation of content from a remote source |
US5608662A (en) * | 1995-01-12 | 1997-03-04 | Television Computer, Inc. | Packet filter engine |
US5867661A (en) * | 1996-02-15 | 1999-02-02 | International Business Machines Corporation | Method and apparatus of using virtual sockets for reducing data transmitted over a wireless communication link between a client web browser and a host web server using a standard TCP protocol |
US5793972A (en) * | 1996-05-03 | 1998-08-11 | Westminster International Computers Inc. | System and method providing an interactive response to direct mail by creating personalized web page based on URL provided on mail piece |
US5794049A (en) * | 1996-06-05 | 1998-08-11 | Sun Microsystems, Inc. | Computer system and method for executing architecture specific code with reduced run-time memory space requirements |
US6144962A (en) * | 1996-10-15 | 2000-11-07 | Mercury Interactive Corporation | Visualization of web sites and hierarchical data structures |
US5913038A (en) * | 1996-12-13 | 1999-06-15 | Microsoft Corporation | System and method for processing multimedia data streams using filter graphs |
US6539430B1 (en) * | 1997-03-25 | 2003-03-25 | Symantec Corporation | System and method for filtering data received by a computer system |
US5812430A (en) * | 1997-06-02 | 1998-09-22 | Microsoft Corporation | Componentized digital signal processing |
US6324686B1 (en) * | 1997-11-11 | 2001-11-27 | International Business Machines Corporation | Just in time compiler technique |
US6253321B1 (en) * | 1998-06-19 | 2001-06-26 | Ssh Communications Security Ltd. | Method and arrangement for implementing IPSEC policy management using filter code |
US6925483B1 (en) * | 1998-06-25 | 2005-08-02 | Cisco Technology, Inc. | System for characterizing information from an information producer |
US6381630B1 (en) * | 1998-06-25 | 2002-04-30 | Cisco Technology, Inc. | Computer system and method for characterizing and distributing information |
US6088796A (en) * | 1998-08-06 | 2000-07-11 | Cianfrocca; Francis | Secure middleware and server control system for querying through a network firewall |
US6195774B1 (en) * | 1998-08-13 | 2001-02-27 | Xilinx, Inc. | Boundary-scan method using object-oriented programming language |
US6370655B1 (en) * | 1998-10-19 | 2002-04-09 | Winbond Electronics Corp. | Method and system for reversed-sequence code loading into partially defective memory |
US6839762B1 (en) * | 1998-12-31 | 2005-01-04 | U-Systems, Inc. | Ultrasound information processing system and ultrasound information exchange protocol therefor |
US6182394B1 (en) * | 1999-03-25 | 2001-02-06 | Louis M. Bassler | Plant watering device |
US7216351B1 (en) * | 1999-04-07 | 2007-05-08 | International Business Machines Corporation | Systems and methods for synchronizing multi-modal interactions |
US6571275B1 (en) * | 1999-04-27 | 2003-05-27 | International Business Machines Corporation | Method and apparatus for filtering messages in a data processing system |
US6510439B1 (en) * | 1999-08-06 | 2003-01-21 | Lucent Technologies Inc. | Method and system for consistent update and retrieval of document in a WWW server |
US6606660B1 (en) * | 1999-08-31 | 2003-08-12 | Accenture Llp | Stream-based communication in a communication services patterns environment |
US20010042094A1 (en) * | 1999-09-07 | 2001-11-15 | David C. Mitchell | Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language |
US6880010B1 (en) * | 1999-09-10 | 2005-04-12 | International Business Machines Corporation | Methods, systems, and computer program products that request updated host screen information from host systems in response to notification by servers |
US6604125B1 (en) * | 1999-09-24 | 2003-08-05 | Sun Microsystems, Inc. | Mechanism for enabling a thread unaware or non thread safe application to be executed safely in a multi-threaded environment |
US6529949B1 (en) * | 2000-02-07 | 2003-03-04 | Interactual Technologies, Inc. | System, method and article of manufacture for remote unlocking of local content located on a client device |
US6643683B1 (en) * | 2000-05-08 | 2003-11-04 | International Business Machines Corporation | Interactive client-server environment for performing collaborative timing analysis of circuit designs |
US20020099795A1 (en) * | 2001-01-19 | 2002-07-25 | Robert Betros | System and method for maintaining two-way asynchronous notification between a client and a web server |
US7080120B2 (en) * | 2001-01-19 | 2006-07-18 | Digital Orchid, Inc. | System and method for collaborative processing of distributed applications |
US20020100026A1 (en) * | 2001-01-19 | 2002-07-25 | Robert Betros | System and method for generating machine-language code from readable text code for information filtering |
US7962624B2 (en) * | 2001-01-19 | 2011-06-14 | Sorteo Games | System and method for collaborative processing of distributed applications |
US7774831B2 (en) * | 2002-12-24 | 2010-08-10 | International Business Machines Corporation | Methods and apparatus for processing markup language messages in a network |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9996529B2 (en) | 2013-11-26 | 2018-06-12 | Oracle International Corporation | Method and system for generating dynamic themes for social data |
US10002187B2 (en) | 2013-11-26 | 2018-06-19 | Oracle International Corporation | Method and system for performing topic creation for social data |
US20160092551A1 (en) * | 2014-09-26 | 2016-03-31 | Oracle International Corporation | Method and system for creating filters for social data topic creation |
US10146878B2 (en) * | 2014-09-26 | 2018-12-04 | Oracle International Corporation | Method and system for creating filters for social data topic creation |
WO2017066804A1 (en) * | 2015-10-15 | 2017-04-20 | Push Technology Limited | Event driven subscription matching |
GB2560275A (en) * | 2015-10-15 | 2018-09-05 | Push Tech Limited | Event driven subscription matching |
US10942792B2 (en) | 2015-10-15 | 2021-03-09 | Push Technology Limited | Event driven subscription matching |
GB2560275B (en) * | 2015-10-15 | 2021-09-01 | Push Tech Limited | Event driven subscription matching |
Also Published As
Publication number | Publication date |
---|---|
US20020099847A1 (en) | 2002-07-25 |
US20060253535A1 (en) | 2006-11-09 |
US7962624B2 (en) | 2011-06-14 |
US7080120B2 (en) | 2006-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20110219107A1 (en) | System and method for collaborative processing of distributed applications | |
US11171897B2 (en) | Method and apparatus for composite user interface generation | |
US8205007B2 (en) | Native format tunneling | |
JP3853592B2 (en) | Distributed web application server | |
US6938087B1 (en) | Distributed universal communication module for facilitating delivery of network services to one or more devices communicating over multiple transport facilities | |
Davies et al. | L 2 imbo: A distributed systems platform for mobile computing | |
US5812768A (en) | System for allocating adaptor to server by determining from embedded foreign protocol commands in client request if the adapter service matches the foreign protocol | |
US8099456B2 (en) | Application programming interface for implementing directory service access using directory service markup language | |
US6845505B1 (en) | Web request broker controlling multiple processes | |
EP2383650A1 (en) | Methods for distributed program execution with file-type association in a client-server network | |
US20040024820A1 (en) | Method and apparatus for designating endpoints in a collaborative computer system to facilitate maintaining data consistency | |
US20110078708A1 (en) | System and Method for Communication Between Portal Applications and Portlet Containers | |
US20030069924A1 (en) | Method for distributed program execution with web-based file-type association | |
US20030074393A1 (en) | Methods for distributed program execution with file-type association in a client-server network | |
US20030069923A1 (en) | Method for distributed program execution with server-based file type association | |
WO2002015029A1 (en) | Network application program interface facilitating communication in a distributed network environment | |
JPH09218860A (en) | Method for handling remote procedure calling in accordance with various kinds of protocols in client/ server system | |
US20050267980A1 (en) | Regulating client requests in an electronic messaging environment | |
AU2002332001A1 (en) | Methods for distributed program execution with file-type association in a client-server network | |
US20030135587A1 (en) | Method and system of state management for data communications | |
US20020046304A1 (en) | Dynamic class loading | |
US20020107915A1 (en) | Protocol-independent JSP invocation | |
WO1998004971A1 (en) | Method and system for generalized protocol implementation on client/server communications connections | |
US7908397B1 (en) | Application server gateway technology | |
US20050053050A1 (en) | Custom routing of object requests |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |