L ISTING 6.9 Continued
BankServer[Thread-1] - Connection Accepted.
BankServer[Deployment-Thread-0] - Command: GET test.txt size:5
BankServer[Deployment-Thread-0] - sendToClient. test.txt
BankServer[Thread-1] - Command: POST (data=”all OK.”)
BankServer[Thread-1] - Command: QUIT.
BankServer[Thread-1] - Client closed session.
BankServer[Thread-1] - shutting down client connection
BankServer[Deployment-Thread-0] - Command: QUIT.
BankServer[Deployment-Thread-0] - Client closed session.
BankServer[Deployment-Thread-0] - shutting down client connection
When developing mechanisms for the installation and update of existing code, some other con-
siderations may apply.
Often, the common choice is to make the application helper module totally invisible to client
(legacy) code. Although there are no strict criteria, it makes sense to provide handles for appli-
cation helper services only to client software that is written explicitly to be run on that applica-
tion helper. In our case, we will not provide any reference to our application helper, even if
newer software may take advantage of it.
The interested reader may look at Chapter 11, “Runtime Client Services,” for an
example of services provided by an application helper (in that case, a JNLP client) to
its client applications.
In our case, there is no explicit way for a client application to tell whether it is running in a
stand-alone fashion or if was launched by our application helper. A new application could try
to check it out by inspecting the class type of its own classloader.
Generally speaking, after having added the deployment facilities (in our case, the
ApplicationHelper and BankClientLoader classes), the remaining is often a matter of code
This is a demonstration application. Clearly, although full-working, it is full of deficiencies.
Our purpose was to keep it simple and with a code as short as possible to ease focusing on the
most interesting aspects. Let's see the major limitations: