JMS MDB Clustering destination reconnect problem

Hey,
          We have got a JMS cluster and we are using MDB:s that listen to a specific
          JMS topic.
          When using MDB:s I have found out, that when the cluster node where my JMS
          server containing the JMS topic is located goes down I get a connection
          problem. The MDB keeps logging following message into weblogic.log:
          The JMS destination with the JNDI name:
          com.nokia.cce.server2.EAIElinkAliveQueue could not be found. Please ensure
          that the
          JNDI name in the weblogic-ejb-jar.xml is correct, and the JMS destination
          has been deployed.>
          <Apr 3, 2002 10:30:39 AM EEST> <Warning> <EJB> <The Message-Driven EJB:
          ElinkKeepAliveManager2 is unable to connect to the J
          MS destination: com.nokia.cce.server2.EAIElinkAliveQueue. The EJB container
          will automatically attempt to re-establish the c
          onnection with the JMS server. This warning may occur during WebLogic
          Cluster start-up if the JMS destination is located on
          another WebLogic Server instance. When the JMS server connection is
          re-established, the Message-Driven EJB will again receiv
          e JMS messages.
          The Error was:
          The JMS destination with the JNDI name:
          com.nokia.cce.server2.EAIElinkAliveQueue could not be found. Please ensure
          that the
          JNDI name in the weblogic-ejb-jar.xml is correct, and the JMS destination
          has been deployed.>
          The MDB tries to reconnect to the JMS topic every 10th second and keeps on
          logging this message until the corresponding JMS server comes up again.
          (the example is from a JMS queue, but the same phenomen occurs also for
          topics).
          It is very irritating to keep on getting this message every 10th second to
          the logging file. The logging file becomes full of these messages, which
          takes a lot of file space + makes reading other error messages from the
          weblogic logging very difficult.
          Is there anything todo to avoid this ?
          Can You reconfigure the reconnect interval ?
          It would be enough to get one message, that the connection is lost but
          weblogic will try to reconnect. And then the next message would tell when
          a connection has succeeded again.
          I assume there is no way to specify a primary/secondary
          <destination-jndi-name> in the MDB's deployment descriptor ?
          Is the only way to avoid this, to rewrite the implementation to use custom
          based JMS subscribers instead of using MessageDrivenBean kind of
          implemetation ?
          This is a little bit sad, since MDB's gives such a nice and simple solution
          otherwise...
          Regards
          Jan-Erik
          PS. I'm using weblogic 6.1 and I can not migrate to 7.0 in a near future.
          

Your comments are noted.
          I believe you can set "JMSPollingIntervalSeconds" in the weblogic descriptor.
          Jan-Erik Aladin wrote:
          > Hey,
          >
          > We have got a JMS cluster and we are using MDB:s that listen to a specific
          > JMS topic.
          > When using MDB:s I have found out, that when the cluster node where my JMS
          > server containing the JMS topic is located goes down I get a connection
          > problem. The MDB keeps logging following message into weblogic.log:
          >
          > The JMS destination with the JNDI name:
          > com.nokia.cce.server2.EAIElinkAliveQueue could not be found. Please ensure
          > that the
          > JNDI name in the weblogic-ejb-jar.xml is correct, and the JMS destination
          > has been deployed.>
          > <Apr 3, 2002 10:30:39 AM EEST> <Warning> <EJB> <The Message-Driven EJB:
          > ElinkKeepAliveManager2 is unable to connect to the J
          > MS destination: com.nokia.cce.server2.EAIElinkAliveQueue. The EJB container
          > will automatically attempt to re-establish the c
          > onnection with the JMS server. This warning may occur during WebLogic
          > Cluster start-up if the JMS destination is located on
          > another WebLogic Server instance. When the JMS server connection is
          > re-established, the Message-Driven EJB will again receiv
          > e JMS messages.
          > The Error was:
          > The JMS destination with the JNDI name:
          > com.nokia.cce.server2.EAIElinkAliveQueue could not be found. Please ensure
          > that the
          > JNDI name in the weblogic-ejb-jar.xml is correct, and the JMS destination
          > has been deployed.>
          >
          > The MDB tries to reconnect to the JMS topic every 10th second and keeps on
          > logging this message until the corresponding JMS server comes up again.
          > (the example is from a JMS queue, but the same phenomen occurs also for
          > topics).
          >
          > It is very irritating to keep on getting this message every 10th second to
          > the logging file. The logging file becomes full of these messages, which
          > takes a lot of file space + makes reading other error messages from the
          > weblogic logging very difficult.
          >
          > Is there anything todo to avoid this ?
          > Can You reconfigure the reconnect interval ?
          > It would be enough to get one message, that the connection is lost but
          > weblogic will try to reconnect. And then the next message would tell when
          > a connection has succeeded again.
          > I assume there is no way to specify a primary/secondary
          > <destination-jndi-name> in the MDB's deployment descriptor ?
          >
          > Is the only way to avoid this, to rewrite the implementation to use custom
          > based JMS subscribers instead of using MessageDrivenBean kind of
          > implemetation ?
          > This is a little bit sad, since MDB's gives such a nice and simple solution
          > otherwise...
          >
          > Regards
          > Jan-Erik
          >
          > PS. I'm using weblogic 6.1 and I can not migrate to 7.0 in a near future.
          

