指定された Java Message Service (JMS) メッセージ キューからメッセージを取得します。
このタグでは、JMS メッセージ セレクタを表す、SQL SELECT
に囲まれた文字列を使用して、getmsg
タグで返されるメッセージ キュー名、検索条件、メッセージ取得順序、メッセージのプロパティを識別します。getmsg
タグ内でフロー制御タグを使用してメッセージ セレクタ ステートメントを動的に構築できます。getmsg
タグが transaction
タグの中にある場合、getmsg
タグがトランザクションの構成部分となり、getmsg
動作を完了できるかどうかはそのトランザクションの全動作によって決まります。トランザクション内の sql
、sendmsg
、getmsg
などのすべての動作が完了すると、変更がすべて保存されます。すべての動作が完了しない場合は、例外が発生し、変更がロール バックされます。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>
必須。java.lang.String
または javax.jms.QueueConnectionFactory
を取り
ます。
メッセージのソースであるメッセージ QueueConnectionFactory。文字列を指定
すると、"java:comp/env/jms/[msgsrc]" で JNDI 検索 (ルックアップ) を実行す
ることで、QueueConnectionFactory が取得できると仮定されます。
QueueConnectionFactory
オブジェクトを既定の InitialContext から取得でき
ない場合は、jndi
タグを使用して別の InitialContext を検索してファクトリを
見つける必要があります。詳細については、jndiセクションを参照してください。
オプション。java.lang.String
を取ります。
メッセージ キュー認証のためのユーザ名。
オプション。java.lang.String
を取ります。
メッセージ キュー認証に必要なパスワード。
必須。java.lang.String
を取ります。
取得するメッセージのスクリプト変数名。param
タグを使用してこの名前を持つ
スクリプト変数を宣言します。
オプション。java.lang.String
または int
を取ります。
このタグによって返されるオブジェクトの既定の JSP スコープ。有効な値は、
page
、request
、session
、および application
です。既定値は page
です。
id
を指定した場合、getmsg
タグによって返される結果セットは pageContext
オブジェクトに allaire.taglib.MessageTable
のインスタンスとして格納されます。返されるオブジェクトのスコープは、タグの scope
によって決まり、その既定値は page
です。param
タグを使用してこのオブジェクトのスクリプト変数を宣言すると、定義されたスコープ内でその変数を暗黙オブジェクトのように使用できます。
getmsg
タグによって返される allaire.taglib.MessageTable
の列は、メッセージ プロパティ名とメッセージ本文の結合を最後の列として示します。この列には、必ず Message
という名前が付いています。Message
は、byte[]
、Map
、Object
、または String
のいずれかになります。allaire.taglib.MessageTable
クラスにより、allaire.taglib.QueryTable
クラスが拡張されます。QueryTable
には javax.sql.
インターフェイスが実装されています。このインターフェイスによって
RowSetjava.
が拡張されます。
sql.ResultSetsql
、storedproc
、getmsg
、getmail
、および jndi
タグを使用する前に、javax.sql.RowSet
および java.sql.ResultSet
について把握しておくことをお勧めします。詳細については、次の URL にある JDBC API のマニュアルを参照してください。
これは、getmsg
タグとスクリプト変数を併用する場合の共通のシナリオです。この例では getObject
が使用されていますが、RowSet
には異なるオブジェクト タイプを使用するほかの多くの getter メソッドがあります。
param
タグで MessageTable
または RowSet
にタイプ変換します。
<jrun:param id="result" type="MessageTable"/>
または
<jrun:param id="result" type="javax.sql.RowSet"/>
<jrun:foreach group='<%=result%>'>
<%= result.getObject("propertyname1") %><br>
<%= result.getObject("message") %><br>
</jrun:foreach>
次の表では、getmsg
クエリ結果セットで最も一般的に使用されるメソッドについて説明しています。
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>