4.3. メッセージ駆動型 bean
メッセージ駆動型 bean は、特別な EJB3 bean で、スタブからのプロキシメソッドの呼び出しではなく JMS メッセージを使いサービスリクエストを受信します。そのため、メッセージ駆動型 bean の重要な設定パラメーターは、リッスンする JMS メッセージキューはどれか指定するためのものです。キューに受信メッセージがある場合、サーバーは bean の
onMessage() メソッドを呼び出し、このメソッドをメッセージ内で渡し処理を行います。bean クラスは @MessageDriven アノテーションで JMS キューを指定します。このキューはローカルの JNDI java:comp/env/ 名前空間に登録されます。
@MessageDriven(activationConfig =
{
@ActivationConfigProperty(propertyName="destinationType",
propertyValue="javax.jms.Queue"),
@ActivationConfigProperty(propertyName="destination",
propertyValue="queue/MyQueue")
})
public class MyJmsBean implements MessageListener {
public void onMessage (Message msg) {
// ... do something with the msg ...
}
// ... ...
}
メッセージ駆動型 bean がデプロイされると、受信メッセージキューが存在しない場合は自動で作成されます。Bean にメッセージを送信するには、標準の JMS API を使ってください。
try {
InitialContext ctx = new InitialContext();
queue = (Queue) ctx.lookup("queue/MyQueue");
QueueConnectionFactory factory =
(QueueConnectionFactory) ctx.lookup("ConnectionFactory");
cnn = factory.createQueueConnection();
sess = cnn.createQueueSession(false,
QueueSession.AUTO_ACKNOWLEDGE);
} catch (Exception e) {
e.printStackTrace ();
}
TextMessage msg = sess.createTextMessage(...);
sender = sess.createSender(queue);
sender.send(msg);
JMS 仕様あるいは書籍を参照し、JMS API のプログラミングの方法について学習してみてください。