jp.co.fujitsu.reffi.client.swing.model
クラス JMSPublishCore

java.lang.Object
  上位を拡張 jp.co.fujitsu.reffi.client.swing.model.BaseModel
      上位を拡張 jp.co.fujitsu.reffi.client.swing.model.JMSPublishCore
すべての実装されたインタフェース:
Callable<Object>, Model

public class JMSPublishCore
extends BaseModel

[概 要]

JMSサーバトピックにメッセージを発行する為の機能モデルです。

[詳 細]

JMSトピックを通じてPub/Sub通信を行う為のクラスです。
Topicコネクションをスタートして設定されたメッセージをトピックに送信します。

必須設定メソッド

[備 考]

使用例)
チャットトピックへメッセージを送信する。
 package demo.chat.action;

        import java.util.List;
        
        import javax.swing.JTextField;
        
        import jp.co.fujitsu.reffi.client.swing.action.BaseAction;
        import jp.co.fujitsu.reffi.client.swing.controller.ParameterMapping;
        import jp.co.fujitsu.reffi.client.swing.event.ModelProcessEvent;
        import jp.co.fujitsu.reffi.client.swing.model.JMSPublishCore;
        import jp.co.fujitsu.reffi.client.swing.model.Model;
        
        public class RemarkSendAction extends BaseAction {
        
                @Override
                protected boolean prepare(ParameterMapping parameterMapping) throws Exception {
                        // 送信メッセージ入力欄が空の場合は処理を行いません。
                        if("".equals(getComponentValueAsString("chatFrame.jtfRemark").trim())) {
                                return false;
                        }else{
                                return true;
                        }
                }
        
                @Override
                protected void reserveModels(List> models) {
                        models.add(JMSPublishCore.class);
                }
        
                @Override
                public boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception {
                        if(index == 0) {
                                String remark = getComponentValueAsString("chatFrame.jtfRemark");
                                String userName = getComponentValueAsString("chatFrame.jtfUserName");

                                // メッセージを送信するTopicのJNDI名を設定します。 
                                ((JMSPublishCore)next).setTopicName("topic/chatTopic");
                                // JMSコネクションを確立してJMSセッションを作成します。
                                ((JMSPublishCore)next).createSession();
                                // 送信するメッセージを設定します。
                                ((JMSPublishCore)next).setTextMessage("<" + userName + "> " + remark);
                        }
                        
                        return true;
                }
        
                @Override
                public void successForward(int index, Model model, Object result)       throws Exception {
                        // メッセージ正常送信後、送信メッセージ入力欄を空にします。
                        ((JTextField)getComponent("chatFrame.jtfRemark")).setText("");
                }
        }
 

[環 境] JDK 6.0 Update 11

Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.

作成者:
Project Reffi

コンストラクタの概要
JMSPublishCore()
           
 
メソッドの概要
 MapMessage createMapMessage()
          [概 要] MapMessageオブジェクトを生成します。
 ObjectMessage createObjectMessage()
          [概 要] ObjectMessageオブジェクトを生成します。
 void createSession()
          [概 要] JMS TopicSessionを生成します。
 StreamMessage createStreamMessage()
          [概 要] StreamMessageオブジェクトを生成します。
 TextMessage createTextMessage()
          [概 要] TextMessageオブジェクトを生成します。
 void done()
          [概 要] JMS Topicコネクションを切断します。
 String getConnectionFactoryName()
          [概 要] JMSコネクションファクトリJNDI名を返却します。
 Hashtable<String,String> getEnvironment()
          [概 要] JMS接続を行う為の接続先環境設定プロパティを返却します。
 Message getMessage()
          [概 要] JMS Topicに発行するメッセージオブジェクトを返却します。
 TopicPublisher getPublisher()
          [概 要] JMSトピックにメッセージを発行するオブジェクトを返却します。
 String getTextMessage()
          [概 要] Textメッセージを取得する簡易メソッドです。
 Topic getTopic()
          [概 要] 購読を行うトピックを返却します。
 TopicConnection getTopicConnection()
          [概 要] サーバとのトピックコネクションを返却します。
 String getTopicName()
          [概 要] 購読開始、中止対象トピック名を返却します。
 TopicSession getTopicSession()
          [概 要] サーバとのトピックコネクションを返却します。
protected  void mainproc()
          [概 要] JMS Topicコネクションを開始してメッセージを発行します。
