簡単なメッセージ駆動型Bean

Message Driven Beanの簡単なアプリケーションです。

このサンプルは、クライアントからonMessageメソッドを呼び出す Message Driven Beanです。

ソースコードはsamples/j2ee/ejb/MDBSimpleBean/srcに、 ビルド済みアプリケーションはsamples/j2ee/ejb/MDBSimpleBean/jarsにあります。

 
Enterprise Beanクラス

MDBSimpleBean.java


/*
  Copyright (C) NEC Corporation 2004
  NEC CONFIDENTIAL AND PROPRIETARY
  All rights reserved by NEC Corporation.
  This program must be used solely for the purpose for which
  it was furnished by NEC Corporation. No part of this
  program may be reproduced or disclosed to others, in any
  form, without the prior written permission of NEC
  Corporation. Use of copyright notice does not evidence
  publication of the program. 

*/

package sample;

import javax.ejb.*;
import javax.jms.*;

public class MDBSimpleBean implements MessageDrivenBean, MessageListener {

    private MessageDrivenContext messageContext;

    public MDBSimpleBean() {}

    public void setMessageDrivenContext(MessageDrivenContext arg0) {
        this.messageContext = arg0;
    }

    public void ejbCreate() {
        System.out.println("ejbCreate() called");
    }

    public void ejbRemove() {
        System.out.println("ejbRemove() called");
    }

    public void onMessage(Message arg0) {
        if(arg0 instanceof TextMessage) {
            try {
                TextMessage mess = (TextMessage)arg0;
                System.out.println("Message received: " + mess.getText());
            } catch(JMSException ex) {
                System.err.println("Exception caught: " + ex);
            }
        } else {
                System.out.println("Unmatched message type!");
        }
    }
}

 
クライアントクラス

MDBSimpleClient.java


/*
  Copyright (C) NEC Corporation 2004
  NEC CONFIDENTIAL AND PROPRIETARY
  All rights reserved by NEC Corporation.
  This program must be used solely for the purpose for which
  it was furnished by NEC Corporation. No part of this
  program may be reproduced or disclosed to others, in any
  form, without the prior written permission of NEC
  Corporation. Use of copyright notice does not evidence
  publication of the program. 

*/
package sample;

import javax.jms.*;
import javax.naming.*;

public class MDBSimpleClient {

    public MDBSimpleClient(){}

    public static void main(String args[]){
        Context context = null;
        ConnectionFactory connectionFactory = null;
        Queue queue = null;
        QueueConnectionFactory queueConneionFactory = null;
        QueueConnection connection = null;
        QueueSession session = null;
        QueueSender sender = null;
        TextMessage message = null;
        try {
            InitialContext initialcontext = new InitialContext();
            context = (Context)initialcontext.lookup("java:comp/env");
            System.out.println("ready to get jms/TestQ!");
            queue = (Queue) context.lookup("jms/TestQ");
            System.out.println("successfully get jms/TestQ!");

            // Create a connection
            queueConneionFactory =
                (QueueConnectionFactory) context.lookup("jms/TestQCF");
            System.out.println("successfully get jms/TestQCF!");
            connection = queueConneionFactory.createQueueConnection();
            System.out.println("successfully get connection!");
            session = connection.createQueueSession(false, 1);
            System.out.println("successfully create session!");
            sender = session.createSender(queue);
            System.out.println("successfully create sender!");
            message = session.createTextMessage();
            message.setText("Test Message!");
            System.out.println("successfully create message!");
            sender.send(message);
            System.out.println("successfully send the message!");
            session.close();
            System.out.println("successfully close the session!");
            connection.close();
            System.out.println("successfully close the connection!");
        } catch (Exception e) {
            // JMSException or NamingException could be thrown
            e.printStackTrace();
        }
    }
}


 

Copyright (C) 1998 - 2004 NEC Corporation.All rights reserved.