|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjp.co.fujitsu.reffi.client.swing.model.BaseModel
jp.co.fujitsu.reffi.client.swing.model.JMSSubscribeCore
public class JMSSubscribeCore
[概 要]
JMSサーバトピックを購読する為の機能モデルクラスです。[詳 細]
JMSトピックを通じてPub/Sub通信を行う為のクラスです。必須設定メソッド
setTopicName(String) : メッセージ送信対象トピック名設定[備 考]
使用例)
package demo.chat.action;
import java.util.List;
import javax.jms.TextMessage;
import javax.swing.JTextArea;
import jp.co.fujitsu.reffi.client.swing.action.BaseAction;
import jp.co.fujitsu.reffi.client.swing.event.ModelProcessEvent;
import jp.co.fujitsu.reffi.client.swing.model.JMSSubscribeCore;
import jp.co.fujitsu.reffi.client.swing.model.Model;
public class EnterChannelAction extends BaseAction {
@Override
protected void reserveModels(List> models) {
models.add(JMSSubscribeCore.class);
}
@Override
public boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception {
if(index == 0) {
((JMSSubscribeCore)next).setTopicName("topic/chatTopic");
}
return true;
}
@Override
public void successForward(int index, Model model, Object result) throws Exception {
String remark = ((TextMessage)result).getText();
JTextArea jtaLog = (JTextArea)getComponent("chatFrame.jtaLog");
jtaLog.append(remark + System.getProperty("line.separator"));
}
}
任意のトピックメッセージを3回受信したら購読を中止する。
package demo.chat.action;
import java.util.List;
import jp.co.fujitsu.reffi.client.swing.action.BaseAction;
import jp.co.fujitsu.reffi.client.swing.event.ModelProcessEvent;
import jp.co.fujitsu.reffi.client.swing.manager.JMSSubscribeCoreManager;
import jp.co.fujitsu.reffi.client.swing.model.JMSSubscribeCore;
import jp.co.fujitsu.reffi.client.swing.model.Model;
public class SpecificTimeSubscribeAction extends BaseAction {
@Override
protected void reserveModels(List> models) {
models.add(JMSSubscribeCore.class);
}
@Override
public boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception {
if(index == 0) {
((JMSSubscribeCore)next).setTopicName("topic/dataTopic");
((JMSSubscribeCore)next).setIdentifier(String.valueOf(hashCode()));
}
return true;
}
@Override
public void successForward(int index, Model model, Object result) throws Exception {
System.out.println("受信したトピックメッセージ : " + result);
if(((JMSSubscribeCore)model).getSuccessCount() == 3) {
JMSSubscribeCoreManager.getInstance().unsubscribe("topic/dataTopic", String.valueOf(hashCode()));
}
}
@Override
public void complete(ParameterMapping parameterMapping) throws Exception {
System.out.println("受信終了");
}
}
[環 境] JDK 6.0 Update 11
Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.
| コンストラクタの概要 | |
|---|---|
JMSSubscribeCore()
|
|
| メソッドの概要 | |
|---|---|
String |
getClientId()
[概 要] TopicConnectionに与えるClientIdを取得します。 |
String |
getConnectionFactoryName()
[概 要] JMSコネクションファクトリJNDI名を返却します。 |
String |
getDurableSubscriberName()
[概 要] durableモードで作られたTopicSubscriberの名前を取得します。 |
Hashtable<String,String> |
getEnvironment()
[概 要] JMS接続を行う為の接続先環境設定プロパティを返却します。 |
String |
getIdentifier()
[概 要] トピックを受信中のJMSSubscribeCoreを識別する為の識別子を返却します。 |
TopicSubscriber |
getSubscriber()
[概 要] Topicを購読するオブジェクトを返却します。 |
Topic |
getTopic()
[概 要] 購読を行うトピックを返却します。 |
TopicConnection |
getTopicConnection()
[概 要] サーバとのトピックコネクションを返却します。 |
String |
getTopicName()
[概 要] 購読開始、中止対象トピック名を返却します。 |
TopicSession |
getTopicSession()
[概 要] サーバとのトピックコネクションを返却します。 |
boolean |
isDurable()
[概 要] TopicSubscriberをdurableモードで作るかどうかのフラグを取得します。 |
boolean |
isFireSuccessEventImmediately()
[概 要] Subscribe開始をモデル処理成功と見做すかどうかのフラグを返却します。 |
boolean |
isUnsubscribe()
[概 要] 開始、中止を判断するフラグを返却します。 |
protected void |
mainproc()
[概 要] 購読の開始、停止をJMSSubscriberManagerに委譲します。 |
void |
onMessage(Message msg)
[概 要] トピックメッセージ受信ハンドラです。 |
void |
onUnsubscribe()
[概 要] subscribe終了時にテンプレートコールされます。 |
protected void |
postSubscribe(Message msg)
[概 要] subscribe結果受信用オーバーライドメソッドです。 |
protected void |
postUnsubscribe()
[概 要] subscribe終了時にテンプレートコールされるオーバーライドメソッドです。 |
void |
setClientId(String clientId)
[概 要] TopicConnectionに与えるClientIdを設定します。 |
void |
setConnectionFactoryName(String connectionFactoryName)
[概 要] JMSコネクションファクトリJNDI名を設定します。 |
void |
setDurable(boolean durable)
[概 要] TopicSubscriberをdurableモードで作るかどうかのフラグを設定します。 |
void |
setDurableSubscriberName(String durableSubscriberName)
[概 要] durableモードで作られたTopicSubscriberの名前を設定します。 |
void |
setEnvironment(Hashtable<String,String> environment)
[概 要] JMS接続を行う為の接続先環境設定プロパティを設定します。 |
void |
setFireSuccessEventImmediately(boolean fireSuccessEventImmediately)
[概 要] Subscribe開始をモデル処理成功と見做すかどうかのフラグを設定します。 |
void |
setIdentifier(String identifier)
[概 要] トピックを受信中のJMSSubscribeCoreを識別する為の識別子を設定します。 |
void |
setSubscriber(TopicSubscriber subscriber)
[概 要] Topicを購読するオブジェクトを設定します。 |
void |
setTopic(Topic topic)
[概 要] 購読を行うトピックを設定します。 |
void |
setTopicConnection(TopicConnection topicConnection)
[概 要] サーバとのトピックコネクションを設定します。 |
void |
setTopicName(String topicName)
[概 要] 購読開始、中止対象トピック名を設定します。 |
void |
setTopicSession(TopicSession topicSession)
[概 要] サーバとのトピックコネクションを返却します。 |
void |
setUnsubscribe(boolean unsubscribe)
[概 要] 購読中止を判断するフラグを設定します。 |
| クラス jp.co.fujitsu.reffi.client.swing.model.BaseModel から継承されたメソッド |
|---|
addModelProcessListener, call, done, finalproc, fireModelFailure, fireModelFinished, fireModelSuccess, getController, getExecuteIndex, getListenerList, getParameterMapping, getResult, getSuccessCount, incrementSuccessCount, init, isAsync, isSkip, postproc, 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 |
| コンストラクタの詳細 |
|---|
public JMSSubscribeCore()
| メソッドの詳細 |
|---|
public String getIdentifier()
[概 要]
トピックを受信中のJMSSubscribeCoreを識別する為の識別子を返却します。[詳 細]
identifierフィールドを返却します。[備 考]
public void setIdentifier(String identifier)
[概 要]
トピックを受信中のJMSSubscribeCoreを識別する為の識別子を設定します。[詳 細]
identifierフィールドを引数identifierで設定します。[備 考]
同一Topicを購読するJMSSubscriberCoreが複数存在する場合、このメソッドで ユニーク名を設定して下さい。 購読停止時はこのidentifierを指定することで任意のJMSSubscriberCoreを 停止させることが出来ます。
identifier - トピックを受信中のJMSSubscribeCoreを識別する為の識別子public boolean isUnsubscribe()
[概 要]
開始、中止を判断するフラグを返却します。[詳 細]
unsubscribeフィールドを返却します。[備 考]
public void setUnsubscribe(boolean unsubscribe)
[概 要]
購読中止を判断するフラグを設定します。[詳 細]
unsubscribeフィールドに引数unsubscribeを設定します。[備 考]
unsubscribe - 購読中止を判断するフラグpublic Hashtable<String,String> getEnvironment()
[概 要]
JMS接続を行う為の接続先環境設定プロパティを返却します。[詳 細]
environmentフィールドを返却します。[備 考]
public void setEnvironment(Hashtable<String,String> environment)
[概 要]
JMS接続を行う為の接続先環境設定プロパティを設定します。[詳 細]
environmentフィールドを引数environmentで設定します。[備 考]
environment - JMS接続を行う為の接続先環境設定プロパティpublic TopicConnection getTopicConnection()
[概 要]
サーバとのトピックコネクションを返却します。[詳 細]
topicConnectionフィールドを返却します。[備 考]
public void setTopicConnection(TopicConnection topicConnection)
[概 要]
サーバとのトピックコネクションを設定します。[詳 細]
topicConnectionフィールドを引数topicConnectionで設定します。[備 考]
topicConnection - サーバとのトピックコネクションpublic TopicSession getTopicSession()
[概 要]
サーバとのトピックコネクションを返却します。[詳 細]
topicConnectionフィールドを返却します。[備 考]
public void setTopicSession(TopicSession topicSession)
[概 要]
サーバとのトピックコネクションを返却します。[詳 細]
topicConnectionフィールドを返却します。[備 考]
topicSession - サーバとのトピックコネクションpublic Topic getTopic()
[概 要]
購読を行うトピックを返却します。[詳 細]
topicフィールドを返却します。[備 考]
public void setTopic(Topic topic)
[概 要]
購読を行うトピックを設定します。[詳 細]
topicフィールドを引数topicで設定します。[備 考]
topic - 購読を行うトピックpublic String getTopicName()
[概 要]
購読開始、中止対象トピック名を返却します。[詳 細]
topicNameフィールドを返却します。[備 考]
public void setTopicName(String topicName)
[概 要]
購読開始、中止対象トピック名を設定します。[詳 細]
topicNameフィールドを引数topicNameで設定します。[備 考]
topicName - 購読開始、中止対象トピック名public TopicSubscriber getSubscriber()
[概 要]
Topicを購読するオブジェクトを返却します。[詳 細]
subscriberフィールドを返却します。[備 考]
public void setSubscriber(TopicSubscriber subscriber)
[概 要]
Topicを購読するオブジェクトを設定します。[詳 細]
subscriberフィールドを引数subscriberで設定します。[備 考]
subscriber - Topicを購読するオブジェクトpublic String getConnectionFactoryName()
[概 要]
JMSコネクションファクトリJNDI名を返却します。[詳 細]
connectionFactoryNameフィールドを返却します。[備 考]
public void setConnectionFactoryName(String connectionFactoryName)
[概 要]
JMSコネクションファクトリJNDI名を設定します。[詳 細]
connectionFactoryNameフィールドを引数connectionFactoryNameで設定します。[備 考]
connectionFactoryName - JMSコネクションファクトリJNDI名public String getClientId()
[概 要]
TopicConnectionに与えるClientIdを取得します。[詳 細]
clientIdフィールドを返却します。[備 考]
public void setClientId(String clientId)
[概 要]
TopicConnectionに与えるClientIdを設定します。[詳 細]
clientIdフィールドを引数clientIdで設定します。[備 考]
clientId - TopicConnectionに与えるClientIdpublic boolean isDurable()
[概 要]
TopicSubscriberをdurableモードで作るかどうかのフラグを取得します。[詳 細]
durableフィールドを返却します。[備 考]
デフォルトはfalseです。
public void setDurable(boolean durable)
[概 要]
TopicSubscriberをdurableモードで作るかどうかのフラグを設定します。[詳 細]
durableフィールドを引数durableで設定します。[備 考]
デフォルトはfalseです。
durable - TopicSubscriberをdurableモードで作るかどうかのフラグpublic String getDurableSubscriberName()
[概 要]
durableモードで作られたTopicSubscriberの名前を取得します。[詳 細]
durableSubscriberNameフィールドを返却します。[備 考]
public void setDurableSubscriberName(String durableSubscriberName)
[概 要]
durableモードで作られたTopicSubscriberの名前を設定します。[詳 細]
durableSubscriberNameフィールドを引数durableSubscriberNameで設定します。[備 考]
durableSubscriberName - durableモードで作られたTopicSubscriberの名前public boolean isFireSuccessEventImmediately()
[概 要]
Subscribe開始をモデル処理成功と見做すかどうかのフラグを返却します。[詳 細]
fireSuccessEventImmediatelyフィールドを返却します。[備 考]
public void setFireSuccessEventImmediately(boolean fireSuccessEventImmediately)
[概 要]
Subscribe開始をモデル処理成功と見做すかどうかのフラグを設定します。[詳 細]
fireSuccessEventImmediatelyフィールドを引数fireSuccessEventImmediatelyで設定します。 JMSSubscribeCoreは、メッセージを受信するまでModelProcessEvent.SUCCESS イベントを発行しません。
@Override
protected void reserveModels(List> models) {
models.add(JMSSubscribeCore.class);
models.add(HTTPRequestCore.class);
}
HTTPRequestCoreはJMSSubscribeCoreが最初のメッセージを受信するまで実行されません。
@Override
public boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception {
switch(index == 0) {
case 0 :
((JMSSubscribeCore)next).setFireSuccessEventImmediately(true);
:
break;
case 1 :
// JMSSubscribeCoreのメッセージ受信を待たずに処理が到達
((HTTPRequestCore)next).setRequestUrl("http://foo.bar.com");
:
break;
}
但し、このSUCCESSイベントはメッセージを受信したイベントでは無い為、
モデル処理結果resultはnullになります。
[備 考]
同様の機構としてBaseAction#isRunModelsAndNoWait()をオーバーライドしてtrue返却する 方法が有りますが、この場合は予約されている全ての機能モデルが、前モデルのModelProcessEvent.SUCCESS を待たずに実行されるようになります。
fireSuccessEventImmediately - コンシューム開始をモデル処理成功と見做すかどうかのフラグ
protected void mainproc()
throws NamingException,
JMSException
[概 要]
購読の開始、停止をJMSSubscriberManagerに委譲します。[詳 細]
JMSSubscribCoreManager#subscribe(String, JMSSubscribeCore)
をgetTopicName()、thisを引数としてコールします。
isUnsubscribeがtrueの場合、
JMSSubscribCoreManager#unsubscribe(String, String)
をgetTopicName()、getIdentifier()を引数としてコールします。
JMSSubscriberManagerは管理しているJMSSubscribeCoreの中からgetTopicName()を購読中
のgetIdentifier()を持つJMSSubscribeCoreを探し、購読を停止させます。
getIdentifier()が指定されていない場合、getTopicName()を購読中の全JMSSubscribeCore
に購読を停止させます。
[備 考]
BaseModel 内の mainprocJMSException
NamingExceptionpublic final void onMessage(Message msg)
[概 要]
トピックメッセージ受信ハンドラです。[詳 細]
MessageListener.onMessage(Message)を実装します。
受信したメッセージをsetResultメソッドでモデル処理結果とし、
postSubscribe(Message)メソッドをテンプレートコールして
JMSSubscribeCoreの継承モデルで受信メッセージを汎用的に加工可能にします。
postSubscribeの終了後、モデル処理成功イベントを発行します。
[備 考]
MessageListener 内の onMessagemsg - 受信したJMSメッセージprotected void postSubscribe(Message msg)
[概 要]
subscribe結果受信用オーバーライドメソッドです。[詳 細]
デフォルト処理は有りません。[備 考]
全ての受信メッセージに対して共通の処理を行う場合、 このメソッドをオーバーライドした機能モデルを作成することで、 メッセージ加工処理を局所化出来ます。
msg - subscribeの結果受信したオブジェクトpublic final void onUnsubscribe()
[概 要]
subscribe終了時にテンプレートコールされます。[詳 細]
postUnsubscribe()をコールしてModelProcessEvent.FINISHED
イベントを発行します。
[備 考]
protected void postUnsubscribe()
[概 要]
subscribe終了時にテンプレートコールされるオーバーライドメソッドです。[詳 細]
デフォルト処理は有りません。[備 考]
このメソッドをオーバーライドすることでUnsubscribe時の共通処理を記述出来ます。
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||