Host On-Demand J2EE コネクター

Host On-Demand J2EE コネクター


管理下の環境で J2HODScreenableRecord を使用する JSP サンプル・アプリケーション

これは、画面レコードとして J2HODScreenableRecord を使用する Java Server Page (JSP) のサンプル・アプリケーションです。これは、管理下の環境で実行される TN3270 アプリケーションの例です。

この JSP サンプル・ファイル、JNDIClientScreenableSample.jsp は、ディレクトリー ...¥connector2¥samples¥tn3270¥ にもあります。この実行から生成された出力は、ファイル ...¥connector2¥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>");
%>

[ ページの先頭 | 前のページ | 次のページ | 目次 ]