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

【2アクションPIPの開始側処理】

目次

概要

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の使用

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
Last-modified: Mon, 24 Oct 2005 17:11:13 JST (4925d)

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