Abstract:
The present invention relates to the field of network computing. In particular, it relates to a method and respective system for providing access for an application program to remote resources located in an electronic computer network, wherein said application program is implemented on a computer residing in said network. A mechanism is provided to enable local running application programs to dynamically use URL-addressed data in the Internet or an Intranet without any change in their program source code.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates to the field of network computing. In particular, it relates to a method and respective system for providing access to remote resources for an application program via remote services. 
       BACKGROUND 
       [0002]      FIG. 1  gives an overview over prior art system architecture. 
         [0003]    The overall system  1  comprises a remote computer  3  and a local computer  2  with a network connection through network services  4 . 
         [0004]    A local computer  2  is a system which executes application programs  21  and host access to a file  2511  on a file system  25 . 
         [0005]    An application program  21  is to be understood as an executable file on the local computer  2  which needs access to files through environment variable definitions. Therefore, it calls so-called environment variable access services  211 . 
         [0006]    With such prior art technology it is possible to access data from a local file system by an application program running on a local computer. It is also possible to transparently access even data from a remote computer through the local file system management which is mounted to it. So, the present invention addresses all application programs or systems which do not care about network access today and just rely on local data access from their specific point of view. 
         [0007]    With the increasing use of the Internet the need to transparently access data beyond the scope of mounted file system arises. If data resides on the Internet or even in the Intranet data is normally not available through such file sharing mechanism for several reasons and can often only be accessed via browser based services using URL locations. This however is disadvantageous because many application programs do not have a Browser functionality incorporated with them. 
       SUMMARY OF THE INVENTION 
       [0008]    One objective of the present invention is to provide a mechanism for local running application programs which enables them to dynamically use also URL-addressed data in the Internet or an Intranet without any change in their program source code. This objective of the invention is achieved by the features stated in enclosed independent claims. Further advantageous arrangements and embodiments of the invention are set forth in the respective subclaims. Reference should now be made to the appended claims. 
         [0009]    The present invention uses the idea that a programmer can define through some environment variables the URL location to be searched and that the operating system when encountering the read of the environment variables provides the associated data for local access, such that an application program referring to the environment variable search path does not know if the data is found on the URL location or through the traditional file system layer. 
         [0010]    A programmer skilled in the art is able to put the required URL definitions into the environment variable. The URL definitions follow the official URL standards which include a file, HTTP, FTP or other access mechanisms. As implied by the handling of environment variables according to prior art the operating system has the task to provide the access to the location, the operating system provides respective services to the application program which uses the inventional form of an environment variable. Further below, those services are called “remote data access service” and “remote data provider service”, on the local and the remote computer system, respectively. 
         [0011]    A preferred implementation of such service which is transparent to an application program includes the idea of creating a new type of environment variable which can be defined as a “dynamic variable”. The processing of such new variable can be either defined in a system provided configuration field which can be implemented specific for the operating system in use, or a new reserved system environment variable such as “dyn vars” can be created which lists just the dynamic environment variables. An example can be: 
         [0000]    Dyn vars=x_path (1 min), y_path (10 min), z_path (6 h); the time indications are the default refresh times after which a URL is checked again and is eventually updated. 
         [0012]    An alternative method discloses to define a reserved posed or prefix indicator to a variable in order to mark a variable as dynamic. Examples could be: 
         [0000]    x_path (1 min)=http://svn.apache.org/viewvc/ant/core/trunk/src/resources/
 
or
 
y_path ( )=http://svn.apache.org/viewvc/unt/core/trunk/src/resources,
 
