|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjp.co.fujitsu.reffi.client.swing.model.BaseModel
jp.co.fujitsu.reffi.client.swing.model.JMSConsumeCore
public class JMSConsumeCore
[概 要]
JMSサーバキューを購読する為の機能モデルクラスです。[詳 細]
JMSキューを使用してP2P通信を行う為のクラスです。必須設定メソッド
setQueueName(String) : メッセージ送信対象キュー名設定[備 考]
使用例)
package demo.serverpush.action;
import java.util.Date;
import java.util.List;
import java.util.Vector;
import javax.jms.MapMessage;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JToggleButton;
import javax.swing.table.DefaultTableModel;
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.JMSConsumeCore;
import jp.co.fujitsu.reffi.client.swing.model.Model;
public class ClientConsumeAction extends BaseAction {
@Override
protected boolean prepare(ParameterMapping parameterMapping) throws Exception {
// トグルボタンが押下中は受信中
if((Boolean)getComponentValue("serverPushFrame.jtbClientConsume")) {
((JToggleButton)getComponent("serverPushFrame.jtbClientConsume")).setText("受信中");
}else{
((JToggleButton)getComponent("serverPushFrame.jtbClientConsume")).setText("開 始");
}
return true;
}
@Override
protected void reserveModels(List> models) {
models.add(JMSConsumeCore.class);
}
@Override
public boolean nextModel(int index, ModelProcessEvent prev, Model next)
throws Exception {
if(index == 0) {
((JMSConsumeCore)next).setQueueName("queue/testQueue");
if((Boolean)getComponentValue("serverPushFrame.jtbClientConsume")) {
// 受信開始
((JMSConsumeCore)next).setIdentifier(String.valueOf(getOwnWindow().hashCode()));
((JMSConsumeCore)next).setConsume(true);
}else{
// 受信停止
((JMSConsumeCore)next).setIdentifier(String.valueOf(getOwnWindow().hashCode()));
((JMSConsumeCore)next).setConsume(false);
}
}
return true;
}
@Override
public void successForward(int index, Model model, Object result) throws Exception {
if((Boolean)getComponentValue("serverPushFrame.jtbClientConsume")) {
// 受信中は受信したMapMessageを画面上のJTableに表示
JTable jtConsumeResult = (JTable)getComponent("serverPushFrame.jtConsumeResult");
DefaultTableModel tableModel = (DefaultTableModel)jtConsumeResult.getModel();
MapMessage mapMessage = (MapMessage)result;
String sendIndex = mapMessage.getString("index");
String sendMessage = mapMessage.getString("message");
Date consumeDate = new Date();
Vector rowData = new Vector();
rowData.add(sendIndex);
rowData.add(sendMessage);
rowData.add(consumeDate.toString());
tableModel.addRow(rowData);
JScrollPane jspConsumeResult = (JScrollPane)getComponent("serverPushFrame.jspConsumeResult");
JScrollBar nob = jspConsumeResult.getVerticalScrollBar();
if(nob != null) {
nob.setValue(nob.getMaximum());
}
}
}
@Override
public Exception failureForward(int index, Model model, Exception e) {
System.out.println("受信失敗");
return e;
}
}
[環 境] JDK 6.0 Update 11
Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.
| コンストラクタの概要 | |
|---|---|
JMSConsumeCore()
|
|
| メソッドの概要 | |
|---|---|
java.lang.String |
getClientId()
[概 要] QueuConnectionに与えるClientIdを取得します。 |
java.lang.String |
getConnectionFactoryName()
[概 要] JMSコネクションファクトリJNDI名を返却します。 |
javax.jms.MessageConsumer |
getConsumer()
[概 要] Queueを購読するオブジェクトを返却します。 |
java.util.Hashtable<java.lang.String,java.lang.String> |
getEnvironment()
[概 要] JMS接続を行う為の接続先環境設定プロパティを返却します。 |
java.lang.String |
getIdentifier()
[概 要] キューを受信中のJMSConsumeCoreを識別する為の識別子を返却します。 |
javax.jms.Queue |
getQueue()
[概 要] 購読を行うキューを返却します。 |
javax.jms.QueueConnection |
getQueueConnection()
[概 要] サーバとのキューコネクションを返却します。 |
java.lang.String |
getQueueName()
[概 要] 購読開始、中止対象キュー名を返却します。 |
javax.jms.QueueSession |
getQueueSession()
[概 要] サーバとのキューコネクションを返却します。 |
boolean |
isFireSuccessEventImmediately()
[概 要] コンシューム開始をモデル処理成功と見做すかどうかのフラグを返却します。 |
boolean |
isUnconsume()
[概 要] consume中止を判断するフラグを返却します。 |
protected void |
mainproc()
[概 要] 購読の開始、停止をJMSConsumerManagerに委譲します。 |
void |
onMessage(javax.jms.Message msg)
[概 要] キューメッセージ受信ハンドラです。 |
void |
onUnconsume()
[概 要] consume終了時にテンプレートコールされます。 |
protected void |
postConsume(javax.jms.Message msg)
[概 要] consume結果受信用オーバーライドメソッドです。 |
protected void |
postUnconsume()
[概 要] consume終了時にテンプレートコールされるオーバーライドメソッドです。 |
void |
setClientId(java.lang.String clientId)
[概 要] QueueConnectionに与えるClientIdを設定します。 |
void |
setConnectionFactoryName(java.lang.String connectionFactoryName)
[概 要] JMSコネクションファクトリJNDI名を設定します。 |
void |
setConsumer(javax.jms.MessageConsumer consumer)
[概 要] Queueを購読するオブジェクトを設定します。 |
void |
setEnvironment(java.util.Hashtable<java.lang.String,java.lang.String> environment)
[概 要] JMS接続を行う為の接続先環境設定プロパティを設定します。 |
void |
setFireSuccessEventImmediately(boolean fireSuccessEventImmediately)
[概 要] コンシューム開始をモデル処理成功と見做すかどうかのフラグを設定します。 |
void |
setIdentifier(java.lang.String identifier)
[概 要] キューを受信中のJMSConsumeCoreを識別する為の識別子を設定します。 |
void |
setQueue(javax.jms.Queue queue)
[概 要] 購読を行うキューを設定します。 |
void |
setQueueConnection(javax.jms.QueueConnection queueConnection)
[概 要] サーバとのキューコネクションを設定します。 |
void |
setQueueName(java.lang.String queueName)
[概 要] 購読開始、中止対象キュー名を設定します。 |
void |
setQueueSession(javax.jms.QueueSession queueSession)
[概 要] サーバとのキューコネクションを返却します。 |
void |
setUnconsume(boolean unconsume)
[概 要] 開始、中止を判断するフラグを設定します。 |
| クラス 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 JMSConsumeCore()
| メソッドの詳細 |
|---|
public java.lang.String getIdentifier()
[概 要]
キューを受信中のJMSConsumeCoreを識別する為の識別子を返却します。[詳 細]
identifierフィールドを返却します。[備 考]
public void setIdentifier(java.lang.String identifier)
[概 要]
キューを受信中のJMSConsumeCoreを識別する為の識別子を設定します。[詳 細]
identifierフィールドを引数identifierで設定します。[備 考]
同一Queueを購読するJMSConsumerCoreが複数存在する場合、このメソッドで ユニーク名を設定して下さい。 購読停止時はこのidentifierを指定することで任意のJMSConsumerCoreを 停止させることが出来ます。
identifier - キューを受信中のJMSConsumeCoreを識別する為の識別子public boolean isUnconsume()
[概 要]
consume中止を判断するフラグを返却します。[詳 細]
unconsumeフィールドを返却します。[備 考]
public void setUnconsume(boolean unconsume)
[概 要]
開始、中止を判断するフラグを設定します。[詳 細]
unconsumeフィールドに引数unconsumeを設定します。[備 考]
unconsume - 開始、中止を判断するフラグpublic java.util.Hashtable<java.lang.String,java.lang.String> getEnvironment()
[概 要]
JMS接続を行う為の接続先環境設定プロパティを返却します。[詳 細]
environmentフィールドを返却します。[備 考]
public void setEnvironment(java.util.Hashtable<java.lang.String,java.lang.String> environment)
[概 要]
JMS接続を行う為の接続先環境設定プロパティを設定します。[詳 細]
environmentフィールドを引数environmentで設定します。[備 考]
environment - JMS接続を行う為の接続先環境設定プロパティpublic javax.jms.QueueConnection getQueueConnection()
[概 要]
サーバとのキューコネクションを返却します。[詳 細]
queueConnectionフィールドを返却します。[備 考]
public void setQueueConnection(javax.jms.QueueConnection queueConnection)
[概 要]
サーバとのキューコネクションを設定します。[詳 細]
queueConnectionフィールドを引数queueConnectionで設定します。[備 考]
queueConnection - サーバとのキューコネクションpublic javax.jms.QueueSession getQueueSession()
[概 要]
サーバとのキューコネクションを返却します。[詳 細]
queueConnectionフィールドを返却します。[備 考]
public void setQueueSession(javax.jms.QueueSession queueSession)
[概 要]
サーバとのキューコネクションを返却します。[詳 細]
queueConnectionフィールドを返却します。[備 考]
queueSession - サーバとのキューコネクションpublic javax.jms.Queue getQueue()
[概 要]
購読を行うキューを返却します。[詳 細]
queueフィールドを返却します。[備 考]
public void setQueue(javax.jms.Queue queue)
[概 要]
購読を行うキューを設定します。[詳 細]
queueフィールドを引数queueで設定します。[備 考]
queue - 購読を行うキューpublic java.lang.String getQueueName()
[概 要]
購読開始、中止対象キュー名を返却します。[詳 細]
queueNameフィールドを返却します。[備 考]
public void setQueueName(java.lang.String queueName)
[概 要]
購読開始、中止対象キュー名を設定します。[詳 細]
queueNameフィールドを引数queueNameで設定します。[備 考]
queueName - 購読開始、中止対象キュー名public javax.jms.MessageConsumer getConsumer()
[概 要]
Queueを購読するオブジェクトを返却します。[詳 細]
consumerフィールドを返却します。[備 考]
public void setConsumer(javax.jms.MessageConsumer consumer)
[概 要]
Queueを購読するオブジェクトを設定します。[詳 細]
consumerフィールドを引数consumerで設定します。[備 考]
consumer - Queueを購読するオブジェクトpublic java.lang.String getConnectionFactoryName()
[概 要]
JMSコネクションファクトリJNDI名を返却します。[詳 細]
connectionFactoryNameフィールドを返却します。[備 考]
public void setConnectionFactoryName(java.lang.String connectionFactoryName)
[概 要]
JMSコネクションファクトリJNDI名を設定します。[詳 細]
connectionFactoryNameフィールドを引数connectionFactoryNameで設定します。[備 考]
connectionFactoryName - JMSコネクションファクトリJNDI名public java.lang.String getClientId()
[概 要]
QueuConnectionに与えるClientIdを取得します。[詳 細]
clientIdフィールドを返却します。[備 考]
public void setClientId(java.lang.String clientId)
[概 要]
QueueConnectionに与えるClientIdを設定します。[詳 細]
clientIdフィールドを引数clientIdで設定します。[備 考]
clientId - QueueConnectionに与えるClientIdpublic boolean isFireSuccessEventImmediately()
[概 要]
コンシューム開始をモデル処理成功と見做すかどうかのフラグを返却します。[詳 細]
fireSuccessEventImmediatelyフィールドを返却します。[備 考]
public void setFireSuccessEventImmediately(boolean fireSuccessEventImmediately)
[概 要]
コンシューム開始をモデル処理成功と見做すかどうかのフラグを設定します。[詳 細]
fireSuccessEventImmediatelyフィールドを引数fireSuccessEventImmediatelyで設定します。 JMSConsumeCoreは、メッセージを受信するまでModelProcessEvent.SUCCESS イベントを発行しません。
@Override
protected void reserveModels(List> models) {
models.add(JMSConsumeCore.class);
models.add(HTTPRequestCore.class);
}
HTTPRequestCoreはJMSConsumeCoreが最初のメッセージを受信するまで実行されません。
@Override
public boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception {
switch(index == 0) {
case 0 :
((JMSConsumeCore)next).setFireSuccessEventImmediately(true);
:
break;
case 1 :
// JMSConsumeCoreのメッセージ受信を待たずに処理が到達
((HTTPRequestCore)next).setRequestUrl("http://foo.bar.com");
:
break;
}
但し、このSUCCESSイベントはメッセージを受信したイベントでは無い為、
モデル処理結果resultはnullになります。
[備 考]
同様の機構としてBaseAction#isRunModelsAndNoWait()をオーバーライドしてtrue返却する 方法が有りますが、この場合は予約されている全ての機能モデルが、前モデルのModelProcessEvent.SUCCESS を待たずに実行されるようになります。
fireSuccessEventImmediately - コンシューム開始をモデル処理成功と見做すかどうかのフラグ
protected void mainproc()
throws javax.naming.NamingException,
javax.jms.JMSException
[概 要]
購読の開始、停止をJMSConsumerManagerに委譲します。[詳 細]
JMSConsumeCoreManager.consume(String, JMSConsumeCore)
をgetQueueName()、thisを引数としてコールします。
isUnconsumeがtrueの場合、
JMSConsumeCoreManager.unconsume(String, String)
をgetQueueName()、getIdentifier()を引数としてコールします。
JMSConsumerManagerは管理しているJMSConsumeCoreの中からgetQueueName()を購読中
のgetIdentifier()を持つJMSConsumeCoreを探し、購読を停止させます。
getIdentifier()が指定されていない場合、getQueueName()を購読中の全JMSConsumeCore
に購読を停止させます。
[備 考]
BaseModel 内の mainprocjavax.jms.JMSException
javax.naming.NamingExceptionpublic void onMessage(javax.jms.Message msg)
[概 要]
キューメッセージ受信ハンドラです。[詳 細]
MessageListener.onMessage(Message)を実装します。
受信したメッセージをsetResultメソッドでモデル処理結果とし、
postConsume(Message)メソッドをテンプレートコールして
JMSConsumeCoreの継承モデルで受信メッセージを汎用的に加工可能にします。
postConsumeの終了後、モデル処理成功イベントを発行します。
[備 考]
javax.jms.MessageListener 内の onMessagemsg - 受信したJMSメッセージprotected void postConsume(javax.jms.Message msg)
[概 要]
consume結果受信用オーバーライドメソッドです。[詳 細]
デフォルト処理は有りません。[備 考]
全ての受信メッセージに対して共通の処理を行う場合、 このメソッドをオーバーライドした機能モデルを作成することで、 メッセージ加工処理を局所化出来ます。
msg - consumeの結果受信したオブジェクトpublic final void onUnconsume()
[概 要]
consume終了時にテンプレートコールされます。[詳 細]
postUnconsume()をコールしてModelProcessEvent.FINISHED
イベントを発行します。
[備 考]
protected void postUnconsume()
[概 要]
consume終了時にテンプレートコールされるオーバーライドメソッドです。[詳 細]
デフォルト処理は有りません。[備 考]
このメソッドをオーバーライドすることでUnconsume時の共通処理を記述出来ます。
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||