protected  void postproc()
          [概 要] モデル処理成功イベント、モデル処理終了イベントを発行します。
 void setConnectionFactoryName(String connectionFactoryName)
          [概 要] JMSコネクションファクトリJNDI名を設定します。
 void setEnvironment(Hashtable<String,String> environment)
          [概 要] JMS接続を行う為の接続先環境設定プロパティを設定します。
 void setMessage(Message message)
          [概 要] JMS Topicに発行するメッセージオブジェクトを設定します。
 void setPublisher(TopicPublisher publisher)
          [概 要] JMSトピックにメッセージを発行するオブジェクトを設定します。
 void setTextMessage(String textMessage)
          [概 要] Textメッセージを設定する簡易メソッドです。
 void setTopic(Topic topic)
          [概 要] 購読を行うトピックを設定します。
 void setTopicConnection(TopicConnection topicConnection)
          [概 要] サーバとのトピックコネクションを設定します。
 void setTopicName(String topicName)
          [概 要] 購読開始、中止対象トピック名を設定します。
 void setTopicSession(TopicSession topicSession)
          [概 要] サーバとのトピックコネクションを返却します。
 void stop()
          [概 要] JMS Topicコネクションを切断します。
 
クラス jp.co.fujitsu.reffi.client.swing.model.BaseModel から継承されたメソッド
addModelProcessListener, call, finalproc, fireModelFailure, fireModelFinished, fireModelSuccess, getController, getExecuteIndex, getListenerList, getParameterMapping, getResult, getSuccessCount, incrementSuccessCount, init, isAsync, isSkip, preproc, removeModelProcessListener, run, setAsync, setController, setExecuteIndex, setListenerList, setParameterMapping, setResult, setSkip, trap
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

JMSPublishCore

public JMSPublishCore()
メソッドの詳細

getEnvironment

public Hashtable<String,String> getEnvironment()

[概 要]

JMS接続を行う為の接続先環境設定プロパティを返却します。

[詳 細]

environmentフィールドを返却します。

[備 考]

戻り値:
JMS接続を行う為の接続先環境設定プロパティ

setEnvironment

public void setEnvironment(Hashtable<String,String> environment)

[概 要]

JMS接続を行う為の接続先環境設定プロパティを設定します。

[詳 細]

environmentフィールドを引数environmentで設定します。

[備 考]

パラメータ:
environment - JMS接続を行う為の接続先環境設定プロパティ

getConnectionFactoryName

public String getConnectionFactoryName()

[概 要]

JMSコネクションファクトリJNDI名を返却します。

[詳 細]

connectionFactoryNameフィールドを返却します。

[備 考]

戻り値:
JMSコネクションファクトリJNDI名

setConnectionFactoryName

public void setConnectionFactoryName(String connectionFactoryName)

[概 要]

JMSコネクションファクトリJNDI名を設定します。

[詳 細]

connectionFactoryNameフィールドを引数connectionFactoryNameで設定します。

[備 考]

パラメータ:
connectionFactoryName - JMSコネクションファクトリJNDI名

getTopicConnection

public TopicConnection getTopicConnection()

[概 要]

サーバとのトピックコネクションを返却します。

[詳 細]

topicConnectionフィールドを返却します。

[備 考]

戻り値:
サーバとのトピックコネクション

setTopicConnection

public void setTopicConnection(TopicConnection topicConnection)

[概 要]

サーバとのトピックコネクションを設定します。

[詳 細]

topicConnectionフィールドを引数topicConnectionで設定します。

[備 考]

パラメータ:
topicConnection - サーバとのトピックコネクション

getTopicSession

public TopicSession getTopicSession()

[概 要]

サーバとのトピックコネクションを返却します。

[詳 細]

topicConnectionフィールドを返却します。

[備 考]

戻り値:
サーバとのトピックコネクション

setTopicSession

public void setTopicSession(TopicSession topicSession)

[概 要]

サーバとのトピックコネクションを返却します。

[詳 細]

topicConnectionフィールドを返却します。

[備 考]

パラメータ:
topicSession - サーバとのトピックコネクション

getTopic

public Topic getTopic()

[概 要]

購読を行うトピックを返却します。

[詳 細]

topicフィールドを返却します。

[備 考]

戻り値:
購読を行うトピック

setTopic

public void setTopic(Topic topic)

[概 要]

購読を行うトピックを設定します。

[詳 細]

topicフィールドを引数topicで設定します。

[備 考]

パラメータ:
topic - 購読を行うトピック

getTopicName

public String getTopicName()

[概 要]

購読開始、中止対象トピック名を返却します。

[詳 細]

topicNameフィールドを返却します。

[備 考]

戻り値:
購読開始、中止対象トピック名

setTopicName

public void setTopicName(String topicName)

[概 要]

購読開始、中止対象トピック名を設定します。

[詳 細]

topicNameフィールドを引数topicNameで設定します。

[備 考]

パラメータ:
topicName - 購読開始、中止対象トピック名

getPublisher

public TopicPublisher getPublisher()

[概 要]

JMSトピックにメッセージを発行するオブジェクトを返却します。

[詳 細]

publisherフィールドを返却します。

[備 考]

戻り値:
JMSトピックにメッセージを発行するオブジェクト

setPublisher

