Hi, Thanks a lot for the suggestion. The fact that EJB does not support multi-threading surprised me. As I said, I wanted my MDB to store incoming messages in a data structure, and then have threads working on the sending of messages. How could such a task be achieved by using multiple beans? More details would be very helpful.
When google-ing, I found somebody commenting that multi-threading would work when separating the "multi threadedness" into a separate layer outside of the EJB layer. In such a case, a java job scheduler is needed to handle the scheduling. Have you or has anybody on the list used any scheduler (such as the Quartz scheduler)? Thank you, Jingwen ---- Original message ---- >Date: Thu, 29 Dec 2005 09:29:03 +0100 >From: Johan Eltes <[EMAIL PROTECTED]> >Subject: Re: Message-Driven Bean OnMesssage() etc >To: EJB-INTEREST@JAVA.SUN.COM > >You are not allowed to create threads in an EJB. >One of the reasons is that transaction contexts are bound to threads. >If you create a thread (most app servers will not let you), that the >app server will not be able to manage it. > >Would it be possible to have multiple MDBs (MDB pool size > 1) >instead of forking threads within your business logic? > >/Johan > >29 dec 2005 kl. 06.00 skrev Jingwen Jin: > >> I'm writing a pub/sub server that, on receiving an incoming message, >> stores it into a messageArray, and then creates a thread to forward >> messages in the array. The following code works ok if the >> "forwardMessage" >> method is called within onMessage(); messages get delivered. >> >> But whenever I try to deliver the messages in messageArray using a >> thread >> as shown below, I get the following exception and messages don't get >> delivered: >> >> ReplyMsgBean.forwardMessage: JMSException: >> com.sun.messaging.jms.JMSException: [SEND_REPLY(9)] [C4036]: A server >> error occurred. : transaction failed: Unexpected Broker Exception: >> [received message with Unknown Transaction ID -1: ignoring message] >> >> It looks like the server could not create the connection within the >> forwardMessage method. >> >> I'd appreciate any suggestions. >> >> Thanks, >> >> Jingwen >> >> --------------------------------- >> >> >> >> public class ReplyMsgBean implements MessageDrivenBean, >> MessageListener { >> ... >> public ReplyMsgBean() throws Exception { >> messageArray = new ArrayList(); >> mft = new MessageForwardingThread(); >> mft.start(); >> } >> public void ejbCreate() { >> try { >> Context initial = new InitialContext(); >> cf = (ConnectionFactory) initial.lookup( >> "java:comp/env/jms/MyConnectionFactory"); >> } catch (Exception ex) { >> logger.severe("ReplyMsgBean.ejbCreate: Exception: " + >> ex.toString()); >> } >> } >> public void onMessage(Message inMessage) { >> put the message into messageArray >> } >> private static void forwardMessage(TextMessage msg) { >> ... >> Connection con = cf.createConnection(); >> Session ses = con.createSession(true, 0); >> producer = ses.createProducer(topic); >> producer.send(msg); >> con.close(); >> } >> >> >> final class MessageForwardingThread extends Thread { >> ... >> public final void run() { >> for every-message (msg) in messageArray >> ReplyMsgBean.forwardMessage(msg); >> >> } >> >> } >> >> ====================================================================== >> ===== >> To unsubscribe, send email to [EMAIL PROTECTED] and include in >> the body >> of the message "signoff EJB-INTEREST". For general help, send >> email to >> [EMAIL PROTECTED] and include in the body of the message "help". >> > >=========================================================================== >To unsubscribe, send email to [EMAIL PROTECTED] and include in the body >of the message "signoff EJB-INTEREST". For general help, send email to >[EMAIL PROTECTED] and include in the body of the message "help". =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff EJB-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".