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

目次||

目次

概要

2アクションPIPの回答側処理は、1アクションの回答処理と1アクションの開始処理を合わせたものとなり、処理プログラムの記述はほぼ同様です。

【PIPReceiver2Action.java】

1 : import java.io.FileInputStream;
2 : import java.util.Properties;
3 : 
4 : import com.ados.hestia.parser.rnbm.exchange.Container;
5 : import com.ados.hestia.parser.rnbm.exchange.PayloadContainer;
6 : import com.ados.hestia.parser.rnbm.exchange.StatusContainer;
7 : import com.ados.hestia.parser.rnbm.model.RootElement;
8 : import com.ados.hestia.parser.rnbm.particle.ServiceContent;
9 : import com.ados.hestia.parser.rnbm.repository.Repository;
10 : import com.ados.hestia.sdk.Configuration;
11 : import com.ados.hestia.sdk.Connection;
12 : import com.ados.hestia.sdk.message.DirectMessageExchanger;
13 : import com.ados.hestia.sdk.rnbm.randomgenerator.RootElementGenerator;
14 : import com.ados.hestia.sdk.session.RespondSession;
15 : import com.ados.hestia.sdk.session.Session;
16 : import com.ados.hestia.utils.UID;
17 : import com.ados.hestia.parser.rnbm.particle.DateTimeStamp;
18 : 
19 : public class PIPReceiver2Action {
20 : 
21 :   public static void main(String[] args) {
22 :     try {
23 :       Properties prop = new Properties();
24 :       prop.load(new FileInputStream("sample.properties"));
25 :       String HOST = prop.getProperty("HOST");
26 :       String USER = prop.getProperty("USER");
27 :       String PASS = prop.getProperty("PASS");
28 :       String HANDLER_ID = prop.getProperty("HANDLER_ID");
29 : 
30 :       Connection connection = new Connection(HOST, USER, PASS,
31 :           Connection.EXCHANGE_MODE_DIRECT, null, null, null,
32 :           HANDLER_ID);
33 :       DirectMessageExchanger exchanger = new DirectMessageExchanger(
34 :           connection, Configuration.getInstance());
35 : 
36 :       Session session = null;
37 :       int time = 0;
38 :       boolean loop = true;
39 :       while (loop) {
40 :         Thread.sleep(5000);
41 :         exchanger.hit();
42 :         SampleUtils.printSessionState("loop=" + time++, session);
43 : 
44 :         Container container = exchanger.receiveMessage();
45 :         if (container != null) {
46 :           SampleUtils.printContainerInformation(container);
47 :           PayloadContainer request = (PayloadContainer) container;
48 :           SampleUtils.printServiceContent(request.getServiceContent());
49 :           session = new RespondSession(request.getRemotePartner(),
50 :               request.getPIPID());
51 :           SampleUtils.printSessionState("created", session);
52 :           session.pushMessage(request);
53 :           SampleUtils.printSessionState("pushed", session);
54 :           session.acceptPartnerMessage();
55 :           SampleUtils.printSessionState("accepted", session);
56 :           StatusContainer status = session.getStatusToSend();
57 :           SampleUtils.printSessionState("sent status", session);
58 :           SampleUtils.printContainerInformation(status);
59 :           exchanger.sendMessage(status);
60 :           exchanger.hit();
61 : 
62 :           SampleUtils.printContainerInformation(session
63 :               .getPartnerMessage());
64 :           RootElement element = Repository.getDefault().getResolver()
65 :               .resolveByPeer(
66 :                   request.getServiceContent().getElement());
67 :           RootElementGenerator reg = new RootElementGenerator(element);
68 :           reg.process();
69 :           ServiceContent sc = new ServiceContent(request
70 :               .getServiceContent().getPIPID(), element);
71 :           sc.setGlobalDocumentFunctionCode("Response");
72 :           sc.setDocumentGenerationDateTime(new DateTimeStamp());
73 :           sc.setDocumentIdentifier((new UID()).toString());
74 :           session.setLocalMessage(new PayloadContainer(null, request
75 :               .getLocalPartner(), request.getRemotePartner(),
76 :               request.getPipInstanceID(), sc, null));
77 :           SampleUtils.printSessionState("set msg", session);
78 :           PayloadContainer response = session.getMessageToSend();
79 :           SampleUtils.printContainerInformation(response);
80 :           SampleUtils.printSessionState("sent msg", session);
81 :           SampleUtils.printServiceContent(response
82 :               .getServiceContent());
83 :           exchanger.sendMessage(response);
84 :           exchanger.hit();
85 :           loop = false;
86 :         }
87 :       }
88 : 
89 :       loop = true;
90 :       while (loop) {
91 :         Thread.sleep(5000);
92 :         exchanger.hit();
93 :         SampleUtils.printSessionState("loop=" + time++, session);
94 : 
95 :         Container container = exchanger.receiveMessage();
96 :         if (container != null) {
97 :           SampleUtils.printContainerInformation(container);
98 :           session.pushStatus((StatusContainer) container);
99 :           SampleUtils.printSessionState("pushed", session);
100 :           loop = false;
101 :         }
102 :       }
103 :     } catch (Exception e) {
104 :       e.printStackTrace();
105 :     }
106 :   }
107 : 
108 : }

セッションオブジェクトの使用

2アクションで同じセッションオブジェクトを使用します。セッションオブジェクトにかかわる処理は以下のようになります。オブジェクトは最初の1回のみ生成し、そのオブジェクトに対して4メッセージの処理を行います。

セッションの生成 Session session = null; session = new RespondSession(request.getRemotePartner(), request.getPIPID()); 受信したアクションメッセージの入力 session.pushMessage(request); 送信するシグナルメッセージの取得 session.acceptPartnerMessage(); StatusContainer status = session.getStatusToSend(); 送信するアクションメッセージの設定と取得 session.setLocalMessage(new PayloadContainer(null, request.getLocalPartner(), request.getRemotePartner(), request.getPipInstanceID(), sc, null)); PayloadContainer response = session.getMessageToSend(); 受信したシグナルメッセージの入力 session.pushStatus((StatusContainer) container);


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

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