JMSCorrelationID

Hi,
I have created communication channel called
CLIX_JMSQueue_Sync_In with a JMSCorrelationID "XI-Message- ID".
So, the existing mapping convert idoc to xml and the JMS-CorrelationID should also exist in the xml-file.
How can I get access to JMSCorrelationID in the mapping?
Is it possible??
Thanks.
Regards
Stefan

Hi Stefan,
as you firstname sounds like German, I still have a version of that OSS Note, it seems like they are working on it:
SAP-Hinweis Nr. 838894
Nummer              838894
Version             2 vom 09.05.2005
Status              Für Kunden freigegeben
Gesetzt am          09.05.2005
Sprache             DE
Mastersprache       EN
Kurztext            J2EE JMSAdapter: Korrelation, Sync/Async,
Async/Sync-Bridges
Verantwortlich      SAP AG
Komponente          BC-XI-CON-AFW-TAD
                    Technical Adapter (JMS, JDBC, RFC, SOAP,
Langtext
Symptom
Der Java Message Service (JMS) stellt eine asynchrone
Messaging-Infrastruktur dar. Er legt zwei Kommunikationsmodelle fest,
'publish&subscribe' und 'queueing'. Allerdings gibt er kein synchrones
Kommunikations-Pattern an. Er empfiehlt aber ein bestimmtes Verhalten
für die Implementierung eines Request/Response-Patterns durch die
Verwendung von 'ReplyQueue' und 'JMSCorrelationId'.
Es stellt sich die folgende Frage:
Wie kann dieses asynchrone Request/Response-JMS-Modell einem synchronen
Kommunikations-Pattern in XI zugeordnet werden?
Ein typisches Anwendungsszenario ist das Verbinden von SAP RFC mit JMS,
eine andere Methode wäre die Zuordnung von JMS zu einem WebService via
SOAP.
Es müssen grundsätzlich zwei Fälle unterschieden werden:
Fall 1. Sync/Async-Bridge: Eine synchrone Nachricht wird einer
asynchronen JMS-Request-Message zugeordnet und blockiert. Danach wird
die asynchrone JMS-Response-Message empfangen. Die Bridge ordnet diese
asynchrone Response der Rückgabestruktur des blockierenden synchronen
Aufrufs zu und kehrt zurück.
Fall 2. Async/Sync-Bridge: Eine asynchrone JMS-Request-Message wird
einem synchronen Aufruf zugeordnet. Wenn dieser zurückkehrt, werden die
Rückgabewerte einer asynchronen JMS-Response-Message zugeordnet.
Weitere Begriffe
XI Adapter Framework, BPE, BPM, ccBPM, AF, IS, Integration Server
Ursache und Voraussetzungen
Beratungsfrage
Lösung
Die Hauptaufgabe solcher Bridges besteht in der Korrelation (Fall 1)
oder im Setzen der Korrelationsdaten (Fall 2) der asynchronen
JMS-Message.
Wenn die Korrelationsdaten (ein Informationsteil innerhalb der Message,
der es ermöglicht, dass einem blockierenden synchronen Request eine
asynchrone Response zugeordnet wird) Teil der Applikations-Payload sind,
kann XI BPE für die Korrelation (Fall 1) und das Mapping verwendet
werden und/oder BPE kann zum Setzen der Korrelationsdaten verwendet
werden. Sowohl die auf der Sync/Async-BPE-Bridge basierte Payload als
auch das Mapping sind Standardfunktionen, die seit XI 3.0 SP4 und SP0
zur Verfügung stehen.
Dokumentation:
BPE-Sync/Asnyc-Bridge:
SAP Support Portal (help.sap.com) unter Documentation -> SAP NetWeaver
-> SAP Library -> SAP NetWeaver -> Process Integration -> SAP Exchange
Infrastruture -> Overview -> Connectivity -> Sync/Async  Communication
Mapping:
SAP Help Portal (help.sap.com) unter Documentation -> SAP NetWeaver ->
SAP Library -> SAP NetWeaver -> Process Integration -> SAP Exchange
Infrastruture -> Design and Configuration Time -> Design -> Design
Mappings
Für einige Anwendungsszenarien müssen die Korrelationsdaten nicht in der
Payload sondern als Kopfinformation des verwendeten Protokolls (JMS und
XI in diesem Fall) gespeichert werden. In diesen Fällen ist es
notwendig, dass die JMS-Kopf-Korrelationsdaten den
XI-Kopf-Korrelationsdaten und umgekehrt zugeordnet werden.
Mit dem XI 3.0 SP12 wird dieses Korrelationsdaten-Mapping mit dem
XI-JMS-Adapter eingeführt:
JMS-Senderkanal: JMSMessageId, JMSCorrelationId oder ein Wert einer
spezifizierten JMS-String-Eigenschaft können der XI ConversationId oder
der XI MessageId zugeordnet werden. Der XI MessageId kann dies nur
zugeordnet werden, wenn die ID eine ISO-konforme GUID ist.
JMS-Empfängerkanal: Die XI MessageId, ConversationId oder RefToMessageId
kann der JMSCorrelationId oder einer spezifizierten JMS-String-
Eigenschaft zugeordnet werden.
Dokumentation:
JMS-Adapter:
SAP Help Portal (help.sap.com) unter Documentation -> SAP NetWeaver ->
SAP Library -> SAP NetWeaver -> Process Integration -> SAP Exchange
Infrastruture -> Runtime -> Connectivity -> Adapters -> JMS Adapter
Zusätzlich müssen Sie auf die empfangenen Korrelationsdaten reagieren
(Fall 1) oder die Korrelationsdaten in XI setzen (Fall 2).
Der Fall 1 "Kopf-basierte Sync/Asnyc Bridge" wird mit SP12 freigegeben
und kann mit Hilfe der standardmäßigen BPE-Sync/Async-Bridge
konfiguriert werden. Die einzige Änderung besteht in der Verwendung der
XI ConversationId für die Korrelation.
Der Fall 2 "Kopf-basierte Async/Sync Bridge" ist momentan noch nicht
freigegeben, da die XI ConversationId weder vom XI BPE noch vom Mapping
gesetzt werden kann.
Hinweis ist releaseunabhängig
Cheers
Stefan

Similar Messages

  • [OSB]JMS Business Service sending message with a given JMSCorrelationID

    Hi,
    Is it possible to send jms message with a given JMSCorrelationID in OSB? Just like use javax.jms.Message.setJMSCorrelationID() before sending.
    If yes, how to change the payload accordingly?
    Any help? Thanks in advance.

    Try Transport Headers action in request action route node (Add Action >> Communication >> Transport Headers).
    Then click on add headers and in name drop down select the JMSCorrelationID. In set Headers to expression select the value you want to put for JMSCorrelationID.

  • OSB 10.3 JMS queue problem: JMSCorrelationID is null

    Hi everybody,
    I am new to OSB/ALSB, and need some help regarding JMS message handling. I am trying to put some input data into a JMS queue( say, reqQueue) and to get the response from another JMS queue(say resQueue). My architecture is:
    OSB proxy service->OSB business service->JMS queue(reqQueue)->BPEL process(through JMS adapter) ->JMS queue(resQueue)->OSB business service->OSB proxy service.
    I have used JMSCorrelationID for response correlation. but my problem is that when I am trying to test the service from proxy service, I am getting the JMSCorrelationId as null in BPEL process as well as in the weblogic server JMS log, and as I am getting the CorrelationId as null, I am unable to correlate the response, so I am not getting any response.
    This is urgent, please help me as soon as possible as possible.
    Thanks in advance.
    Joy

    Sovled it..
    OSB 10.3 JMS queue problem: JMSCorrelationID is null

  • OSB: JMSCorrelationID pattern

    Hello,
    I am trying to switch from JMSMessageID correlation pattern to JMSCorrelationID pattern and have some questions regarding the latter:
    1. For JMSMessageID I have defined one queue per managed server. For the JMSCorrelationID pattern I just define one single queue (reply URL) - how do the managed servers pick their own messages? How is that different from the JMSMessageID pattern where each managed server requires its own queue? Using a message selector does not seem viable as you will need to include the IDs of all the requests for which you are still waiting for responses and they can be pretty much...
    2. Can I use the same response queue for multiple business services using the JMSCorrelationID pattern? As I think about it, can I use the same response queue for multiple business services using the JMSMessageID pattern? I have silently assumed that and it would be pretty bad if not...
    Thanks in advance
    Dimo

    Query 1+:
    I think OSB takes care of this for different managed servers. Under the hood it would create a MDB with a message selector.
    Eg. of ejb-jar for MessageID correlation :_ [ Note no message selectors. MDB receives all messages on the queue ie why you need separate queue per managed server
    <jav:ejb-jar xmlns:jav="http://java.sun.com/xml/ns/javaee">
    <jav:display-name>BEA ALSB JMS Outbound Sync-Async Endpoint</jav:display-name>
    <jav:enterprise-beans>
    <jav:message-driven>
    <jav:ejb-name>ResponseEJB-4075062717979715508-384e89e5.1288d13ed75.-3633</jav:ejb-name>
    <jav:ejb-class>com.bea.wli.sb.transports.jms.JmsAsyncResponseMDB</jav:ejb-class>
    <jav:transaction-type>Container</jav:transaction-type>
    <jav:message-destination-type>javax.jms.Queue</jav:message-destination-type>
    <jav:env-entry>
    <jav:env-entry-name>service-ref</jav:env-entry-name>
    <jav:env-entry-type>java.lang.String</jav:env-entry-type>
    <jav:env-entry-value>BusinessService$Test$RequestQ</jav:env-entry-value>
    </jav:env-entry>
    <jav:env-entry>
    <jav:env-entry-name>XA-supported</jav:env-entry-name>
    <jav:env-entry-type>java.lang.Boolean</jav:env-entry-type>
    <jav:env-entry-value>true</jav:env-entry-value>
    </jav:env-entry>
    </jav:message-driven>
    </jav:enterprise-beans>
    <jav:assembly-descriptor>
    <jav:container-transaction>
    <jav:method>
    <jav:ejb-name>ResponseEJB-4075062717979715508-384e89e5.1288d13ed75.-3633</jav:ejb-name>
    <jav:method-name>*</jav:method-name>
    </jav:method>
    <jav:trans-attribute>Required</jav:trans-attribute>
    </jav:container-transaction>
    </jav:assembly-descriptor>
    </jav:ejb-jar>
    Eg. of ejb-jar for CorrelationID correlation :_ Note the wild card message selector marked in bold. The start prefix for the different servers would change i suppose.
    <?xml version='1.0' encoding='UTF-8'?>
    <jav:ejb-jar xmlns:jav="http://java.sun.com/xml/ns/javaee">
    <jav:display-name>BEA ALSB JMS Outbound Sync-Async Endpoint</jav:display-name>
    <jav:enterprise-beans>
    <jav:message-driven>
    <jav:ejb-name>ResponseEJB-6577847719916437493-3893eeb7.1287d30ba4f.-7fe1</jav:ejb-name>
    <jav:ejb-class>com.bea.wli.sb.transports.jms.JmsAsyncResponseMDB</jav:ejb-class>
    <jav:transaction-type>Container</jav:transaction-type>
    <jav:message-destination-type>javax.jms.Queue</jav:message-destination-type>
    <jav:activation-config>
    <jav:activation-config-property>
    <jav:activation-config-property-name>messageSelector</jav:activation-config-property-name>
    *<jav:activation-config-property-value>JMSCorrelationID LIKE 'ID:424541534594cf52%'</jav:activation-config-property-value>*
    </jav:activation-config-property>
    </jav:activation-config>
    <jav:env-entry>
    <jav:env-entry-name>service-ref</jav:env-entry-name>
    <jav:env-entry-type>java.lang.String</jav:env-entry-type>
    <jav:env-entry-value>BusinessService$Test$RequestQ</jav:env-entry-value>
    </jav:env-entry>
    <jav:env-entry>
    <jav:env-entry-name>XA-supported</jav:env-entry-name>
    <jav:env-entry-type>java.lang.Boolean</jav:env-entry-type>
    <jav:env-entry-value>true</jav:env-entry-value>
    </jav:env-entry>
    </jav:message-driven>
    </jav:enterprise-beans>
    <jav:assembly-descriptor>
    <jav:container-transaction>
    <jav:method>
    <jav:ejb-name>ResponseEJB-6577847719916437493-3893eeb7.1287d30ba4f.-7fe1</jav:ejb-name>
    <jav:method-name>*</jav:method-name>
    </jav:method>
    <jav:trans-attribute>Required</jav:trans-attribute>
    </jav:container-transaction>
    </jav:assembly-descriptor>
    </jav:ejb-jar>
    In case of MessgeID correlation , message with unknown correlation ID is discarded and removed from the response queue. In case of CorrelationID this is not happening. So you may have to setup some redlivery limit to prevent any queue build ups.
    Query 2
    Have not tested, but think would work for correlationID pattern but not for MessageID pattern!
    Regards,
    Atheek
    Edited by: atheek1 on May 12, 2010 8:54 AM

  • Message selector on JMSCorrelationID?

    I am wondering how to do a selective get on a queue using the JMSCorrelationID field. I can set my own fields for message selectors fine, but I wanted to standardize on this field for simplicity; is there a straightforward way of doing this?

    You can be safe from the overwritten field if you make sure that you use the exact format that JMS uses forthe field,
    i.e. "ID:<24 bytes>".
    If you pass a string of "1234" you should do a search on the receive queue for "ID:313233340000000000000000000000000000000000000000".
    Now what I'm trying to figure out is if there is a way to wildcard the
    match. I setup mine to have a unique code in front (the string "1234" in case you were curious) then I hash the workstation id, message number, user number and iteration into a unique number (I hope), append that to the above and then pad it out with the right number of zeroes. the problem is other people are also testing in the same queues. After I do my testing I want to clear the queues of just my messages without touching anyone elses (especially the error queue, a lot of junk is left there), or to be able to browse the queues only seeing my messages.
    (for the record I'm doing this in Load Runner to control how many users are sending messages and to measure response times).

  • Using Message Selector w/JMSCorrelationID causes auto-commit

    I'm using the following code to create a session with transactions enabled:
    Session session = connection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
    String messageSelector = "JMSCorrelationID = 'myid'";
    QueueReceiver receiver = session.createReceiver(ioQueue, messageSelector);
    When I call receiver.receiveNoWait(), it retrieves the message, but automatically commits it. If I call session.rollback() directly afterward, I don't get any exceptions, but the message is completely removed from the queue (as if I had committed it).
    If I use the same exact code with an empty message selector (""), the rollback works fine all the time.
    Does anyone have any idea why? I'm using MQ v5.3 on W2k.
    Thanks!
    Jeff

    use CLIENT_ACKNOWLEDGE
    Session session = connection.createQueueSession(true, Session.CLIENT_ACKNOWLEDGE);
    );//Session.AUTO_ACKNOWLEDGE);
    from the spec:
    CLIENT_ACKNOWLEDGE - With this option, a client acknowledges a
    message by calling the message�s acknowledge method. Acknowledging a
    consumed message automatically acknowledges the receipt of all messages
    that have been delivered by its session.
    AUTO_ACKNOWLEDGE - With this option, the session automatically
    acknowledges a client�s receipt of a message when it has either successfully
    returned from a call to receive or the MessageListener it has called to process
    the message successfully returns.

  • JMSCorrelationID automatically generated or ora:getInstanceId() required?

    Assume a JMS message should be sent to another BPEL process. The later inbound JMS response should
    be (automatically) correlated with the current (previously sending) BPEL process.
    So the JMS header must contain a JMSCorrelationID.
    Does the client BPEL process have explicitely to create (and assign) this JMS correlation ID with a function like
    ora:getInstanceId()?
    What if I leave the JMS header field JMSCorrelationID empty?
    Is a JMSCorrelationID automatically generated by the BPEL container/JMSAdapter and written into this field?
    Peter

    Hi,
    I am also working with the JMSAdapter (Oracle AQ as JMS broker).
    If I do not fill the JMSCorrelationID in the BPEL, then it will be empty in the JMS message header.
    Romain.

  • JMSCorrelationID and JMSMessageID

              I'm trying to create a producer that sends multiple PTP messages and receives multiple
              replies. It will need to correlate the requests with the replies. I'm finding
              that Weblogic JMS is not setting the JMSMessageID, which is what I'm trying to
              use for the JMSCorrelationID.
              Is there something I have to configure, or do programmitically, to have Weblogic
              JMS automatically create a unique MessageID?
              Thanks in advance.
              Producer code is like the following:
              TextMessage textmsg = session.createTextMessage();
              //printing the JMSMessageID prints NULL
              System.out.println("MESSAGE ID: " + textmsg.getJMSMessageID());
              textmsg.setJMSCorrelationID(textmsg.getJMSMessageID());
              msgProducer.send(textmsg);
              Cosumer(receives the message above) code is like the following:
              requestMsg = queueReceiver.receive();
              Queue replyQ = (Queue)requestMsg.getJMSReplyTo();
              queueSender = queueSession.createSender(replyQ);
              TextMessage replyMsg = queueSession.createTextMessage("reply");
              //printing JMSCorrelationID prints NULL
              System.out.println("JMS CORRELATION ID: " + requestMsg.getJMSCorrelationID());
              replyMsg.setJMSCorrelationID(requestMsg.getJMSCorrelationID());
              queueSender.send(replyMsg);
              

              "James Goodwin" <[email protected]> wrote:
              >
              >I'm trying to create a producer that sends multiple PTP messages and
              >receives multiple
              >replies. It will need to correlate the requests with the replies. I'm
              >finding
              >that Weblogic JMS is not setting the JMSMessageID, which is what I'm
              >trying to
              >use for the JMSCorrelationID.
              >
              >Is there something I have to configure, or do programmitically, to have
              >Weblogic
              >JMS automatically create a unique MessageID?
              >
              >Thanks in advance.
              >
              >Producer code is like the following:
              >
              >TextMessage textmsg = session.createTextMessage();
              >//printing the JMSMessageID prints NULL
              >System.out.println("MESSAGE ID: " + textmsg.getJMSMessageID());
              >textmsg.setJMSCorrelationID(textmsg.getJMSMessageID());
              >msgProducer.send(textmsg);
              >
              >Cosumer(receives the message above) code is like the following:
              >
              >requestMsg = queueReceiver.receive();
              >Queue replyQ = (Queue)requestMsg.getJMSReplyTo();
              >queueSender = queueSession.createSender(replyQ);
              >TextMessage replyMsg = queueSession.createTextMessage("reply");
              >//printing JMSCorrelationID prints NULL
              >System.out.println("JMS CORRELATION ID: " + requestMsg.getJMSCorrelationID());
              >replyMsg.setJMSCorrelationID(requestMsg.getJMSCorrelationID());
              >queueSender.send(replyMsg);
              >
              Once again, I've finally found the answer. The javax.jms.Message javadoc states
              that the JMSMessageID is not set until after the send method is called. So the
              producer has to capture the JMSMessageID after the send. The consumer has to use
              JMSMessageID to set the JMSCorrelationID. Then all is right with the world.
              Hope this helps somebody.
              

  • How do I use a MessageSelector with application-specific properties

    According to a couple of JMS references (Sun, Oreilly) and the oracle documentation (under the heading "Using Oracle Java Messaging Service (JMS) to Access AQ", page 102 of 1082 , Application Developers Guide - Advanced Queuing, Release 2 (8.1.6))
    Standard JMS Features
    "Message selection based on message header fields/properties"
    Is there a special syntax for using application-specific (user defined) JMS message properties as message selectors in Oracle 8.1.7?
    I've tried to create a message selector based on a custom property that I set, i.e. "username != 'William'". (example from O'Reilly JMS book, pg. 44)
    I always get a JMS-159: Invalid selector Selector Parse error unless the property is a JMS-Defined property. i.e., " JMSMessageID = 'ID:9789D65E215B3613E034080020B1456E' " works fine.
    From the docs and the oter examples, I figure application-specific (user-defined) properties are legal.
    Thans for any help in advance.

    Well I found an article in another forum that states in oracle 8i, message selectors are only supported on JMSCorrelationID and JMSMessageID
    (9i will have/has the full JMS spec support for message selectors , or so the response to the message says)
    Thanks anyway
    (Aricle Is In Products > Database > Oracle Advanced Queueing
    Title is JMS AQ: selector in createReceiver does not work)

  • How do I use a JMS MessageSelector with application-specific properties

    According to a couple of JMS references (Sun, Oreilly) and the oracle documentation (under the heading "Using Oracle Java Messaging Service (JMS) to Access AQ", page 102 of 1082 , Application Developers Guide - Advanced Queuing, Release 2 (8.1.6))
    Standard JMS Features
    "Message selection based on message header fields/properties"
    Is there a special syntax for using application-specific (user defined) JMS message properties as message selectors in Oracle 8.1.7?
    I've tried to create a message selector based on a custom property that I set, i.e. "username != 'William'". (example from O'Reilly JMS book, pg. 44)
    I always get a JMS-159: Invalid selector Selector Parse error unless the property is a JMS-Defined property. i.e., " JMSMessageID = 'ID:9789D65E215B3613E034080020B1456E' " works fine.
    From the docs and the oter examples, I figure application-specific (user-defined) properties are legal.
    Thans for any help in advance.

    Well I found an article in another forum that states in oracle 8i, message selectors are only supported on JMSCorrelationID and JMSMessageID
    (9i will have/has the full JMS spec support for message selectors , or so the response to the message says)
    Thanks anyway
    (Aricle Is In Products > Database > Oracle Advanced Queueing
    Title is JMS AQ: selector in createReceiver does not work)

  • Weblogic: problem with JMS foreign server and Transaction

    Hello everyone,
    I am working with an enterprise application with Web Application Server Logic 10.3. L 'application uses the following components:
    1) MDB 2.0
    2) FOREIGN JMS SERVER -> WebSpereMQ
    3) EJB SESSION
    L 'MDB calls the session bean which uses in its ejb-jar.xml using a Wrapper for JMS QueueConnectionFactory with res-ref:
    <resource- ref>
    <res-ref-name> jms / iss / QCFIXP </ res-ref-name>
    <res-auth> Container </ res-auth>
    <res-sharing -scope> Shareable </ res-sharing-scope>
    <resource- ref>
    The MDB is CMT
    <transaction-type> Container </ transaction-type>
    while the session bean is BMT
    <transaction-type> Bean </ transaction-type>
    to call the QCFIXP in its transaction.
    The QCFIXP ii an XA resource
    When there is a rollback operation in SessionBean also in 'MDB
    There 'an operation setRollbackOnly:
    getMessageDrivenContext (). setRollbackOnly ();
    After this operation on the MDB I do a JNDI look up the QueueConnectionFactory but sending the message on a queue I get the following exception:
    javax.jms.JMSException: [JMSPool: 169809] An error occurred while registering the JMS connection with JTA:
    But if not using the "wrapper jms" in the session bean I did not take any exception and the application don' t have any error.
    My doubt is :
    Why if I use the JMS wrapper I get an error javax.jms.JMSException: [JMSPool: 169809] An error occurred while registering the JMS connection with JTA?
    Thanks in advance.
    Michele
    Edited by: user3501731 on 11-mag-2011 3.16

    Hi Tom,
    Thanks very much for your responses and careful analysis you've done.
    Following the source code of the MDB where error occurs.
    Marked In bold the line where the exception is thrown.
         public void onMessage(Message msg) {
    //          Utility.logger(AP.DEBUG, "Partito MDB 2");
              processa(msg);
              protected void processa(Message msg) {
              Utility.logger(
                   AP.DEBUG,
                   "IXPReceiverMDB7.processa(Message msg) partito");
              try {
                   long start = System.currentTimeMillis();
    /*               Utility.logger(
                        AP.DEBUG,
                        "IXPReceiverMDB.processa(Message msg) effettuo lookup");*/
                   ejb = myEjbLocalHome.create();
                   // individuo l'identificativo del messaggio in ricezione
                   String msgid = msg.getJMSMessageID();
                   Utility.logger(
                        AP.DEBUG,
                        "IXPReceiverMDB7.processa(Message msg) elaboro messaggio:"
                             + msgid);
                   String charset = msg.getStringProperty("JMS_IBM_Character_Set");
                   Utility.logger(
                        AP.DEBUG,
                        "IXPReceiverMDB7.processa Charset:" + charset );
                   // invoco il processo di ricezione
                   boolean commitRequested = ejb.processa(ctlReq, encoding, msg);
                   // il valore di ritorno del processo di ricezione identifica o meno
                   // la necessita' di effettuare il rollback dell'intero processo
                   if (!commitRequested) {
                        getMessageDrivenContext().setRollbackOnly();
                   if (ctlReq) {
                        Utility.logger(
                             AP.INFO,
                             "IXPReceiverMDB7.processa(Message msg) spedisco il messaggio pilota del 'cleaning' con JMSCorrelationID = '"
                                  + msgid
                                  + "'");
                        msg.setJMSCorrelationID(msgid);
                        // Viene creata la QueueConnection
                        QueueConnectionFactory factory =
                             JmsFactoryDispenser.getSingleton().getFactory();
                        QueueConnection connection = factory.createQueueConnection();
                        // Viene ottenuta la 'session'
                        QueueSession session =
                             connection.createQueueSession(
                                  false,
                                  Session.AUTO_ACKNOWLEDGE);
                        // spedisco il messaggio sulla coda abbinata al processo di 'cleaning'
                        // della coda di controllo
                        IXPMessageManager msgManager = new IXPMessageManager(session);
                        msgManager.spedisci(msg, AP.PILOTQUEUE, "J", AP.STD_MESSAGE);                    session.close();
                        connection.close();
                   long end = System.currentTimeMillis();
                   Long durata = new Long (end - start);
                   Utility.logger(
                        AP.INFO,
                        "IXPReceiverMDB7 Tempo totale elaborazione messaggio: " +
                        msgid + " " +
                        durata.toString() + " mill" );
                   Utility.logger(
                        AP.DEBUG,
                        "IXPReceiverMDB7.processa(Message msg) terminato");
              } catch (Throwable e) {
                   getMessageDrivenContext().setRollbackOnly();
                   try {
                        Utility.myExceptionHandler(
                             "E",
                             "1",
                             "4028",
                             "IXPReceiverMDB.onMessage()",
                             e);
                   } catch (Throwable ex) {
                        ex.printStackTrace();
    Thanks in advance.
    Edited by: serpichetto on 16-mag-2011 1.24

  • Slow Performance on QueueReciever.recieve() + MQ

    Hi,
    I have been wrecking my brains around this pickle for the last week or so and would appreciate any assistance I could get here.
    Problem Description: Incredibly slow performance when invoking a QueueReciever.recieve() connecting to MQ server version 6
    Benchmarks: 100-900ms per invocation
    Configuration:
    JVM: WS 6's own
    MQ: 6.0
    Application Server: WAS 6
    Managed resources: Queue Connection Factory (queues are dynamically created)
    Runtime artifacts: QueueConnectionFactory, QueueConnection, QueueConnection, QueueSession, QueueSender,
    QueueReciever, TextMessage, in Queue out Queue
    Scenario:
    QueueSender created
    QueueReciever created using a MessageSelector filtering on JMSCorrelationID
    Message is sent to the in queue using QueueSender, embedded with a JMSCorrelationIDImmediately after, a QueueReciever.receive() is invoked listening on the out queue
    Result: VERY slow return from the synchronous block on the receive().
    Given: reply message is put on the out-queue after about 40ms by 3rd party application.
    Again any assistance would be appreciated.
    Message was edited by:
    sg9aeee

    Hi Wietse
    Your RFC communication may be slow because limitations on the Gateway connection parameters.
    Please check the Gateway profile parameters, like max_conn, blocksize etc
    Thanks
    Yatin Bhatt

  • Facing Intermittent Error while posting Messages to Queue

    HI ,
    I am working on a WLI Project which involves the Message Queue, Topic, Message Brokers, JMS Event Generators.
    To test the Application,
    I have a test page from where I pump in the Messages to the Channel. The messages are being read and the JPD that has subscribed to the Message Broker is getting invoked and is able to Post a response Message to a Queue which is created.
    The Message is getting Posted to the Queue properly For some time until I run a single Test at a time
    Once I try to do simultaneous test for the Test page I see that the Message is not getting posted to the Queue. And I get a error Message on the Server Console as:
    <Error> <WLW> <000000> <Received message without correlationID. MessageID=ID:P<106224.1170871006171.0>>
    I am not getting any kind of solution in any forum on how to fix this Issue. and also not sure where exactly is it going wrong.
    I am using Weblogic 8.1 SP4 on Windows. Application is deployed on Integration Domain.
    Waiting for some solution.
    Thanks in Advance!!

    Thanks Denis for your Reply.
    I was looking in the Bea Docs and it states that we need to set the CorrelationID to the conversationID of the listening Service. So I am not getting how to get the ConversationID of another Service(listening Service) which is trying to read this message from the Queue.
    I also tried to set the correlationID to conversationID of the same JPD from which I am sending the message to the Queue. But still I see the same error message .
    Also the conversationID for the JPD is null.
    I am trying to do as below:
    Map jmsHeaders = new HashMap();
    String cid=null;
    cid = context.getService().getConversationID();
    jmsHeaders.put("JMSCorrelationID", cid);
    QueueCtrl.setHeaders(jmsHeaders);
    QueueCtrl.sendTextMessage(this.mpiMessageDoc);
    When I run multiple instance of the JPD which r trying to post to the same Queue simultaneously I get the same error:
    <Error> <WLW> <000000> <Received message without correlationID. MessageID=ID:P<106224.1170871006171.0>>
    Can any body comment on this Issue?
    Thanks in Advance

  • Can JMS Message be filtered dynamically based on the JMS Header variable

    Hi All,
    We have a requirement to filter messages from an MQ (Queue) using the JMS Adapter.
    There is only one subscriber to this Queue.
    Can we use the Message Selector option using the same subscriber to pick different messages based on the context set.
    For example I have two BPEL instances running for the same BPEL process and both of them have to read messages from the same MQ Queue, say SampleQueue.
    The first BPEL instance need to pick the messages when JMSpriority = 1
    The second BPEL instance should pick the messages when JMSpriority = 2
    Is this possible? As the Message Selector in the examples given is expecting a literal on the right side of the expression.
    Ex : Country='UK' Color='Green' etc
    To put the question in a different way, can the right side of the expression in a message selector be a BPEL variable?
    Thanks

    Hi
    I have the same question. Basically, I want to match my response message with the request message. I am putting in an id in JMSCOrrelationID in the request. The applciation that send the response put the COrrelationId, I sent into the JMSMessageId. But now, I want to correlate my request and response? What is the best way to do this in BPEL?
    Can the right side be a variable? I want to say JMSMessageID = 'ID: ' + JMSCorrelationId.

  • MQ to File: How to send a Filename from JMS Header (MQ) to a File Adapter

    Hello Experts,
    I have a flat file coming into PI via JMS adapter (MQ) and going out on a File adapter (NFS). We would like to keep the file name consistence throughout the transaction. While coming from MQ our sender is sending the filename in one of the MQ Headers (JMSCorrelationID). We are trying to figure out how to read the file name from the MQ header and send it to the file adapter. Please let us know any other suggestions.
    Thanks,
    Mayur

    Use this UDF code in MessageMapping.
    try
    DynamicConfiguration conf = (DynamicConfiguration)
    container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey KEY_JMSCorrID = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/JMS","DCJMSCorrelationID");
    DynamicConfigurationKey KEY_FILENAME = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
    conf.put(KEY_FILENAME, conf.get(KEY_JMSCorrID));
    catch(Exception e){}
    return a; //a is some input field.
    Enable ASMA on receiver File channel.
    Edited by: Praveen Gujjeti on Mar 17, 2010 9:23 AM

Maybe you are looking for

  • IPod not recognized by both of my laptops

    Let me start by saying i have tried everything on the apple.com support site. I have told all of my USB ports not to disable for power management. I've done the 5 R's with my nano. This is my second nano, my first one is a first gen nano. The second

  • ServerSocket: Listening on same port with different addresses

    It seems this problem has been gone over before, but with no solution. If I try to set up a pair of server sockets, one on 127.0.0.11:5000 and the other on 127.0.0.22:5000, the second one seems to overwrite the first one. I've been able to accomplish

  • Two problems with my New iPhone 4s

    Hello ON my recent iPhone 4s I have two problems faced - 1.  Battery : The battery seems to be weired. It doesnt last long is one but it also makes the phone crash. I was using the phone normally and there was no sign of battery drained out. I open t

  • How can one read ClarisWorks files with MS Word / Excel ?

    Somebody handed me this .cwk file, and wants to be using it in their Office program. Thanks for your time!

  • How to make autofs to pick up new NFS mount option?

    Hi, I've added a new mount option to an existing map auto_*. I've tried: svcadm -v restart svc:/system/filesystem/autofs:default svcadm -v refresh svc:/system/filesystem/autofs:default but when checking via "mount," it still shows it's mounted before