Similar Messages

  • JMS - MDB, jboss deployment problem

    Hi everybody,
    I'm new to JMS/MDB and have following problem while deploying MDB under JBOSS:
    22:58:47,735 INFO [EjbModule] Deploying MyPublisher
    22:58:47,745 INFO [EjbModule] Deploying topicMessageBean
    22:58:47,795 WARN [StatelessSessionContainer] message-destination 'PhysicalTopic' has no jndi-name in jboss.xml
    22:58:47,845 INFO [ProxyFactory] Bound EJB Home 'MyPublisher' to jndi 'ejb/MyEj
    bReference'
    22:58:47,865 INFO [EJBDeployer] Deployed: file:/D:/DownLoads/ejb/JBoss/jboss-4.
    0.3/jboss-4.0.3/server/default/deploy/simplemessage.jar
    jboss.xml
    <jboss>
    <enterprise-beans>
    <message-driven>
    <ejb-name>topicMessageBean</ejb-name>
    <destination-jndi-name>topic/MyMDBTopic</destination-jndi-name>
    <mdb-connection-factory>
    <jndi-name>jms/MyTopicConnectionFactory</jndi-name>
    </mdb-connection-factory>
    </message-driven>
    <message-destination>
    <message-destination-name>PhysicalTopic</message-destination-name>
    <jndi-name>topic/MyMDBTopic</jndi-name>
    </message-destination>
    <session>
    <ejb-name>MyPublisher</ejb-name>
    <jndi-name>ejb/MyEjbReference</jndi-name>
    <resource-ref>
    <res-ref-name>jms/MyTopicConnectionFactory</res-ref-name>
    <jndi-name>jms/TopicConnectionFactory</jndi-name>
    <default-resource-principal>
    <name>guest</name>
    <password>guest</password>
    </default-resource-principal>
    </resource-ref>
    </session>
    </enterprise-beans>
    </jboss>
    ejb-jar.xml
    <ejb-jar>
    <display-name>MessageJAR</display-name>
    <enterprise-beans>
    <message-driven>
    <display-name>Topic Message Bean</display-name>
    <ejb-name>topicMessageBean</ejb-name>
    <ejb-class>MessageBean</ejb-class>
    <messaging-type>javax.jms.MessageListener</messaging-type>
    <message-selector></message-selector>
    <transaction-type>Container</transaction-type>
    <message-driven-destination>
    <destination-type>javax.jms.Topic</destination-type>
    <message-destination-link>PhysicalTopic</message-destination-link>
    </message-driven-destination>
    <activation-config>
    <activation-config-property>
    <activation-config-property-name>messageSelector</activation-config-property-name>
    <activation-config-property-value>NewsType = 'Sports' OR NewsType = 'Opinion'</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
    <activation-config-property-name>subscriptionDurability</activation-config-property-name>
    <activation-config-property-value>NonDurable</activation-config-property-value>
    </activation-config-property>
    </activation-config>
    </message-driven>
    <session>
    <display-name>MyPublisher</display-name>
    <ejb-name>MyPublisher</ejb-name>
    <home>PublisherHome</home>
    <remote>Publisher</remote>
    <ejb-class>PublisherBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    <resource-ref>
    <res-ref-name>jms/MyTopicConnectionFactory</res-ref-name>
    <res-type>javax.jms.TopicConnectionFactory</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    <message-destination-ref>
    <!--message-destination-ref-name>topic/TopicName</message-destination-ref-name-->
    <message-destination-ref-name>topic/MyMDBTopic</message-destination-ref-name>
    <message-destination-type>javax.jms.Topic</message-destination-type>
    <message-destination-usage>Produces</message-destination-usage>
    <message-destination-link>PhysicalTopic</message-destination-link>
    </message-destination-ref>
    <security-identity>
    <use-caller-identity/>
    </security-identity>
    </session>
    </enterprise-beans>
    <assembly-descriptor>
    <container-transaction>
    <method>
    <ejb-name>topicMessageBean</ejb-name>
    <method-name>onMessage</method-name>
    <method-params>
    <method-param>javax.jms.Message</method-param>
    </method-params>
    </method>
    <trans-attribute>Required</trans-attribute>
    </container-transaction>
    <container-transaction>
    <method>
    <ejb-name>MyPublisher</ejb-name>
    <method-intf>Remote</method-intf>
    <method-name>publishNews</method-name>
    </method>
    <trans-attribute>Required</trans-attribute>
    </container-transaction>
    <message-destination>
    <message-destination-name>PhysicalTopic</message-destination-name>
    </message-destination>
    </assembly-descriptor>
    </ejb-jar>
    can somebody help???
    Zahid

    Hi,
    if possible, try with "max-bean-in-free-pool=1".
    note: it would be performance impact, as there would be single bean instance.
    Thanks,
    Qumar Hussain

  • JMS - MDB

    Hi everybody,
    I'm new to JMS/MDB and have following problem while deploying MDB under JBOSS:
    22:58:47,735 INFO [EjbModule] Deploying MyPublisher
    22:58:47,745 INFO [EjbModule] Deploying topicMessageBean
    22:58:47,795 WARN [StatelessSessionContainer] message-destination 'PhysicalTopic' has no jndi-name in jboss.xml
    22:58:47,845 INFO [ProxyFactory] Bound EJB Home 'MyPublisher' to jndi 'ejb/MyEj
    bReference'
    22:58:47,865 INFO [EJBDeployer] Deployed: file:/D:/DownLoads/ejb/JBoss/jboss-4.
    0.3/jboss-4.0.3/server/default/deploy/simplemessage.jar
    jboss.xml
    <jboss>
    <enterprise-beans>
    <message-driven>
    <ejb-name>topicMessageBean</ejb-name>
    <destination-jndi-name>topic/MyMDBTopic</destination-jndi-name>
    <mdb-connection-factory>
    <jndi-name>jms/MyTopicConnectionFactory</jndi-name>
    </mdb-connection-factory>
    </message-driven>
    <message-destination>
    <message-destination-name>PhysicalTopic</message-destination-name>
    <jndi-name>topic/MyMDBTopic</jndi-name>
    </message-destination>
    <session>
    <ejb-name>MyPublisher</ejb-name>
    <jndi-name>ejb/MyEjbReference</jndi-name>
    <resource-ref>
    <res-ref-name>jms/MyTopicConnectionFactory</res-ref-name>
    <jndi-name>jms/TopicConnectionFactory</jndi-name>
    <default-resource-principal>
    <name>guest</name>
    <password>guest</password>
    </default-resource-principal>
    </resource-ref>
    </session>
    </enterprise-beans>
    </jboss>
    ejb-jar.xml
    <ejb-jar>
    <display-name>MessageJAR</display-name>
    <enterprise-beans>
    <message-driven>
    <display-name>Topic Message Bean</display-name>
    <ejb-name>topicMessageBean</ejb-name>
    <ejb-class>MessageBean</ejb-class>
    <messaging-type>javax.jms.MessageListener</messaging-type>
    <message-selector></message-selector>
    <transaction-type>Container</transaction-type>
    <message-driven-destination>
    <destination-type>javax.jms.Topic</destination-type>
    <message-destination-link>PhysicalTopic</message-destination-link>
    </message-driven-destination>
    <activation-config>
                        <activation-config-property>
                        <activation-config-property-name>messageSelector</activation-config-property-name>
                        <activation-config-property-value>NewsType = 'Sports' OR NewsType = 'Opinion'</activation-config-property-value>
                        </activation-config-property>
                        <activation-config-property>
                        <activation-config-property-name>subscriptionDurability</activation-config-property-name>
                        <activation-config-property-value>NonDurable</activation-config-property-value>
                        </activation-config-property>
                   </activation-config>
    </message-driven>
    <session>
    <display-name>MyPublisher</display-name>
    <ejb-name>MyPublisher</ejb-name>
    <home>PublisherHome</home>
    <remote>Publisher</remote>
    <ejb-class>PublisherBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    <resource-ref>
         <res-ref-name>jms/MyTopicConnectionFactory</res-ref-name>
              <res-type>javax.jms.TopicConnectionFactory</res-type>
              <res-auth>Container</res-auth>
              <res-sharing-scope>Shareable</res-sharing-scope>
         </resource-ref>
         <message-destination-ref>
         <!--message-destination-ref-name>topic/TopicName</message-destination-ref-name-->
              <message-destination-ref-name>topic/MyMDBTopic</message-destination-ref-name>
              <message-destination-type>javax.jms.Topic</message-destination-type>
              <message-destination-usage>Produces</message-destination-usage>
              <message-destination-link>PhysicalTopic</message-destination-link>
         </message-destination-ref>
         <security-identity>
    <use-caller-identity/>
    </security-identity>
    </session>
    </enterprise-beans>
    <assembly-descriptor>
         <container-transaction>
         <method>
              <ejb-name>topicMessageBean</ejb-name>
              <method-name>onMessage</method-name>
              <method-params>
              <method-param>javax.jms.Message</method-param>
              </method-params>
         </method>
         <trans-attribute>Required</trans-attribute>
    </container-transaction>
    <container-transaction>
         <method>
              <ejb-name>MyPublisher</ejb-name>
              <method-intf>Remote</method-intf>
              <method-name>publishNews</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
    </container-transaction>
    <message-destination>
         <message-destination-name>PhysicalTopic</message-destination-name>
         </message-destination>
    </assembly-descriptor>
    </ejb-jar>
    can somebody help???
    Zahid

    Thanks for the reply.
    I'm not getting any errors. The MDB doesn't get invoked when a message is sent on the Topic its listening on.
    The deployment descriptors are given below:
    ejb-jar.xml
    <message-driven>
    <ejb-name>PkgMDB</ejb-name>
    <ejb-class>com.pkg.jms.PkgMDB</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-driven-destination>
    <destination-type>javax.jms.Topic</destination-type>
    </message-driven-destination>
    </message-driven>
    orion-ejb-jar.xml
    <message-driven-deployment name="PkgMDB"
    destination-location="jms/PkgTopic"
    connection-factory-location="jms/PkgConFactory">
    <resource-ref-mapping name="jms/PkgTopic" />
    <resource-ref-mapping name="jms/PkgConFactory" />
    </message-driven-deployment>
    jms.xml
    <topic name="jms/PkgTopic" location="jms/PkgTopic">
    </topic>
    <topic-connection-factory name="jms/PkgConFactory" location="jms/PkgConFactory">
    </topic-connection-factory>
    web.xml
    <resource-ref>
    <res-ref-name>jms/PkgTopic</res-ref-name>
    <res-type>javax.jms.Topic</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    <resource-ref>
    <res-ref-name>jms/PkgConFactory</res-ref-name>
    <res-type>javax.jms.TopicConnectionFactory</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    Regards
    Ranga

  • JMS in clustered weblogic

    Is there any intention of including support for JMS queues clustering? If so, would it include clustering of messages after a server shutdown?
    Thanks

    Hi Ignacio,
    We do not support the JMS API from Coherence. That is one of the APIs that we currently defer to the application server providers, such as BEA. Unfortunately, BEA WebLogic does not currently support Coherence for its clustered queues, but I believe in WebLogic 8.1 you can manually fail-over BEA WebLogic queues in a cluster.
    Peace,
    Cameron Purdy
    Tangosol, Inc.
    Coherence: Easily share live data across a cluster!

  • Reconnectivity problem (2G/3G/Edge) on the new iPad.

    When do we get the up-date to solve the reconnectivity problem (2G/3G/Edge) on the new iPad? When will Apple admit to the proble?

    Never.They only want our money.

  • Javax.jms.InvalidDestinationException: Invalid destination

    Hi!
    Can any one tell me why this error is occured "javax.jms.InvalidDestinationException: Invalid destination" is it because of it unable to find the Destination queue?
    Thanks
    Sreenath

    Yes.. the exception is self explanatory.. check you server admin to see what is the name of destination you are using.

  • Major Reconnection Problems

    Hey all,
    An editor just emailed me the project file of a rough cut for a feature we're both working on, and I've been having pretty major reconnection problems. Despite the fact that we're working with exactly the same files on two identical drives, when I try to reconnect all the media I get the message:
    +"The file does not have proper content to reconnect to "(clip name)" at time (timecode) in sequence "(sequence name".+
    +Click "OK" to make this item independent and go to the next clip or "Cancel" to skip all clips from this file."+
    When I click "OK" (which I have to do 200 times, as this problem reoccurs over and over with many different clips at many different points in time), it eventually reconnects.
    However, though it appears that the clips have all successfully reconnected, the sync for the entire project is almost completely off. Sometimes it reconnects to the wrong part of the correct audio clip, sometimes it substitutes the incorrect clip altogether.
    Does anyone have any idea how to solve this problem? It's been driving me crazy for weeks.

    Stumbled upon these problems today. Final Cut Pro did not way want to reconnect the media to the capture scratch files. Only thing I did was I moved them to another drive.
    What solved the problem: rename all scratch files by adding the extension '.mov'. Confirm they are now decent quicktime movies.
    You might want to learn the single unix terminal command to do this for the entire batch at once.

  • JMS/MDB : message synch problem

    We have a WL 8.1 FIFO based queue to which are attached a bunch of MDBs. These MDBs pull messages out of the queue, does some processing and put messages in another queue.
    We would like to get the messages in the second queue in the same order in which they were picked up from the first queue.
    But because the processing time is slightly different for each type of messages, sometimes some messages jump ahead of another one that was picked up earlier.
    We are free to introduce other queues, or to use bridges etc. Can somebody suggest a solution.
    ( something like using destination key )
    Thanks
    --sony                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    Hi,
    if possible, try with "max-bean-in-free-pool=1".
    note: it would be performance impact, as there would be single bean instance.
    Thanks,
    Qumar Hussain

  • JMS Sender Channel - reconnect problem

    Hi,
    I've got a sender channel which picks up messages from MQSeries and sends them to XI.
    If I set the MQSeries Queue to "Get Inhibited" to simulate a network problem, the channel goes down with a standard error message
    "Sender channel. Details: MQJMS2002: failed to get message from MQ queue Code: MQJMS2002".
    A receiver channel that looses connection gives me the same error.
    So I've got 2 problems :
    - how can I get the MQSerier error message (2016, MQRC_GET_INHIBITED )
    - how come the adapter doesn't reconnect after correction of the problem ?
    Tx in advance
    Tom

    Hi Tom,
      I get the same error , i tryed looking at the IBM and eocnte at the following links, but not able to solve the problem yet.
    <a href="http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg1PK02976">http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg1PK02976</a>

  • Some problem with JMS MDB

    In my application i am writing object messages to several queues considering its message id.
    i am using mdb as queue listener.
    i thought to create a sperate mdb for each queue. is this is correct.
    can one mdb can listen several queie.
    from mdb i get the messages and put them to a hash map
    how can i access the hash map from server side
    please help me

    i didn't have internet connection past couple of days.
    in my application i am writing down objects to respective queue considering its id.
    that means depending on the id the object will be written to respective queue.
    then a mdb listens to the queue and write that in to a hash map.
    say there is a queue called workflowq1. this contains events of workflow 1. the event objects will be retrieved and will be freezed till all the evnts gather. then those events will be written in to respective work flow event file.
    i am using the hash map to freeze the work flow events.all the process is done in server side.
    hence the hash map is created in side the mdb. could plese tell me how shall i access the contains of the hash map from other class. i have declared the hash map as a class variable of mdb.
    i want to access the created hash map outside the mdb. how shall i do that.
    please help me
    thanks in advance

  • Fail over JMS in clustering

    Hi ,
              I'm newbies to weblogic.
              Currently I need to use JMS to asychronous messaging.
              version I used is weblogic 705.
              The environment is clustering. There is one Admin server, and 2 managed servers by multicasting.
              Let's say, there have managed server#1 and managed server#2.
              I set up JMS servers in each instance of managed Servers by using distributed Queue.
              And used MDB to consume the message from queue and deploy to each server.
              used persistance store in DB by JDBC connection Pools which is deploy multipools to cluster.
              when firing hte message using distributed queue, messages keep in persistance store according to load balancing.
              - Is there any work around to support failover?
              Lets say, there fired 20 messages and according to the load balancing, each queue in server server got 10 records. but their persistance is in DB.
              - After firing messages, I intentionally shut down the 2nd server, and restart again. Then MDB consume message which is already send to him. But There have a problem, when restarting the 2nd server, the message in queue( persistance in DB) which is related by 1st serer is wipe out from DB persistance.
              Why can't identify why this one happen.
              Anybody can help me.
              Best regards,

    I'm not sure what is your question? Why are the messages stored in the DB wiped out?
              I don't remember WebLogic 7.0 too much, is there a way to setup for JMS migration? If so, you can then migrate from 1 server to another so the messages can be processed even if the server goes down.

  • JDBC, JMS and EJB transactions - possible problem?

    Hello,
              I am using Oracle 9, Weblogic 8.1 SP 4, MyEclipse and
              XDoclet.
              In my current project I have the following piece of code
              in one of my message driven beans (code cited as pseudocode
              without unnecessary details):
              * @ejb.bean name="MyMessageProcessor"
              * display-name="Display name for a MyMessageProcessor"
              * jndi-name="ejb/MyMessageProcessor"
              * description="Bean MyMessageProcessor"
              * destination-type="javax.jms.Queue"
              * transaction-type="Container"
              * acknowledge-mode="Auto-acknowledge"
              * subscription-durability="Durable"
              * generate="false"
              * @ejb.transaction type="Required"
              public class MyMessageProcessor implements MessageDrivenBean, MessageListener {
              public void onMessage(Message msg) {
                   try {
                        //obtaining connections to two different databases via JNDi
                        java.sql.Connection connOne =
                        ((DataSource)ctx.lookup("DataSourceOne")).getConnection();          
                        java.sql.Connection connTwo =
                             ((DataSource)ctx.lookup("DataSourceTwo")).getConnection();
                        // performing some UPDATEs and INSERTs on connOne and connTwo
                        // calling some other methods of this bean
                        //creating the reply JMS message and sending it to another JMS queue
                        Message msgTwo = this.createReplyMessage(msg)
                        this.queueSender.send(msgTwo);
                        //commiting everything
                        this.queueSession.commit();          
                   } catch (Exception ex) {
                   try {
                        if (this.queueSession!=null) this.queueSession.rollback();
                   } catch (JMSException JMSEx) {};     
                   this.context.setRollbackOnly();
              Some days ago (before the final remarks from my client) there used to be only one DataSource configurated on the basis of the
              connection pool with non-XA jdbc driver. Everything worked fine
              including the transactions (if anything wrong happend not only wasn't the replymessage sent, but also no changes were written
              to database and the incomming message was thrown back to the my bean's
              queue).
              When I deployed the second DataSource I was informed by an error message, that only one non-transactional resource may
              participate in a global transaction. When I changed both datasources
              to depend on underlying datasources with transatcional (XA) jdbc drivers, everything stopped working. Even if
              EJB transaction was theoretically successfully rolledbacked, the changed were written to the database
              and the JMS message wasn't resent to the JMS queue.
              So here are my questions:
                   1. How to configure connection pools to work in such situations? What JDBC drivers should I choose?
                   Are there any global server configurations, which may influence this situation?
                   2. Which jdbc drivers should I choose so that the container was able to rollback the database transactions
                   (of course, if necessary)?
                   3. Are there any JMS Queue settings, which would disable the container to send message back to the
                   queue in case of setRollbackOnly()? How should be the Queue configurated?
              As I am new to the topic and the deadline for the project seems to be too close I would be grateful
              for any help.
              This message was sent to EJB list and JDBC list.
              Sincerely yours,
              Marcin Zakidalski

    Hi,
              I found these information extremely useful and helpful.
              The seperate transaction for sending messages was, of course, unintentional. Thanks a lot.
              Anyway, I still have some problems. I have made some changes to the
              code cited in my previous mail. These changes included changing QueueSessions
              to non-transactional. I also set the "Honorate global transactions" to true.
              I am using XA JDBC driver. After setting "Enable local transactions" to false
              (I did it, because I assume that JDBC transactions should be part on the global
              EJB transaction) I got the following error:
              java.sql.SQLException: SQL operations are not allowed with no global transaction by default for XA drivers. If the XA
              driver supports performing SQL operations with no global transaction, explicitly allow it by setting
              "SupportsLocalTransaction" JDBC connection pool property to true. In this case, also remember to complete the local
              transaction before using the connection again for global transaction, else a XAER_OUTSIDE XAException may result. To
              complete a local transaction, you can either set auto commit to true or call Connection.commit() or Connection.rollback().
              I have also inspected the calls of methods of bean inside of onMessage() method just to check, whether
              the transactions are correctly initialized (using the weblogic.transaction.Transaction class).
              My questions are as follows:
              1. Any suggestions how to solve it? I have gone through the google answers on that problem and only
              thing I managed to realize that JDBC must start its own transaction. Is there any way to prohibit it
              from doing that? Can using setAutocommit(true/false) change the situation for better?
              2. How to encourage the JDBC driver to be a part of EJB transaction?
              3. As I have noticed each of ejb method has its own transactions (transactions have different
              Xid). Each method of the bean has "required" transaction attribute. Shouldn't it work in such
              way that if already started transaction exists it is used by the called method?
              4. The DataSources are obtained in my application via JNDI and in the destination environment I will have slight
              impact on the configuration of WebLogic. What is least problematic and most common WebLogic configuration which would
              enable JDBC driver to participate in the EJB transaction? Is it the WebLogic configuration problem or can it be
              solved programmically?
              Currently my module works quite fine when "enable local transactions" for DataSources is set to true, but this way
              I am loosing the ability to perform all actions in one transaction.
              Any suggestions / hints are more than welcomed. This message was posted to jdbc list and ejb list.
              Marcin

  • Messages in JMS Topic Error destination

    Hi,
    I have a JMS Topic with an error destination queue configured. Now, In our scenario , there are two subscribers of topic for the same message. Suppose for a message published to topic, subscriber1 is able to processes message successfully but subscriber2 throws errors when processing the same message.
    1. Once the redelivery limit is reached and subscriber2 continues to throw exception, Will the message get en queued to Error Destination (in spite of the fact that subscriber 1 has processed the same message successfully) ?
    2. For a consumer (e.g MDB) listening to Error destination and consuming error messages, Is it possible to determine which topic subscriber was unable to process the message ?
    Please let me know
    Regards,
    Arif

    Here it depends on the state of the message, if the message is visible then the message would be available for consumption, else it is not. In case the subscriber 2 failed to consume the message and the message is still visible then a retry would be made, else the message would not be retried.
    In case the message is visible then the message would be move to the error queue based on the configured redelivery attempts.
    Additionally, an MDB can find the destination using the getJMSDestination() call. But as per my understanding we will only be able to get the name of the last destination which in this case would be error queue:
    http://docs.oracle.com/javaee/1.4/api/javax/jms/Message.html#getJMSDestination%28%29

  • Container managed transactions in 9.0.3 (plus AQ JMS/MDB)

    Something for "real programmers", similar to MDB Transaction Exception on OC4J 9.0.4 (MDB Transaction Exception on OC4J 9.0.4) but little bit different. Maybe author of the mentioned thread can find some answers here also.
    We have an MDB accessing AQ in database (this works either with 9i and 8i). MDB receives the message (actually TextMessage), retrieves the content/properties and calls some EJBs making database operations. When we used just the same DataSource for JMS resource provider and SQL operations, everything worked OK. But we need to move one step further - making calls to several databases, some 8i, some might 9i. We were able to start CMT for one DataSource, i. e. configuring OrionCMTDataSource over JDBC ORACLE driver (if you use different DataSource class, message remains stucked in queue and eventually expires. If you don't specify container managed transactions for MDB in ejb-jar.xml, it works with any DataSource class - but message is lost every time exception occurs - not very pleasant situation).
    We are trying to configure DataSources so they provide transactional support while using commit coordinator. There are some documents describing this - in 9iAS Data Sources and JTA, Orion Data Sources and possibly JTA description in 9i database documentation. Both ORACLE documents are very similar. Generally, these are main steps:
    1) configure each data source so they provides CMT support (wrap native driver/data source by OrionCMTDataSource class)
    2) create datasource commit-coordinator database, also using CMT(?)
    3) create user in commit-coordinator database and same in each other database with connect, resource, create session + force any transaction priviledge (since it would commit other users transactions)
    4) create database links from commit-coordinator database to each databases (but... see questions below)
    5) configure commit coordinator so it uses proper data source
    6) add each DB link as a property to data sources
    7) configure data source for JMS
    8) connect JMS resource provider with JMS data source
    9) Start container, send message, etc.
    So far the only result we've got is a trace file in database user dumps and generic "javax.transaction.SystemExeption: Could not commit: error code 29540". User dump occurs in a "remote" database, not the one where commit coordinator resides. If I drop database links, result is the same, so it seems like problem with data source itself. In a dump there is piece of text like this: "FATAL ERROR IN TWO-TASK SERVER: error = 12571" and "ksedmp: internal or fatal error
    Current SQL statement for this session:
    begin dbms_aqin.aq$_dequeue_in( :1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22, :23, :24, :25, :26, :27, :28, :29); end; ". I think AQ call is just a coincidence since it is the first one involved in transactions. Down there in HEX part of a dump there is a message about protocol or network error ("probably ORA-28546")
    Here is an example of data source configuration we are using:
    <!-- Passport CMT DataSource -->
    <data-source
    name="PassportDS"
    class="com.evermind.sql.OrionCMTDataSource"
    location="jdbc/PassportDS"
    connection-driver="oracle.jdbc.driver.OracleDriver"
    username="int"
    password="int"
    url="jdbc:oracle:thin:@ws18885:1521:ICON"
    inactivity-timeout="30">
    <property name="dblink" value="ICON.WS18885.APPG.COM"/>
    There are some questions pending. Obvious one is if CMT is working or not at all and we should find some different solution (Bean managed transactions or use XA, hmmm). Other one might be that database link has to be "fully-qualified". I'm not sure what it means: using username and password? Using database name along with domain (if any)? So far it seems links are not used anyway.
    We've tried several databases, like 9.2.0.1 and 9.0.3 versions. Result is the same.
    We've tried to use XA data source of ORACLE (oracle.jdbc.xa.client.OracleXADataSource) and OrionCMT data source bound by xa-source-location to it but container gets stucked upon restart with "Investingating resource 'XADataSource PassportXADS' for recovery..." and similar messages for an hour.
    There is an OracleJTADataSource mentioned in several documents, but I cannot find any in jdbc classes - was it deprecated?
    Lies the problem in JMS itself? So far we've been able to use AQ in 8i and 9i and succesfully commit every transaction - provided transaction was local.
    Since XA itself is working I guess problem might be with configuration.
    I will appreciate any opinion on CMT... also, if you have any questions, please ask.
    Myrra

    Hi Per,
    I don't have an answer for you -- sorry {:-( -- only a suggestion (which
    you may have already tried, anyway :-). Have you tried running OC4J
    in "debug" mode? The following web-page gives details on how to do that:
    http://kb.atlassian.com/content/atlassian/howto/orionproperties.jsp
    Also, if you aren't already aware of them, the following web-sites
    may also be helpful (not in any particular order):
    http://www.orionserver.com
    http://www.orionsupport.com
    http://www.elephantwalker.com
    Good Luck,
    Avi.

  • JMS Proxy to Web Service Problem

    Hi All,
    I have a JMS proxy that routes messages to a web service. I have set the delivery failure parameters on the JMS queue. When a message is put onto the queue and there is a problem within the message flow proper, the message is retried the appropriate number of times and put onto the Error Destination queue as necessary. However, if there is a problem calling the web service, message delivery is NOT retried, the message is NOT put onto the Error Destination queue, and the message is lost. The web service itself isn't throwing a SOAP Fault, but the business service can't reach the web service (firewall issue). My Route Error Handler in the message flow is hit and it performs a Reply With Failure.
    Can anyone please explain to me if this is by design and, if so, why? Also, how does a person work around this? I need the message to be retried. I understand that a web service cannot participate in an XA transaction, but it seems to me any failure within the message flow should cause a retry on the JMS queue.
    Thanks.
    Edited by mvcg at 06/11/2008 1:57 PM

    You should remove the Route Node since it should only be used in HttpProxy.
    Instead use just the request pipeline for your routing.
    if (condition1)
    Service Callout (or publish) to Service1
    else if (condition2)
    Service Callout (or publish) to Service2
    else
    Rasie error?
    You shouldn't need to reply with failure. Any errors in the service callout or publish should go to exception handling if you use QoS exactly-once.

