付録H.4 Cosminexus TP1 Connector版(Managed環境)
(1) COBOL引数の登録集原文とCOBOLプログラム例
付録H.1のTP1/Client/PおよびTP1/Client/W版と同じです。「付録H.1 TP1/Client/PおよびTP1/Client/W版」をご覧ください。
(2) Java UAP(Servlet)例
(a) Cosminexus TP1 Connector使用時の概要
:
import jp.co.hitachi_sk.j2cb.*; // パッケージのインポート
import JP.co.Hitachi.soft.OpenTP1.*; //
import javax.resource.cci.*; //
import jp.co.hitachi_system.tp1connector.*; //
:
生成クラス名 cls = new 生成クラス名(); //
:
javax.naming.Context ctx = new javax.naming.InitialContext();
//ManagedConnectionFactoryインスタンス生成
javax.resource.cciConnectionFactory cvf =
(javax.resource.cci.ConnectionFactory)ctx.lookup(RA_NAME);
javax.resource.cci.Connection cx = cxf.getConnection();
//ConnectionFactoryインスタンスの生成
javax.resource.cci.Interaction ix = cx.createInteraction();
//コネクション取得
InteractionSpecImpl ixSpec = new InteractionSpecImpl();
//InteractionSpecImplインスタンスの生成
:
cls.setData1I(""); // データの設定
:
cls.call(cxf, ix, ixSpec);
// RPC実行
:
String str = cls.getData1O(); // データの取得
:
cx.close(); // サーバとの切断
:(b) servlet作成例
package testc;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.beans.Beans;
import jp.co.hitachi_sk.j2cb.*;
import JP.co.Hitachi.soft.OpenTP1.*;
import javax.resource.cci.*;
import jp.co.hitachi_system.tp1connector.*;
//数字項目(外部10進項目,内部10進項目および小数けたを含む2進項目)を
//使用する場合は,以下のようにjava.math.BigDecimalをimportしてください。
//import java.math.BigDecimal;
public class SearchTP1Servlet extends HttpServlet {
private static final long serialVersionUID = 0L;
ServletContext c;
private static final String RA_NAME = "java:comp/env/OpenTP1";
//グローバル変数の初期化
public void init(ServletConfig config) throws ServletException {
super.init(config);
c = config.getServletContext();
}
//HTTP Get リクエストの処理
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
String number = "";
String group = "";
String service = "";
Res.setContextType("text/html; charset=shift_jis");
PrintWriter pw = res.getWriter();
// 初期画面表示
/* ******************* */
/* ** 入力用 HTML ** */
/* ******************* */
pw.println("<HTML>");
pw.println("<HEAD>");
pw.println("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;
charset=shift_jis\">");
pw.println("<TITLE>");
pw.println("SearchTP1");
pw.println("</TITLE>");
pw.println("</HEAD>");
pw.println("<BODY>");
pw.println("<h3>");
pw.println(“<center>TP1/COBOL adapter for Cosminexusのサンプル
</center>");
pw.println(“<center>(Cosminexus TP1 Connector対応版) </center>”);
pw.println(“<center> Managed 環境</center>”);
pw.println("</h3>");
pw.println("<hr>");
pw.println("<FORM action=/servlet/testc.SearchTP1Servlet
method=\"POST\">");
pw.println("<hr>");
pw.println("<table border=\"1\">");
pw.println("<tr><td colspan=\"2\" align=\"center\">");
pw.println(“<center>設定</center>”);
pw.println(“</td><tr><td>サービスグループ名</td><td>”);
pw.println("<input type=\"text\" name=\"GROUP\"
value=\"SAMPLE\">");
pw.println(“</td><tr><td>サービス名</td><td>”);
pw.println("<input type=\"text\" name=\"SERVICE\"
value=\"SEARCHTP1\">");
pw.println("</td></table>");
pw.println("<br>");
pw.println("<hr>");
pw.println("<br>");
pw.println(“100001 と 100002が登録されています。
pw.println(“<BR><BR> Submit を押すと Servlet SearchTP1Servlet
を実行”);
pw.println("<BR><BR><input type=submit value=\"Submit\"></form>");
pw.println("</center>");
pw.println("</BODY>");
pw.println("</HTML>");
try {
number = req.getParameter("Number");
group = req.getParameter("GROUP");
service = req.getParameter("SERVICE");
} catch (Exception e) {
e.printStackTrace();
}
//Beanのインスタンス生成
SearchTP1 bean = new SearchTP1();
// ****************
// * managed 環境 *
// ****************
javax.naming.Context ctx = new javax.naming.InitialContext();
javax.resource.cci.ConnectionFactory cxf =
(javax.resource.cci.ConnectionFactory)
ctx.lookup(RA_NAME);
// ******************************************
// * managed , non-managed 環境共通処理
// * ****************************************
// コネクション取得
javax.resource.cci.Connection cx = cxf.getConnection();
//Interactionインスタンスの生成
javax.resource.cci.Interaction ix = cx.createInteraction();
//InteractionSpecImplインスタンスの生成
InteractionSpecImpl ixSpec = new InteractionSpecImpl();
//InteractionSpecプロパティ設定
ixSpec.setServiceGroupName(group); //サービスグループ名称
ixSpec.setServiceName(service); //サービス名称
ixSpec.setFlags(ixSpec.DCNOFLAGS); //RPC種別
ixSpec.setWatchTime(10); //応答待ち時間
// Beanにパラメタを設定
bean.setP_numberI(new Integer(number));
bean.setP_nameI("");
bean.setP_addressI("");
bean.setP_gifI("");
try {
//SPPを呼び出します
bean.call(cxf,ix,ixSpec);
} catch(Exception e) {
e.printStackTrace();
cx.close();
return;
}
/* ******************* */
/* ** 結果用 HTML ** */
/* ******************* */
pw.println("<html>");
pw.println("<center>Result of Search.");
pw.println("<table border=\"1\">");
pw.println("<tr><td colspan=\"2\" align=\"center\">");
pw.println(bean.getP_numberO());
pw.println("</td><tr><td>Name</td><td>");
pw.println(bean.getP_nameO());
pw.println("</td><tr><td>Address</td><td>");
pw.println(bean.getP_addressO());
pw.println("<tr><td colspan=\"2\" align=\"center\">");
pw.println("<img src=" + bean.getP_gifO() + ">");
pw.println("</td></table>");
pw.println("</center>");
pw.println("</html>");
cx.close();
} catch (Exception e) {
e.printStackTrace();
return;
}
}
// HTTP Post リクエストの処理
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}