WLS6.1 sp3, jms/mq MDB

Hi
          We are using WLS6.1 sp3, accessing MQ through MQ/JMS and Bean managed MDBs. We are managing transaction by throwing Runtime exception and sending the message for requeueing for any issue. We are not using any Messaging bridge approach.
          Has any faced any issue with this approach? May be with later SPs or 7.0, does any foresee any problem in this approach?
          Thanks
          Srinivas
          

(1) MDB container managed transactions are not
          supported in 6.1SP3 for most foreign vendors. This type
          of question is pretty common, here is the cut and
          paste response:
          Start by reading this white-paper on dev2dev.bea.com
          "Using Foreign JMS Providers with WebLogic Server"
          Be aware that WL 8.1 provides a couple new features that
          simplify integration. The white-paper does not cover them:
          Resource-Reference JMS Pooling (pooling and auto-enlistment)
          Foreign Destination Wrappers (register foreign dest in local JNDI)
          See http://edocs.bea.com/wls/docs81/notes/new.html#1160067
          (2) Managing the operation by using two different atomic operations
          (one for receive, one for send), and failing the send on
          certain failures does not guarantee exactly-once. No matter
          what messaging system is used. There are fundamental race
          conditions that can cause lost or duplicate messages. The
          only way to force exactly once when using two atomic operations
          is to write the code in such
          a way that allows duplicate receives to occur, and to detect if
          the received message has already been operated on by
          checking a history record that was recorded
          for each previous receive. Where the history record
          must be written to a database atomically
          as part of the send transaction using a transaction.
          (3) I recommend using the bridge, or moving up to
          version 7.0 or later.
          Tom
          Srinivas wrote:
          > Hi
          >
          > We are using WLS6.1 sp3, accessing MQ through MQ/JMS and Bean managed MDBs. We are managing transaction by throwing Runtime exception and sending the message for requeueing for any issue. We are not using any Messaging bridge approach.
          >
          > Has any faced any issue with this approach? May be with later SPs or 7.0, does any foresee any problem in this approach?
          >
          > Thanks
          > Srinivas
          

