A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document of the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates to software runtime containers and software frameworks.
The use of software containers provides several advantages when developing and deploying software applications. Containers provide software developers and users with a high level of abstraction. In other words, containers provide software functionality that can be neatly packaged and delivered while hiding significant implementation complexity. As an example, container packaging is often used to develop and deploy modular units of “pluggable” software functionality known as controls. In spite of these advantages, the design, construction, and deployment of containers at runtime have been a complex process, requiring software developers to have a large skill set.
The invention is illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that references to “an” or “one” embodiment in this disclosure are not necessarily to the same embodiment, and such references mean at least one.
While details of certain embodiments are discussed in this section, it should be clear that other suitable embodiments exist and can be used to achieve similar capabilities. Further, some of these embodiments may include additional functionality not discussed herein, and/or may not contain all of the functionality described herein.
Systems and methods in accordance with embodiments of the present invention provide a complete framework useful in the design, construction, and deployment of software runtime containers, useful to both software developers and end users. Such a framework can allow runtime containers to inherit the functionality and runtime environment attributes of other containers. Having a single runtime container framework, which is extensible to support multiple component types, can provide benefits such as the following:
Services inherited from the use of a common runtime container framework can include, but is not limited to:
An overview of one exemplary framework for a common runtime container is shown in
Within the exemplary framework for a common runtime container, invocation component can receive requests and dispatch them to the correct interfaces of service components 110 inside the container 104. This dispatch process can be dependent on the nature of the request, the state information, and context information or other information stored in metadata 106. The metadata herein includes context, state, and/or other information about the data and objects being processed upon the requests. The invocation component can route or manage the returned responses as required, based on the nature of the response, the state information, and context information or other information stored in the metadata.
The container can invoke the services provided by the components within the container to process requests and produce responses. The container can provide state information and context information to these components at runtime. If external services 108 are used during the processing, those services can be engaged through one or more interfaces provided by a control component 107. For embodiments using the Java programming language, the components can be created in the form of Java beans.
Within such a framework, the invocation component and the container can receive both state information and context information. The invocation component or the container can query the state manager 105 to retrieve state from nonvolatile storage 109. Likewise, the invocation component or the container can query the context manager 103 to receive context or other information from the metadata.
Services provided by the components in the common runtime container can perform either preprocessing or post-processing of requests and responses sent to or returned from the hosted components. For example, these processing services can include the processing of message protocols (e.g. SOAP), and request management (e.g. the tracking of session IDs or callback management). The preprocessing and post-processing of messages can be decoupled in that the preprocessing may not depend on post-processing and vice versa.
In some embodiments, common runtime containers are extensible via a hierarchical architecture, i.e., they can be created from a container class. The services of the runtime containers can be exposed through the methods of the container class. Contents of the containers can be accessed through the containers' interfaces. These common runtime containers can be sub-classed through an inheritance mechanism. Using inheritance mechanisms, developers can extend the functionality of common runtime containers. For example, methods and attributes can be inherited from one container to another and extended as required. These common runtime containers can be nested so that containers can inherit functionality and properties from other containers through several levels. Software components, typically supplied by the application developer or user, can be contained within or wrapped by the one or more runtime containers.
One possible example showing the inheritance structure of a set of runtime containers is shown in
At the same time, metadata, including context information used by the containers and components, is contained within one or more metadata objects. The metadata objects can also be subclassed through a hierarchical architecture. These objects can be nested so that metadata objects can inherit properties from other metadata objects. The metadata object is of a metadata class (the base class can be referred to Metadata 210) and can have methods (metadata methods) and interfaces (metadata interfaces), that are generally used to get or set metadata values. In some embodiments, the root metadata object is a singleton.
One possible example showing an inheritance structure of a set of metadata object classes is shown in
In some embodiments, metadata objects and containers are organized in a duality, wherein containers at one level in the hierarchical architecture can access metadata contained in the metadata objects at that same level in the hierarchical architecture. In other words, there can be a mapping between the metadata objects and the containers. This duality is illustrated in
In some embodiments, a well-defined Application Programming Interface (API) can be used to create more levels in the runtime container and metadata object hierarchies. Extensions to this API can allow developers to create new types of containers or customize existing containers with incremental features. In some embodiments, the API will be in the form of one or more public interfaces to the container class. As an example, a “factory pattern” can be used to create other levels in the hierarchy of runtime containers or metadata objects. The created component types can be pluggable in some cases.
As has already been discussed herein, a common runtime container can provide invocation services using components contained therein. Such services can traverse several layers in the hierarchy of runtime containers. The invocation component can encompass both pre-invoke (for processing requests) and post invoke (for processing responses). As an example, some embodiments will use a process such as the following to pass control from one level to the next. Referring to the exemplary structure shown in
An exemplary architecture that can be used with some embodiments for a common runtime container is shown in
Starting at the left hand side of
Still referring to
Still referring to
Still referring to
In some embodiments, the following process can be used to generate and use the common runtime container and other associated software. User supplied source code can be compiled in the usual manner with a suitable complier. The automatic code generation and class assembly for the container, servlets, components and controls can be performed at load time. In some cases, metadata or deployment descriptors created by the developer or system administrator are used to guide the automatic code generation and assembly process. In some embodiments, the runtime environment may perform configuration verification at runtime to prevent problems with configuration mismatch to runtime environment. When a new session is initiated, an instance of the containers and associated components and controls are generated. Processing for this session is then carried out as has already been described for the duration of the session. When the session completes, the containers and their contents are destroyed and the process space and system resources are reclaimed.
In some embodiments of the present invention, the invocation component in a common runtime container framework can be event-driven. Event delivery (calls in from a primary client or callbacks from controls) to a component as well as event generation (callbacks to a primary client or calls into controls) from a component can be synchronous or asynchronous. This invocation component can include synchronous and asynchronous capabilities such as the following:
In some embodiments of the present invention, the runtime container in a common runtime container framework can define simplified component abstractions that are transparently mapped (perhaps through code generation and assembly) to a more complex set of runtime environment components to create and deploy applications. For example, in some Java enterprise application environments, the runtime environment components are associated with the J2EE platform which hosts the Java beans comprising the application. This runtime container to generate and deploy application services can include capabilities such as the following:
In some embodiments of the present invention, the runtime container in a common runtime container framework can expose a common configuration model for how components and control attributes are specified declaratively and programmatically by the developer, as well as providing a common model for declarative configuration override at application deployment time. A common configuration model provided by the runtime container can include capabilities such as the following:
In some embodiments of the present invention, the state manager in a common runtime container framework can provide the ability to develop stateful components where the physical mechanisms used to locate, manage, and persist state are largely transparent to the developer. This state manager can include capabilities such as the following:
In some embodiments of the present invention, the context manager in a common runtime container framework can expose component-level services and events to the programmer. This context manager can include capabilities such as the following:
In some embodiments of the present invention, the control component in a common runtime container framework can support the concept of controls to provide a simplified and common interaction model for how a programmer interacts with external subsystems. This control component can include capabilities such as the following:
One embodiment may be implemented using a conventional general purpose or a specialized digital computer or microprocessor(s) programmed according to the teachings of the present disclosure, as will be apparent to those skilled in the computer art. Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will be apparent to those skilled in the software art. The invention may also be implemented by the preparation of integrated circuits or by interconnecting an appropriate network of conventional component circuits, as will be readily apparent to those skilled in the art.
One embodiment includes a computer program product which is a storage medium (media) having instructions stored thereon/in which can be used to program a computer to perform any of the features presented herein. The storage medium can include, but is not limited to, any type of disk including floppy disks, optical discs, DVD, CD-ROMs, micro drive, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs, flash memory devices, magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.
Stored on any one of the computer readable medium (media), the present invention includes software for controlling both the hardware of the general purpose/specialized computer or microprocessor, and for enabling the computer or microprocessor to interact with a human user or other mechanism utilizing the results of the present invention. Such software may include, but is not limited to, device drivers, operating systems, execution environments/containers, and applications.
The foregoing description of the preferred embodiments of the present invention has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations will be apparent to the practitioner skilled in the art. Particularly, while the concept “component” is used in the embodiments of the systems and methods described above, it will be evident that such concept can be interchangeably used with equivalent concepts such as, service, event, control, class, object, bean, and other suitable concepts. Embodiments were chosen and described in order to best describe the principles of the invention and its practical application, thereby enabling others skilled in the art to understand the invention, the various embodiments and with various modifications that are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalents.
This application claims priority from the following application, which is hereby incorporated by reference in its entirety: U.S. Provisional Application No. 60/451,012, entitled SYSTEMS AND METHODS FOR A COMMON RUNTIME CONTAINER FRAMEWORK, by Kyle Marvin, filed on Feb. 28, 2003.
Number | Name | Date | Kind |
---|---|---|---|
5321841 | East et al. | Jun 1994 | A |
5469562 | Saether | Nov 1995 | A |
5604860 | McLaughlin et al. | Feb 1997 | A |
5630131 | Palevich et al. | May 1997 | A |
5748975 | Van De Vanter | May 1998 | A |
5801958 | Dangelo et al. | Sep 1998 | A |
5835769 | Jervis et al. | Nov 1998 | A |
5836014 | Faiman, Jr. | Nov 1998 | A |
5862327 | Kwang | Jan 1999 | A |
5867822 | Sankar | Feb 1999 | A |
5944794 | Okamoto et al. | Aug 1999 | A |
5950010 | Hesse | Sep 1999 | A |
5961593 | Gabber et al. | Oct 1999 | A |
5966535 | Benedikt et al. | Oct 1999 | A |
6012083 | Savitzky et al. | Jan 2000 | A |
6016495 | McKeehan et al. | Jan 2000 | A |
6018730 | Nichols et al. | Jan 2000 | A |
6023578 | Birsan et al. | Feb 2000 | A |
6023722 | Colyer | Feb 2000 | A |
6028997 | Leymann et al. | Feb 2000 | A |
6029000 | Woolsey et al. | Feb 2000 | A |
6044217 | Brealey et al. | Mar 2000 | A |
6067548 | Cheng | May 2000 | A |
6067623 | Blakley et al. | May 2000 | A |
6070184 | Blount et al. | May 2000 | A |
6092102 | Wagner | Jul 2000 | A |
6119149 | Notani | Sep 2000 | A |
6141686 | Jackowski | Oct 2000 | A |
6141701 | Whitney | Oct 2000 | A |
6148336 | Thomas et al. | Nov 2000 | A |
6185734 | Saboff | Feb 2001 | B1 |
6212546 | Starkovich et al. | Apr 2001 | B1 |
6222533 | Notani | Apr 2001 | B1 |
6226675 | Meltzer et al. | May 2001 | B1 |
6230287 | Pinard et al. | May 2001 | B1 |
6230309 | Turner | May 2001 | B1 |
6237135 | Timbol | May 2001 | B1 |
6243737 | Flanagan et al. | Jun 2001 | B1 |
6282711 | Halpern | Aug 2001 | B1 |
6292932 | Baisley et al. | Sep 2001 | B1 |
6311327 | O'Brien et al. | Oct 2001 | B1 |
6324681 | Sebesta | Nov 2001 | B1 |
6330569 | Baisley et al. | Dec 2001 | B1 |
6334114 | Jacobs et al. | Dec 2001 | B1 |
6338064 | Ault et al. | Jan 2002 | B1 |
6343265 | Glebov et al. | Jan 2002 | B1 |
6349408 | Smith | Feb 2002 | B1 |
6353923 | Bogle et al. | Mar 2002 | B1 |
6360358 | Elsbree et al. | Mar 2002 | B1 |
6367068 | Vaidyanathan et al. | Apr 2002 | B1 |
6377939 | Young | Apr 2002 | B1 |
6393605 | Loomans | May 2002 | B1 |
6408311 | Baisley et al. | Jun 2002 | B1 |
6411698 | Bauer et al. | Jun 2002 | B1 |
6445711 | Scheel et al. | Sep 2002 | B1 |
6470364 | Prinzing | Oct 2002 | B1 |
6516322 | Meredith | Feb 2003 | B1 |
6549949 | Bowman-Amuah | Apr 2003 | B1 |
6560769 | Moore et al. | May 2003 | B1 |
6567738 | Gopp et al. | May 2003 | B2 |
6584454 | Hummel et al. | Jun 2003 | B1 |
6594693 | Borwankar | Jul 2003 | B1 |
6594700 | Graham et al. | Jul 2003 | B1 |
6601113 | Koistinen et al. | Jul 2003 | B1 |
6604198 | Beckman et al. | Aug 2003 | B1 |
6609115 | Mehring et al. | Aug 2003 | B1 |
6615258 | Barry et al. | Sep 2003 | B1 |
6636491 | Kari et al. | Oct 2003 | B1 |
6637020 | Hammond | Oct 2003 | B1 |
6643652 | Helgeson et al. | Nov 2003 | B2 |
6654932 | Bahrs et al. | Nov 2003 | B1 |
6662357 | Bowman-Amuah | Dec 2003 | B1 |
6678518 | Eerola | Jan 2004 | B2 |
6684388 | Gupta et al. | Jan 2004 | B1 |
6687702 | Vaitheeswaran et al. | Feb 2004 | B2 |
6687848 | Najmi | Feb 2004 | B1 |
6721740 | Skinner et al. | Apr 2004 | B1 |
6721747 | Lipkin | Apr 2004 | B2 |
6721779 | Maffeis | Apr 2004 | B1 |
6732237 | Jacobs et al. | May 2004 | B1 |
6748420 | Quatrano et al. | Jun 2004 | B1 |
6754884 | Lucas et al. | Jun 2004 | B1 |
6757689 | Battas et al. | Jun 2004 | B2 |
6789054 | Makhlouf | Sep 2004 | B1 |
6795967 | Evans et al. | Sep 2004 | B1 |
6799718 | Chan et al. | Oct 2004 | B2 |
6802000 | Greene et al. | Oct 2004 | B1 |
6804686 | Stone et al. | Oct 2004 | B1 |
6823495 | Vedula et al. | Nov 2004 | B1 |
6832238 | Sharma et al. | Dec 2004 | B1 |
6836883 | Abrams et al. | Dec 2004 | B1 |
6847981 | Song et al. | Jan 2005 | B2 |
6850979 | Saulpaugh et al. | Feb 2005 | B1 |
6859180 | Rivera | Feb 2005 | B1 |
6874143 | Murray et al. | Mar 2005 | B1 |
6889244 | Gaither et al. | May 2005 | B1 |
6915519 | Williamson et al. | Jul 2005 | B2 |
6918084 | Slaughter et al. | Jul 2005 | B1 |
6922827 | Vasilik et al. | Jul 2005 | B2 |
6950872 | Todd, II | Sep 2005 | B2 |
6959307 | Apte | Oct 2005 | B2 |
6963914 | Breitbart et al. | Nov 2005 | B1 |
6971096 | Ankireddipally et al. | Nov 2005 | B1 |
6976086 | Sadeghi et al. | Dec 2005 | B2 |
7000219 | Barrett et al. | Feb 2006 | B2 |
7017146 | Dellarocas et al. | Mar 2006 | B2 |
7043722 | Bau, III | May 2006 | B2 |
7051072 | Stewart et al. | May 2006 | B2 |
7051316 | Charisius et al. | May 2006 | B2 |
7054858 | Sutherland | May 2006 | B2 |
7062718 | Kodosky et al. | Jun 2006 | B2 |
7069507 | Alcazar et al. | Jun 2006 | B1 |
7072934 | Helgeson et al. | Jul 2006 | B2 |
7073167 | Iwashita | Jul 2006 | B2 |
7076772 | Zatloukal | Jul 2006 | B2 |
7089584 | Sharma | Aug 2006 | B1 |
7096422 | Rothschiller et al. | Aug 2006 | B2 |
7107578 | Alpern | Sep 2006 | B1 |
7111243 | Ballard et al. | Sep 2006 | B1 |
7117504 | Smith et al. | Oct 2006 | B2 |
7127704 | Van De Vanter et al. | Oct 2006 | B2 |
7143186 | Stewart et al. | Nov 2006 | B2 |
7146422 | Marlatt et al. | Dec 2006 | B1 |
7155705 | Hershberg et al. | Dec 2006 | B1 |
7165041 | Guheen et al. | Jan 2007 | B1 |
7181731 | Pace et al. | Feb 2007 | B2 |
7184967 | Mital et al. | Feb 2007 | B1 |
7240331 | Vion-Dury et al. | Jul 2007 | B2 |
7260599 | Bauch et al. | Aug 2007 | B2 |
7260818 | Iterum et al. | Aug 2007 | B1 |
20020004848 | Sudarshan et al. | Jan 2002 | A1 |
20020010781 | Tuatini | Jan 2002 | A1 |
20020010803 | Oberstein et al. | Jan 2002 | A1 |
20020016759 | Macready et al. | Feb 2002 | A1 |
20020035604 | Cohen et al. | Mar 2002 | A1 |
20020049788 | Lipkin et al. | Apr 2002 | A1 |
20020073236 | Helgeson et al. | Jun 2002 | A1 |
20020073396 | Crupi et al. | Jun 2002 | A1 |
20020078365 | Burnett et al. | Jun 2002 | A1 |
20020083075 | Brummel et al. | Jun 2002 | A1 |
20020111922 | Young et al. | Aug 2002 | A1 |
20020116454 | Dyla et al. | Aug 2002 | A1 |
20020120685 | Srivastava et al. | Aug 2002 | A1 |
20020143960 | Goren et al. | Oct 2002 | A1 |
20020152106 | Stoxen et al. | Oct 2002 | A1 |
20020161826 | Arteaga et al. | Oct 2002 | A1 |
20020165936 | Alston et al. | Nov 2002 | A1 |
20020169644 | Greene | Nov 2002 | A1 |
20020174178 | Stawikowski | Nov 2002 | A1 |
20020174241 | Beged-Dov et al. | Nov 2002 | A1 |
20020184610 | Chong et al. | Dec 2002 | A1 |
20020188486 | Gil et al. | Dec 2002 | A1 |
20020194244 | Raventos | Dec 2002 | A1 |
20020194267 | Flesner et al. | Dec 2002 | A1 |
20020194495 | Gladstone et al. | Dec 2002 | A1 |
20030004746 | Kheirolomoom et al. | Jan 2003 | A1 |
20030005181 | Bau, III et al. | Jan 2003 | A1 |
20030014439 | Boughannam | Jan 2003 | A1 |
20030018661 | Darugar | Jan 2003 | A1 |
20030018665 | Dovin et al. | Jan 2003 | A1 |
20030018832 | Amirisetty et al. | Jan 2003 | A1 |
20030018963 | Ashworth et al. | Jan 2003 | A1 |
20030023957 | Bau et al. | Jan 2003 | A1 |
20030028579 | Kulkarni et al. | Feb 2003 | A1 |
20030041198 | Exton et al. | Feb 2003 | A1 |
20030043191 | Tinsley et al. | Mar 2003 | A1 |
20030046266 | Mullins | Mar 2003 | A1 |
20030046591 | Asghari-Kamrani et al. | Mar 2003 | A1 |
20030051066 | Pace et al. | Mar 2003 | A1 |
20030055868 | Fletcher et al. | Mar 2003 | A1 |
20030055878 | Fletcher et al. | Mar 2003 | A1 |
20030074217 | Beisiegel et al. | Apr 2003 | A1 |
20030079029 | Garimella et al. | Apr 2003 | A1 |
20030084203 | Yoshida et al. | May 2003 | A1 |
20030110117 | Saidenberg et al. | Jun 2003 | A1 |
20030110446 | Nemer | Jun 2003 | A1 |
20030126136 | Omoigui | Jul 2003 | A1 |
20030149791 | Kane et al. | Aug 2003 | A1 |
20030167358 | Marvin et al. | Sep 2003 | A1 |
20030196168 | Hu | Oct 2003 | A1 |
20040019645 | Goodman et al. | Jan 2004 | A1 |
20040040011 | Bosworth et al. | Feb 2004 | A1 |
20040133660 | Junghuber et al. | Jul 2004 | A1 |
20040148336 | Hubbard et al. | Jul 2004 | A1 |
20040204976 | Oyama et al. | Oct 2004 | A1 |
20040216086 | Bau | Oct 2004 | A1 |
20040225995 | Marvin et al. | Nov 2004 | A1 |
20040260715 | Mongeon et al. | Dec 2004 | A1 |
20050050068 | Vaschillo et al. | Mar 2005 | A1 |
20050278585 | Spencer | Dec 2005 | A1 |
20060206856 | Breeden et al. | Sep 2006 | A1 |
20060234678 | Juitt et al. | Oct 2006 | A1 |
20070038500 | Hammitt et al. | Feb 2007 | A1 |
Number | Date | Country |
---|---|---|
2 248 634 | Mar 2000 | CA |
WO 9923558 | May 1999 | WO |
WO 0029924 | May 2000 | WO |
WO 0190884 | Nov 2001 | WO |
Number | Date | Country | |
---|---|---|---|
20040172618 A1 | Sep 2004 | US |
Number | Date | Country | |
---|---|---|---|
60451012 | Feb 2003 | US |