Host On-Demand J2EE Connector

Host On-Demand J2EE Connector


Sample JSP Application in Managed Environment with J2HODScreenableRecord

This is a sample Java Server Page (JSP) application using J2HODScreenableRecord as a screen record. It is an example of a TN3270 application running in a managed environment.

This sample JSP file, JNDIClientScreenableSample.jsp, is also located in the directory ...\samples\tn3270\. The output generated from executing it is in the file ...\samples\tn3270\JNDIClientScreenableSampleOutput.html.

<%
%>
<%@ page import="java.util.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.naming.directory.*" %>
<%@ page import="java.util.Hashtable" %>
<%@ page import="com.ibm.connector2.spi.*" %>
<%@ page import="com.ibm.connector2.cci.*" %>
<%@ page import="com.ibm.connector2.poolmanager.*" %>
<%@ page import="com.ibm.connector2.hod.*" %>
<%@ page import="com.ibm.connector2.hod.screenable.*" %>

<%
/**
 * An implementation of the application client. It accesses the connector using JNDI
 * lookup mechanism.
 */

  out.println ("<pre>");
  out.println ("Main - Enter<br>");
  Hashtable env = new Hashtable(11);
  env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
  String USERID = "TestID";
  String PASSWORD = "Passwd";

  try
  { //try
    // Create the initial context
    Context ctx = new InitialContext(env);

    // get Connection Factory via JNDI lookup and close Context
    out.println ("JNDI trying to look up...");
    J2HODConnectionFactory cf = (J2HODConnectionFactory) ctx.lookup("eis/j2hod_cf");
    out.println("JNDI lookup successfull: " + cf+"<br>");
    ctx.close();

    out.println("trying getManagedConnectionFactory...");
    J2HOD3270ManagedConnectionFactory mcf = (J2HOD3270ManagedConnectionFactory)cf.getManagedConnectionFactory();
    out.println("getManagedConnectionFactory successfull: " + mcf.toString());
    out.println("ServerName/Port Number = " + mcf.getServerName() + " / " + mcf.getPortNumber() + "<br>");

    // set up properties
    J2HODConnectionSpec connectionSpec = new J2HODConnectionSpec();
    connectionSpec.setUserName("j2chod"); //specify according to your setting
    connectionSpec.setPassword("connector"); //specify according to your setting

    // create connection
    out.println("trying getConnection...");
    J2HODConnection connection = (J2HODConnection)cf.getConnection(connectionSpec);
    out.println("getConnection successfull: " + connection.toString() + "<br>");

    // create screenable record instances to represent each screen
    J2HODScreenableRecord logonScreen = new J2HODScreenableRecord();
    J2HODScreenableRecord msgScreen = new J2HODScreenableRecord();

    // create interaction
    J2HODInteraction interaction = (J2HODInteraction)connection.createInteraction();
    J2HODInteractionSpec interactionSpec;

    // set interactionSpec as RECEIVE mode with output screen recognition description
    interactionSpec = new J2HODInteractionSpec();
    interactionSpec.setExecutionTimeout(new Integer(60000));
    interactionSpec.setInteractionVerb(new Integer(J2HODInteractionSpec.SYNC_RECEIVE));
    interactionSpec.setScreenName("Logon Screen");
    interactionSpec.setRecognizeRow(new Integer(20));
    interactionSpec.setRecognizeColumn(new Integer(2));
    interactionSpec.setRecognizeString("USERID   ===>");

    out.println ("trying execute with SYNC_RECEIVE");
    if (connection.execute(interactionSpec, null, logonScreen))
      out.println ("successful execution with Matching return screen");
    else
      out.println ("successful execution with NON-Matching return screen");
    out.println ("connection.execute(receive logonScreen) done.<br>");

    // print each field information from logonScreen
    out.println ("total number of fields in logonScreen = "+logonScreen.getFieldCount());
    out.print ("<font color=#008800>");
    Iterator it = logonScreen.getFields();
    int fCount=0;
    while (it.hasNext())
    { //print each fields on screen
      fCount++;
      J2HODFieldRecord fieldRec = (J2HODFieldRecord)it.next();
      out.println ("field["+fCount+"] = ["+fieldRec.getText()+"]");
    }
    out.println ("</font><br>");

    // set interactionSpec as SEND-RECEIVE mode with output screen recognition description
    interactionSpec = new J2HODInteractionSpec();
    interactionSpec.setExecutionTimeout(new Integer(60000));
    interactionSpec.setInteractionVerb(new Integer(J2HODInteractionSpec.SYNC_SEND_RECEIVE));
    interactionSpec.setKeyName("ENTER");
    interactionSpec.setScreenName("Message Screen");
    interactionSpec.setRecognizeRow(new Integer(4));
    interactionSpec.setRecognizeColumn(new Integer(1));
    interactionSpec.setRecognizeString("Enter one of the following commands:");

    // set ID and PW - begin
    out.println ("setting ID/PW to logonScreen - begin");
    logonScreen.getField(54).setText(USERID); //get and set ID field
    logonScreen.getField(57).setText(PASSWORD); //get and set PW field
    out.println ("setting ID/PW to logonScreen - done");
    // set ID and PW - end

    out.println ("trying to execute with SYNC_SEND_RECEIVE");
    if (connection.execute(interactionSpec, logonScreen, msgScreen))
      out.println ("successful execution with Matching return screen");
    else
      out.println ("successful execution with NON-Matching return screen");
    out.println ("connection.execute(send logonScreen, receive msgScreen) done.<br>");

    // print each field information from msgScreen
    out.println ("total number of fields in msgScreen = "+msgScreen.getFieldCount());
    out.print ("<font color=#008800>");
    it = msgScreen.getFields();
    fCount=0;
    while (it.hasNext())
    {
      fCount++;
      J2HODFieldRecord fieldRec = (J2HODFieldRecord)it.next();
      out.println ("field["+fCount+"] = ["+fieldRec.getText()+"]");
    }
    out.println ("</font><br>");

    // set interactionSpec as SEND mode with no screen recognition description
    // since we are not receiving, there's no need to specify received screen recognition descriptions
    interactionSpec = new J2HODInteractionSpec();
    interactionSpec.setExecutionTimeout(new Integer(60000));
    interactionSpec.setInteractionVerb(new Integer(J2HODInteractionSpec.SYNC_SEND));
    interactionSpec.setKeyName(J2HODInteractionSpec.ENTER);
    interactionSpec.setScreenName("Logon Screen");

    // Set Logoff Command - begin
    out.println ("setting a Logoff Command to msgScreen - begin");
    msgScreen.getField(2).setText("logoff"); //get and set command field
    out.println ("setting a Logoff Command to msgScreen - done");
    // Set Logoff Command - end

    out.println ("trying execute with SYNC_SEND");
    connection.execute(interactionSpec, msgScreen, null);
    out.println ("successful execution of sending logoff command<br>");

    // close interaction
    out.println("trying interaction.close()...");
    interaction.close();
    out.println("interaction.close() successful.<br>");

    // close connection
    out.println("trying connection.close()...");
    connection.close();
    out.println("connection.close() successful.<br>");
  } //try
  catch (NamingException exn1)
  {
    out.println("***ERROR*** Operation failed: " + exn1 + "<br>");
    exn1.printStackTrace();
  }
  catch (javax.resource.ResourceException exn2)
  {
    out.println("***ERROR*** Operation failed: " + exn2 + "<br>");
    exn2.printStackTrace();
  }
  catch (com.ibm.connector2.screen.ScreenException se)
  {
    out.println ("***ERROR*** Operation failed: " + se.toString() + "<br>");
    se.printStackTrace();
  }
  catch (Exception ex)
  {
    out.println("***ERROR*** Operation failed: " + ex + "<br>");
    ex.printStackTrace();
  }
  catch (Throwable t)
  {
    out.println("***ERROR*** Operation failed: " + t.toString() + "<br>");
    t.printStackTrace();
  }
  out.println ("<br>Main - Exit");
  out.println ("</pre>");
%>

[ Top of Page | Previous Page | Next Page | Table of Contents ]