4.7 パラメータ値をクリアする

Joltクラス・ライブラリには、オブジェクトの既存の属性値を消去し、事実上オブジェクトの再利用ができるようにするclear()メソッドが用意されています。「Joltオブジェクトの再利用(reuseSample.java)」は、clear()メソッドを使用してパラメータ値をクリアする方法とJoltRemoteServiceのパラメータ値を再利用する方法を示しています。この例では、再利用するためにサービスを破棄する必要がないことを示しています。代わりに、svc.clear();文を使用して既存の入力パラメータ値を廃棄してからaddString()メソッドを再度使用しています。

Joltオブジェクトの再利用(reuseSample.java)

/* Copyright 1999 Oracle Systems, Inc. All Rights Reserved */
import java.net.*;
import java.io.*;
import bea.jolt.*;
/*
 * This is a Jolt sample program that illustrates how to reuse the
 * JoltRemoteService after each invocation.
 */
class reuseSample
{
      private static JoltSession s_session;
      static void init( String host, short port )
      {
            /* Prepare to connect to the Tuxedo domain. */
            JoltSessionAttributes attr = new JoltSessionAttributes();
            attr.setString(attr.APPADDRESS,”//”+ host+”:” + port);

            String username = null;
            String userrole = “sw-developer”;
            String applpasswd = null;
            String userpasswd = null;
      /* Check what authentication level has been set. */
      switch (attr.checkAuthenticationLevel())
      {
         case JoltSessionAttributes.NOAUTH:
               break;
         case JoltSessionAttributes.APPASSWORD:
               applpasswd = “secret8”;
               break;
         case JoltSessionAttributes.USRPASSWORD:      
               username = “myName”;
               userpasswd = “BEA#1”;
               applpasswd = “secret8”;      
               break;
      }
      /* Logon now without any idle timeout (0). */
      /* The network connection is retained until logoff. */
      attr.setInt(attr.IDLETIMEOUT, 0);
      s_session = new JoltSession(attr, username, userrole,
      userpasswd, applpasswd);
      }
      public static void main( String args[] )
      {
            String host;
            short port;
            JoltRemoteService svc;
            if (args.length != 2)
            {
               System.err.println(“Usage: reuseSample host port”);
               System.exit(1);
        }
       /* Get the host name and port number for initialization. */
      host = args[0];
      port = (short)Integer.parseInt(args[1]);
      init(host, port);
      /* Get the object reference to the DELREC service. This
       * service has no output parameters, but has only one input
       * parameter.
       */
      svc = new JoltRemoteService(“DELREC”, s_session);
      try
      {
            /* Set input parameter REPNAME. */
            svc.addString(“REPNAME”, “Record1”);
            svc.call(null);
            /* Change the input parameter before reusing it */
            svc.setString(“REPNAME”, “Record2”);      
            svc.call(null);
            /* Simply discard all input parameters */
            svc.clear();
            svc.addString(“REPNAME”, “Record3”);
            svc.call(null);
      }
      catch (ApplicationException e)
      {
           System.err.println(“Service DELREC failed: “+
           e.getMessage()+” “+ svc.getStringDef(“MESSAGE”, null));
      }
      /* Logoff now and get rid of the object. */
      s_session.endSession();
   }
}