AS/400 optimization

The AS/400 Toolbox for Java licensed program is Begin changewritten in Java,End change so it runs on any platform with a certified Java virtual machine (JVM). The AS/400 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 AS/400 Toolbox for Java when it is running on the JVM for AS/400. Sign-on behavior and performance are improved when running on the JVM for AS/400 and connecting to the same AS/400. OS/400 incorporated the additional classes starting at Version 4 Release 3.

Begin changeEnabling the Optimizations

As/400 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.End change

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 AS/400 Toolbox for Java.

When accessing an AS/400 resource, the AS/400 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 AS/400 accesses the resources on another AS/400. 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 AS/400, 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 AS/400 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 AS/400 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 AS/400 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 AS/400 system. Since "*current" is used, the job's user ID and password from the AS/400 running the Java program are used on the second (target) AS/400.

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


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


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