ADOS Developer's Site - XML Stadium |
目次
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 : }
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();
Copyright 2005-2008. ADOS Co., Ltd. All Rights Reserved. |