public void setPublisher(TopicPublisher publisher)

[概 要]

JMSトピックにメッセージを発行するオブジェクトを設定します。

[詳 細]

publisherフィールドを設定します。

[備 考]

パラメータ:
publisher - JMSトピックにメッセージを発行するオブジェクト

getTextMessage

public String getTextMessage()

[概 要]

Textメッセージを取得する簡易メソッドです。

[詳 細]

textMessageフィールドを返却します。

[備 考]

戻り値:
送信するTextメッセージ

setTextMessage

public void setTextMessage(String textMessage)

[概 要]

Textメッセージを設定する簡易メソッドです。

[詳 細]

textMessageフィールドを設定します。

[備 考]

Textメッセージ情報はTopicSessionが無い状態でも生成出来る為、 簡易メッセージ設定メソッドとして用意されています。

パラメータ:
textMessage - 送信するTextメッセージ

getMessage

public Message getMessage()

[概 要]

JMS Topicに発行するメッセージオブジェクトを返却します。

[詳 細]

messageフィールドを返却します。

[備 考]

戻り値:
JMS Topicに発行するメッセージオブジェクト

setMessage

public void setMessage(Message message)

[概 要]

JMS Topicに発行するメッセージオブジェクトを設定します。

[詳 細]

messageフィールドを引数messageで設定します。

[備 考]

パラメータ:
message - JMS Topicに発行するメッセージオブジェクト

createSession

public void createSession()
                   throws NamingException,
                          JMSException

[概 要]

JMS TopicSessionを生成します。

[詳 細]

を行います。

[備 考]

JMSメッセージオブジェクトはTopicSessionから作成します。
このメソッドはJMSSubscribeCore機能モデルがrunされる前に 呼び出しておく必要が有ります。
        @Override
        public boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception {
                if(index == 0) {
                        String remark = getComponentAsString("chatFrame.jtfRemark");
                        String userName = getComponentAsString("chatFrame.jtfUserName");

                        ((JMSPublishCore)next).setTopicName("topic/chatTopic");
                        // 発行メッセージを設定する前に要createSessionメソッドコール
                        ((JMSPublishCore)next).createSession();
                        ((JMSPublishCore)next).setTextMessage("<" + userName + "> " + remark);
                }
                return true;
        } 
 

例外:
NamingException
JMSException

mainproc

protected void mainproc()
                 throws JMSException

[概 要]

JMS Topicコネクションを開始してメッセージを発行します。

[詳 細]

TopicConnectionをstartさせ、getTopic()に対応するPublisherを生成します。
PublisherはgetMessage()をメッセージとして、JMS Topicに発行を行います。

[備 考]

オーバーライド:
クラス BaseModel 内の mainproc
例外:
JMSException

postproc

protected void postproc()
                 throws Exception

[概 要]

モデル処理成功イベント、モデル処理終了イベントを発行します。

[詳 細]

fireModelSuccess、fireModelFinishedメソッドをコールします。

[備 考]

オーバーライド:
クラス BaseModel 内の postproc
例外:
Exception - オーバーライド先で発生する可能性が有る例外

done

public void done()
          throws Exception

[概 要]

JMS Topicコネクションを切断します。

[詳 細]

stopメソッドに処理委譲します。

[備 考]

オーバーライド:
クラス BaseModel 内の done
例外:
Exception

stop

public void stop()
          throws JMSException

[概 要]

JMS Topicコネクションを切断します。

[詳 細]

を行います。

[備 考]

例外:
JMSException

createTextMessage

public TextMessage createTextMessage()
                              throws JMSException

[概 要]

TextMessageオブジェクトを生成します。

[詳 細]

確立されているTopicSessionにTextMessageオブジェクトの生成を依頼します。

[備 考]

戻り値:
TextMessageオブジェクト
例外:
JMSException

createObjectMessage

public ObjectMessage createObjectMessage()
                                  throws JMSException

[概 要]

ObjectMessageオブジェクトを生成します。

[詳 細]

確立されているTopicSessionにObjectMessageオブジェクトの生成を依頼します。

[備 考]

戻り値:
ObjectMessageオブジェクト
例外:
JMSException

createMapMessage

public MapMessage createMapMessage()
                            throws JMSException

[概 要]

MapMessageオブジェクトを生成します。

[詳 細]

確立されているTopicSessionにMapMessageオブジェクトの生成を依頼します。

[備 考]

戻り値:
MapMessageオブジェクト
例外:
JMSException

createStreamMessage

public StreamMessage createStreamMessage()
                                  throws JMSException

[概 要]

StreamMessageオブジェクトを生成します。

[詳 細]

確立されているTopicSessionにStreamMessageオブジェクトの生成を依頼します。

[備 考]

戻り値:
StreamMessageオブジェクト
例外:
JMSException


Copyright(C) Fujitsu All Rights Reserved.