ATG Programming Guide

Launching a Client Application Against Remote Modules

The client version of the ATG Control Center or any other ATG client application is launched against the set of Dynamo modules in a development-mode EAR file running on a remote server.

The client launcher displays a dialog box that prompts for the hostname, port, username, and password. The hostname and port are used to resolve an RMI service on the server, which in turn provides the client with HTTP URLs for remote downloading of module and system resources. The username and password are used for basic HTTP authentication of the download.

The client then:

Obtains the list of modules running on the server, and their server-side manifests.

Determines the ATGClientUpdateDirectory manifest attribute of the main module(s). This is taken as the name of a client-side module root subdirectory, immediately below the directory where the client launcher started. It is typically version-specific (such as 9.3) to permit the client to maintain multiple downloaded versions of the software at the same time.

For each server module, examines whether that module exists in the client module-root and loads its client-side manifest if it is found.

Compares the entries in the server manifest marked as ATGClientUpdateFile: true with entries in the client manifest of previously downloaded files. It determines a list of all module resources that need downloading, either because they do not exist on the client or because the client versions or digests do not match those on the server.

Requests the user to confirm downloading, if the list is not empty.

Downloads the appropriate server resources.

When this procedure completes successfully, the client-side module root is in effect a mirror of the server-side module root, but a selective one, covering only resources that were marked for downloading in the manifest. The client application is then launched within a custom class loader, using the same set of modules as on the server, but employing the ATGClientClassPath and ATGClientMainClass manifest attributes instead of ATGClassPath and MainClass.