getmsg

説明

指定された Java Message Service (JMS) メッセージ キューからメッセージを取得します。

このタグでは、JMS メッセージ セレクタを表す、SQL SELECT に囲まれた文字列を使用して、getmsg タグで返されるメッセージ キュー名、検索条件、メッセージ取得順序、メッセージのプロパティを識別します。getmsg タグ内でフロー制御タグを使用してメッセージ セレクタ ステートメントを動的に構築できます。getmsg タグが transaction タグの中にある場合、getmsg タグがトランザクションの構成部分となり、getmsg 動作を完了できるかどうかはそのトランザクションの全動作によって決まります。トランザクション内の sqlsendmsggetmsg などのすべての動作が完了すると、変更がすべて保存されます。すべての動作が完了しない場合は、例外が発生し、変更がロール バックされます。getmsg タグでは、allaire.taglib.Transaction インターフェイスを使用して、transaction タグにネストされているかどうかを確認します。

getmsg タグでは、JMS QueueConnectionFactory および JNDI 検索 (ルックアップ) による JMS メッセージ キューを使用します。JMS 接続プールが指定されます。JRun 管理者は、Web アプリケーションで使用するメッセージ キュー オブジェクトをあらかじめ定義しておく必要があります。詳細については、"前提条件"セクションを参照してください。

JMS メッセージ セレクタ文字列はオプションです。JMS メッセージ セレクタの詳細については、javax.jms.Message API のマニュアルを参照してください。

構文

<jrun:getmsg
  msgsrc="queue connection factory"
  [username="user name"]
  [password="password"]
  [id="variable name"]
  [scope="page|request|session|application"]>
  SELECT {プロパティ名のカンマ区切りリストまたは *}
  FROM {メッセージ キュー名}
  WHERE {JMS 仕様に定義された有効メッセージ セレクタ文字列}
</jrun:getmsg>

属性

msgsrc

必須。java.lang.String または javax.jms.QueueConnectionFactory を取り ます。

メッセージのソースであるメッセージ QueueConnectionFactory。文字列を指定 すると、"java:comp/env/jms/[msgsrc]" で JNDI 検索 (ルックアップ) を実行す ることで、QueueConnectionFactory が取得できると仮定されます。
QueueConnectionFactory オブジェクトを既定の InitialContext から取得でき ない場合は、jndi タグを使用して別の InitialContext を検索してファクトリを 見つける必要があります。詳細については、jndiセクションを参照してください。

username

オプション。java.lang.String を取ります。

メッセージ キュー認証のためのユーザ名。

password

オプション。java.lang.String を取ります。

メッセージ キュー認証に必要なパスワード。

id

必須。java.lang.String を取ります。

取得するメッセージのスクリプト変数名。param タグを使用してこの名前を持つ スクリプト変数を宣言します。

scope

オプション。java.lang.String または int を取ります。

このタグによって返されるオブジェクトの既定の JSP スコープ。有効な値は、 pagerequestsession、および application です。既定値は page です。

スクリプト
変数

id を指定した場合、getmsg タグによって返される結果セットは pageContext オブジェクトに allaire.taglib.MessageTable のインスタンスとして格納されます。返されるオブジェクトのスコープは、タグの scope によって決まり、その既定値は page です。param タグを使用してこのオブジェクトのスクリプト変数を宣言すると、定義されたスコープ内でその変数を暗黙オブジェクトのように使用できます。

getmsg タグによって返される allaire.taglib.MessageTable の列は、メッセージ プロパティ名とメッセージ本文の結合を最後の列として示します。この列には、必ず Message という名前が付いています。Message は、byte[]MapObject、または String のいずれかになります。allaire.taglib.MessageTable クラスにより、allaire.taglib.QueryTable クラスが拡張されます。QueryTable には javax.sql.
RowSet
インターフェイスが実装されています。このインターフェイスによって java.
sql.ResultSet
が拡張されます。sqlstoredprocgetmsggetmail、および jndi タグを使用する前に、javax.sql.RowSet および java.sql.ResultSet について把握しておくことをお勧めします。詳細については、次の URL にある JDBC API のマニュアルを参照してください。

これは、getmsg タグとスクリプト変数を併用する場合の共通のシナリオです。この例では getObject が使用されていますが、RowSet には異なるオブジェクト タイプを使用するほかの多くの getter メソッドがあります。

次の表では、getmsg クエリ結果セットで最も一般的に使用されるメソッドについて説明しています。

メソッド
返される
タイプ

説明
next()
Boolean
TRUE の場合、結果セットで次の行を取得します。
getObject(int)
Object
インデックス番号によって列を取得します。
getObject(String)
Object
名前によって列を取得します。
get(int)
String
インデックス番号によって列を取得します。この QueryTable メソッドは下位互換性のために用意されているので、同じ機能を持つ getObject(int) の使用をお勧めします。
get(String)
String
名前によって列を取得します。この QueryTable メソッドは下位互換性のために用意されているので、同じ機能を持つ getObject(String) の使用をお勧めします。

前提条件

sendmsg および getmsg タグを使用するには、EJB および JMS オプションを含む完全な JRun インストールを実行する必要があります。ユーザ独自のメッセージ キューを指定する場合は、JRun サーバの local.properties ファイルを編集して、次のエントリを加えます。

jms.queue.[your queue name].description=[description]
jms.queue.[your queue name].display-name=[displayname in JMC]

この JSP は、getmsg タグの使用方法を示しています。

<%@ page import="allaire.taglib.*" %>
<%@ taglib uri="jruntags" prefix="jrun" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>getmsg Tag Example</title>
</head>
<body>
<%--
Queue1 という名前のメッセージ キューからすべてのメッセージを取得します。
<jrun:getmsg msgsrc="QueueConnectionFactory" id="result">
select * from Queue1
</jrun:getmsg>
<%--
結果セットをループ化し、メッセージ property1 および取得されたメッセージのメッセージ
本文を表示します。
--%>
<jrun:param id="table" type="MessageTable"/>
<jrun:foreach group="<%= result %>">
<%= result.getObject("propertyname1") %><br>
<%= result.getObject("message") %><br>
</jrun:foreach> </body> </html>