JMS MQSERIES UNCOMMITTED MESSAGES

Hi,
I am having some problems when working with JMS over MQSeries 5.2.
I am developing a program using JMS that tries to send messages to a MQSeries queue under unit of work. The program works rigth while the number of uncommited messages is not too high but when I try to send more tan 3000 messages the following error occurrs:
Message: javax.jms.JMSException: MQJMS2007: failed to send message to MQ queue
I was checking MQSeries Queue Manager configuration and I saw the maximum Number of Uncommited Messages in this Manager being this of 1000000 so the problem is not in this way. Apart of this, if a send all the messages without unit of work I do not have any trouble so far.
Can anybody help at this point?
Cheers

can you post your code ?
i am trying to send a message and i get the same error code ...
My code is:
import java.util.Properties;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.jms.XAQueueConnection;
import javax.jms.XAQueueConnectionFactory;
import javax.jms.XAQueueSession;
import javax.naming.Context;
import javax.transaction.xa.XAResource;
import org.apache.log4j.Logger;
import es.banesto.utils.LeerProperties;
* QSender se encarga de toda la operativa respecto al
* envio de mensajes a colas MQ.
public class QSender
     public static Logger log = Logger.getLogger("QSender");     
     protected String icf = "com.sun.jndi.fscontext.RefFSContextFactory";
     protected String rUrl = "file://D:/jms";
     protected String factoryName = "QCFADAPTADOR";
     protected String queueName = "INCIDENCIAS";
     private QueueSender sender = null ;
     private XAQueueConnection connection = null;
     private XAQueueSession session =      null;
     * Method leerPropiedades.
     * Lectura de los parametros de configuracion necesarios
     * @return boolean
     public boolean leerPropiedades()
          try
               LeerProperties ref = new LeerProperties();
               Properties props = ref.cargarArchivo("qsender.properties");
               icf = (String) props.getProperty("icf");
               rUrl = (String) props.getProperty("rUrl");
               factoryName = (String) props.getProperty("factoryName");
               return true;
          catch (Exception e)
               log.info( "No se encontro el archivo qsender.properties");
               log.info( e.getMessage());
          return false;
     * Method contextoQSender.
     * Determina el contexto JNDI a utilizar
     * @param colaSalida
     public void contextoQSender ( String colaSalida)
          try
               queueName = colaSalida ;
               Context ctx = GestorContextoJNDI.initJNDI(icf, rUrl);
               XAQueueConnectionFactory factory =
                    (XAQueueConnectionFactory) ctx.lookup("A");
               Queue queue = (Queue) ctx.lookup(queueName);
               ctx.close();                         
               this.connection = factory.createXAQueueConnection();                         
               this.session = connection.createXAQueueSession();
               QueueSession qsession = session.getQueueSession();
               this.sender = qsession.createSender(queue);
          catch (JMSException e)
               log.info ("Problema en contextoQSender ..");
               Exception ee = e.getLinkedException();
               log.info ( ee.getMessage());
               log.info ("No se pudo conectar con la cola.");
               log.info ("Revisar existencia, archivos de configuracion.");               
          catch (Exception e )
               log.info ( e.getMessage());
               log.info ("No se pudo conectar con la cola.");
               log.info ("Revisar existencia, archivos de configuracion.");                              
     * Method send.
     * Envia un mensaje
     * @param p_mensaje
     public void send( String p_mensaje)
          TextMessage mensaje = null ;
          try
               //Send messages
               log.info ( "session.getTransacted() ->" +session.getTransacted());
               mensaje = session.createTextMessage(p_mensaje);
//               sender.send(mensaje,
//                              DeliveryMode.PERSISTENT,
//                              Message.DEFAULT_PRIORITY,
//                              Message.DEFAULT_TIME_TO_LIVE);               
               sender.send(mensaje);                              
               session.commit();                              
          catch (JMSException e)
               Exception ex = e.getLinkedException();               
               log.info ("Error al enviar a cola :" + ex.getMessage());
               try
                    Queue q= sender.getQueue();
                    log.fatal ("Nombre JMS de cola : " + q.getQueueName());
               catch (JMSException ejmsx)
                    /* Nada que hacer */
               log.fatal ("Mensaje por excepcion : ");               
               log.fatal( e.getMessage());
               log.info ( "El mensaje a enviar era: ");
               log.info ("->" + p_mensaje + "<-");
          catch (Exception e)
               try
                    session.rollback();
               catch(JMSException ejms)
                    log.fatal ( ejms.getMessage());     
