jp.co.fujitsu.reffi.server.flex.producer
クラス ProxyMessageProducer

java.lang.Object
  上位を拡張 jp.co.fujitsu.reffi.server.messaging.AbstractMessageSender
      上位を拡張 jp.co.fujitsu.reffi.server.flex.producer.ProxyMessageProducer

public abstract class ProxyMessageProducer
extends jp.co.fujitsu.reffi.server.messaging.AbstractMessageSender

[概 要]

Flex用基底プロデューサクラス。

[詳 細]

Flexでのメッセージ送信基底クラスです。
開発者は本クラスを継承してクライアントへメッセージを送信することが可能となります。

以下が簡単な実装サンプルとなります。

public class DemoMessageProducer extends ProxyMessageProducer {
        private static final String DESTINATION = "demoDestination";

        protected void processSend() {
                // クライアントへ送信するデータの生成
                ArrayList<String> results = new ArrayList<String>();
                for (int i = 0; i < 10; i++) {
                        results.add("results-" + String.valueOf(i));
                }
                send(DESTINATION, results);
        }
}
 

本サンプルでは、あらかじめmessaging-config.xmlに登録されている宛先「demoDestination」 に対してメッセージ受信を開始しているクライアントへ生成した文字列の配列を送信しています。
send(String, Serializable)を呼び出すことで生成した メッセージの送信を行います。
送信するメッセージはSerializableを実装したクラスである必要があります。

SenderManagerを利用することで 定期的なメッセージ送信をすることが可能となります。
以下はjp.co.fujitsu.reffi.server.model.AbstractModelを継承したモデル を実装し、その中でメッセージ送信を1分毎に定期的に実行するサンプルとなります。

import java.util.ArrayList;
import jp.co.fujitsu.reffi.server.flex.producer.ProxyMessageProducer;
import jp.co.fujitsu.reffi.server.messaging.SenderManager;
import jp.co.fujitsu.reffi.server.model.AbstractModel;

public class DemoModel extends AbstractModel {
        private static final String PRODUCER_NAME = "DemoProducer";
        private static final String DESTINATION = "demoDestination";
        private static final int INTERVAL = 60;

        protected void mainProcess() throws Exception {
                String isCancel = getRequestParameter("isCancel", String.class);
                if ("true".equals(isCancel)) {
                        SenderManager.instance.cancelMessageSender(PRODUCER_NAME);
                } else {
                        SenderManager.instance.addMessageSender(PRODUCER_NAME, new DemoMessageProducer(), INTERVAL * 1000);
                }
        }

        class DemoMessageProducer extends ProxyMessageProducer {
                protected void processSend() {
                        ArrayList<String> results = new ArrayList<String>();
                        for (int i = 0; i < 10; i++) {
                                results.add("results-" + String.valueOf(i));
                        }
                        send(DESTINATION, results);
                }
        }
}
 
サンプルでは、クライアントからのパラメータ「isCancel」に「true」の文字列が設定されている場合、 メッセージ送信を停止します。
「true」でない場合はメッセージ送信を登録しますが、同一名で登録するため2つ以上は実行されません。
なお、あらかじめmessaging-config.xmlには「demoDestination」が設定されていることが必要です。

[備 考]

本クラスは現在検証中のため、試験的な提供となります。

作成者:
Project Reffi

コンストラクタの概要
ProxyMessageProducer()
           
 
メソッドの概要
 MessageClient getMessageClient()
          [概 要] 送信先クライアント情報取得 [詳 細] 送信する特定のクライアント情報を取得します。
 String getServiceID()
          [概 要] メッセージサービスID取得 [詳 細] メッセージサービスのIDを取得します。
protected  void send(String destination, Serializable object)
          [概 要] メッセージ発行 [詳 細] メッセージの発行をします。
 void setMessageClient(MessageClient messageClient)
          [概 要] 送信先クライアント情報設定 [詳 細] 送信する特定のクライアント情報を設定します。
 void setServiceID(String serviceID)
          [概 要] メッセージサービスID設定 [詳 細] 任意のメッセージサービスIDを設定します。
 
クラス jp.co.fujitsu.reffi.server.messaging.AbstractMessageSender から継承されたメソッド
handleFinalize, handleInitialize, processSend, runSender, trap
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

ProxyMessageProducer

public ProxyMessageProducer()
メソッドの詳細

getServiceID

public String getServiceID()

[概 要]

メッセージサービスID取得

[詳 細]

メッセージサービスのIDを取得します。

[備 考]

デフォルトではDEFAULT_SERVICE_IDが設定されています。

戻り値:
設定されているメッセージサービスのID

setServiceID

public void setServiceID(String serviceID)

[概 要]

メッセージサービスID設定

[詳 細]

任意のメッセージサービスIDを設定します。

[備 考]

デフォルトではDEFAULT_SERVICE_IDが設定されているため、 必要がない場合は設定しないでください。

パラメータ:
serviceID - 任意のメッセージサービスID

getMessageClient

public MessageClient getMessageClient()

[概 要]

送信先クライアント情報取得

[詳 細]

送信する特定のクライアント情報を取得します。

[備 考]

クライアント情報が設定されていない場合は接続クライアント全てに送信されます。

戻り値:
送信先クライアント情報

setMessageClient

public void setMessageClient(MessageClient messageClient)

[概 要]

送信先クライアント情報設定

[詳 細]

送信する特定のクライアント情報を設定します。

[備 考]

クライアント情報が設定されていない場合は接続クライアント全てに送信されます。

パラメータ:
messageClient - 送信先クライアント情報

send

protected final void send(String destination,
                          Serializable object)

[概 要]

メッセージ発行

[詳 細]

メッセージの発行をします。

[備 考]

パラメータ:
destination - 宛先
object - 発行するメッセージ


Copyright(C) Fujitsu All Rights Reserved.