The present invention relates to a system and method for an application properties server to provide properties and configuration information to clients. More particularly, the present invention relates to a system and a method for allowing applications software using established computer network protocols to retrieve configuration data from a dynamically maintainable database.
Most computer software use configuration variables to alter their behavior without the need for regenerating code. This is most often done using text files. In today's Internet and networked environments this can cause administrative problems. This is largely because the same software application may be running on several machines, in several locations. Thus, for example, in order to alter uniformly the behavior of all software applications running a certain software application, all files need to be accessible by the text files. This requirement can cause a great expense and significant administration problems. For example, security considerations often dictate that a text file employed to alter a software application must be on the same machine that is running the code. Therefore, the configuration file often must be replicated over several machines. Accordingly, if changes are made on one software application, they must also be made on all of the other applications. Errors can occur if the changes are not made consistently on all of the applications.
In view of the foregoing, a need exists for a system and a method that can advantageously provide a properties server that is accessible from multiple systems, via a plurality of protocols, which serves to provide configuration values based on requests from the systems. More particularly, a need exists for a centralized properties server that is capable of providing configuration data from a maintainable, centralized storage medium, which is accessible from multiple clients running different network protocols.
The present invention is a system and a method that, ideally, employs a centralized properties server accessible from multiple applications software using multiple computer network protocols. According to the present invention, a system preferably provides for Java Remote Method Invocation (“RMI”) and Common Object Request Broker Architecture (“CORBA”) as the primary communications mechanisms between clients and a centralized property server, which maintains configuration data in a properties database. Additionally, a method is provided whereby a software application program that needs configuration variables can make requests to the properties server, which will respond by providing any available configuration values to the requesting application, preferably in a service broker framework.
According to embodiments of the invention, a properties server maintains and provides configuration data in a storage medium. Applications can make requests to the properties server for updated configuration data stored in a format such as a database or Lightweight Directory Access Protocol (“LDAP”).
Preferably, storage medium 200 contains a plurality of data tables such as long distance ordering table 210, contact table 220 and wireless ordering table 230. Properties server 100 provides configuration variables to client 401 by accessing storage mass 200 and searching the long distance ordering table 210 for the requested variables. Long distance ordering table 210 may contain, for example, available date ranges or the permissible number of retries. Similarly, and at the same time, a client 402 running a Java application program can use RMI via an RMI interface 120 (
Referring to
Below, one embodiment of a service broker framework for properties server 100 is described. As shown in
Next, the operation of properties server 100 depicted in
The following is a representative example of an XML service broker configuration file for properties server 100:
<Service>
<Name>PropertiesService</Name>
<NumServiceObjects>2</NumServiceObjects>
<ClassName>.servicebroker.DBService</ClassName>
<DBHost>host22</DBHost>
<DBPort>1522<DBPort>
<DBName>billing</DBName>
<DBUserid>user1</DBUserid>
<DBPassword>userpw1</DBPassword>
<ConfigFile></ConfigFile>
</Service>
The tag names for the example XML service broker configuration file from above are described in the table below:
Thus, according to the preferred embodiment, upon startup, the service broker will read an XML configuration file, and establish a service for each service tag. In other words, the service broker will create an instance of an object that will implement the properties server service. There can be one or several of these, defining a pool of objects that are used in a round robin fashion. The pool size can be increased as the number of clients is increased. As will be appreciated by those skilled in the art, if property server 100 needs to talk to a different data schema 210, 220, another entry may be inputted for Tag “DBName” and Tag “ConfigFile”, but leaving the same “ClassName”.
Upon startup, the service broker architecture will implement a service for each service XML tag in its configuration file. One service being the PropertyService. The following is an example of a Java interface for implementing a PropertyService:
public interface PropertyService extends ServiceBrokerService {
public String getValueString(ApplicationKey appKey, String key)
throws PropertyNotFoundException, PropertyServerException, RemoteException;
public Hashtable getValueHashtable(ApplicationKey appKey)
throws PropertyNotFoundException, RemoteException, PropertyServerException;
public void setValueString(ApplicationKey appKey, String key, String value)
throws RemoteException, PropertyServerException;
public void setValueHashtable(ApplicationKey appKey, String key, Hashtable value)
throws RemoteException, PropertyServerException;
}
According to the exemplary embodiments discussed above, an interface defines the intersection between two objects. As will be appreciated by those skilled in the art, in terms of clients and servers, a client talks to the defined service and a server implements that service. According to the invention, the server can change but as long as the server still implements the same interface the client will not have to change.
An ApplicationKey is used to perform any operation where the client will have to pass in an application key object. This object tells the application server the application name and the version of the entry in the database. All entries are associated with both version and key information. The application constructor can be called with both an application name and a version or just an application name alone. Preferably, the value of “DEFAULT” will be used if no version is passed in. “Key” is used for a string value identifying the key to the property being requested. “String Value” represents a string representation of the value in the key value pair. “Hashtable Value” is a Hashtable representation of the hierarchy value requested. This hierarchy is represented as a hashtable, which, for example may be a set of key value pairs. Each value can have other hashtables in it creating a tree structure of hash tables within hashtables. The leaves of the tree are the actual properties.
Values can be stored and retrieved from the database 200 via “Key Value Pairs” or a “Hashtable Hierarchy.” Key Value Pairs is the preferred retrieval method. According to an embodiment, the client will execute the “GetValueString” method call on the RMI object passing in a ApplicationKey object and a Key. The method will then return a value associated with the Key. Hashtable Hierarchy is another example of a retrieval method. This method allows the client to request many values at one time. Values are stored in a tree of hashtables where the key is a root value and the value points to another level in the tree or actual property values. Updates will remove the entire existing hierarchy with a cascaded delete and replace it with a new hierarchy.
Next, a preferred data schema will be described. In the exemplary embodiments discussed above, the property server 100 maintains configuration data in a relational database 200.
Referring to
VERSION table 602 maintains an entry for each version under each application. The server 100 will insert a new row for each new version put into the database. The INSERT_VERSION(version_id IN OUT NUMBER(0,0), appl_id IN NUMBER(0,0), version_name IN CHAR(12), version text) procedure will insert a row into the version table. It will return version_id generated from a sequence if not supplied. The DELETE_VERSION(version_name IN VARCHAR2(50), appl_name IN VARCHAR2(50)) procedure will delete an entry based on the version and application name.
The APARM table 603 contains the actual key value pairs. It also allows hierarchies to be built through the self referential parent key value. Node entries will refer to lower level entries in the same table and will not have an entry in the parm_value column. If the aparm entry is a leaf entry, the parm_value column will have the property string value. Procedures for the APARM table 603 include: INSERT_APARM(parm_id IN OUT NUMBER(0,0), appl_id IN NUMBER(0,0), version_id IN NUMBER(0,0), parm_name IN VARCHAR2(50), parm_value). This procedure inserts a row into the aparm table 603. It will return parm_id generated from a sequence if not supplied. The DELETE_APARM(parm_name IN VARCHAR2(50), appl_name IN VARCHAR2(50), version_name IN VARCHAR2(50)) procedure will delete an entry based on the parm name for a specific version and application name. Preferably, it will also perform a cascaded delete to remove all dependent rows in the aparm table.
According to one exemplary embodiment, the client provides a method for maintenance of the database using the property server itself. Discussed below is an example of how to use the property server as a means for operations to maintain values that are contained in the database. Alternatively, a client that is based on a graphics user interface could be created. The client provides a command line interface to the property server. It allows properties to be retrieved and properties to be inserted into the database. Preferably, the program is command-line driven, using switches to indicate the action to perform. On Microsoft Windows NT systems, the application is launched using a batch file such as PropertyClient.bat. On Unix systems, the shell script PropertyClient.sh performs the same function. The following table contains a list of example switches.
An example of how to implement this embodiment is provided below:
Load data
Propertyclient-load order.plist-key order-app corder-version dev
Get Individual Property
Propertyclient-app corder-version dev-key databasehost
Get hashtable tree:
Propertyclient-app corder-version-dev-key order
Embodiments of the present invention relate to data communications via one or more networks. One or more communications channels of the one or more networks can carry the data communications. Examples of a network include a Wide Area Network (WAN), a Local Area Network (LAN), the Internet, a wireless network, a wired network, a connection-oriented network, a packet network, an Internet Protocol (IP) network, or a combination thereof. A network can include wired communication links (e.g., coaxial cable, copper wires, optical fibers, and so on), wireless communication links (e.g., satellite communication links, terrestrial wireless communication links, wireless LANs, and so on), or a combination thereof.
In accordance with embodiments of the present invention, instructions adapted to be executed by a processor to perform a method are stored on a computer-readable medium. The computer-readable medium can be a device that stores digital information. For example, a computer-readable medium includes a compact disc read-only memory (CD-ROM) as is known in the art for storing software. The computer-readable medium is accessed by a processor suitable for executing instructions adapted to be executed. The term “adapted to be executed” is meant to encompass any instructions that are ready to be executed in their present form (e.g., machine code) by a processor, or require further configuration (e.g., compilation, decryption, or provided with an access code, etc.) to be ready to be executed by a processor.
In describing representative embodiments of the present invention, the specification may have presented the method and/or process of the present invention as a particular sequence of steps. However, to the extent that the method or process does not rely on the particular order of steps set forth herein, the method or process should not be limited to the particular sequence of steps described. As one of ordinary skill in the art would appreciate, other sequences of steps may be possible. Therefore, the particular order of the steps set forth in the specification should not be construed as limitations on the claims. In addition, the claims directed to the method and/or process of the present invention should not be limited to the performance of their steps in the order written, unless that order is explicitly described as required by the description of the process in the specification. Otherwise, one skilled in the art can readily appreciate that the sequences may be varied and still remain within the spirit and scope of the present invention.
The foregoing disclosure of embodiments of the present invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many variations and modifications of the embodiments described herein will be obvious to one of ordinary skill in the art in light of the above disclosure. The scope of the invention is to be defined only by the claims appended hereto, and by their equivalents.
Number | Name | Date | Kind |
---|---|---|---|
5388255 | Pytlik et al. | Feb 1995 | A |
5732218 | Bland | Mar 1998 | A |
5761668 | Adamchick | Jun 1998 | A |
5813017 | Morris | Sep 1998 | A |
5898836 | Freivald et al. | Apr 1999 | A |
5943662 | Baba | Aug 1999 | A |
5958010 | Agarwal | Sep 1999 | A |
5958016 | Chang | Sep 1999 | A |
5978842 | Noble et al. | Nov 1999 | A |
6004276 | Wright | Dec 1999 | A |
6038542 | Ruckdashel | Mar 2000 | A |
6044372 | Rothfus | Mar 2000 | A |
6047280 | Ashby | Apr 2000 | A |
6047323 | Krause | Apr 2000 | A |
6078918 | Allen et al. | Jun 2000 | A |
6081517 | Liu et al. | Jun 2000 | A |
6084877 | Egbert et al. | Jul 2000 | A |
6085030 | Whitehead et al. | Jul 2000 | A |
6085222 | Fujino et al. | Jul 2000 | A |
6141691 | Frink et al. | Oct 2000 | A |
6157634 | Mehta et al. | Dec 2000 | A |
6163776 | Periwal | Dec 2000 | A |
6202096 | Williams et al. | Mar 2001 | B1 |
6226637 | Carey | May 2001 | B1 |
6304647 | Frost | Oct 2001 | B1 |
6411697 | Creamer | Jun 2002 | B1 |
6453356 | Sheard et al. | Sep 2002 | B1 |
6460042 | Hitchcock | Oct 2002 | B1 |
6463528 | Rajakarunanayake et al. | Oct 2002 | B1 |
6476833 | Moshfeghi | Nov 2002 | B1 |
6484214 | Sundermier | Nov 2002 | B1 |
6499017 | Feibelman | Dec 2002 | B1 |
6513038 | Hasegawa | Jan 2003 | B1 |
6526423 | Zawadzki et al. | Feb 2003 | B2 |
6546095 | Iverson | Apr 2003 | B1 |
6625274 | Hoffpauir | Sep 2003 | B1 |
6629098 | McGeorge | Sep 2003 | B2 |
6665662 | Kirkwood et al. | Dec 2003 | B1 |
6697824 | Bowman-Amuah | Feb 2004 | B1 |
6697849 | Carlson | Feb 2004 | B1 |
6718332 | Sitaraman | Apr 2004 | B1 |
6751302 | Hoang | Jun 2004 | B1 |
6757720 | Weschler, Jr. | Jun 2004 | B1 |
6782508 | Bahrs et al. | Aug 2004 | B1 |
6801920 | Wischinski | Oct 2004 | B1 |
6816864 | Deuser | Nov 2004 | B2 |
6839748 | Allavarpu | Jan 2005 | B1 |
6915454 | Moore | Jul 2005 | B1 |
6917944 | Prasad et al. | Jul 2005 | B1 |
6941326 | Kadyk et al. | Sep 2005 | B2 |
6950848 | Yousefi'zadeh | Sep 2005 | B1 |
6959220 | Wiser et al. | Oct 2005 | B1 |
6961760 | Li | Nov 2005 | B2 |
6999570 | Alcott | Feb 2006 | B2 |
7000236 | Kirkpatrick | Feb 2006 | B2 |
7062452 | Lotvin | Jun 2006 | B1 |
7089560 | Uhler et al. | Aug 2006 | B1 |
7191209 | Kirkpatrick | Mar 2007 | B1 |
7289964 | Bowman-Amuah | Oct 2007 | B1 |
20010037361 | Croy | Nov 2001 | A1 |
20010047279 | Gargone | Nov 2001 | A1 |
20020019827 | Shiman et al. | Feb 2002 | A1 |
20030046370 | Courtney | Mar 2003 | A1 |