//               log.info ("Error al enviar a cola :" );
//               try
//                    Queue q= sender.getQueue();
//                    log.fatal ("Nombre JMS de cola : " + q.getQueueName());
//               catch (JMSException ex)
//                    /* Nada ... no se puedo resolver nombre ... */               
//               log.fatal ("Mensaje por excepcion : ");               
//               log.fatal( e.getMessage());
//               log.info ( "El mensaje a enviar era: ");
//               log.info ("->" + p_mensaje + "<-");
     * Method cerrarConexion.
     * Cierra conexion
     public void cerrarConexion ()
          try
               if ( connection != null )
                    connection.close();
          catch (Exception e)
               log.info("Error al cerra cola");
               log.info (e.getMessage());
     * Method main.
     * @param args
     public static void main(String[] args)
          QSender ref = new QSender();
          ref.leerPropiedades();
          ref.contextoQSender("INCIDENCIAS");
          ref.send("hola");
     * Returns the log.
     * @return Logger
     public static Logger getLog()
          return log;
     * Returns the connection.
     * @return XAQueueConnection
     public XAQueueConnection getConnection()
          return connection;
     * Returns the factoryName.
     * @return String
     public String getFactoryName()
          return factoryName;
     * Returns the icf.
     * @return String
     public String getIcf()
          return icf;
     * Returns the queueName.
     * @return String
     public String getQueueName()
          return queueName;
     * Returns the rUrl.
     * @return String
     public String getRUrl()
          return rUrl;
     * Returns the sender.
     * @return QueueSender
     public QueueSender getSender()
          return sender;
     * Returns the session.
     * @return XAQueueSession
     public XAQueueSession getSession()
          return session;
     * Sets the log.
     * @param log The log to set
     public static void setLog(Logger log)
          QSender.log = log;
     * Sets the connection.
     * @param connection The connection to set
     public void setConnection(XAQueueConnection connection)
          this.connection = connection;
     * Sets the factoryName.
     * @param factoryName The factoryName to set
     public void setFactoryName(String factoryName)
          this.factoryName = factoryName;
     * Sets the icf.
     * @param icf The icf to set
     public void setIcf(String icf)
          this.icf = icf;
     * Sets the queueName.
     * @param queueName The queueName to set
     public void setQueueName(String queueName)
          this.queueName = queueName;
     * Sets the rUrl.
     * @param rUrl The rUrl to set
     public void setRUrl(String rUrl)
          this.rUrl = rUrl;
     * Sets the sender.
     * @param sender The sender to set
     public void setSender(QueueSender sender)
          this.sender = sender;
     * Sets the session.
     * @param session The session to set
     public void setSession(XAQueueSession session)
          this.session = session;
[email protected]