where the refresh time is a default setting.
 
         [0013]    A variable defined as “dynamic” triggers the operating system to create a so-called shadow area for each URL which contains the data references by the URL. Thus, a kind of shadow pool storage area can be created which will by synchronized on a predefined time interval, referred to as “refresh” time. As seen above the synchronization parameter may be also implemented as a part of the definition, the variable is a dynamic variable. The location of the shadow storage pools is defined somewhere within the operating system configuration. In addition a file system listener may be activated which detects access to files in such shadow pool area. If so then this may trigger the update of the requested file or files from the remote location instead of the regular interval. This would allow a consistent local cache to the remote sources. 
         [0014]    The advantage thereof is that when an application program reads the environment variable the URL can be replaced by the shadow location on the file system, which is thus transparent for the application program. So, as a person skilled in the art, may appreciate, the source code of an application program does not need to be changed, when the inventional features are to be implemented. 
         [0015]    A further implementation of the inventional method includes to provide new services for accessing the information encoded by such environment variable, which allows to the operating system to search for a file in a search path which, if the path is found, also makes the file accessible for read access. By this method an application program is then enabled to query on request the URL resource just in time, find i.e. locate the file for example as indicated by a directory location, and, if requested, even makes the file locally accessible. The location of the requested resource is just a verification if the URL is a valid URL and if a real resource is found behind such definition. The actual access to the remote data involves then a download from the URL location to a local area (shadow area as described above) for enabling an access of the program through prior art access methods which are now redirected to point to the download path. So, the application program only defines the environment variable containing the URLs and the members to access and will get back then the real location of the member in the file system. The verification of the URL and the download itself are then services performed by the underlying operating systems which are hidden to the application program. 
         [0016]    According to the most basic aspect of the present invention as claimed further below, a method for providing access to remote resources for an application program performed by a part of the operating system of a network-connectable computer, preferably performed by an “extended environment variables manager”, is disclosed, 
         [0000]    which is characterised by the steps of:
 
a) scanning the values of environment variables of said application program for the occurrence of an URL notation,
 
b) invoking a remote function for accessing an URL found in said scanning procedure in order to request a remote resource associated with said URL,
 
c) storing said remote resource in a pre-allocated cache memory section,
 
d) listening to the access of the pre-allocated cache memory to make sure the most current data is stored in the cache memory if not an update will be initiated.
 
         [0017]    Preferably, the remote resource is selected from the group of: 
         [0000]    a) one or more files stored in a remote file system,
 
b) one or more directories containing files in a remote system,
 
c) repositories or databases holding information that can be stored as local file instances.
 
         [0018]    Preferably, the basic method can be extended by a sequence of steps as follows: 
         [0000]    a) if a URL location is found in said scan step above, checking if a local cache memory section exists which is allocated for the remote resource associated with said URL notation,
 
b) in case no memory section exists, allocating a respective section, and storing said remote resource a local cache memory section,
 
c) in case an allocated memory section exists, storing said remote resource at said local cache memory section.
 
         [0019]    Further, a second component, e.g. an environment variable value provider performs the method for providing access to remote resources for an application program via an environment variable, which is characterized by the steps of: 
         [0000]    a) in response to a request from an application program requesting the value of an environment variable,
 
b) scanning the environment variables value for a URL notation,
 
c) if a URL notation is found replace said URL notation by a reference pointing to the cache memory section
 
