This invention relates to computer software, particularly distributed enterprise applications.
Until recently corporations considered the mid-tier platform, based on such operating systems as Unix and Windows NT, too fragile for hosting mission critical applications for their businesses. With the introduction of Java(R) by Sun Microsystems, Inc., and the widespread use of the Internet to do business, the situation changed. Corporations now use the technologies based on Sun Microsystems Java 2 Enterprise Edition (J2EE) and build critical business applications on the mid-tier platform. Such applications are generally run in a distributed computing environment, with server farms having numerous CPU's.
Since many corporations do business with their customers using the Internet, critical business applications are now exposed to end-users through their browsers. Any downtime or problem with these online applications creates huge direct and indirect opportunity costs. One analyst has stated that a web site must respond within eight seconds or a user will leave and go to a competitor's web site. By one estimate, about $4.35 billion in online sales are lost each year in the U.S. alone due to downtime or slow sites.
A plethora of system management tools are available to monitor the performance of networks, databases, storage devices, and platforms, which together constitute the infrastructure of mission critical business applications. These tools are certainly necessary and have their place in the picture; however, the application connects all of those resources, and it is the performance of the application that directly affects the customer. The application drives the network traffic, database usage, and the platform workload. Consequently, most Internet website outages are application related, and existing system management tools fall short of giving any insight of how applications are behaving. Current off-the-shelf application management systems concentrate mainly on application server functions, and not on applications.
As many applications are directly exposed to customers twenty-four hours a day on the web, stringent availability and performance requirements are imposed. Currently, a data center typically resolves server problems by recycling the troubled application server. Unfortunately, recycling is typically only a temporary solution, as the error almost always reoccurs. The inability to identify a better resolution is due to the lack of production-class non-intrusive tools to service and troubleshoot faulty systems and applications on the mid-tier platform.
Another application management issue is due to the problems created by servicing the production workload. A clear division of labor between development activities and production services activities is a norm in enterprise IT organizations. However a major disconnect exists between data center operations and systems development activities. There is a lack of non-invasive tools that allow administrators to visualize the workload running inside the application server. Diagnosis without any J2EE context, passed from production services staff to development staff, is too low-level to offer developers any problem-solving hints.
Any application level tracing inherently involves high overhead and for this reason is not acceptable to high volume systems. A wide variety of components need to be monitored for diagnostic purposes, including servlets, JSP, enterprise Java beans, objects, methods, SQL, sessions and context. The distributed servers are a major source for the intermittent problems.
Current application management products provide less than optimal functions to handle multiple, distributed applications in a real time fashion. While applications are being integrated, most current systems management products still look at discrete components. This approach makes application troubleshooting difficult, and root cause analysis almost impossible.
In summary, a variety of problems can occur in J2EE application server farms which hamper the performance of e-business applications. The most common of these problems are loops, slow processing, hang situations, stall situations, exception occurrences, intermittent problems, deadlocks, timeouts, API related problems, and memory leaks. Existing environment and trouble shooting monitors are not available for application servers in distributed environments.
A method for problem determination for enterprise applications running in a distributed environment includes the steps of obtaining information regarding the enterprise applications, presenting high level information selected from the obtained information, including items of information, to a user, providing to the user one or more prompts for more detailed information, receiving, in response to one of the prompts, a request from a user for more detailed information, and providing more detailed information to the user in response to the request.
A method for problem determination for enterprise applications running in a distributed environment on a plurality of servers includes the steps of receiving instructions from an administrator to establish an account for a user, associating one or more servers with the account, and providing access to the corresponding user only to the associated servers.
A method for problem determination and cure for enterprise applications running in a distributed environment includes the steps of identifying a thread running in the distributed environment, prompting the user the option of executing a soft kill of the thread, and, in response to a command to execute a soft kill, adding code that causes an exception to be thrown so that the request is canceled.
A method for problem determination for enterprise applications running in a distributed environment includes prompting a user to select an application server and a search string, searching for occurrences of the search string among all active URL strings for web requests and active class names for remote enterprise java bean requests, and displaying identified strings and requests.
A method for problem determination for enterprise applications running in a distributed environment includes prompting a user to enter an exclude list of class names of applications not to be monitored, prompting the user to enter an exclude override list of class names to be monitored, and upon receiving the requested information, monitoring all classes other than those classes identified in the exclude list and not in the exclude override list.
A method for problem determination for enterprise applications running in a distributed environment includes the steps of monitoring activity based availability of an application running on a server in the distributed environment, and displaying for the user an indication of whether the server is available or unavailable based on the activity based availability. The method may include monitoring one or more of the delta CPU usage, the delta throughput volume, and delta memory usage attributable to the application being monitored. If any of those values is below a threshold, the server is considered to be unavailable, notwithstanding the availability of the hardware.
A system for problem determination for enterprise applications running in a distributed environment includes computer hardware configured for obtaining information regarding the enterprise applications, for presenting high level information to a user, for providing to the user one or more prompts for more detailed information, for receiving, in response to one of the prompts, a request from a user for more detailed information, and for providing more detailed information to the user in response to the request.
A system for problem determination for enterprise applications running in a distributed environment on a plurality of servers includes computer hardware configured for receiving instructions from an administrator to establish an account for a user, for associating one or more servers with the account, and for providing access to the corresponding user only to the associated servers.
A system for problem determination and cure for enterprise applications running in a distributed environment includes computer hardware configured for identifying a thread running in the distributed environment, for prompting the user the option of executing a soft kill of the thread, and, in response to a command to execute a soft kill, for adding code that causes an exception to be thrown so that the request is canceled.
A system for problem determination for enterprise applications running in a distributed environment includes computer hardware configured for receiving a selection of an application server and a search string, for searching for occurrences of the search string among all active URL strings for web requests and active class names for remote enterprise java bean requests, and for displaying identified strings and requests.
A system for problem determination for enterprise applications running in a distributed environment includes computer hardware configured for prompting a user to enter an exclude list of class names of applications not to be monitored, for prompting the user to enter an exclude override list of class names to be monitored, and for, upon receiving the requested information, monitoring all classes other than those classes identified in the exclude list and not in the exclude override list.
A system for problem determination for enterprise applications running in a distributed environment includes computer hardware configured for monitoring activity based availability of an application running on a server in the distributed environment, and for displaying for the user an indication of whether the server is available or unavailable based on the activity based availability. The computer hardware may be configured for monitoring one or more of the delta CPU usage, the delta throughput volume, and delta memory usage attributable to the application being monitored. If any of those values is below a threshold, the server is considered to be unavailable, notwithstanding the availability of the hardware.
A computer program for problem determination for enterprise applications running in a distributed environment is made up of instructions stored on a medium, which instructions, when executed on a processor cause the processor to execute the steps of: presenting high level information, including information items, selected from the obtained information in a format accessible to a user, providing to the user one or more prompts to request more detailed information relative to one or more of the information items, receiving in response to one of said prompts a request from a user for more detailed information as to one or more of said information items, and providing the requested more detailed information to the user in response to the request.
A computer program for problem determination for enterprise applications running in a distributed environment, is made up of instructions stored on a medium, the instructions, when executed on a processor causing the processor to execute the steps of: receiving instructions from an administrator to establish an account for a user, associating one or more servers with the account, and providing access to the corresponding user only to the associated servers.
A computer program for problem determination and cure for enterprise applications running in a distributed environment is made up of instructions stored on a medium, which instructions, when executed on a processor cause the processor to execute the steps of: identifying a thread running in the environment, providing a user with an option to execute a soft kill of the thread, and, in response to a command to execute a soft kill, adding code to the thread that causes an exception to be thrown so that the thread is canceled.
A computer program for problem determination for enterprise applications running in a distributed environment is made up of instructions stored on a medium, which instructions, when executed on a processor, cause the processor to execute the steps of prompting a user to select an application server and a search inquiry, searching among all active URL strings for web requests and active class names for remote enterprise java bean requests responsive to the search inquiry, and displaying identified strings and requests.
A computer program for problem determination for enterprise applications running in a distributed environment is made up of instructions stored on a medium, which instructions, when executed on a processor, cause the processor to execute the steps of prompting the user to enter an exclude list of class names of applications not to be monitored, prompting the user to enter an exclude override list of class names to be monitored, and upon receiving the an exclude override list defining a subset of class names in the exclude list, monitoring all classes other than the classes identified in the exclude list and not identified in the exclude override list.
A computer program for problem determination for enterprise applications running in a distributed environment is made up of instructions stored on a medium, which instructions, when executed on a processor cause the processor to execute the steps of monitoring activity based availability of an application running on a server, and displaying for the user an indication of whether the server is available or unavailable based on the activity based availability.
In a method and system of the invention, a method is provided to furnish information about the operation of servers and systems to a user. The method is particularly adapted to enterprise servers running systems based on the java programming system. The method is also particularly adapted to use on systems running multiple client-server applications on multiple servers.
In the method of the invention, a user is typically an information technology department representative who is asked to investigate user reports of problems. This process is described as problem determination. A large number of types of different problems may be encountered, including unavailability of a server to clients, slow processing of client requests, lack of response after submission of a request by a client, and other problems. In the initial step of the method, a user logs in and is presented with a user interface that furnishes the user with information. The information presents to the user, in response to an initial user request, is at a high level. This top level of information is also referred to as the application server groups level, because information about groups of application servers is provided. The computer system of the invention has selected this high level information for presentation to the user. The information may be understood as containing multiple items of information. The information provided contains information about the performance, either in real time or in the very recent past, such as in the last minute, or last five minutes, or last hour, of servers running the selected applications which the user is entitled to view. The user is provided with one or more options as to detailed information that may be provided. In particular, the options, or prompts, are to obtain more detailed information as to one or more of the presented items of information. The user selects one or more of the items for the display of more detailed information. In response to receipt of this user request, information is provided at a greater level of detail as to the one or more presented items. The user may accomplish this by, for example, mouse clicking on a hyperlink. For example, a feature of an item of information, such as a server name, may be hyperlinked. Many other manners of requesting the greater level of detail of information may be provided. The presentation of options for more detailed information may be understood as permitting the user to drill down to obtain greater levels of detail.
Information is provided with respect to applications, and not with respect to hardware or operating system function. Information provided at the top level includes information that affects clients directly. For example, clients see the processing of requests or transactions. Information provided at the top level preferably includes information as to numbers of transactions processed in a recent short time period. This information may be on an application server by application server basis, as well as for application server groups. For the user's reference, the same information may be provided in less recent time periods, so that the user may view trends in number of transactions or requests processed. Other information available includes statistical information, such as averages, for time to process requests or transactions. This information may be provided on a server-by-server basis, so as to isolate problems affecting one server. By providing information specific to applications, the user may relatively quickly use judgment to determine whether the problem is with the application, and where in the application the problem resides. The user may then use existing tools, not part of the method of the invention, to solve the problem. Alternatively, tools for solving certain types of problems may be incorporated in computer program and system implementing the method of the invention.
The method of the invention will now be explained by an example of a series of levels of provided information. It will be understood that such design features as the number of levels, the information furnished at each level, and the type of display, may be varied within the scope of the method of the invention. In this example, the highest level is the level of application server groups or the application overview page. An exemplary process flow will be discussed with reference to
From the top level display, or application overview page, the user is presented with at least one means for activating a display of more detailed information about a displayed application. Hyperlinked text may be provided, such as at 525 in
From the application group server level, the next level of detail is the application server level. The display of the application server level may be referred to as the application activity display. From the availability manager display, or the application group server view, there is preferably a selection available to move to the application server level associated with each displayed server. In the method, user input is received, as indicated by block 130. If the user input is in the nature of a request for additional information relating to a selected server, as indicated by decision block 135, then application server level information will be displayed, as indicated by block 140. If the user input is not a request for additional information relating to a selected server, then the requested function is executed, as indicated at block 137. The application server level will provide information as to each of the threads which is being executed by that server at a particular point in time, as shown, for example, as screen 700 in
A filter may be provided to limit the number of threads selected for display. A filter has certain criteria relating to properties of threads. As indicated in
Information furnished may also be in the nature of the type of request, such as the name of the request, the thread type, and the class name. Display of this request nature information may enable the user to identify a class of requests that are being processed differentially from other requests. For example, a financial services firm may permit clients to view account information and to initiate trades through its website. If trades are taking an excessively long period of time to complete, but requests to view account information are processed promptly, the request nature information will indicate this disparity. The thread information displayed may also include information as to the method currently being executed by the thread. This current method information may permit the user to identify a method which is taking an excessively long time to complete.
From the application activity display, the user may select to view more detailed information about a particular thread. The input from the user is received as indicated by block 155, and the related decision block is shown at block 160. If the request is not for information as to one thread, the requested function is executed, as shown by block 163. Referring to
Tools may be provided for addressing problems after determination. For example, problem determination may result in identification of a particular thread that is looping. A display of detail, such as display 800, may include one or more buttons or links to activate one or more tools or operations. The tools or operations may be provided in addition to other displayed information. In one example, the user is provided a number of operations which may be carried out on the thread. These operations may include changing the priority of the thread, illustrated by drop down menu available at 805, changing the thread status, illustrated by a drop down menu available at 810, terminating the thread by a soft kill or a hard kill, or obtaining additional information, such as a method trace. The soft kill may be available by a radio button, such as at 815. The hard kill may be available by a radio button, such as at 820. A request for a method trace may be provided as one of a number of menu items, such as in menu 825. The soft kill of a thread may be accomplished by adding code that causes an exception to be thrown so that the thread is canceled. This may be done in real time through the JVMPI interface in the probe/publish engine (described below). The soft kill is preferable to a hard kill, as a hard kill of a thread may result in the need to restart the JVM. In an example, a user input may be evaluated to determine if an operation is requested, as indicated by block 180 of
A further item of detail is the stack trace, which is illustrated as display 900 in
As noted above, a further level of detail is the display of the method trace, an example of which is shown as display 1000 at
Information as to the current request object and session object, as illustrated as display 1100 in
In the example above, each display provides a selection of one level of detail on a particular server group, server, or thread. In a preferred embodiment, multiple levels of detail may be made available. For example, at any level, the user may be provided the option to conduct a search. The process flow related to searching will be illustrated with respect to
A number of search options can be provided. The search strategies can preferably identify transactions by behavior. For example, the search may be directed to all transactions in the system that have been in the system for longer than a selected period of time, such as 5 minutes, 10 minutes, or 15 minutes. Alternatively, a search may be conducted for all transactions started within a certain time window, all transactions that have issued more than a threshold number (such as 10,000) of SQLs and are not finished, and all transactions that have issued more than a threshold number (such as 10,000) methods and are still not finished. It will be understood that the user will be able to select the parameters, including threshold lengths of time in the system and threshold numbers of transactions, based on the user's experience with the particular system and applications.
The method of the invention preferably provides an application server system resources analyzer. This analyzer may also be selected to compare the operation of various servers. The user may be presented with the option of selecting the system resource analyzer at all or any points in the above drill-down description. An existing tool, such as the Websphere PMI interface, may be used to provide the information. A first page in the server system resources analyzer will be referred to as the system resource portal. The system resource portal provides information as to a number of different resources, such as different servers. Preferably, the information furnished as to each resource is shown as a percentage of a maximum, and may be displayed graphically. Such techniques as using different colors if the use of a given resource is within a certain defined threshold of a maximum may be employed. Information that may be displayed includes pools, memory usage, CPU usage, application activity, and in-depth resource information links. An example is shown at
As to servlet and session managers, a servlet and session manager summary data page may be selected from menu 1420. An example of such a page is shown as display 1800 in
A transaction manager detail page, which may be selected from menu 1420, may include, as shown as display 2000 in
A web applications summary page may be selected from menu 1420. The web applications summary page, an example of which is shown in as display 2100 of
It will be appreciated that the method of the invention may be executed with variations in the particular information available at each level, the manner of display of the information, and the drill down paths available to the user at each level. The number of levels may also be varied within the scope of the invention. The method may provide for customization by a user or by an administrator of the number of levels, the types of information displayed at each level, and the manner of display.
A method and system of the invention provides for permitting each user to have access to the status of defined functions and applications. A system administrator has the option of creating accounts for each individual user. Each user may be assigned to one or more application server groups, which are associated with the user's account. Each user will be entitled to view information pertaining only to the application server groups selected for that user's account by the system administrator. Each user may have a password required to access the system. In a preferred embodiment, the operating system, e.g., unix, performs the password validation. The assignment of servers to server groups is also under the control of a system administrator, as is the assignment of users to server groups. Different server groups with overlapping membership may be created. Users may similarly have varying rights to view and execute commands on various servers and server groups.
By way of example as to access, a simplified system is illustrated in
In a method of the invention, the displayed information is collected through monitoring of applications. The applications to be monitored may be dynamically adjusted in a method of the invention. It will be appreciated that any monitoring diverts system resources from the performance of the function of a server or group. Accordingly, the ability to select applications for monitoring means that system resources may be conserved for monitoring only of problematic applications, for example. The selection may preferably be conducted either at the server or group level. Referring to
The problem determination system of the invention may have the architecture described below. The architecture may be in the nature of an agent operating on each application server, and the remaining components on a dedicated server, including a kernel providing central control, a publish server for receiving data from the probe engine, an archive agent for moving data from the cache to a database, a database, a visualization engine for providing all end user applications, and an application server agent for collecting certain application server specific data from an application server (such as Websphere). Application server agents, are installed on application servers. Probe and publish engine 2511 (
In one embodiment, the source of the data provided to the user in the method described above may be a probe and publish engine. The probe and publish engine obtains all information pertaining to specific threads. In a preferred embodiment, the standard Java profiling interface (JVMPI) may be employed for probe agents.
Referring to
In this embodiment, a JVMPI library is loaded with the JVM, and communicates with the JVM, the probe controller, the event agent, and the command agent. JNI functions may be used to capture all event-based data, and date/time stamp, wall clock and CPU clock. Events that are registered by the JVMPI library are shown at Table 1:
Information obtained from the JVMPI library is stored in an queue, called the event queue, and the event agent retrieves records from the queue, packs them in a packet, and sends them to the publish server via the publish engine. The data collected from the queue by the Event Engine are shown at Table 2:
The Command Agent is an RMI service registered with the kernel. The Command Agent receives commands from the visualization engine and other external components and satisfies them using JVMPI or JNI calls. An exemplary list of commands, and whether the commands are provided to the JVMPI or the JNI is shown at Table 3.
The probe controller is also preferably an RMI service registered to kernel 2530, and starts and stops other probe components gets the probe's configuration. New configurations of probes are sent from kernel 2530 to the probe controller. The probe controller will determine if a probe should be started or stopped or a filter changed upon receiving a new configuration. A logic diagram for the Probe/Publish Engine is provided as
A visualization engine provides the front end user interface component used in the method and system of the invention. Standard J2EE technologies may be used for implementation of a visualization engine. The front-end framework of the visualization engine handles housekeeping such as session management and security. The visualization engine preferably handles as many common tasks as possible in order to provide an environment conducive to the development of front-end application and business logic components. The visualization engine sits on top of a database, which it accesses in response to user requests. The architecture is illustrated at
Servlets may be used for form-entry data validation, as noted above, and for application logic flow. A base servlet may be provided that all servlet applications must extend. The base servlet sets up global variables, handles authentication and authorization, and performs redirects to login and access-denied pages as necessary. Resource bundle, log message and audit trail message files are provided. The JSP's generate HTML code to render the web page to be displayed in the browser. Servlets pass the desired data to the JSP's using java bean objects.
The top layer of the stateless session beans makes up the API. There may be a layer of enterprise java beans or java classes below the top layer that deals with access to data from the database. Data from the database may be obtained through a database access layer that is part of the DBAccess data access framework.
The application activity display function provides real-time access to data, as noted above, and involves direct communication between the visualization engine and the corresponding publish server and probes. A publish server interface and command agent interface are provided for this direct communication. The stubs to these interfaces are maintained by the kernel, and are retrieved by the visualization engine by performing a lookup from the kernel using a lookup agent helper client. Each server in which probes are running has a unique identification for the probe. Once the probe identification has been obtained, the interface stub of the command agent is obtained from the kernel. The identification of the publish server used by the probe is then obtained from the probe. The corresponding interface stub of the publish server is obtained from the kernel. The list of active requests and associated data can then be obtained directly from the selected publish server. Additional request data can be obtained from the probe directly. Commands such as thread modification, kill thread, and change priority are transmitted directly to the probe through the command agent interface. Communications between the visualization engine and the command agent and publish server of the probe are real-time and synchronous.
The visualization engine includes the security functions discussed above. A proprietary API was developed because the J2EE specification security features are not sufficient to provide the security features described above. Security features consist of authentication and authorization functions. Authentication is performed via a proprietary 0Java API that wraps a third party authentication system. Authorization is performed by maintaining access control lists by users or groups. A user is associated with specific groups and can only access data for servers in those groups. Servers are each associated with one or more groups.
The kernel will now be described in detail. The kernel enables various services to discover each other on a network and provides a way for services to interact in a dynamic, robust way. No user intervention is required when services are brought on or off line. Services that join the kernel can adapt dynamically when any of the other services go on or off line. Consumers of the services do not need prior knowledge of the service's implementation. Referring to
The kernel core 2531 handles all join, renew, leave and lookup requests from a service. The services are probe agents, the availability server 2536, and the configuration server 2537. For a join request, the service passes a proxy object and its associated service attributes to the kernel. The kernel fulfills the request by storing the proxy object and service attributes in the registration database. When a client needs a certain type of service to accomplish a task, it looks for the service by passing a search template and issuing a lookup request to the kernel. Based on the search template, the kernel will return the corresponding proxy object to the client. Each service is required to renew its lease by issuing a renew request to the kernel periodically. If the kernel does not receive a renew request when required, the kernel removes the service's proxy object and service attributes from the registration database. This renewal requirement avoids requests being sent to services that are unavailable. The probe and publish server preferably bundles the application and system information, such as the volume of completed requests and CPU utilization, when the lease is renewed. The lease concept thus serves to report the availability of the server and high-level statistical information. A service may also issue a leave request to the kernel.
The lease administrator component 2532 keeps track of the records in the registration database. If any registration is expired, or a leave request is received, the lease administrator 2532 causes the corresponding record to be removed so that the kernel will not pass the corresponding proxy object to any clients. The RFS (request for stub) server 2533 listens on a port for connections. When a connection is identified, a serialized stub object of the kernel is sent out to the service or client to use in interfacing with the kernel. The codebase server 2534 is similar to an HTTP server, but provides a facility to allow clients of a service to download the class definitions of the proxy object it obtains from the kernel. The registration database 2535 provides in-memory storage for proxy objects and associated service attributes. Server availability and statistical information resides in the registration database 2535.
The availability server 2536 takes snapshots and stores the history of the registration database 2535 in order to facilitate providing availability of servers and statistical data to the visualization engine.
The configuration server 2537 is a centralized place to store configuration data for all components. Configuration data is in XML form and is kept in the database. Users may change configuration through the visualization engine. When this is accomplished, the configuration server 2537 retrieves from the kernel a list of proxy objects that are adapting to the old configuration. The configuration server 2537 makes use of the proxy objects to broadcast the new configuration. This serves to update the configuration of probes in response to user commands at the Visualization Engine.
A helper utility, called JoinManager, requests the stub object of the kernel, and joins the kernel with the proxy object as well as its service attributes. If the stub object is not available, the utility will continue to retry until it succeeds. This utility also maintains and renews the lease. A lookup manager utility may be used by a client to look up a specific service.
The publish server 2540 manages data received from the various publish engines. Multiple publish servers may be provided in a single installation. The publish server provides query capabilities for the visualization engines. The publish server also manages the incremental retrievals of performance management interface data. The publish server architecture is shown at
Publish server 2540 may be implemented as a multithreaded process. Each thread connects to a specific publish engine and receive data from it. It may also contain additional threads to deal with startup, shutdown and communications to the kernel.
Referring to
If the data is determined to be a query, then a property may be used to determine the appropriate type of information. Queries may ask for various information, as illustrated at 3030, 3032 and 3034. The result is then serialized and sent back to the publish engine. The publish server also receives certain administration requests made by its clients, such as for status, as indicated at 3036, and stop the service, as indicated at 3038. These tasks can be invoked by administrators. The connection is closed when the information in response to the query has been provided, as indicated at 3040, and the publish server becomes available to accept socket connections again.
It will be understood that the foregoing architecture represents one system having means for carrying out the steps of the method of the invention. The visualization engine comprises means for presenting information to a user, means for prompting a user, and means for receiving requests from a user. The probe engine comprises means for obtaining information regarding distributed applications, and for carrying out filtered monitoring of the distributed applications. It will be understood that the functions of the publish engine, archive, database and kernel cooperate with the visualization engine and the probe engine to provide one means for carrying out the steps of the method.
The problem determination system of the invention may be installed through installation of certain probe software on a server to be monitored, and a separate server for the remaining software of the invention. This configuration provides for relatively straightforward installation of the system of the invention.
The present invention can be embodied in the form of methods and apparatus for practicing those methods. The present invention can also be embodied in the form of program code embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the invention. The present invention can also be embodied in the form of program code, for example, whether stored in a storage medium, loaded into and/or executed by a machine, or transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the invention. When implemented on a general-purpose processor, the program code segments combine with the processor to provide a unique device that operates analogously to specific logic circuits.
While the exemplary embodiments have been described with respect to enterprise applications using Java technologies, and specifically J2EE technologies, the methods of the invention may be implemented in other technologies. For example, the methods of the invention may be implemented in other platform-independent technologies. The methods of the invention may also be implemented in other technologies applicable to distributed enterprise applications.
Although exemplary embodiments are described in detail above, the invention is not limited thereto. Rather, the invention should be construed broadly to include other variants and embodiments.
This application claims the benefit of U.S. Provisional Patent Application No. 60/371,035, filed Apr. 8, 2002, which application is incorporated by reference herein in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
6031528 | Langfahl, Jr. | Feb 2000 | A |
6119101 | Peckover | Sep 2000 | A |
6321263 | Luzzi et al. | Nov 2001 | B1 |
6438573 | Nilsen | Aug 2002 | B1 |
6446028 | Wang | Sep 2002 | B1 |
6633908 | Leymann et al. | Oct 2003 | B1 |
6658471 | Berry et al. | Dec 2003 | B1 |
6701363 | Chiu et al. | Mar 2004 | B1 |
7127743 | Khanolkar et al. | Oct 2006 | B1 |
20010034771 | Hutsch et al. | Oct 2001 | A1 |
20020038331 | Flavin | Mar 2002 | A1 |
20020042896 | Johnson et al. | Apr 2002 | A1 |
20020054169 | Richardson | May 2002 | A1 |
20020054587 | Baker et al. | May 2002 | A1 |
20020120663 | Binns | Aug 2002 | A1 |
20020120727 | Curley et al. | Aug 2002 | A1 |
20030004987 | Glanzer et al. | Jan 2003 | A1 |
20030014464 | Deverill et al. | Jan 2003 | A1 |
20030065764 | Capers et al. | Apr 2003 | A1 |
20030115509 | Dubal | Jun 2003 | A1 |
20030182463 | Valk | Sep 2003 | A1 |
20040064552 | Chong et al. | Apr 2004 | A1 |
20040226013 | Mariotti et al. | Nov 2004 | A1 |
20050165755 | Chan | Jul 2005 | A1 |
Number | Date | Country |
---|---|---|
2001-0079612 | Aug 2001 | KR |
0008806 | Feb 2000 | WO |
WO 03 087982 | Oct 2003 | WO |
Number | Date | Country | |
---|---|---|---|
20040054984 A1 | Mar 2004 | US |
Number | Date | Country | |
---|---|---|---|
60371035 | Apr 2002 | US |