Similar Messages

  • Sync/Async bridge via JMS with FAULT messages

    Hello all,<br><br>
    I set up a sync/async bridge scenario with using of JMS communication channel (SAP - JMSReceiverCC - JMSServer and application - JMSSenderCC - SAP). The normal communication works fine.<br>
    But what we can not solve is the Fault Message handling. If there is a application error behind the JMS, a fault message is generated instead of proper application response and sent back to XI. Without any additional setup of JMS Sender CC the processing of the message ends with "MAPPING - EXCEPTION_DURING_EXECUTE", because normal "response mapping" is executed instead of "fault message mapping". This is correct behavior without any discussion.<br><br>
    [SAPhelp|http://help.sap.com/saphelp_nw70/helpdata/en/45/202845de34072ce10000000a155369/frameset.htm] says that there are 2 module parameters to be set : fault, faultNamespace. The description is rather vague, so let's see, what the "NotifyResponseBean" does, when parameters fault/faultNamespace are filled:<br><br>
    <pre>if(fault != null && faultNamespace != null)
      if(faultNamespace.equals("http://sap.com/xi/XI/System"))
        ((XIMessage)message1).setMessageClass(MessageClass.SYSTEM_ERROR);
        ((XIMessage)message1).setError(fault, "no additional information");
      } else
        ((XIMessage)message1).setMessageClass(MessageClass.APPLICATION_ERROR);
        ErrorInfo errorinfo = message1.createErrorInfo();
        errorinfo.setAttribute("ApplicationFaultInterface", fault);
        errorinfo.setAttribute("ApplicationFaultInterfaceNamespace", faultNamespace);
        errorinfo.setAttribute("ErrorCode", fault);
        errorinfo.setAttribute("AdditionalErrorText", "no additional information");
        message1.setErrorInfo(errorinfo);
    } else
      ((XIMessage)message1).setMessageClass(MessageClass.APPLICATION_RESPONSE);
    }</pre><br>
    The code is pretty straight forward so one could assume, that it's the name and namespace of inbound synchronnous message interface what is supposed to be filled in the values of each parameter. And from that kind of information SAP XI can evolve how to handle the response, actually the fault.<br>
    Unfortunatelly the real situation is different - every time the fault message is generated and sent back to XI, the response is correctly corelated with the request message, "WaitResponseBean" and "NotifyResponseBean" are finished correctly and the processing crashes in messaging class on following exception:<br><br>
    java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:592) at
    com.sap.aii.messaging.mo.MessageContext.setAttribute(MessageContext.java:140) at
    com.sap.aii.adapter.xi.ms.XIMessage.updateHeaders(XIMessage.java:4244) at
    com.sap.aii.adapter.xi.ms.XIMessage.getTransportHeaders(XIMessage.java:570) at
    com.sap.aii.af.ra.ms.impl.ServerConnectionImpl.request(ServerConnectionImpl.java:212) at
    com.sap.aii.af.ra.ms.impl.core.transport.http.MessagingServlet.doPost(MessagingServlet.java:337) at ...
    <br><br>
    Is there anyone, who can put more light on JMS sync/async bridge fault handling ???
    <br><br>
    Thank you ...<br>
    Regards
    Tomas

    Hello again,
    I proceed in investigation little more, but the main problem has not been solved. I found that the problem is not even in WaitResponseBean (placed in JMCReceiverCC). This bean is woken up properly on base of proper CorrelationID. See the log:
    2009-10-15 11:00:33 Success WRB: entering WaitResponseBean
    2009-10-15 11:00:33 Success WRB: retrieving the message for f1ea1fc0-b96d-11de-9b68-00144f4acd86 ...
    2009-10-15 11:00:46 Success WRB: retrieved the message: ApplicationError
    2009-10-15 11:00:46 Success WRB: leaving WaitResponseBean
    I think, that the problem is somewhere within main messaging functionality. I suppose that on base of exception message:
    com.sap.aii.messaging.mo.MessageContext.setAttribute(MessageContext.java:140) at
    which is generated.
    Any ideas or comments ?
    Thank you in advance.
    Regards
    Tomas

  • Make jms queue forward messages to a proxy service

    Greetings!
    Here's my task. I have a pretty complex proxy service that routes the message to different web services. This proxy has a conditional branch. Now, what I needed to do was implement a JMS queue and fuse it with my proxy. I have successfully created a proxy and a business service that send messages to the JMS queue. However, the queue doesn't forward the messages to my routing proxy. My guess is that when the queue tries to send the message to my proxy, it encounters a conditional branch and doesn't know which branch to use. I have tried to put a log action in the default branch to determine if the message ends up there, but it doesn't.
    If anyone knows a way to forward messages from a JMS queue to a proxy with a conditional branch, please advise a solution.
    Thanks in advance,
    Andrew

    Hello Andrew,
    To communicate with JMS (either to poll JMS for dequing messages or to connect to JMS to enqueue a message), you have to use JMS transport in Oracle Service Bus.
    I am still not sure if this would have worked had I left the conditional branch in my Message Flow.It will work. You may try configuring it.
    Could you please be more specific as to where I can enable message tracking for my proxy service?You may enable message tracing in "Operational Settings" of a particular proxy/business service. Please refer sections "Configuring Operational Settings for Proxy Services" and "Configuring Operational Settings for Business Services" on below link to know more -
    http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/consolehelp/monitoring.html#wp1028056
    Should it be enabled for a specific proxy service or for all of them?You may enable it for all or for a particular service. It depends on requirement.
    Regards,
    Anuj

  • Scaleability of JMS Clients Receiving Messages

    How do you scale the receipt of messages in a JMS client for messages from the same topic?
    Given a topic, I would like to enable concurrent receipt and processing of messages by many concurrent listeners where a single message is only consumed once by any of the listeners. Even more, I would like to scale by having many clients with possibly many listeners servicing the same topic where a single message is only consumed/processed once.
    However, based on the documentation (see below) it appears sessions only enable a single thread of execution to be simultaneously running servicing incoming messages one at a time! And adding subscribers implies the delivery of a single message to each subscriber creating duplicate processing of the same message.
    Quote from JMS Tutorial: "The session used to create the message consumer serializes the execution of all message listeners registered with the session. At any time, only one of the session's message listeners is running."

    Hi vincegeorge,
    To be able to have several consumers actively using message listeners concurrently you could create each consumer on a different session. This would get around your problem of concurrent receipt and processing of messages when using message listeners.
    The second problem, ensuring that each message is received by only one TopicSubscriber is much more difficult. As each subscriber will receive every message that is sent to the particular topic then each subscriber will be sent a copy of that message. The only exception to this rule is if you have set a "message selector" for the consumer. If you knew exactly which subscribers were active at the publisher end then you could set a property on the message, e.g. SubscriberID=1, on the message and then each subscriber could set a message selector to say that they only wished to receive messages with the property SubscriberID set to their particular number. To notify the publisher which subscribers are active you could have a special destination that contains heartbeat messages informing everyone of their subscriberID.
    However, is it possible instead though that you could use a queue. This would be much easier to code (no message selector and no need to keep everyone informed of which subscriberID's are available) as the queue would ensure that only one receiver ever consumed the message.
    Hope this helps a little,
    Tom Jenkinson
    Arjuna Technologies Limited

  • Foreign JMS Server vs Messaging bridge

    Could any body tell me which one is the best Whether Foreign JMS Server or Messaging bridge for connecting Weblogic to IBM MQ Series.I am trying to use foreign jms server but i dont know how to post the message to that queue i created in foreign jms server..

    Hi,
              For sending messages non-transactionally, foreign JMS server is sufficient. For sending messages transactionally using standard JTA transactions, the simplest way is to send them on the server and reference the foreign JMS through an EJB resource reference. See the the following FAQ for a walk-through of the various options, including guidance on when to use a bridge:
              http://e-docs.bea.com/wls/docs81/faq/interop.html
              Tom

  • JMS Patterns - Generic Message Handler

    Hi,
    For those interested in Java EE patterns, I've created a [blog post|http://jonathanjwright.wordpress.com/2009/08/12/jms-patterns-generic-message-handler/] outlining the use of a generic message handler to simplify MDB message type checking and payload extraction.
    Regards,
    Jonathan

    This requirement has now gone away after implementing SP21

  • JMS, MQSeries, R/3 Link, NT and AIX...

    Hi all,
    To put you in situation, I have a java application which can run from any type of OS as of now. It sends documents to a queue (IDOCS) and those documents are then sent to SAP by an R/3 Link adapter. Using native binding and running the java application on the same computer as the QueueManager (AIX) it was all working fine.
    Now, I have translated my app to use JMS instead and tried to run it on my Windows 2000 PC. The message are sent allrigth to the queue, but R/3 Link is now giving me a handfull of errors, complaining about conversion, character sets and things like that.
    Here is a sample of errors I get:
    02/18/03 17:00:39 SMQ4165: Warning on MQGET from inbound queue. Reason code 2110.
    EXPLANATION: The attempt to get a message from the inbound message queue returned a warning. The warning code was 2110. The message will be passed to the use
    r exit if one has been specified. If no exit was specified, the message will be passed to the bad message queue. If no bad message queue was specified, the
    message will be left on the inbound queue, and the server will terminate.
    ACTION: None.
    02/18/03 17:00:39 SMQ4192: A data conversion problem occurred on the MQGET. Attempting to process message.
    EXPLANATION: A warning was issued because the message needs codepage conversion, but the message is either not in MQSTR format, or a user-defined data- conver
    sion exit call failed.
    ACTION: Ensure that incoming messages from machines with a different code page, are in MQSTR format or that there is a user exit defined to convert messages i
    n other formats.
    02/18/03 17:00:40 SMQ4167: IDoc has an invalid structure version. IDoc value="16777216". Expected value="1".
    EXPLANATION: The value of the version field in the IDoc header structure contains an invalid value.
    ACTION: Ensure that the IDoc message starts with a valid version of the Saplink header structure (MQSAPH).
    02/18/03 17:00:40 SMQ4191: A message was put to the bad message queue. Bad message type 1, reason 4108.
    EXPLANATION: The message was not in a valid IDoc format. The bad message type is 1 and the bad message reason is 4108.
    ACTION: Check the bad message reason code in the bad message header of the message. Attempt to correct the error and send the message again.
    I finally set the CCSID to 819 in the connection string, now I suspect that my problem is related to the encoding I use but I can't find what to set it to instead. I write everything in a ByteMessage by the way, just as I was doing it with the native bindings.
    Does anyone know how I am supposed to set this up? What encoding type should I set it to? Is the CCSID correct? previously, I was setting the format this way: bytesMessage.format = "MQHSAP ";
    But using JMS, there is no such property so I tried to just write it to the ByteMessage, not sure this works either...
    Thanks in advance,
    Daniel
    If it can be of any help, here is a code fragment of what I am doing:
    using native binding, which was working fine
    //Add the mandatory R3/Link header to our message
    bytesMessage.writeBytes("SAPH");
    bytesMessage.writeInt(1);
    bytesMessage.writeInt(108);
    bytesMessage.writeInt(273);
    bytesMessage.writeInt(819);
    bytesMessage.writeBytes("MQSTR ");
    for(int i = 28; i < 108; i++)
    bytesMessage.writeByte(32);
    bytesMessage.writeBytes(textMessage);
    bytesMessage.encoding = MQC.MQENC_INTEGER_NORMAL;
    bytesMessage.format = "MQHSAP ";
    And using JMS:
    //Test code
    queue = session.createQueue("queue://" + manager + "/" + name + "?priority=5&persistence=2&targetClient=1&encoding=" +
    MQC.MQENC_INTEGER_REVERSED + "&CCSID=819");
    //Add the mandatory R3/Link header to our message
    bytesMessage.writeBytes("SAPH".getBytes());
    bytesMessage.writeInt(1);
    bytesMessage.writeInt(108);
    bytesMessage.writeInt(273);
    bytesMessage.writeInt(819);
    bytesMessage.writeBytes("MQSTR ".getBytes());
    StringBuffer padding = new StringBuffer(80);
    for(int i = 28; i < 108; i++)
    padding.append(" ");
    bytesMessage.writeBytes(padding.toString().getBytes());
    bytesMessage.writeBytes("MQHSAP ".getBytes());
    bytesMessage.writeBytes(textMessage.getBytes());
    queueSender.send(bytesMessage);

    Hi There,
    I know you used JMS and Link for R/3.
    Now I am doing the same but I am getting the same problem besides I am doing what you mention in the forum.
    Can you give me a hand to fix this?
    I have configured and MQSeries under win2003 and in the same machine a Link 4 R/3. I have a Java app using a .bindings file to connect to the Q and send a message the same way you did, but i am getting this error:
    IDoc has an invalid structure header. IDoc value="RFH ". Expected value="SAPH".
    IDoc has an invalid structure version. IDoc value="2". Expected value="1".
    IDoc has an invalid system number. IDoc value=<T.
    IDoc has an invalid client. IDoc value=�Y&#9830;.
    IDoc has an invalid language. IDoc value=.
    A message was put to the bad message queue. Bad message type 1, reason 4110.
    It seems as if the all the JMS headers are at the begining of the msg and it always throw the same error. it doesn't matter what data I put in the bytesMessage.
    I would really appreciate your help.
    Here a portion code of my SendMessage operation.
         public String EnviarMsg(String Msg) throws JMSException {
              String resp = null;
              try {
                   if (getQueueSend() == null) {
                        // Create un objeto QueueSender como productor del mensaje.
                        setQueueSend(QSess.createSender(MQueue));
                        // Crear y enviar un mensaje a la cola.
                   * Aqui viene codigo para enviar msgs a la cola en formato SAP
                   txtMsg = QSess.createBytesMessage();
                   txtMsg.writeBytes("SAPH".getBytes());
                   txtMsg.writeInt(1);
                   txtMsg.writeInt(108);
                   txtMsg.writeInt(273);
                   txtMsg.writeInt(819);
                   txtMsg.writeBytes("MQSTR ".getBytes());
                   byte b = 32;
                   for(int i=28; i<108; i++)
                        txtMsg.writeByte(b);
                   txtMsg.writeBytes(Msg.getBytes());
                   //txtMsg.encoding = MQC.MQENC_INTEGER_NORMAL;
                   txtMsg.setStringProperty("JMS_IBM_Format", "MQHSAP ");
                   //txtMsg.setText(Msg);
                   // QueueSend.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
                   // QueueSend.setTimeToLive(30000);Funciona. Probado con el MQSeries
                   // 6.0
                   QueueSend.send(txtMsg);
                   resp = "OK";

  • Foreign JMS, MQSeries

    Hi,
              I am configuring Foreign JMS in weblogic 8.1.4 to communicate with MQSeries,
              and got following error when weblogic was started. When I configured JMS,
              just copied binding file to local direcotry (Windows XP professional) and
              confiured the the node <provider-url>file:/D:/jndi/</provider-url> in
              weblogic-ejb-jar.xml. I din't find any error when setup Foreign JMS server
              from weblogic console. But there is no class was bound to the desctination
              and facotry jndi in weblogic jndi tree. How I can bound the class object to
              destination and factory jndi.
              ####<Jan 20, 2006 7:40:12 PM CST> <Warning> <EJB> <wwhq728h> <marsJms>
              <ExecuteThread: '14' for queue: 'weblogic.kernel.Default'> <<WLS Kernel>> <>
              <BEA-010061> <The Message-Driven EJB: SubscriberBean is unable to connect to
              the JMS destination: com.xxx.jms.subscriber.destination. The Error was:
              [EJB:011010]The JMS destination with the JNDI name:
              com.xxx.jms.subscriber.destination 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.>
              Thanks in advance for any idea.
              James

    Hi,
              I am configuring Foreign JMS in weblogic 8.1.4 to communicate with MQSeries,
              and got following error when weblogic was started. When I configured JMS,
              just copied binding file to local direcotry (Windows XP professional) and
              confiured the the node <provider-url>file:/D:/jndi/</provider-url> in
              weblogic-ejb-jar.xml. I din't find any error when setup Foreign JMS server
              from weblogic console. But there is no class was bound to the desctination
              and facotry jndi in weblogic jndi tree. How I can bound the class object to
              destination and factory jndi.
              ####<Jan 20, 2006 7:40:12 PM CST> <Warning> <EJB> <wwhq728h> <marsJms>
              <ExecuteThread: '14' for queue: 'weblogic.kernel.Default'> <<WLS Kernel>> <>
              <BEA-010061> <The Message-Driven EJB: SubscriberBean is unable to connect to
              the JMS destination: com.xxx.jms.subscriber.destination. The Error was:
              [EJB:011010]The JMS destination with the JNDI name:
              com.xxx.jms.subscriber.destination 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.>
              Thanks in advance for any idea.
              James

  • JMS MQSeries Communication.

    I am new to JMS and struggling to understand how JMS communicates with MQSeries. I have MQSeries running on Sun Solaris and trying to write a JMS client on Win-2000. I have Suns's J2EE application server 8.0 running on the Win-2000 box. Here are my questions:
    1. Do I need an LDAP server for this?
    2. If answer to the first question is yes: Is LDAP server part of Sun's J2EE Application Server 8.0 or I need to have it seperate?
    3. Does anyone know of a free LDAP server available for download?
    4. How are LDAP server and the application server work together to locate and post message on MQSeries queue?
    5. Do I need to have a special setup on the MQ Server side to support JMS?
    Any help will be appreciated. I am desperate to find these answers.
    - Pankaj

    Hi Sharma,
    1. With SUN AS you can use File Store instead of LDAP to store objects (the same is probably true for MQSeries).
    This sample frorm SUN Message Queue SP1 show how to use the file store:
    D:\Program Files\Sun\MessageQueue3\demo\helloworld\helloworldmessagejndi.java
    2. I think it is a separate product: Sun Java System Directory Server Enterprise Edition
    3. http://www.openldap.org/
    4. I think the LDAP server is only used as an Object Store for Connection Factories and Destinations, and the messages are stored by the JMS provider in the application server.
    It is used by JNDI to lookup those objects.
    Check if MQSeries also supports JMS 1.1 as SUN AS 8 does.
    Regards,
    Magnus Strand

  • JMS MQSeries XA transaction

    Hi,
    Our requirement is to integrate the enqueueing of an
    MQSeries 5.1 message within an XA transaction which
    will be managed by Tuxedo. The other resource involved
    in the transaction will be an Oracle8i database which
    will be written to by a WeblogicEnterprise Java server.
    Ideally we would like to write to the queue within the
    same Java server, using the JMS for MQSeries patch.
    I've read that if you want to use WLE to coordinate
    then the anwer is that you must use the C/C++ interfaces
    to MQSeries as opposed to the Java/JMS interfaces, but I
    don't know if this is (still) the case.
    Has anyone tried a Java solution ?
    Thanks, Conor.

    Hi atheek1
    Thanks for the reply, it worked. Before I mark this question as answered, pls. answer the below queries (Thanks a lot!)
    1) Well, i just ticked transaction required and same transaction for response and it started working. I did not add routing options like you mentioned to QOS Exactly Once. Its working without it fine. So, my questions is what is the use of adding this QOS to exactly once. Is it mandatory?
    2) I have a couple of OSB services in which rollback is working automatically (XA JMS to JCA FTP Adapter) and (XA JMS to JCA DB adapter XA data source), here rollback works automatically. I dont have to tick transaction required. So my question is, when an XA based connection factory picks a message from the queue, a transaction is started at the container level. So why tick transaction required at the message flow level, when the weblogic has already initiated a transaction. Since you said that HTTP transport commits a transaction even if 500 or 404 occurs, it makes sense to tick is transaction required and same transaction for response in OSB proxy service. But the remaining scenarios work without these options. Hence will it be wise to say that these settings are only required for HTTP transport coz of the way it behaves (commits 404 and 500).
    Thanks

  • Sync Proxy to JMS (MQSeries)

    Hi All,
    I have a scenario of Sync proxy to MQSeries.
    Now suppose my MQ Series takes a long time to respond with the reply, then how do i handle such a situation as i dont want my proxy to be waiting for the reply (say for more than 2 min).
    I dont want it to timeout but instead i need a reply sent back to my proxy informing MQ series took more time to respond back.
    Suggestion wud be appreciated !!!!
    ShaBZ~~~

    Hi,
    use sync bridge
    <b>receive step</b> - sync receive
    <b>send step</b> - sync to jms
    wrap it in a timeout branch (in block) and in the exception
    branch of this you can create a mapping
    with text "it took more time then expected"
    after the timeout time the message will
    go to the exception branch and
    map the outbput message with the text
    <b>send step</b> to close the sync brigde
    one way to do it:)
    Regards,
    michal

  • Does JMS support reliable messaging (store-and-forward) for app clients?

    I need to write an enterprise application client (launched with Java web start or packaged with a tool like Sun's package-appclient) that can send messages reliably from Linux to Windows. JMS seems like the obvious solution, so I deployed an EAR file with an MDB and an application client on a Windows machine (running SJSAS 9). I was able to download the client jar file onto Linux and send JMS messages successfully. However, if the Windows machine is not available, the Linux client immediately throws exceptions and fails. Are there any JMS providers that provide a store-and-forward mechanism for enterprise clients, so that if the remote server is not available immediately, messages are delivered later? (Note that the client can't be a servlet or other server-managed component.)
    I'd prefer an open-source solution, but this requirement has an extremely high priority for my customer, so I'll use a commercial product if necessary. And if there's something other than JMS that works, that would be fine. (In my case, the messages on the remote side ultimately go to a .NET service, so WS-ReliableMessaging would be ideal, but it looks WS-RM won't be integrated into .NET until Vista, and the current WS-RM implementation is a beta, etc., etc.)
    Thanks,
    Mike

    You could use Apache ActiveMQ
    http://incubator.apache.org/activemq/
    which supports embedded brokers inside each JVM which can be networked together in a store-forward mechanism so that each application keeps working and store-forwarding messages.
    http://incubator.apache.org/activemq/networks-of-brokers.html
    or you can use failover transport to handle automatic reconnection...
    http://incubator.apache.org/activemq/how-can-i-support-auto-reconnection.html
    If you need to communicate with some .Net you can use the NMS - the .Net Messaging API which has a client for ActiveMQ as well...
    http://incubator.apache.org/activemq/nms.html
    James
    http://logicblaze.com/
    Open Source SOA

  • Lack of information in JMS based notification message

    Hello,
    I have configured Watch for server log and related JMS Message Notification.
    However, I get only a text like "MapMessage[ID:<589306.1276727319522.0>]" in the JMS message text.
    How can I get the original log message by that ID or the JMS message's text can be extended with content WatchData attribute?
    Very appreciate any help or direction to place where I can read about it.
    Thanks,
    Yuriy

    I have figured out what is going on.
    WLDF notification is written to JMS in the format that WLS Administrative Console can not read it.
    However, when I export message to XML I can see all information that I need:
    <?xml version="1.0" encoding="UTF-8"?>
    <JMSMessageExport>
    <mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message">
    <mes:Header>
    <mes:JMSMessageID>ID:&lt;589306.1276788240914.0></mes:JMSMessageID>
    <mes:JMSDeliveryMode>PERSISTENT</mes:JMSDeliveryMode>
    <mes:JMSExpiration>0</mes:JMSExpiration>
    <mes:JMSPriority>4</mes:JMSPriority>
    <mes:JMSRedelivered>false</mes:JMSRedelivered>
    <mes:JMSTimestamp>1276788240914</mes:JMSTimestamp>
    <mes:Properties>
    <mes:property name="JMSXDeliveryCount">
    <mes:Int>0</mes:Int>
    </mes:property>
    </mes:Properties>
    </mes:Header>
    <mes:Body>
    <mes:Map>
    <mes:name-value name="WatchAlarmResetPeriod">
    <mes:String>60000</mes:String>
    </mes:name-value>
    <mes:name-value name="WatchSeverityLevel">
    <mes:String>Notice</mes:String>
    </mes:name-value>
    <mes:name-value name="WatchRule">
    <mes:String>(SUBSYSTEM = 'ousgg.valves')</mes:String>
    </mes:name-value>
    <mes:name-value name="WatchDomainName">
    <mes:String>my_domain</mes:String>
    </mes:name-value>
    <mes:name-value name="WatchData">
    <mes:String>DATE = Jun 17, 2010 11:24:00 AM EDT SERVER = AdminServer MESSAGE = Invalid record ...</mes:String>
    </mes:name-value>
    <mes:name-value name="JMSNotificationName">
    <mes:String>OUSGG-FileValves-Fail-JMS</mes:String>
    </mes:name-value>
    <mes:name-value name="WatchAlarmType">
    <mes:String>None</mes:String>
    </mes:name-value>
    <mes:name-value name="WatchRuleType">
    <mes:String>Log</mes:String>
    </mes:name-value>
    <mes:name-value name="WatchName">
    <mes:String>OUSGG-FileValves</mes:String>
    </mes:name-value>
    <mes:name-value name="WatchServerName">
    <mes:String>AdminServer</mes:String>
    </mes:name-value>
    <mes:name-value name="WatchTime">
    <mes:String>Jun 17, 2010 11:24:00 AM EDT</mes:String>
    </mes:name-value>
    </mes:Map>
    </mes:Body>
    </mes:WLJMSMessage>
    </JMSMessageExport>
    Does anybody know what format the notification is written in?
    I'm trying to read it via JMS transport in OSB and it throwing errors no matter what "Request Message Type" I use:
    Unexpected type of message received: weblogic.jms.common.MapMessageImpl
    Thanks,
    Yuriy
    Edited by: user736637 on Jun 17, 2010 12:15 PM

  • JMS Header: JMS Properties and Message Selector

    Hi all
    I´m using a JMS Adapter to consume messages from a JMS queue (a JMS adapter which create the BPEL instance when a message arrives).
    The process must select messages which meet certain criterias, so I´m using Message Selector to filter the messages and only pick up the ones who interest me (If click on the "help" button on JDeveloper Wizard in the page you define Message Selector, you can see an example on how doing this).
    So how can I select messages using values placed on JMS Properties, in the Message Selector?
    For example, I set in the JMS Header:
    JMSInboundHeadersAndProperties
    --------JMSInboundProperties
    ----------------Property
    -----------------------name = 'Country'
    -----------------------value = 'Brazil'
    The JMSAdapter must consume only messages that "Country" = "Brazil".
    Thanks in advance.
    Menezes

    Yes
    I am able to specify JMS Header and JMS Properties when producing a message. However I am not able to user "Message Selector" to filter messages based on JMS Properties information when consuming messages.
    In the link you provide, there is an example on how to use Message Selector:
    # (a copy from the link)
    Message Selector
    ...for example, you can enter logic, such as:
    * JMSType = 'car' AND color = 'blue' AND weight > 2500
    * Country in ('UK', 'US', 'France')
    I believe the example with "Country" is exactly what I need, but I can´t get it work.
    I create the same example above, setting a property named "Country" in the JMSHeader, sending the message to a JMS Queue (BPEL Process #1) and try to comsume it on the Message Selector (BPEL Process#2), but JMSAdapter never consumes the message.
    Thanks for your help.

  • JMS Adapter - Queue Message Loss

    Hi Folks,
    I am working on MQ - to - File Scenario, working fine. But some Cases message is fail in SMQ1 & SMQ2, I am not able to re-process that message because of that messages are System Error.
    So My Problem was, Once JMS Adapter is pick the Data from MQ, no more data in MQ, some cases message is fail, We can't re-process that message, So i dont want to lose that data.
    How can i recover that MQ Data...
    Thanks for help,

    Hi S R,
    What is the error detail in SMQ1,SMQ2?
    Did you try to reprocess them from execute luws? try to change the status to recorded if possible.then execute again.
    thanks

Maybe you are looking for

  • Help with asp code

    Helleo Everyone I have been given a website to ammend and although i am not new to dreamweaver and using asp within dremweaver i sometimes struggle dealing with stuff that may have not been created with the tools i am used to. I have a page that disp

  • QEMU mouse cursor problem

    Hello folks, I was trying to have a little fun with QEMU, so I installed Arch and Xorg in it, but after starting X then twm through startx, my mouse pointer shows only until I click for the first time, then becomes ad stays invisible even if I reboot

  • Bridge keeps crashing on me.

    It's very disconcerting. Bridge is continually crashing on me. I open up a folder with a lot of images in it in Bridge and it just crashes. This can go on 5 or 6 times until I just give up. Any ideas? If I reinstall it, using Creative Cloud, I guess

  • Cannon PIXMA MP495 has decided it will not print from iMac

    Sorry to trouble you all! I have recently had to erase and reinstall! Unfortunately I have been unable to recover the settings for my printer which was working on a wifi link. I have tried to bring the software back from Time Machine but unsuccessful

  • Meus plugins como faço para atualiza-los e saber para cada um serve? não consigo atualizá-los?

    QUERO ENTENDER COMO FAÇO PARA OBTER IMAGENS E VIDEOS DOS SITES SE TENHO TODOS OS PLUGINS E NENHUM FUNCIONA == URL of affected sites == http://[email protected]