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

【受信したServiceContentをXMLファイルに出力】

目次

概要

ServiceContentをXMLファイルに出力する方法について解説します。

サンプルプログラム全体を以下に示します。

【PIPReceiverXML.java】

1 : import java.io.BufferedWriter;
2 : import java.io.File;
3 : import java.io.FileInputStream;
4 : import java.io.FileWriter;
5 : import java.io.Writer;
6 : import java.util.Properties;
7 : 
8 : import com.ados.hestia.parser.rnbm.exchange.Container;
9 : import com.ados.hestia.parser.rnbm.exchange.PayloadContainer;
10 : import com.ados.hestia.parser.rnbm.exchange.StatusContainer;
11 : import com.ados.hestia.parser.rnbm.particle.ServiceContent;
12 : import com.ados.hestia.sdk.Configuration;
13 : import com.ados.hestia.sdk.Connection;
14 : import com.ados.hestia.sdk.message.DirectMessageExchanger;
15 : import com.ados.hestia.sdk.session.RespondSession;
16 : import com.ados.hestia.sdk.session.Session;
17 : 
18 : public class PIPReceiverXML {
19 : 
20 :   public static void main(String[] args) {
21 :     try {
22 :       Properties prop = new Properties();
23 :       prop.load(new FileInputStream("sample.properties"));
24 :       String HOST = prop.getProperty("HOST");
25 :       String USER = prop.getProperty("USER");
26 :       String PASS = prop.getProperty("PASS");
27 :       String HANDLER_ID = prop.getProperty("HANDLER_ID");
28 :       String DIR = System.getProperty("user.dir") + File.separator
29 :           + "output" + File.separator + "xml";
30 : 
31 :       Connection connection = new Connection(HOST, USER, PASS,
32 :           Connection.EXCHANGE_MODE_DIRECT, null, null, null,
33 :           HANDLER_ID);
34 :       DirectMessageExchanger exchanger = new DirectMessageExchanger(
35 :           connection, Configuration.getInstance());
36 : 
37 :       new File(DIR).mkdirs();
38 :       int time = 0;
39 :       boolean loop = true;
40 :       while (loop) {
41 :         Thread.sleep(5000);
42 :         SampleUtils.println("loop : " + time++);
43 :         exchanger.hit();
44 : 
45 :         Container container = exchanger.receiveMessage();
46 :         if (container != null) {
47 :           SampleUtils.printContainerInformation(container);
48 :           PayloadContainer request = (PayloadContainer) container;
49 :           ServiceContent sc = request.getServiceContent();
50 :           SampleUtils.printServiceContent(sc);
51 :           Session session = new RespondSession(request
52 :               .getRemotePartner(), request.getPIPID());
53 :           SampleUtils.printSessionState("created", session);
54 :           session.pushMessage(request);
55 :           SampleUtils.printSessionState("pushed", session);
56 :           session.acceptPartnerMessage();
57 :           SampleUtils.printSessionState("accepted", session);
58 :           StatusContainer status = session.getStatusToSend();
59 :           SampleUtils.printSessionState("sent status", session);
60 :           SampleUtils.printContainerInformation(status);
61 :           exchanger.sendMessage(status);
62 :           exchanger.hit();
63 : 
64 :           String filename = DIR
65 :               + File.separator
66 :               + sc.getPIPID()
67 :               + "_"
68 :               + sc.getVersion()
69 :               + "_"
70 :               + sc.getFromRole()
71 :                   .getGlobalBusinessIdentifierNorm()
72 :               + "_"
73 :               + sc.getDocumentGenerationDateTime()
74 :                   .getRNDateTime() + "_"
75 :               + sc.getDocumentIdentifier()
76 :               + "_ServiceContent.xml";
77 :           SampleUtils.println(filename);
78 :           Writer o = new BufferedWriter(new FileWriter(new File(
79 :               filename)));
80 :           sc.writeXML(o, false, false);
81 :           o.flush();
82 :           o.close();
83 : 
84 :           loop = false;
85 :         }
86 :       }
87 : 
88 :     } catch (Exception e) {
89 :       e.printStackTrace();
90 :     }
91 :   }
92 : 
93 : }

受信したPayloadContainerからServiceContentの取得

受信したPayloadContainerからは、ServiceContentを取得できます。

45 :         Container container = exchanger.receiveMessage();
48 :           PayloadContainer request = (PayloadContainer) container;
49 :           ServiceContent sc = request.getServiceContent();

XMLファイルへのServiceContentの出力

ServiceContent#writeXMLによりWriterにServiceContentのXMLを出力します。したがって、ファイルだけでなく、Writerを実装した任意のリソースにXMLを出力できます。

78 :           Writer o = new BufferedWriter(new FileWriter(new File(
79 :               filename)));
80 :           sc.writeXML(o, false, false);
81 :           o.flush();
82 :           o.close();

なお、ServiceContentには、PIPインスタンスID(1つのPIPプロセスにつけられるID)や本番/テストのフラグなどの情報が含まれません。したがって、バックエンドにはServiceContentと別途、これらの情報を必要に応じて通知します。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Mon, 24 Oct 2005 17:11:45 JST (4925d)

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