[ADOS] ADOS Developer's Site - XML Stadium
ADOS Company slogan - XML Total Solution

 RIGHT:[[目次>Hestia Hacks]]|[[前>1アクションPIPの回答側処理]]|[[次>2アクションPIPの回答側処理]]
 RIGHT:[[目次>Hestia Hacks#SDKDevDuide]]|[[前>1アクションPIPの回答側処理]]|[[次>2アクションPIPの回答側処理]]
 
 目次
 
 #contents
 
 *概要 [#d32814ba]
 
 2アクションPIPの開始側処理について解説します。
 
 2アクションPIPの開始側処理は、1アクションPIPの開始処理と回答処理を合わせたものとなり、処理プログラムの記述はほぼ同様です。ただし、2アクションPIPの1プロセスを通じて、同一のSessionオブジェクトが使用されます。
 
 サンプルプログラム全体を以下に示します。
 
 【PIPSender2Action.java】
  1 : import java.io.FileInputStream;
  2 : import java.util.Date;
  3 : import java.util.Properties;
  4 : 
  5 : import com.ados.hestia.parser.rnbm.access.Validator;
  6 : import com.ados.hestia.parser.rnbm.exchange.Container;
  7 : import com.ados.hestia.parser.rnbm.exchange.PayloadContainer;
  8 : import com.ados.hestia.parser.rnbm.exchange.StatusContainer;
  9 : import com.ados.hestia.parser.rnbm.model.RootElement;
  10 : import com.ados.hestia.parser.rnbm.particle.DateTimeStamp;
  11 : import com.ados.hestia.parser.rnbm.particle.ServiceContent;
  12 : import com.ados.hestia.parser.rnbm.repository.Repository;
  13 : import com.ados.hestia.sdk.Configuration;
  14 : import com.ados.hestia.sdk.Connection;
  15 : import com.ados.hestia.sdk.message.DirectMessageExchanger;
  16 : import com.ados.hestia.sdk.rnbm.randomgenerator.RootElementGenerator;
  17 : import com.ados.hestia.sdk.session.InitiationSession;
  18 : import com.ados.hestia.sdk.session.Session;
  19 : import com.ados.hestia.utils.UID;
  20 : 
  21 : public class PIPSender2Action {
  22 : 
  23 :   public static void main(String[] args) {
  24 :     try {
  25 :       Properties prop = new Properties();
  26 :       prop.load(new FileInputStream("sample.properties"));
  27 :       String HOST = prop.getProperty("HOST");
  28 :       String USER = prop.getProperty("USER");
  29 :       String PASS = prop.getProperty("PASS");
  30 :       String HANDLER_ID = prop.getProperty("HANDLER_ID");
  31 :       String SENDER = prop.getProperty("SENDER");
  32 :       String RECEIVER = prop.getProperty("RECEIVER");
  33 : 
  34 :       Connection connection = new Connection(HOST, USER, PASS,
  35 :           Connection.EXCHANGE_MODE_DIRECT, null, null, null,
  36 :           HANDLER_ID);
  37 :       DirectMessageExchanger exchanger = new DirectMessageExchanger(
  38 :           connection, Configuration.getInstance());
  39 : 
  40 :       RootElement re = Repository.getDefault().getResolver()
  41 :           .resolveByVersion("0C2", "Pip0C2AsynchronousTestRequest",
  42 :               "R01.01.00");
  43 :       RootElementGenerator reg = new RootElementGenerator(re);
  44 :       reg.process();
  45 :       ServiceContent sc = new ServiceContent("0C2", re);
  46 :       sc.setGlobalDocumentFunctionCode("Request");
  47 :       sc.setDocumentGenerationDateTime(new DateTimeStamp());
  48 :       sc.setDocumentIdentifier((new UID()).toString());
  49 :       sc.setElementValue(
  50 :           "fromRole/PartnerRoleDescription/PartnerDescription/BusinessDescription/GlobalBusinessIdentifier",
  51 :               SENDER);
  52 :       sc.setElementValue(
  53 :           "toRole/PartnerRoleDescription/PartnerDescription/BusinessDescription/GlobalBusinessIdentifier",
  54 :               RECEIVER);
  55 : 
  56 :       Session session = new InitiationSession(new PayloadContainer(
  57 :           new Date(), SENDER, RECEIVER, (new UID()).toString(), sc,
  58 :           null));
  59 :       SampleUtils.printSessionState("created", session);
  60 :       PayloadContainer request = session.getMessageToSend();
  61 :       SampleUtils.printSessionState("got", session);
  62 :       SampleUtils.printContainerInformation(request);
  63 :       SampleUtils.printServiceContent(request.getServiceContent());
  64 :       new Validator(request.getServiceContent().getElement()).validate();
  65 :       exchanger.sendMessage(request);
  66 :       SampleUtils.printSessionState("sent", session);
  67 : 
  68 :       int time = 0;
  69 :       boolean loop = true;
  70 :       while (loop) {
  71 :         Thread.sleep(5000);
  72 :         exchanger.hit();
  73 :         SampleUtils.printSessionState("request loop=" + time++, session);
  74 : 
  75 :         Container container = exchanger.receiveMessage();
  76 :         if (container != null) {
  77 :           SampleUtils.printContainerInformation(container);
  78 :           session.pushStatus((StatusContainer) container);
  79 :           SampleUtils.printSessionState("pushed", session);
  80 :           loop = false;
  81 :         }
  82 :       }
  83 : 
  84 :       loop = true;
  85 :       while (loop) {
  86 :         Thread.sleep(5000);
  87 :         exchanger.hit();
  88 :         SampleUtils.printSessionState("response loop=" + time++,
  89 :             session);
  90 : 
  91 :         Container container = exchanger.receiveMessage();
  92 :         if (container != null) {
  93 :           SampleUtils.printContainerInformation(container);
  94 :           PayloadContainer response = (PayloadContainer) container;
  95 :           SampleUtils.printServiceContent(response
  96 :               .getServiceContent());
  97 :           session.pushMessage(response);
  98 :           SampleUtils.printSessionState("pushed", session);
  99 :           session.acceptPartnerMessage();
  100 :           SampleUtils.printSessionState("accepted", session);
  101 :           StatusContainer status = session.getStatusToSend();
  102 :           SampleUtils.printSessionState("sent status", session);
  103 :           SampleUtils.printContainerInformation(status);
  104 :           exchanger.sendMessage(status);
  105 :           exchanger.hit();
  106 :           loop = false;
  107 :         }
  108 :       }
  109 : 
  110 :     } catch (Exception e) {
  111 :       e.printStackTrace();
  112 :     }
  113 :   }
  114 : 
  115 : }
 
 *Sessionの使用 [#b25b3dc1]
 
 InitiationSessionによりセッションオブジェクトを生成し、そのオブジェクトにより4メッセージの処理を行います。
 
 Sessionの生成
 
  56 :       Session session = new InitiationSession(new PayloadContainer(
  57 :           new Date(), SENDER, RECEIVER, (new UID()).toString(), sc,
  58 :           null));
 
 送信するPayloadContainerの取得
 
  60 :       PayloadContainer request = session.getMessageToSend();
 
 受信したStatusContainerの入力
 
  75 :         Container container = exchanger.receiveMessage();
 
  78 :           session.pushStatus((StatusContainer) container);
 
 受信したPayloadContainerの入力
 
  91 :         Container container = exchanger.receiveMessage();
 
  94 :           PayloadContainer response = (PayloadContainer) container;
 
  97 :           session.pushMessage(response);
 
 送信するStatusContainerの取得
 
  99 :           session.acceptPartnerMessage();
 
  101 :           StatusContainer status = session.getStatusToSend();

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Copyright 2005-2008. ADOS Co., Ltd. All Rights Reserved.