Similar Messages

  • Verify failed; continuing java.lang.NoClassDefFoundError: jms/server/MDB

    Hi friend iam trying to deploy my MDB on Jboss as but i get these errors
    Verify failed; continuing java.lang.NoClassDefFoundError: jms/server/MDB
    i cant find what is the problem
    in the jar file i hav directory jms/server under that directory MDB.class exhists. and in the ejb jar i mentioned like this
    <ejb-name>MDB</ejb-name>
    <ejb-class>jms.server.MDB</ejb-class>
    i really dont understand what is the problem.
    any help
    thanks

    Hi,
    You can check it out the JNDI name in the JMS. This name is same as the jndi name in the xml file.
    Are u going to use Queue or Topic API.
    If it is queue, you declare queue in xml file.
    I wish you all the best
    Maruthi.

  • Distributed transaction (JDBC+JMS), durable MDB, NullPointException in weblogic

              I am cross posting to transaction & jms, sorry if this is a mistake...
              We have a setup where JMS messages are published to a topic. The posting is transacted
              (XA) and is a consequence of a CMP update so JMS and JDBC (Oracle OCI) cooperate
              to commit, or not.
              Most of the time, transactions issue just a few JMS messages but at least once
              a day, we issue hundred of thousands of such messages (max has been about 600000
              but typically 300000).
              Our setup is four instances of Weblogic 6.1SP3 (two clustered, two not), the topic
              is on one of them (all 3 other servers connect to that instance to publish) and
              we have a couple MDBs deployed only on the instance that has the JMSServer and
              they all listen to the local topic. The transactionnal settings of these MDBs
              is CMT and XA (because the beans will write to the DB). Furthermore, these MDB
              have been setup to be durable. One of these is just a logger MDB with 20 instances
              max.
              It worked fine for a couple weeks but we have been running into problems for the
              past two days. All of a sudden, the server no longer responds to weblogic.ADMIN
              PING. The server log indicates the following error repetitively (MB of logs just
              of this)
              ####<13 nov. 03 23:15:41 CET> <Alert> <JMS> <XXXXXXX> <send1> <ExecuteThread:
              '32' for queue: 'default'> <> <> <040060> <JMSServer "OutputServerSend1", unhandled
              exception during rollback, java.lang.NullPointerException.>
              java.lang.NullPointerException
              at weblogic.jms.backend.BEDurableTopicMessageInfo.rollbackReceiveTran(BEDurableTopicMessageInfo.java:352)
              at weblogic.jms.backend.BEXATranEntrySubscribe.startRollback(BEXATranEntrySubscribe.java:145)
              at weblogic.jms.backend.BEXATranEntry.execute(BEXATranEntry.java:127)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              The logger MDB seems to have started processing the JMS messages. This means that
              the transaction that included the JMS message publishing must have commited. Unfortunatly,
              there are only 20 log lines before the server restart, so the server must have
              hanged although it did commit the messages processed by the logger since the log
              messages are apparently not repeated. I have no idea why. I think this is coherant
              with the fact that exception above seems to relate to subscribers.
              When we restart the server, the topic gets purged and seem to be processed (we
              have not found a way to verify that each message has been processed but it's looking
              good)
              Any ideas ?
              Thanks
              Philippe
              

              I am cross posting to transaction & jms, sorry if this is a mistake...
              We have a setup where JMS messages are published to a topic. The posting is transacted
              (XA) and is a consequence of a CMP update so JMS and JDBC (Oracle OCI) cooperate
              to commit, or not.
              Most of the time, transactions issue just a few JMS messages but at least once
              a day, we issue hundred of thousands of such messages (max has been about 600000
              but typically 300000).
              Our setup is four instances of Weblogic 6.1SP3 (two clustered, two not), the topic
              is on one of them (all 3 other servers connect to that instance to publish) and
              we have a couple MDBs deployed only on the instance that has the JMSServer and
              they all listen to the local topic. The transactionnal settings of these MDBs
              is CMT and XA (because the beans will write to the DB). Furthermore, these MDB
              have been setup to be durable. One of these is just a logger MDB with 20 instances
              max.
              It worked fine for a couple weeks but we have been running into problems for the
              past two days. All of a sudden, the server no longer responds to weblogic.ADMIN
              PING. The server log indicates the following error repetitively (MB of logs just
              of this)
              ####<13 nov. 03 23:15:41 CET> <Alert> <JMS> <XXXXXXX> <send1> <ExecuteThread:
              '32' for queue: 'default'> <> <> <040060> <JMSServer "OutputServerSend1", unhandled
              exception during rollback, java.lang.NullPointerException.>
              java.lang.NullPointerException
              at weblogic.jms.backend.BEDurableTopicMessageInfo.rollbackReceiveTran(BEDurableTopicMessageInfo.java:352)
              at weblogic.jms.backend.BEXATranEntrySubscribe.startRollback(BEXATranEntrySubscribe.java:145)
              at weblogic.jms.backend.BEXATranEntry.execute(BEXATranEntry.java:127)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              The logger MDB seems to have started processing the JMS messages. This means that
              the transaction that included the JMS message publishing must have commited. Unfortunatly,
              there are only 20 log lines before the server restart, so the server must have
              hanged although it did commit the messages processed by the logger since the log
              messages are apparently not repeated. I have no idea why. I think this is coherant
              with the fact that exception above seems to relate to subscribers.
              When we restart the server, the topic gets purged and seem to be processed (we
              have not found a way to verify that each message has been processed but it's looking
              good)
              Any ideas ?
              Thanks
              Philippe
              

  • How JMS and MDB works?

    Hi,
    I am writing a portion of a J2EE application and would like to perform asynchronous processing. Im new to JMS. Following are some questions i have:
    - How does JMS process message, queue and MDB? I mean when a message is send to a queue, how does it know which MDB should be receiving the message?
    - Im using JBoss which has JMS support. Under normal circumtances, is it all right to use the default queue that comes with the JMSProvider (i.e. the application server in this case)? Or should we write some other codes for create queue?
    - In terms of design, should one MDB only performs a single function? The reason for this is that a MDB seems to only have a single 'onMessage' method?
    - The following is what my application tries to achieve: Servlet will call a method in a StatelessSessionBean. SessionBean perform first some processing. And since part of the process does not require to be done at the same time, i would like it to happen asynchronously. I actually intend to have that part of the processing happens in an MDB. Is that the correct way to use JMS & MDB? How else could i perform asynchronous processing?
    Thanks much.
    Veny

    - how does it know which MDB should be receiving the message?
    The MDB is configured to consume messages from a specific queue in one of the J2EE xml files (Haven't written them in a while so can't be sure which one).
    - is it all right to use the default queue that comes with the JMSProvider
    I wouldn't, because your queue names won't reflect the job they are doing.
    Create some new queues by updating your jms providers config files.
    - In terms of design, should one MDB only performs a single function
    This is a reasonable approach to take, although it's sometimes OK to have an MDB act like a controller and delegate to handler classes (possibly session beans) based on the message type. The latter approach is suitable only for small apps as it's far less configurable / scalable (e.g. you can't say I want 10 MDB instances to processing message X and 50 MDB instances to process message Y).
    - Is that the correct way to use JMS & MDB
    Yes, that's pretty much it, although I would still delegate the work to a handler class. It will make if easier to test and more portable.

  • JMS with MDB design question

    Hi All,
    Here is my situation. I have a JMS Queue and a MDB that consumes the messages delivered to this queue. In the OnMessage method of the MDB,I do some business processing including talking to a database. My requirement is that if the database is not available for some reason,I have to keep retrying the whole thing for half an hour at some predefined intervals. How can this be achieved?
    Thanks

    hi.
    i agree with arnaud that the use of timer is better. thanks for that, arnaud.
    additionally, i'd like to add that i don't think you should use a transaction for this sort of messaging, since from what i understand, you are talking single messaging here, and creating transactions for a single message flow is an overkill for most needs. also, it takes a lot of resources from the application server.
    the other point to consider is that you are not talking about a case where a message did not reach it's destination. as far as the messaging provider is concerned, the message was consumed by the MDB, and the problem occured in latter processing. you also, as crackers noted, have the issue of configuring the provider to handle the redeliveries, which is again a pain in a body-part.
    i think this is a design-related case, and i might go over the messaging-provider's acks here, and send acks on a different queue.
    nimo.

  • Easiest way to send JMS from MDB to itself

    I need Message Driven Bean to send JMS-message to itself from onMessage-method. Of course, I can find necessary queue, create sender and send message.
    But is it easiest way? onMessage-method can get Destination property from received Message. Can be message sent using only this Destination, without knowing self-queue name?

    ctrl-click the project file and choose the Compress option. then use a service like yousendit.com to transfer the compressed .zip file

  • JMS, EJB, MDB etc.

    Hi all,
    I've got a client that accesses an EJB which in turn starts an MDB via a queue. The MDB has some processing which can take a while.
    The problem I have is I need the client to be able to poll the EJB and see if the MDB has finished its processing yet. I'm stumped to try and think of a way the MDB can report its processing status back to the EJB.
    Thanks for any input.

    The only way I can think of to do this is to have the MDB send some messages to a Queue, when you poll the EJB it looks on the Queue. If all you want is notification that the MDB has finished just send a message at the end.

  • Xml jms mdb

    Hi All,
    I am new to xml-jms i have a requirement like this:\
    I receive xml messages from SAP XI i need to extract the data for xml and check it using a jms queue (mdb) and pass it to Business Rule Engine server, Is that i need to use parsers to extract data from xml and then pass it to jms queue or i can directly do it directly.
    And how to convert the data comming out of mdb to a java object?
    Thanks in advance.

    Hi Raja,
    I assume you mean...
    You receive an XML message from a SAP XI system and need to forward it to a business rules engine via JMS.
    How do you receive the messages?
    What platform is your application running on?
    What format is the message in (character encoding etc)?
    What format does the business rule engine expect the message to be in?
    In general however, JMS messages can be strings, binary data or java objects. Strings are good candidates for XML, but you need to be careful of character encoding. I don't know what character sets SAP use, but if it's not the same a your business rules server expects you'll need to convert it.

  • Filtering JMS Message to invoke Multiple MDB's

    Can I accomplish a job using JMS and MDB where. I want to use a single queue to send/receive 3 different messages and based on the mesage received need to call appropriate MDB out of 3 MDB's
    How can i filter the message to invoke corresponding MDB.
    My present design am using a JMS sender object to send message and a JMS receiever class to receieve it and then call appropriate MDB.
    I am looking for an option to directly invoke MDB after filtering the message . I m using weblogic JMS for this .
    Is there is a better way doing so?
    Thanks!

    Set some message header on the message then use a selector on each MDB to filter the messages so that the right MDB gets the right message. Or use a different queue for each MDB
    James
    http://logicblaze.com/
    Open Source SOA

  • WLS 8.1sp3 blocked threads halt MDB processing

    Under Weblogic Server 8.1 SP3 JMS consumers stop processing the JMS queues. This only started happening following our upgrade from SP2. We had numerous test baselines as well as months of production data to validate this.
              Specifically it appears that internal weblogic threads are blocked, preventing the MDBs (JMS consumers) from being dispatched. This doesn't immediately impact the user experience, but eventually unprocessed JMS messages accumulate and consume heap. You can figure out the rest.
              We had 5 MDBs working on this particular JMS queue, so under moderate traffic all 5 would need to be blocked before the problem was realized.
              As a work around, you'll need to request a patch from BEA. CR188391 appears to resolve this issue. You must request this however. BEA will not contact you - regardless of functional or economic impact.
              Thanks
              -Sean

    Sean,
              I've forwarded your comments internally. Usually, one can look in the release notes of future service-packs to see what's been fixed. I would think upgrading from SP3 to sp4, or even sp5 (the latest) would also have fixed the problem.
              Tom, BEA

  • EJb 3.0 com.ibm.mq.jms.MQQueueConnectionFactory

    Hi All
    I see this error
    [EJB:011013]The Message-Driven EJB attempted to connect to the JMS connection fa
    ctory with the JNDI name:xxxx.ccerqcf. However, the object with th
    e JNDI name xxxx.ccerqcf is not a JMS connection factory. NestedEx
    ception Message is :com.ibm.mq.jms.MQQueueConnectionFactory
    When using MDB/ EJB 3.0 in WLS 10.0 Mp2
    When I use EJB 2.x I don't see the issue, can ejb 3.o read weblogic-ejb-jar.xml for its connection factory?
    Is there any debug flag to see a better exception
    This is a MDB intended to listen to message from IBM MQ server using a foreign server configured in the console
    Edited by: user12297324 on Mar 15, 2010 3:47 PM
    Edited by: user12297324 on Mar 15, 2010 4:04 PM

    EJB 2.0
    import javax.ejb.*;
    import javax.jms.*;
    public class FOTSysInqMsgBean implements MessageDrivenBean, MessageListener
    //     private static Logger logger = Logger.getLogger(FOTSysInqMsgBean.class);
         MessageDrivenContext messageDrivenContext;
         public void ejbActivate(){}
         public void ejbRemove(){}
         public void ejbPassivate(){}
         public void ejbCreate() throws CreateException {}
         // This is the key onMessage method
         public void onMessage(Message msg)
              //if (logger.isInfoEnabled()) logger.info("Enter MDB onMessage");
    //          byte buf[] = new byte[1000];
    //          int      length      = 0;
              String      inString = null;
              String jmsMsgId = null;
              try
                   if(msg instanceof TextMessage)
                        TextMessage tm = (TextMessage) msg;
                        inString = tm.getText();
                        jmsMsgId = tm.getJMSMessageID();
                        System.out.print(inString);
                        //MQMessageFormatter.parse(inString, jmsMsgId);
                   //else
                        //System.out.println("Is not instanceOf TextMessage");
                   //     if (logger.isInfoEnabled()) logger.info("Not instanceOf TextMessage");
         catch(Exception ex)
              System.out.println("Error IncomingMessage is *********************" +ex);
              //if (logger.isInfoEnabled())
              //     logger.info("FOTSysInqMsgBean === " + ex + " === in Bean class Message method");
         //if (logger.isInfoEnabled()) logger.info("IncomingMessage:" + inString);
         //     if (logger.isInfoEnabled()) logger.info("Exit MDB onMessage");
              //System.out.println("IncomingMessage is *********************" +inString);
         public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext)
              this.messageDrivenContext = messageDrivenContext;
    EJB 3.0
    package foo;
    import javax.annotation.Resource;
    //import javax.ejb.*;
    import javax.ejb.MessageDriven;
    import javax.ejb.ActivationConfigProperty;
    import javax.ejb.MessageDrivenContext;
    import javax.ejb.TransactionAttribute;
    import javax.ejb.TransactionAttributeType;
    import javax.jms.MessageListener;
    import javax.jms.Message;
    import javax.jms.TextMessage;
    * MDB asynchronously feeds the new added reviews to subscribers.
    @MessageDriven
    ( name = "FOTSysInqMsgBean3", //,mappedName = "wholesale.ccer.fjms.maint.rsps.q1",
    activationConfig = {
    @ActivationConfigProperty(propertyName = "destinationType",
              propertyValue = "javax.jms.Queue")
    EJB 3.0
    public class FOTSysInqMsgBean3 implements MessageListener
    //     MessageDrivenContext messageDrivenContext;
         @Resource MessageDrivenContext messageDrivenContext;
         //public void ejbActivate(){}
         //public void ejbRemove(){}
         //public void ejbPassivate(){}
         //public void ejbCreate() throws CreateException {}
         // This is the key onMessage method
         public void onMessage(Message msg)
         //     if (logger.isInfoEnabled()) logger.info("Enter MDB onMessage");
    //          byte buf[] = new byte[1000];
    //          int      length      = 0;
              String      inString = null;
              String jmsMsgId = null;
              try
                   if(msg instanceof TextMessage)
                        TextMessage tm = (TextMessage) msg;
                        inString = tm.getText();
                        jmsMsgId = tm.getJMSMessageID();
                   //     if (logger.isInfoEnabled()) logger.info("MQ Message Class:" + msg.getClass());
              //          if (logger.isInfoEnabled()) logger.info("MQ Message Object:" + msg);
              //          if (logger.isInfoEnabled()) logger.info("MQ Message Id:" + jmsMsgId);
                   //     MQMessageFormatter.parse(inString, jmsMsgId);
                   else
                        //System.out.println("Is not instanceOf TextMessage");
              //          if (logger.isInfoEnabled()) logger.info("Not instanceOf TextMessage");
         catch(Exception ex)
              //System.out.println("Error IncomingMessage is *********************" +ex);
              //if (logger.isInfoEnabled())
         //          logger.info("FOTSysInqMsgBean === " + ex + " === in Bean class Message method");
    //     if (logger.isInfoEnabled()) logger.info("IncomingMessage:" + inString);
         //     if (logger.isInfoEnabled()) logger.info("Exit MDB onMessage");
              //System.out.println("IncomingMessage is *********************" +inString);
         /*public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext)
              this.messageDrivenContext = messageDrivenContext;
    both uses the same weblogic-ejb-jar.xml

  • Strange problem in MDB!!!

    Hi,
    Iam sending messages to a queue(MyQueue) using JMS and MDB is consuming them. But the problem is that the MDB is not getting invoked for all messages and this doesn't happen all the time. Sometimes it works perfectly fine and sometimes it doesn't consume any messages or just consumes only some of the messages. I think the configuration is fine.
    Iam using JBoss 4.0.4, EJB 3.0, JavaEE 5.0
    Relevant snippets of configuration files and code are as follows:
    1) jbossmq-destinations-service.xml --- added a new queue
    <mbean code="org.jboss.mq.server.jmx.Queue"
         name="jboss.mq.destination:service=Queue,name=MyQueue">
    <depends optional-attribute-name="DestinationManager">
    jboss.mq:service=DestinationManager</depends>
    </mbean>
    2) Code using JMS API
    context = new InitialContext();
    connectionFactory =
    (ConnectionFactory)context.lookup("ConnectionFactory");
    destinationName = "queue/MyQueue";
    Queue testExecutionQueue =
    (Queue)context.lookup(destinationName);
    connection = connectionFactory.createConnection();
    session = connection.createSession(false,
    Session.AUTO_ACKNOWLEDGE);
    msgProducer = session.createProducer(testExecutionQueue);
    connection.start();
    ObjectMessage message = session.createObjectMessage();
    message.setObject(msg);
    msgProducer.send(message);
    // Close the connection
    3) MDB
    // Only the annotations --- others are not required I guess
    @MessageDriven(activationConfig = {
    @ActivationConfigProperty(propertyName="destinationType",
    propertyValue="javax.jms.Queue"),
    @ActivationConfigProperty(propertyName="destination",
    propertyValue="queue/MyQueue") })
    Thats it. In the JBoss configuration file, I only changed the file mentioned in 1).
    The problem is strange because it happens sometimes and works perfectly at other times.
    Where am I going wrong?
    Thank you.

    Initially I started off with queue/testQueue. I noticed that the Receivers Count in the JBoss JMX Console was 2. I switched to the new queue (MyQueue). Its receivers count is 1. But still sometimes I have the same problem.
    Correct me if I am wrong here -- If there are more than 1 receivers for a single queue (which shouldn't be the case) then it produces unexpected behaviour and it could lead to the situation I am facing.
    Are there any other things that I should look into? Because this happened with a new queue also.
    Thank you.

  • Can't get MDB run-as to work

    I am trying to configure J2EE security on OC4J standalone 10.1.3 for a set of EJBs. I have a stateless session bean that I want to control access to. I have assigned method permissions to it so that only a certain role can access it. I then configured a client with J2EE credentials for a user in that role and remote EBJ lookup/access is working great.
    The problem is that I also have a JMS-based MDB in the same application that needs to access the session bean, but I can't get the run-as declaration to take effect. When the MDB tries to call create() on the session bean's home interface, the following Exception gets thrown:
    ERROR javax.ejb.AccessLocalException: anonymous is not allowed to call this EJB method, check your security settings (method-permission in ejb-jar.xml and security-role-mapping in orion-application.xml).
    Below is the relevant sections from my deployment descriptors, if anybody has any input I'd appreciate it.
    -Patrick
    <!--ejb-jar.xml-->
    <enterprise-beans>
    <session>
    <ejb-name>MyStore</ejb-name>
    <security-role-ref>
    <role-name>MyApplication</role-name>
    <role-link>MyApplication</role-link>
    </security-role-ref>
    <security-identity>
    <use-caller-identity />
    </security-identity>
    </session>
    <message-driven>
    <security-identity>
    <run-as>
    <role-name>MyApplication</role-name>
    </run-as>
    </security-identity>
    </message-driven>
    </enterprise-beans>
    <assembly-descriptor>
    <security-role>
    <role-name>MyApplication</role-name>
    </security-role>
    <method-permission>
    <role-name>MyApplication</role-name>
    <method>
    <ejb-name>MyStore</ejb-name>
    <method-name>*</method-name>
    </method>
    </method-permission>
    </assembly-descriptor>
    <!-- orion-ejb-jar.xml (I've also tried the same security-role-mapping in orion-application.xml -->
    <assembly-descriptor>
    <security-role-mapping name="MyApplication">
    <group name="users" />
    </security-role-mapping>
    </assembly-descriptor>

    Password for what?

  • Redelivery of messages to JMS queue

    Hi,
              I am using weblogic 9.2 JMS and MDB for processing messages from queue. Only one instance of Container Managed MDB is running and the important point is that queue sequence should be maintained. I have a problem now. Each message will be picked by MDB and does some db lookups and it is sent over to another system. If there is any communication failure, the message has to be redelivered back to the front of the queue so that sequence is not lost. Even the same message is failing for more than one time, it should still be placed at the front of the queue becoz there is another mechanism that will pause the queue in case of communication exception.
              I tried with throwing Runtime exception but it is crashing the MDB and is getting deployed again which I think is not the right approach.
              I had set the transaction attribute as Required and tried to do setRollBackOnly on that for any exceptions but the message is not in the front of the queue. It is going to the back or somewhere in the queue.
              I also tried to put the message back with higher priority but did not seem to work.
              I have the redelivery delay as 0, I am not sure if I am missing any configuration settings. Pls let me know if there is a way to redeliver the message to the front of the queue for any exceptions in the message procesing by MDB.
              Thanks
              Srini

    Srini,
              WebLogic JMS' Unit-of-Order (UOO) feature was very specifically designed to handle strictly ordered message processing. The feature ensures that messages with the same UOO name are processed strictly in order - regardless of the number of concurrent consumers, redelivery delays, rollbacks, etc.
              If the entire queue is to be processed single threaded, you can very simply configure a default UOO for the queue, otherwise there are a variety of other UOO options. A good place to start is the JMS developer guide's UOO chapter.
              And yes, "setRollbackOnly" is the best way to force a rollback of an MDB CMT.
              Tom

  • How to use JMS in a J2EE environment

    Hello all,
    I would like to find out how to use JMS in a J2EE environment. I use Borland Enterprise Server. Do I need to buy a message software to use JMS? How to use JMS with Message Driven bean?
    Thanks a lot.
    Best regards
    Susan

    If you don't want to buy you could try OpenJMS, a free JMS product (http://openjms.sourceforge.net/)
    As for learning how to use JMS w/ MDBs, I would suggest grabbing a book on JMS. I found the OReilly book on JMS to be pretty helpful for me.

Maybe you are looking for