d) initiate and file system listener for the cache memory to verify consistency to remote data location.
 
         [0020]    The before mentioned environment variable manager and environment variable value provider cooperate quite closely by using an appropriate operational programming interface. The controller works preferably asynchronically to the runtime of the application program and provides the respective URL data. At the runtime of a compiled and executable application program the environment variable is read by the provider component which forwards at least the cache copy of the data generated by the controller program in the file cache, if it is not available, a respective error message is issued. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0021]    The present invention is illustrated by way of example and is not limited by the shape of the figures of the drawings in which: 
           [0022]      FIG. 1  illustrates the most basic structural components of a prior art hardware and software environment used for a prior art method, 
           [0023]      FIG. 2  illustrates the most basic structural components of a inventional hardware and software environment used for a preferred embodiment of the inventional method, 
           [0024]      FIGS. 3A and 3B  illustrate the control flow of the most important steps of a preferred embodiment of the inventional method, 
           [0025]      FIGS. 4 ,  5 , and  6  show sample implementations of certain aspects used by the invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0026]    With general reference to the figures and with special reference now to  FIG. 2  the structural and functional components as used in a preferred embodiment of the invention are described. Some of them are used as existing in prior art, others are modified in order to comply with the requirements of typically inventional functionality and structure. 
         [0027]      FIG. 2  gives a system description. 
         [0028]    The overall system  1  comprises a remote computer  3  and a local computer  2  with a network connection through network services  4 . 
         [0029]    A local computer  2  is a system which executes application programs  21  and host access to a file  2511  on a file system  25 . 
         [0030]    An application program  21  is to be understood as an executable file on the local computer  2  which needs access to files through environment variable definitions. Therefore, it calls so-called environment variable access services  211 . In so far, this corresponds to  FIG. 1 . 
         [0031]    With reference to environment variable access services  211 , there are given further below several sample access methods in various programming languages which allow retrieving the content of environment variables for further processing by the application program. For environment variables pointing to file location information a data access service may be called to retrieve files from the specified location path. 
         [0032]    An essential element of a prior art application program is the so-called Data access service  212 . 
         [0033]    This section of the application program will get the location path information as a sequence of data location specification which may typically come from environment variables, or alternatively from application invocation parameters. Based on this input the application will try to get access to the content of one or more files potentially located in the given location search path. So, for each path the service will try to access the file and if it is found, the content of the file will be referred, or if it is an output location a file may be written to. If a file system  25  listener is active then this may even trigger a update of created files to a remote system if this configured and access right are given. 
         [0034]    A Command Shell  22  is a further component of the local computer&#39;s  2  operating system, which represents the interface to its user to define and change an environment variable definition  22   a  by a keyword and an associated value  242 . The entered format it passed to a so-called environment variable manager  24  for purpose of internal representation. 
         [0035]    Also requests to display a stored environment variable will come through the Command Shell  22  where it will request the information of the environment variable or variables and display them in its presentation space. 
         [0036]    The implementation of the command shell  22  depends on the operating system; there might be even different versions available for the same operating system. 
         [0037]    WINDOWS and UNIX have a similar way treating environment variables while IBM z/OS for example works differently. However, regarding the aspect of file specifications through keyword references there is a high degree of similarity. On IBM z/OS one can specify either through the command shell time sharing option (TSO) or through the Batch submission system JES via JCL a DDNAME which allow to define a keyword known to the calling application program and a sequence of data sets names (which correspond to file paths in WINDOWS or UNIX). 
         [0038]    An Environment Variable Definition Command  22   a  shows a command and its syntax to define an environment variable to the application environment provided by the underlying operating system through a command shell environment. The definition can be done through various ways. A user may type-in the command in a command shell. The command can be executed through shell scripts. A GUI interface may be provided to enter the environment variable definition. 
         [0039]    An Environment Variable keyword  22   b  represents the name of the environment variable used in the application program to refer to the associated value. 
         [0040]    A file system path  22   c  may be directed to a local location; an example is given in the drawing to specify a directory path which may map to the directory location  251   a  of the local system  2 . 
         [0041]    A file system path  22   d  may be directed to a remote location; an example is given in the drawing to specify a directory path which may map to the remote directory location  351   a  which is part of the local file system  2  through a file share access via a remote data access service  23  and the remote data provider service  31  of the remote computer  3 . 
         [0042]    A file system path  22   e  may be directed to a local location; an example is given in the drawing to specify a directory path which may map to the directory location  251   b.    
         [0043]    An Environment Variable value  22   f  is given in the drawing to comprise elements  22   c ,  22   d , and  22   e . The content of an environment variable keyword to be referred to from an application program through the keyword. The format of the value is not strictly defined. It can be of any string. However, for specifying path and file locations a special syntax has been established where an application program can rely on, and which allows to define a path as a path list where each path is separated in windows through a ‘;’, wherein in UNIX the ‘:’ is used. A system defined variable is the path variable to hold the location of an executable program file to be searched when it is called in the command line window for execution. 
         [0044]    Other common variables are classpath for a Java Virtual Machine or lib to contain dynamic calls. Also definitions for help files, include files for compilers and other file related variables do exist. On IBM z/OS the concept of a DDNAME is used to locate to a name a path of datasets to be searched. In this way a DDNAME can be seen as an environment variable with a key/value pair. The mechanism to define the variable is different but the concept is the same. 
         [0045]    An Environment variable user service  221  is a service as part of the command shell of an operating system having the functionality to define and retrieve the environment. 
         [0046]    A Remote file access service  23  implements a method which allows requesting data from a remote data provider through a file server in order to mount remote file storage to the local file system  25 . A file listener may be associated to enable a life update of files accessed or created by application program  21 . 
         [0047]    An Environment Variable Manager  24  will manage the list of defined environment variables entered and modified through service  211  or service  221 . 
         [0048]    An Environment variable table  240  contains the key-value pairs of pre-defined environment variables. In reality there might be several tables with different scopes for a multi user system, or one table works for all users and others are private for each individual users. Manager  24  then will create a search path through the tables for the same environment variable if needed. 
         [0049]    An Environment variable key  242  will represent an environment variable keyword in the list to represent an associated value located in column  242  of table  240 . 
         [0050]    An Environment variable active value  242  will represent the actual environment variable value associated to a column  241  that gets used by an application program  21  through service  211 . 
         [0051]    A file system  25  provides the permanent storage location for files in the local computer system  2  and a file system listener for changes and access to the shadow pool area. 
         [0052]    A path location  251  provides the location of the files to be stored within the file system  25 . 
         [0053]    A file  2511  contains the permanent data to be stored in the file system  25  at a defined path location  251   a  or  251   b.    
         [0054]    A remote computer  3  is connected to the local computer  2  through a network connection  4  which allows to transfer file data between the two file systems  35  and  25 , respectively. 
         [0055]    A remote data provider  31  is a service on the remote computer  3  that allows to access files from a local computer  2  through the local file system  25  access layer in the way that the remote data is virtually seen as local data. Examples of such services are LAN share, AFS, NFS or SAMBA. 
         [0056]    The remote file system  35  plays the same function on the remote system  3  as does the file system  25  on the local computer  2 . 
         [0057]    The remote path locations  351   a    351   b  have the same function on the remote system  3  as the path location  251   a, b  have on the local computer  2 . The same is true for the remote files  3511   a - d.    
         [0058]    Network services  4  are prior art methods to allow the communication and data transfer between a remote data provider  31  and a remote data access service  23 . 
         [0059]    The command  22  shell is extended according to the invention by additional services to retrieve not only the traditional format by also the entered value of environment variable definition command  22   a . It may also extended by services to allow a further configuration for an extended table  240  to define caching intervals and caching locations for individual remote references. 
         [0060]    Note that for the invention the traditional command shell is relevant, however for user interaction to define, modify and display environment variables, alternate user interfaces such Graphical User interfaces (GUI) may be provided as alternative to the command shell. However, those will interact in the similar way to table  24  as the Command Shell will do with table  24  as it exists in prior art. 
         [0061]    For a preferred embodiment of the invention implemented in IBM z/OS Operating system the prior art concept and utility of the DDNAME will be extended as described. 
         [0062]    An Environment variable user service  221  is a service as part of the command shell of an operating system having the functionality to define and retrieve the environment. 
         [0063]    A Remote file access service  23  implements a method which allows to request data from a remote data provider through a file server in order to mount remote file storage to the local file system  25 . 
         [0064]    An Environment Variable Manager  24  will manage the list of defined environment variables entered and modified through service  211  or service  221 . 
         [0065]    An Environment variable table  240  contains the key-value pairs of pre-defined environment variables. In reality there might be several tables with different scopes for a multi user system, or one table works for all users and others are private for each individual users. Manager  24  then will create a search path through the tables for the same environment variable if needed. 
         [0066]    An Environment variable key  242  will represent an environment variable keyword in the list to represent an associated value located in column  242  of table  240 . 
         [0067]    An Environment variable active value  242  will represent the actual environment variable value associated to a column  241  that gets used by an application program  21  through service  211 . 
         [0068]    A file system  25  provides the permanent storage location for files in the local computer system  2  and a file system listener for changes and access to the shadow pool area. 
         [0069]    A path location  251  provides the location of the files to be stored within the file system  25 . 
         [0070]    A file  2511  contains the permanent data to be stored in the file system  25  at a defined path location  251   a  or  251   b.    
         [0071]    A remote computer  3  is connected to the local computer  2  through a network connection  4  which allows to transfer file data between the two file systems  35  and  25 , respectively. 
         [0072]    A remote data provider  31  is a service on the remote computer  3  that allows to access files from a local computer  2  through the local file system  25  access layer in the way that the remote data is virtually seen as local data. Examples of such services are LAN share, AFS, NFS or SAMBA. 
         [0073]    The remote file system  35  plays the same function on the remote system  3  as does the file system  25  on the local computer  2 . 
         [0074]    The remote path locations  351   a    351   b  have the same function on the remote system  3  as the path location  251   a, b  have on the local computer  2 . The same is true for the remote files  3511   a - d.    
         [0075]    Network services  4  are prior art methods to allow the communication and data transfer between a remote data provider  31  and a remote data access service  23 . 
       Remote Data Access Service  23 : 
       [0076]    This implementation is part of the inventional method and allows to request data from a remote data provider service  31  (see below for details) through a URL notation and associated network services and to write it to a local cache  26 . This is typically a read only procedure from remote and a write to local cache  26 . However, dependent on the specified protocol given to the manager  24  it may also trigger an update of data from the cache back to the specified URL. 
       File Cache  26 : 
       [0077]    The file cache  26  is part of the local file system and its location is in the local filesystem somehow predefined or configured through manager  24 . Attributes to the caching may be also defined through 2.4 such as interval of caching or actions of the file system listener to either update the cache with files from the remote file system  35  or write created files to the remote file system  35  if so defined. 
         [0078]    A file cache path  261 , and cached files  2611   a,b,c,d  are defined as known from prior art. 
       Remote Data Provider  31 : 
       [0079]    This is a service on the remote computer  3  that waits for remote request through an URL request to provide the requested data of the file system of the server. 
         [0080]    Network Access Mechanism  4  Via URL: 
         [0081]    This provides the communication and data transfer mechanism defined through a given URL and coordinated by service  23   n  on the local computer and  31  on the remote computer. 
         [0082]    URL format 2.2d.n is a part of the path specification. 
         [0083]    This shows the URL format now replacing the former path specification to access data via different protocols such as http://, https://, ftp:// and even file://. 
         [0084]    An URL schema or protocol  22   d   1  defines the method to be used to access the data specified via elements  22   d   2  and  22   d   3 , wherein 
         [0000]    URL server  22   d   2  defines the server location holding the data, and
 
