OS/400 optimization

The IBM Toolbox for Java licensed program is written in Java, so it runs on any platform with a certified Java virtual machine (JVM). The IBM Toolbox for Java classes function in the same way no matter where they run.

Additional classes come with OS/400 that enhance the behavior of the IBM Toolbox for Java when it is running on the iSeries JVM. Sign-on behavior and performance are improved when running on the iSeries JVM and connecting to the same iSeries. OS/400 incorporated the additional classes starting at Version 4 Release 3.

Enabling the Optimizations

IBM Toolbox for Java comes in two packages: as a separate licensed program and with OS/400.

For more information see Note 1 in the information about Jar files.

Sign-on considerations

With the additional classes provided with OS/400, Java programs have additional options for providing system name, user ID and password information to the IBM Toolbox for Java.

When accessing an iSeries resource, the IBM Toolbox for Java classes must have a system name, user ID and password.

With the additional classes, the user ID and password of the current job also can be used when a Java program that is running on one iSeries accesses the resources on another iSeries. In this case, the Java program sets the system name, then uses the special value "*current" for the user ID and password.

The Java program can only set the password to "*current" if you are using record-level access V4R4 or later. Otherwise, when you use record-level access, "localhost" is valid for system name and "*current" is valid for user ID; however, the Java program must supply the password.

A Java program sets system name, user ID, and password values in the AS400 object.

To use the job's user ID and password, the Java program can use "*current" as user ID and password, or it can use the constructor that does not have user ID and password parameters.

To use the current iSeries, the Java program can use "localhost" as the system name or use the default constructor. That is,

     AS400 system = new AS400();
is the same as
     AS400 system = new AS400("localhost", "*current", "*current");

Two AS400 objects are created in the following example. The two objects have the same behavior: they both run a command to the current iSeries using the job's user ID and password. One object uses the special value for the user ID and password, while the other uses the default constructor and does not set user ID or password.

                       // Create an AS400 object. Since the default
                       // constructor is used and system, user ID and
                       // password are never set, the AS400 object sends
                       // requests to the local iSeries using the job's
                       // user ID and password. If this program were run
                       // on a client, the user would be prompted for
                       // system, user ID and password.
     AS400 sys1 = new AS400();

                       // Create an AS400 object. This object sends
                       // requests to the local iSeries using the job's
                       // user ID and password. This object will not work
                       // on a client.
     AS400 sys2 = new AS400("localhost", "*current", "*current");

                       // Create two command call objects that use the
                       // AS400 objects.
     CommandCall cmd1 = new CommandCall(sys1,"myCommand1");
     CommandCall cmd2 = new CommandCall(sys2,"myCommand2");

                       // Run the commands.
     cmd1.run();
     cmd2.run();

In the following example an AS400 object is created that represents a second iSeries system. Since "*current" is used, the job's user ID and password from the iSeries running the Java program are used on the second (target) iSeries.

                       // Create an AS400 object. This object sends
                       // requests to a second iSeries using the user ID
                       // and password from the job on the current iSeries.
     AS400 sys = new AS400("mySystem.myCompany.com", "*current", "*current");


                       // Create a command call object to run a command
                       // on the target iSeries.
     CommandCall cmd = new CommandCall(sys,"myCommand1");


                       // Run the command.
     cmd.run();