Maybe you are looking for

  • Music plays fine in iTunes but not at all on iPod

    I have a few songs that I created in Soundtrack Pro that I have imported into iTunes. I have all of the music I created in one folder on iTunes. I just uploaded 4 new songs and they will not play on my iPod. When I click on a song (the ones I created

  • Creating a external content type for Read and Update data from two tables in sqlserver using sharepoint designer

    Hi how to create a external content type for  Read and Update data from two tables in  sqlserver using sharepoint designer 2010 i created a bcs service using centraladministration site i have two tables in sqlserver 1)Employee -empno -firstname -last

  • IPhoto Not Installed After Snow Update

    Ok let me get all the questions out of the way. - I installed family pack Snow on both my MBP & wifes MBP - My MBP works great, all that is advertised - The other MBP is running just the same, except it's missing iPhoto Yes that's right iPhoto is not

  • Keynote on Ipad

    Hi there, I am having a little problem with Keynote app on an iPad 3 Retina (ios7)- when exporting a presentation as PDF, the margins of images becomes flashy while parts of written text is missing. The same happens when opening the presentation (as

  • RF loop through failing when high eco kicks in

    I took delivery of my shiny tiny G4 2100 on Friday - it's immense! However, it does seem to have a bug in its handling of RF loop through... Last night I dropped the box into standby and switched to my TV's on-board tuner. My G4 was configured for hi