URL data location information  22   d   3  provides the information to access the remote data.
 
         [0085]    It is transparent to the user where the data really exists. 
         [0086]    On the server side the services  23   n  and  31  are then responsible to map the string into the real data location on the server to bring it to the local file system. 
         [0087]    The inventional Environment Variable Definition Command  22   a  with an URL differs from prior art command  22   a  in the way that now the specification of an URL is treated in a special way. 
         [0088]    Different implementations may choose respective different ways to trigger a treatment of an environment variable definition if an URL occurs. Command  22   a  may create a special indicator in the keyword to identify the treatment such as “$path= . . . ”. There may also be a separate configuration process to identify explicitly the environment variable to be treated in the special way or even strings in the values to be treated special or any combination. 
         [0089]    According to this embodiment, an Environment Variable Manager  24  is extended somehow as described as follows: 
         [0090]    The extended manager  24  will take the pre-defined environment variable definition command  22   a  by the environment user service  221  and parse it into environment variable keyword  22   b , file system path  22   c , and  22   d . Those elements will be entered into newly created entries  243   abc  of the thus extended table  240 . 
         [0091]    Each of these entries  243  will now be investigated if a remote data access format is found like seen in the command  22   a . If so, then a request will be passed to the inventional version  23   n  of the remote data access service in order to cache the referenced file or files in this file location specification to the local cache  26 . 
         [0092]    The entry location of the local cache  26  is then entered into table entries  242   a,b,c.    
         [0093]    Assume that the inventional command  22   a  is part of the prior art command, then entries  241   a,b,c  are stored in entries  243   a,b,c.    
         [0094]    The inventional environment variables manager  24 , however, will replace entries  241   a,b,c  by the corresponding file cache location  262 . If all remote references are replaced within command  22   a , then the new command  22   a  containing only references to local file system paths will be stored into entries  242   a,b,c  for actual use by the application program  21  and commandshell 
         [0095]    Beside this basic mapping the inventional manager  24  may hold additional configuration values such as default caching intervals and caching location. It may also hold for special remote access specification such as command  22   a  specific caching location and caching intervals and other needed attributes for optimized management. 
         [0096]    Typically the specified URL points to a read only location so that only caching from remote to local would be initiated to the inventional version of the remote data access service  23   
         [0097]    If, however, the URL also allows a write function, then additional information for authentication may be available to the inventional manager  24  to initiate then an update request to the inventional service  234  to synchronize the cache to the remote location. 
         [0098]    Extended Environment Variable Table  240 : 
         [0099]    This table  240  has basically the same structure and function as described as for element  240  above. The only differences are that a third column  243  is added to distinguish between the entered value in the new column  243  and the used value in the already existing column  242 . In prior art the used column is always the same as the pre-defined column. 
       Extended Definition  243  of Environment Variables: 
       [0100]    This will according to this embodiment represent the externally defined value which will then be parsed by manager  24  for remote references of a format such as given by reference sign  22   d   1 ,  22   d   2 , or  22   d   3 . Dependent on the given administrative solution to identify the special treatment it will then also parse and format the environment keyword to the conventional expected keyword to be stored and found under entries  241   a,b,c.    
         [0101]    Manager  24  will then initiate the caching of the remote files and add the local file location of the cached files into entry  242   a,b,c  so that the application program  21  can access the data defined as remote data transparently with traditional local access methods. 
         [0102]    Based on the functions as described above the inventional method will be described in addition to the foregoing by a control flow description as follows and with reference to  FIG. 3 : 
         [0103]    With respect to the objective noted in the end of prior art discussion above instead of using the location information that is pointing to a remote server through the local file system, the access through an URL is implemented herein as follows: 
         [0104]    Before the application is started the environment variable must be set in a step  310  with an appropriate value by issuing command  22   a  to the command shell  22 . The command in a concrete example may be “SET $path=c:\appll\lib;protocol://server/path;c:\tools” 
         [0105]    In a next step  315  the command shell will pass the value  22   f  to the environment variable user service  221 . 
         [0106]    In a next step  320  the environment variable user service  221  will give the environment variable definition  22   b  and  22   f  to manager  24  (see  FIG. 2 ); in our example “$path=c:\appll\lib;protocol://server/path;c:\tools” 
         [0107]    Manager  24  will store the definition statement into column  243  of table  240 , in a step  325 . 
         [0108]    Manager  24  will then parse out the key and the value in a step  330  and store them into environment variable table  240  in a step  335 . For the key it will get “$path” and for the value “c:\appll\lib;protocol://server/path;c:\tools” 
         [0109]    The key goes into column  241  in step  335 . It may include some reformatting to the expected key value in the traditional format. In the exemplary case the “$” is stripped off and the value stored into entry  241   a  is “path”. 
         [0110]    If a decision  240  yields that the key value indicated no special treatment of URL notations, then the parsed value is stored in a step  345  into entry  242  and the work is done. 
         [0111]    If it had the treatment marker—in our case the key starts with a “$”—then the value string is parsed down in a step  350  to identify the path elements which are in the sample case separated by “;”. So the filesystem paths  22   c ,  22   dn  and  22   e  are identified. Each of them is checked if it contains an URL definition such as in the sample case the URL definition  22   dn , leading to a plurality of decisions  355 . 
         [0112]    For each of the detected URLs the following steps will be performed in the YES branch of decision  355 : 
         [0113]    Pass the URL in a step  360  to the remote data access service  23   n  which handles the access of the remote data. 
         [0114]    This service  23   n  will now forward the request to the remote data provider service  31  located on the remote system  3 , in order to get the files within the URL location from its file system  35 , step  360 . 
         [0115]    An example for such a process is shown next below: 
         [0116]    Example to access data from a CVS library via http 
         [0000]    
       
         
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 See documentation of tool at 
               
               
                   
                 http://cvsgrab.sourceforge.net/ 
               
               
                   
                 Example of data access 
               
               
                   
                 cvsgrab -url 
               
               
                   
                 http://cvs.apache.org/viewcvs.- 
               
               
                   
                 cgi/ant/?only_with_tag=ANT_16BRANCH 
               
               
                   
                   
               
             
          
         
       
     
         [0117]    In the present example with the URL http://server.com/path will point to a directory location  351   a.    
         [0118]    Service  23   n  gets now all the files from service  31  such as in the example the files  3511   a  and  3511   b , step  365  and stores them in a step  370  into the local cache  26  at the location  261   a  resulting into the files  2611   a  and  2611   b . It may be implemented to optimize this download procedure by finding out that files are still in sync or identify those who changed. 
         [0119]    The returned cache path  261   a  is now used in a step  375  to replace the URL definition in the environment variable value  22   f . In the example “http://server.com/path” gets replaced by “d:\cache\srv\pathx”. 
         [0120]    Dependent on the implementation the environment variables manager  24  may now trigger an update  380  of the cache through the service  23   n  in pre-defined intervals. This is an endless loop that also gets started with each startup of the local computer. 
         [0121]    If a decision  385  yields that all detected URLs are processed the value  22   f  of the environment variable under analysis will have no URLs but instead will comprise corresponding local file paths. So the string “c:\appll\lib; http://server.com/path;c:\tools” is transformed to “c:\appll\lib;d:\cache\srv\pathx;c:\tools”. This string becomes now the environment variable for use and will therefore be stored into entry  242   b , see step  395 . 
         [0000]    
       
         
               
               
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 ... 
                 ... 
                   
               
               
                   
                 path 
                 c:\appl1\lib;d:\cache\srv\ 
                 $path= c:\appl1\lib; 
               
               
                   
                   
                 pathx;c:\tools 
                 http://server.com/path; 
               
               
                   
                   
                   
                 c:\tools 
               
               
                   
                 ... 
                 ... 
               
               
                   
                   
               
             
          
         
       
     
         [0122]    If URLs get redefined, i.e. modified or deleted from the value section  22   f , then the old URL will be “cleaned up” which means the update request in step  380  above gets stopped and the related cache gets deleted. 
         [0123]    In the NO-branch of decision  385  control is fed back to step  360  in order to re-enter the loop body for processing the next URL. 
         [0124]    The control flow used in the inventional method for Retrieving environment variable content by the application program  21  follows the scheme as given in  FIGS. 3A and 3B , because the application program  21  has the same interface to manager  24  and gets only path location pointing to the local file system. 
         [0125]    In particular, an application running on the local computer system can be invoked with parameters to define its behaviour each time on invocation. However, it is convenient to provide standard invocation parameters sometime through environment variables so that the system can read them out after invocation. For this reason each application has a defined set of environment variables to be set before invocation which it will used to get their content for further processing. 
         [0126]    The application issues one of the methods described above. So with the present example the application program calls for the value of “path”. 
         [0127]    It now gets back the value of the environment variable. In the sample case the value is c:\appll\lib; d:\program2\includes;c:\tools. 
         [0128]    The same holds true for the control flow which is performed by the application program  21  when it access the file data, because the application  21  only gets local file system location formats from manager  24  and does not ask for the real location of the data, per se only reachable via URL request. 
         [0129]    It should be noted that this is in some sense independent of the actual usage of the environment variable. The application must just somehow get a string with the file paths to search for. And this could be either through environment variables or parameter passing or other methods or even any combination to get such a search path. The application  21  is typically written that it has no knowledge where the data actually resides. It just assumes that it needs access to the local file system component and does not have to provide network services by itself. 
         [0130]    With the given search path the application is now looking for a file to use and issues a service by its own or some existing service to access each path in sequence given in the search path and to test if the file exist. Note that for the application it is transparent if the file is on a remote server or not because this is handled through the local filesystem. 
         [0131]    If the file is found then the path is found and the content of the file can be read or the file can be treated in the way the application wants. 
         [0132]    Finally, some sample implementations are given for the purpose of completeness of the disclosure: 
         [0133]    An example to access files from a http repository into a local cache is given in  FIG. 4 . 
         [0134]      FIG. 5  shows a Java code sample for an environment variable access service  211 . 
         [0135]      FIG. 6  shows a standard API for accessing environment variables. 
         [0136]    An environment variable user service  221  is given by the following code sample for a Windows command shell program: 
         [0000]    Create environment variable entries: 
         [0000]    
       
         
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 SET INCLUDE=C:\Program Files\ObjREXX\API 
               
               
                   
                 SET TEMID=wuclientde 
               
               
                   
                 SET LIB=C:\Program Files\ObjREXX\API 
               
               
                   
                   
               
             
          
         
       
     
         [0137]    A sample for listing an environment variable in command shell is: 
       SET INCLUDE 
       [0138]    The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. 
         [0139]    Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. 
         [0140]    The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD. 
         [0141]    A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. 
         [0142]    Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. 
         [0143]    Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.