[グローバルトランザクションのMessageProducer]
import javax.jms.*; import javax.naming.*; public class Producer { public static void main( String[] args ) { Connection connection = null; ... try { java.util.Hashtable env = new java.util.Hashtable( ); env.put ( javax.naming.Context.INITIAL_CONTEXT_FACTORY , "com.fujitsu.interstage.j2ee.jndi.InitialContextFactoryForClient" ); InitialContext initialContext = new InitialContext(env); /* 1 */ ConnectionFactory connectionFactory = (ConnectionFactory) initialContext.lookup("java:comp/env/jms/ConnectionFactory"); /* 2 */ Destination destination = (Destination) initialContext.lookup("java:comp/env/jms/Destination"); /* 3 */ javax.transaction.UserTransaction ut =(javax.transaction.UserTransaction) initialContext.lookup("java:comp/UserTransaction"); /* 4 */ connection = connectionFactory.createConnection(); /* 5 */ Session session = connection.createSession(true, 0); /* 6 */ MessageProducer producer = session.createProducer(destination); /* 7 */ TextMessage Message = session.createTextMessage( ); Message.setText( "Message" ); ut.begin(); /* 8 */ producer.send(Message); /* 9 */ ut.commit(); /* 10 */ } catch( Exception e ) { ... } finally { if( null != connection ) { try { connection.close(); /* 11 */ } catch( Exception e ) { ... } } } } }
JNDIの開始コンテキストを構築します。
ConnectionFactoryオブジェクトを取得します(JNDI名が“ConnectionFactory”の場合)。
Destinationオブジェクトを取得します(JNDI名が“Destination”の場合)。
UserTransactionオブジェクトを取得します。
Connectionを作成します。
Sessionを作成します。
MessageProducerを作成します。
グローバルトランザクションを開始します。
メッセージを送信します(MessageタイプがTextMessageで送信メッセージが“Message”の場合)。
グローバルトランザクションを完了します。
Connectionをクローズします。
注意
JNDIの開始コンテキスト構築時の環境プロパティの指定については、“J2EEアプリケーションクライアント”を参照してください。