⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagereceiverbean.java

📁 java的一系列产品中包括jsme,jmse,j2ee,本文件提供j2ee实现的源代码.
💻 JAVA
字号:
package bankaccount;

import java.rmi.RemoteException;

import javax.ejb.EJBException;
import javax.ejb.CreateException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;

public class MessageReceiverBean implements MessageDrivenBean,MessageListener
{

  private static final int BAD_MESSAGE_TYPE = 1;
  private static final int CUSTOMER_ALREADY_EXISTS = 2;
  
  private MessageDrivenContext ctx;

  private sessionAccount sessionAccount;

  public void setMessageDrivenContext(MessageDrivenContext c) {
    ctx = c;
    try {
      Context ic = new InitialContext();
      Object h = ic.lookup("java:/comp/env/ejb/sessionAccountHome");

      sessionAccountHome home = (sessionAccountHome)
        PortableRemoteObject.narrow(h, sessionAccountHome.class);      
      sessionAccount = home.create();

    } catch (Exception e) {
      e.printStackTrace();
      throw new EJBException(e);
    }
  }

  public void ejbCreate() { System.out.println("MessageReceiverBean:ejbCreate()");}
  public void ejbRemove() { System.out.println("MessageReceiverBean:ejbRemove()");}

  private void publishError(int errorType, Throwable th) {
    // This method handles application errors in the incoming
    // messages.  One common design published to an error topic here.
    // For simplicity, we only print an error message and continue
    switch(errorType) {
    	case BAD_MESSAGE_TYPE: 
      		System.err.println("Bad Message Type received: "+th);
      		break;
    case CUSTOMER_ALREADY_EXISTS:
      		System.err.println("Account already exists: "+th);
      		break;
    default:
      		throw new EJBException("Unexpected error type: "+errorType);
    }
  }

  public void onMessage(Message m) {
    MapMessage msg = (MapMessage) m;
    try {
      int accountID     = msg.getInt("accountID");
      String ownerName  = msg.getString("ownerName");
      float accountValue = msg.getFloat("accountValue");
      int accountLevel = msg.getInt("accountLevel");
      sessionAccount.enterNewAccount(accountID,ownerName,accountValue,accountLevel);
    } catch (JMSException e) {
      // message was mal-formed      
      publishError(BAD_MESSAGE_TYPE, e);
    } catch (CreateException ice) {
      // account id already existsed
      publishError(CUSTOMER_ALREADY_EXISTS, ice);
    } catch (RemoteException re) {
      re.printStackTrace();
      ctx.setRollbackOnly();
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -