JAVA Front-End, a better approach for managing USS
For backup and restore, the USS file system HFS includes such UNIX features as long file names, case sensitivity, UNIX type security, symbolic links and more. Virtually none of these can be accessed from native MVS applications. Traditional MVS storage management products, such as Innovation Data Processing's FDR or IBM's DFDSS can back up an entire file system (which is a single MVS dataset), but are unable to offer file level restore. Thus the only way to reliably back them up is as an USS application.
While USS is quite similar to other UNIX systems, there are a number of significant differences; for example, text is EBCDIC rather than ASCII.
Also, the USS file system HFS offers a number of file system features not found in other UNIX systems including external links (references to true MVS files), auditing flags and HFS extended attributes. Again, the only way to back these up is as a true USS application.
The Innovation Data Processing development team for FDR/UPSTREAM was charged with providing a file-level backup facility for USS. FDR/UPSTREAM, which is a multi-platform storage management product providing such features as backup/restore, file transfer, archiving, software distribution, reporting and a number of other storage related functions. Clients can run on a whole suite of operating systems including Windows NT, Windows 95/98, OS/2, NetWare, AIX, Solaris, HPUX and more. An OS/390 mainframe systems service provides the server repository.
We designed and implemented a true USS version of FDR/UPSTREAM which is capable of handling all of the USS specific features. It was implemented as a command line application which can also be run as a daemon. As a command line application, it can be integrated into the existing scheduling (such as cron); as a daemon it can receive and process requests from external systems including native MVS and all FDR/ UPSTREAM clients.
As a storage management product, FDR/UPSTREAM performs the majority of its functions (backup, archiving, etc.) in an unattended mode. For unattended processing, a command line application is ideal. However a user-friendly, helpful, secure user interface is required to fully utilize its storage management functions especially for restores.
For host based FDR/UPSTREAM requests, existing MVS ISPF panels provide a full-featured facility for requesting backups, restores, reporting, and monitoring.
We also wanted to provide an additional user interface for workstation-based restore requests. Requirements included multi-platform access, graphical user interface, monitoring, error reporting, and proper security checking. Particularly we wanted to offload the overhead of a graphical user interface to workstations and other systems so as not to degrade overall mainframe performance with unnecessary overhead. While a conventional programming language, such as C or C++ could satisfy many of these requirements, only Java offers true cross-platform compatibility.
We believe that our experiences in this development effort will be helpful to a wide variety of administrators and developers who are interested in USS, Java or cross-platform development.
Java-App or Applet
The Java programming language has received quite a bit of press recently due to its cross platform nature, object oriented architecture and ability to run within web browsers. For user-interfaces it offers an extensive variety of GUI features.
Java, as it is an interpretive language, requires a run-time environment. The Java run-time environment can be run in two ways: inside a web browser (as an applet), or as a stand-alone application.
When operating as an applet, you are initially running as untrusted code (formally known as the "sandbox'). Java designers invented this concept to keep applets from damaging the system of unwary surfers. When running as untrusted code the vast majority of normal computing functions are disallowed or tightly restricted including file I/O, communications, executing programs and more. There are techniques to becoming trusted, however they are quite complex and somewhat browser specific. When running as a stand-alone application there are none of the untrusted code restrictions. Java Run-Time Environ-ments (JREs) are available for almost every operating system from the operating system vendor, or for Microsoft Windows, from Sun, IBM and a number of other vendors. We decided that the limitations of untrusted code were unacceptable as communications flexibility and the ability to run applications were requirements; thus our user interface program had to be run as a Java stand-alone application.
Java is strong in a number of areas and excels in TCP/IP communications. To make our application as functional as possible, we wanted the Java program to be capable of running on the machine that is performing the restore or on any machine in the network. Thus, it must be capable of communicating to the program performing the restore.
Click for a larger view
Figure 1 (above) shows the components in the inter-computer communications. The Java Client application communicates directly to the FDR/UPSTREAM MVS server for security, and backup and file inquiry functions using the existing FDR/UPSTREAM protocols. Initially the user must log in and pass a required security check with the MVS server using MVS security protocols; security is essential in a cross-platform product. Additional communications are performed to display a full-featured, file restore selection panel. Only when the user of the Java application wishes to start a restore are communications established to the USS application. The USS application, running in the background or as a daemon was designed to be continuously listening on a specific TCP/IP port. The Java application connects to it, and using a proprietary protocol, is able to request that the restore begin. As the restore proceeds, the USS application constantly sends status update and error messages for graphic display on the Java user's screen.
Java versions 1.0 and 1.1 offer a complete and powerful graphical user interface. In version 1.2, Java integrated the "Swing" set of lightweight, platform independent components. Some of the new features include progress bars, tool-tips, user-selectable "look and feel", and more. We decided that to provide the user interface with the highest level of functionality, to use version 1.2 and particularly the "Swing" components.
Click for a larger view
Figure 2 (above) shows the restore inquiry and selection screen. Using the "Swing" components allowed us to provide a user selection facility with a selection "tree" in the top left frame, the contents of a highlighted directory in the top right frame. In the top right frame, you can use a pull-down menu to select a specific "version" of a file-a feature only available with the "Swing" set.
In the lower frame, the "Restore to" item allows you to modify the labeled value-again a "Swing" only feature.
The help system is based on the newly released JavaHelp¨ system. It is HTML based, context sensitive and is fully indexed and is searchable. It includes a Product Tour which describes the overall features, a general concepts guide, assistance in getting started and specifics for operations. To get help on a specific feature, click the arrow/question mark button, and then click any control on the screen. The help system will then appear with a detailed description of that control. When you begin the restore, status slider bars show the percentage complete for the current file and the restore as a whole. A graphic is continuously updated showing the current performance of the restore.
Unix Systems Services offers a powerful Unix environment within MVS. With its UNIX compatibility, flexible file system, communications facilities and operation on System 390 mainframes it offers an ideal platform for offering Enterprise-wide data services.
Java's extensive suite of user interface and communications services, combined with its cross-platform capabilities makes it the development environment of choice for end-user applications of the USS services.
When developed with this cooperative functionality in mind, you can deliver high performance, high availability applications, which the MVS mainframe does so well with, the high expectations for graphical user interfaces and cross-platform availability that users expect and Java can help you deliver.