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

【ServiceContentのXMLファイルを入力して送信】

目次

概要

XML形式でServiceContentそのものを入力して送信する方法について解説します。

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

【PIPSenderXML.java】

1 : import java.io.BufferedReader;
2 : import java.io.File;
3 : import java.io.FileInputStream;
4 : import java.io.FileReader;
5 : import java.io.Reader;
6 : import java.util.Date;
7 : import java.util.Properties;
8 : 
9 : import com.ados.hestia.parser.rnbm.exchange.Container;
10 : import com.ados.hestia.parser.rnbm.exchange.PayloadContainer;
11 : import com.ados.hestia.parser.rnbm.exchange.StatusContainer;
12 : import com.ados.hestia.parser.rnbm.particle.ServiceContent;
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.access.XMLBuilder;
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 PIPSenderXML {
22 : 
23 :   public static void main(String[] args) {
24 :     try {
25 :       String filename = args[0];
26 :       String pip = args[1];
27 :       String pipver = args[2];
28 : 
29 :       Properties prop = new Properties();
30 :       prop.load(new FileInputStream("sample.properties"));
31 :       String HOST = prop.getProperty("HOST");
32 :       String USER = prop.getProperty("USER");
33 :       String PASS = prop.getProperty("PASS");
34 :       String HANDLER_ID = prop.getProperty("HANDLER_ID");
35 : 
36 :       Connection connection = new Connection(HOST, USER, PASS,
37 :           Connection.EXCHANGE_MODE_DIRECT, null, null, null,
38 :           HANDLER_ID);
39 :       DirectMessageExchanger exchanger = new DirectMessageExchanger(
40 :           connection, Configuration.getInstance());
41 : 
42 :       Reader reader = new BufferedReader(new FileReader(
43 :           new File(filename)));
44 :       XMLBuilder builder = new XMLBuilder(reader, pip, pipver, true);
45 :       ServiceContent sc = builder.build();
46 : 
47 :       Session session = new InitiationSession(new PayloadContainer(
48 :           new Date(), sc.getFromRole()
49 :               .getGlobalBusinessIdentifierNorm(), sc.getToRole()
50 :               .getGlobalBusinessIdentifierNorm(), (new UID())
51 :               .toString(), sc, null));
52 :       SampleUtils.printSessionState("created", session);
53 :       PayloadContainer request = session.getMessageToSend();
54 :       SampleUtils.printSessionState("got", session);
55 :       SampleUtils.printContainerInformation(request);
56 :       SampleUtils.printServiceContent(request.getServiceContent());
57 :       exchanger.sendMessage(request);
58 :       SampleUtils.printSessionState("sent", session);
59 : 
60 :       int time = 0;
61 :       boolean loop = true;
62 :       while (loop) {
63 :         Thread.sleep(5000);
64 :         exchanger.hit();
65 :         SampleUtils.printSessionState("loop=" + time++, session);
66 : 
67 :         Container container = exchanger.receiveMessage();
68 :         if (container != null) {
69 :           SampleUtils.printContainerInformation(container);
70 :           session.pushStatus((StatusContainer) container);
71 :           SampleUtils.printSessionState("pushed", session);
72 :           loop = false;
73 :         }
74 :       }
75 : 
76 :     } catch (Exception e) {
77 :       e.printStackTrace();
78 :     }
79 :   }
80 : 
81 : }

XMLファイルの読み込みとServiceContentの生成

XMLBuilderによりReaderを介してXMLを読み込み、ServiceContentオブジェクトを生成します。このXMLは、PIPのServiceContentそのものである必要があります。XMLBuilderにはReaderを入力するため、ファイルだけでなく、Readerを実装した任意のソースからXMLを入力できます。

42 :       Reader reader = new BufferedReader(new FileReader(
43 :           new File(filename)));
44 :       XMLBuilder builder = new XMLBuilder(reader, pip, pipver, true);
45 :       ServiceContent sc = builder.build();

ServiceContentの生成後は、通常の送信処理を行います。ただし、DUNS等の値を、XMLに既に記述されたものを参照するか、EISで改めて動的に指定するか、検討の余地があります。ServiceContentには、ServiceContent#setElementValue等のメソッドによりデータを上書きすることができます。

ここのサンプルでは、XMLに既に記述されているDUNSをそのまま利用しています。

47 :       Session session = new InitiationSession(new PayloadContainer(
48 :           new Date(), sc.getFromRole()
49 :               .getGlobalBusinessIdentifierNorm(), sc.getToRole()
50 :               .getGlobalBusinessIdentifierNorm(), (new UID())
51 :               .toString(), sc, null));
関連クラス機能
com.ados.hestia.sdk.rnbm.access.XMLBuilderXMLからServiceContentを出力するクラス。

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

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