Examples for JMS Error Queue implementation in BPEL

Hi ,
Please anyone provide me examples for JMS error queue implementaion in BPEL.
Regards
Narsi p

Hi Narsi p,
Please remember to mark answers accordingly... Helpful or correct, following the forum rules
https://forums.oracle.com/forums/ann.jspa?annID=330
Can you tell us more about what are you trying to achieve here?
If you are just trying to configure an error queue to put the messages that couldn't be delivered, you can do this in weblogic directly.
Configuring an Error Destination for Undelivered Messages
http://docs.oracle.com/cd/E17904_01/web.1111/e13727/manage_apps.htm#JMSPG254
Cheers,
Vlad

Similar Messages

  • Example using of getMessage(s) with JMS error queues?

    Hi,
    I'm cobbling together various tools for easier management of replaying messages left in error queues and the likes, and whilst I've got messages being moved around the place on demand, I can't make any progress using getMessage() and getMessages() to print out vital statistics of a message / all the messages in a queue, including hopefully ripping out excerts of the XML payload in them. Can someone provide / point me to an example of these being in use? I can get a successful execution of getMessages() but am usure what to really do next with the object returned, how to iterate through and such.
    Thanks
    Chris.

    Hi Chris,
    There are open source solutions for message management.  In particular, you might want to investigate Hermes:
    http://blogs.oracle.com/jamesbayer/2008/01/hermes_jms_open_source_jms_con.html
    As for browsing messages via getMessages(), here's a code snippet.  Note that one should never attempt to get too many messages at a time via "getNext()" -- instead call getNext() multiple times.  Otherwise, if there are too many messages, the client or server might run out of memory.
    # create a cursor to get all the messages in the queue
    # by passing ‘true’ for selector expression, 
    # and long value for cursor timeout
    cursor1=cmo.getMessages(‘true’,9999999)
    # get the next 5 messages starting from the cursor’s
    # current end position
    # this will adjust the cursor’s current start position and
    # end position “forwards” by 5
    msgs = cmo.getNext(cursor1, 5)
    # print all the messages’ contents
    print msgs
    # get 3 messages upto the cursor’s current start position
    # this will adjust the cursor’s current start and end position backwards by 3
    # this will the current position of the message by 1
    msgs = cmo.getPrevious(cursor1, 3)
    # print all the messages’ contents
    print msgs
    Finally, here's code based on public APIs that can help with exporting messages to a file.   It uses Java, not WLST. I haven't tested it personally.  I'm not sure if there's away to do this in WLST.
      * pseudo code for JMS Message Export operation based on
      * current implementation in the Administration Console
      import java.io.File;
      import java.io.FileOutputStream;
      import java.io.OutputStreamWriter;
      import java.io.BufferedWriter;
      import java.io.Writer;
      import java.io.IOException;
      import java.util.ArrayList;
      import java.util.Collection;
      import org.w3c.dom.Document;
      import org.w3c.dom.Element;
      import org.w3c.dom.Node;
      import weblogic.apache.xerces.dom.DocumentImpl;
      import weblogic.apache.xml.serialize.OutputFormat;
      import weblogic.apache.xml.serialize.XMLSerializer; 
      import weblogic.management.runtime.JMSDestinationRuntimeMBean;
      import weblogic.management.runtime.JMSDurableSubscriberRuntimeMBean;
      import weblogic.management.runtime.JMSMessageManagementRuntimeMBean;
      import javax.management.openmbean.CompositeData;
      import weblogic.jms.extensions.JMSMessageInfo;
      import weblogic.jms.extensions.WLMessage;
      import weblogic.messaging.kernel.Cursor;
      public void exportMessages(
        String fileName,
        JMSDestinationRuntimeMBean destination,
        /* or JMSDurableSubscriberRuntimeMBean durableSubscriber */,
        String messageSelector) throws Exception {
        BufferedWriter bw = null;
        try {
          File selectedFile = new File(file);
          if (destination == null /* or durableSubscriber == null */) {
            throw new IllegalArgumentException("A valid destination runtime or durableSubscriber runtime mbean must be specified");
          JMSMessageManagementRuntimeMBean runtime = (JMSMessageManagementRuntimeMBean) destination /* durableSubscriber */;
          bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
          String xmlDeclaration = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
          String exportStart = "<JMSMessageExport>";
          final String exportEnd = "</JMSMessageExport>";
          final String indent = "    ";
          bw.write(xmlDeclaration);
          bw.newLine();
          bw.write(exportStart);
          bw.newLine();
          bw.newLine();
          bw.write(indent);
          CompositeData[] messageInfos = null;
          OutputFormat of = new OutputFormat();
          of.setIndenting(true);
          of.setLineSeparator("\n"+indent);
          of.setOmitXMLDeclaration(true);
          XMLSerializer ser = getXMLSerializer(bw, of);
          String cursor = JMSUtils.getJMSMessageCursor(runtime, selector,0);
          while ((messageInfos = runtime.getNext(cursor,new Integer(20))) != null) {
            for (int i = 0; i < messageInfos.length; i++) {
              JMSMessageInfo mhi = new JMSMessageInfo(messageInfos);
    Long mhiHandle = mhi.getHandle();
    CompositeData m = runtime.getMessage(cursor, mhiHandle);
    // need to get the message with body
    JMSMessageInfo mbi = new JMSMessageInfo(m);
    WLMessage message = mbi.getMessage();
    ser.serialize(message.getJMSMessageDocument());
    messageInfos[i] = null;
    bw.newLine();
    bw.write(exportEnd);
    bw.flush();
    bw.close();
    runtime.closeCursor(cursor);
    LOG.success("jms exportmessage success");
    } catch (Exception e) {
    try {
    if(bw != null)
    bw.close();
    } catch (IOException ioe) { }
    LOG.error(e);
    LOG.error("jms exportmessage error");
    throw(e);
    LOG.success("jms exportmessage success");
    private XMLSerializer getXMLSerializer(
    Writer writer,
    OutputFormat of) {
    return new XMLSerializer(writer, of) {
    protected void printText(
    char[] chars,
    int start,
    int length,
    boolean preserveSpace,
    boolean unescaped) throws IOException {
    super.printText(chars,start,length,true,unescaped);
    protected void printText(
    String text,
    boolean preserveSpace,
    boolean unescaped ) throws IOException {
    super.printText(text,true,unescaped);
    public static String getJMSMessageCursor(
    JMSMessageManagementRuntimeMBean runtime,
    String selector,
    int cursorTimeout) throws weblogic.management.ManagementException
    return runtime.getMessages(
    selector,
    new Integer(cursorTimeout),
    new Integer(Cursor.ALL));
    Hope this helps,
    Tom                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • WebLogic JMS error queue

    Hello. I have problem after sending message to JMS queue. Message by log file sending is success. But Message don't put to queue and put to error queue.
    Message don't put to queue in 25 % cases.
    Speak please, what can be reasons what message put to error queue ?

    give me please need section link.
    I closing the sender, session and connection in method destroy();
    That class, That is EJB:
    @Stateless(name = "BeanName", mappedName = "ejb.un.BeanName")
    @Local(BeanLocal.class)
    public class BeanName implements ReleaserLocal { 
    @PreDestroy
    public void destroy() {
    try {
    jmsSender.close();
    } catch (Exception ex) {
    try {
    jmsSession.close();
    } catch (Exception ex) {
    try {
    jmsConnection.close();
    } catch (Exception ex) {
    private void sendMessage(String payload, String channel, long qId){
    try {
    jmsSender.send(message);
    if (log.isDebugEnabled()) {
    log.debug("message SEND");
    I running this app from depployed in weblogic.

  • Problem Configuring JMS Error Queue

    Domain configuration : one adminServer, One cluster, 2 managedservers in cluster
    Two distibuted Queues: InboundQueue, Error Queue
    I want to redirect any bad message from InboundQueue to ErrorQueue and discard it.
    It worked fine for 4 yrs in Wls 8.1 ( did configured in 8.1)..
    now i upgrde to wls 10.1 and i did same configuration but InboundQueue is not redirecting to Errorqueue..
    Dont know where i am missing..
    here is the config.xml entry and jms/JmModule.xml files..
    config.xml entry_
    <jms-system-resource>
    <name>JmsModule</name>
    <target>cluster1</target>
    <sub-deployment>
    <name>subdeployment1</name>
    <target>JmsServer1,JmsServer2</target>
    </sub-deployment>
    <descriptor-file-name>jms/JmsModule-jms.xml</descriptor-file-name>
    </jms-system-resource>
    JmsModule.xml_
    <?xml version='1.0' encoding='UTF-8'?>
    <weblogic-jms xmlns="http://www.bea.com/ns/weblogic/90" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xsi:schemaLocation="http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd">
    <uniform-distributed-queue name="ErrorQueue">
    <sub-deployment-name>subdeployment1</sub-deployment-name>
    <delivery-params-overrides>
    <delivery-mode>Non-Persistent</delivery-mode>
    <time-to-deliver>-1</time-to-deliver>
    <time-to-live>-1</time-to-live>
    <priority>-1</priority>
    <redelivery-delay>-1</redelivery-delay>
    </delivery-params-overrides>
    <delivery-failure-params>
    <redelivery-limit>0</redelivery-limit>
    </delivery-failure-params>
    <jndi-name>ErrorQueue</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    <forward-delay>-1</forward-delay>
    </uniform-distributed-queue>
    <uniform-distributed-queue name="InboundQueue">
    <sub-deployment-name>subdeployment1</sub-deployment-name>
    <delivery-params-overrides>
    <delivery-mode>Persistent</delivery-mode>
    <time-to-deliver>10</time-to-deliver>
    <time-to-live>10</time-to-live>
    <priority>2</priority>
    <redelivery-delay>10</redelivery-delay>
    </delivery-params-overrides>
    <delivery-failure-params>
    <error-destination>ErrorQueue</error-destination>
    <redelivery-limit>1</redelivery-limit>
    <expiration-policy>Redirect</expiration-policy>
    </delivery-failure-params>
    <jndi-name>InboundQueue</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    <forward-delay>10</forward-delay>
    </uniform-distributed-queue>
    </weblogic-jms>
    Any help
    Thanks
    ksr

    Are you still having a problem? If so, I recommend trying to simplify the reproducer by removing the "time-to-deliver", "redelivery-delay", and "time-to-live" settings.
    <time-to-deliver>10</time-to-deliver>
    <time-to-live>10</time-to-live>
    <redelivery-delay>10</redelivery-delay>
    Note that these are all set to a very small value (10 milliseconds), and that the message will expire before it can be delivered or redelivered. The delivery delay is 10 millis, so by the time the delivery delay completes, the time-to-live will have passed -- furthermore, if there was no delivery delay, the redelivery delay is at 10 millis -- so by the time the redel occurs the time-to-live expires).
    Tom

  • JMS Error destination..

    Hi,
    I am developing a JMS application where i am processing message in a Queue and configured redelivery delay and redelivery limit. When the maximum redelivery limit has reached, i will move the message to an error destination which is again a Queue. I can send an email to the administartor with the message information indicating that the processing for the message has failed. But the requirment is, the administrator wants to view the message from the persistent store and resubmit the message. Is it possible? If that is the case what can be value for time-to-live for the message? I am using ServiceBus 10.3 and using the underlying weblogic server as JMS provider. Besides, i have a question on the relationship between redelivery delay, redelivery limit and time-to-live override. When i tested, if time-to-live is less than the redeliverylimit*redelivery delay, then will the message be deleted and the redelivery limit(number of retries) is not taking into effect. But if time-to-live is greater than also the message is deleted after maximum retry means time-to-live doesn't have effect. This means i am i right to say, if i specify time-to-live and there is no need to specify redeliverylimit and redelivery delay. If that is the case on what basis, the retry is made?
    Thanks in advance for your replies,
    Sam

    Hi,
    I am using ServiceBus 10.3 and using the underlying weblogic server as JMS provider. I think OSB tends to decorate JMS messages with its own private information, so I don't know if it can support arbitrarily moving them between destinations. You may be better off posting to an OSB specific forum.
    But the requirment is, the administrator wants to view the message from the persistent store and resubmit the message. Is it possible? That said, you can view, delete, move, and file import/export WebLogic JMS messages using the message management screens on the console. If you need a more sophisticated capability than the console provides, it is possible to write Java or WLST program's for the purpose.
    If you're interested in scripting, the following might be enough to get you started:
    For scripting and tracing examples, see the July 29th and August 10th 2009 newsgroup post with subject "Example using of getMessage(s) with JMS error queues?" [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3657916] and the June 10th 2009 newsgroup post with subject "JMSDestinationRuntimeMBean - possible STATE values " [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3531603 ]. Also take a look at the +Sept 23 2009 newsgroup posts with subject "Enable JMS - Queue/Topic Trace on console"+ [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3782486].
    +WARNING: Exporting too many messages at a time can cause out-of-memory errors.+
    Besides, i have a question on the relationship between redelivery delay, redelivery limit and time-to-live override. When i tested, if time-to-live is less than the redeliverylimit*redelivery delay, then will the message be deleted and the redelivery limit(number of retries) is not taking into effect. But if time-to-live is greater than also the message is deleted after maximum retry means time-to-live doesn't have effect. This means i am i right to say, if i specify time-to-live and there is no need to specify redeliverylimit and redelivery delay. If that is the case on what basis, the retry is made?By definition, an expired message is automatically deleted -- no matter what the delivery count is. If you want expired messages to be automatically redirected to a destinatin's error destination you can configure an "expiration policy" of "redirect" on the destination.
    Whether you want to use message expiration, redelivery limit, or redelivery delay very much depends on your specific use case.
    -- Redelivery limits detect messages that are rolled back many times by receiving applications (rollbacks can occur due to any number of reasons, such as database failure, application bug, etc.)
    -- Redelivery delays prevent rolled back messages from being immediately redelivered. This helps prevent zooming up CPU usage to 100% with tight loop retries of processing a problem message, assumes that whatever condition caused the original rollback is temporary, and assumes that if the message is immediately redelivered that this is too soon for the problem condition to have cleared up.
    -- Expiration detects if a message has been sitting around for a long time. It doesn't detect whether the application has attempted to process the message...
    In general, if you are coding a new application, it is sometimes helpful to avoid error destinations. Instead, let your application decide what to do with problem messages (such as queue them to another destination). This helps your application provide more customizable behavior.
    Hope this helps,
    Tom
    PS Especially for developers new to WebLogic JMS, I highly recommend purchasing a copy of the book "Professional Oracle WebLogic". In addition, I recommend reading the new "Best Practices" chapter of the JMS configuration guide, and the new "Tuning Checklist" in the JMS chapter of the Performance and Tuning guide. These new sections are in the 10.3.2 documentation.

  • Project Plan Example for a Office 365

    Hi, 
    Help, please. 
    I need a Project Plan Example for a Office 365 implementation.
    Thanks in advanced.

    Hi Efebo,
    Please refe to the link below.
    http://www.aventurasoft.com/Office365Migration-DetailedProjectPlan.pdf
    Regards,
    Charlie Liao
    TechNet Community Support
    Thank you very much!!!

  • Error while passing ODI variable in JNDI Url for JMS Queue XML

    Hi,
    Facing a weird problem while passing ODI variable in JNDI Url for JMS Queue XML.
    Below is the JNDI Url configured under ODI Topology:
    JNDI Url: t3://<host_location>?d=#TEST.SCHEMA_FILE&s=<schema_name>&JMS_DESTINATION=jms/<queue_name>
    where,
    #TEST.SCHEMA_FILE --> ODI variable storing xsd name and location
    Issue Description:
    If we restart ODI server then for the first run of any ODI interface using JMS Queue XML, it is unable to get the value for ODI variable present in JNDI Url (d=#TEST.SCHEMA_FILE).
    It throws error message saying: No XSD found
    Temporary Resolution:
    As a temporary fix if we hard-code and pass the value in that ODI variable as shown below, it will successfully go through.
    eg: JNDI Url: t3://<host_location>?d=C:\XSD\test.xsd&s=<schema_name>&JMS_DESTINATION=jms/<queue_name>
    Reverting it back to variable later will have no issues and subsequent run will succeed.
    But again anytime later if server is restarted then first run will have this issue.
    Want to have permanent fix for it.
    Any one having idea on it please share. Appreciate your help!

    What ODI version are you using? It could be related to the bug in the older version as described in support note Doc ID 1290326.1

  • How to configure a error queue for weblogic jms topic

    Hi guys.
    I want to configure a error queue for weblogic jms topic. Wanted: The message goes to error destination when messages have expired or reached their redelivery limit.
    1. using jms transport configure proxy service:
    Retry Count :3
    Retry Interval:10
    Error Destination: ErrorTopic
    Expiration Policy: Redirect
    I tried use the proxy service to consume message from the jms topic . and generation an error in the proxy message flow. But the message didn't goes into the error topic.
    Any suggestions for this topic? Can anyone provide some helps or any useful links.
    Thanks in advance.
    Mingzhuang

    Mingzhuang
    I want to configure a error queue for weblogic jms topic. Wanted: The message goes to error destination when messages have expired or reached their redelivery limit.
    1. using jms transport configure proxy service:
    Retry Count :3
    Retry Interval:10
    Error Destination: ErrorTopic
    Expiration olicy: RedirectUnlike File/SFTP, JMS proxy service definition does not have the concept of Error Destination. To accomplish similar functionality go to JMSQ on (for which proxy is configured) server console (http://localhost:7001/console) and configure the Error Destination. Following URL will help in how to configure JMS Q.
    http://edocs.bea.com/wls/docs103/ConsoleHelp/taskhelp/jms_modules/queues/ConfigureQueues.html
    http://edocs.bea.com/wls/docs103/ConsoleHelp/taskhelp/jms_modules/queues/ConfigureQueueDeliveryFailure.html
    I tried use the proxy service to consume message from the jms topic . and generation an error in the proxy message flow. But the message didn't goes into the error topic.If every thing is configured as per above step, then the after retries, the weblogic server will put the message into JMS topic configured. Your proxy will receive from this topic.
    Let me know if we are not on same page.
    Cheers
    Manoj

  • Creating data server for JMS Queues in ODI

    hi,
    I am trying to create data server for JMS Queues in ODI.
    I am getting following error:
    java.sql.SQLException: Cannot load connection class because of underlying exception: 'javax.jms.JMSException: Cannot find the Connection Factory (jms/QueueConnectionFactory) in JNDI'.
    To implement this, I am giving following parameters:
    JNDI driver : com.evermind.server.rmi.RMIInitialContextFactory
    JNDI url : ormi://localhost/default
    JNDI resource : jms/QueueConnectionFactory
    Please help.
    Thanks,
    Monika

    Hi,
    according to docs
    http://docs.oracle.com/cd/E23943_01/integrate.1111/e12644/hypersonic_sql.htm#ODIKM590
    i see
    JDBC Driver: org.hsqldb.jdbcDriver
    JDBC URL: jdbc:hsqldb:hsql://<host>:<port>
    could you modify
    JDBC Driver : org.hsqldb.jdbc.JDBCDriver
    JDBC Url : jdbc:hsqldb:hsql://localhost
    according to docs?
    Thanks

  • Adapter Status Error :  Error in creating message ID map for JMS message:

    Currently in the SAP XI 3.0 JMS Adapter, I am receiving the following error
    Error in creating message ID map for JMS message:
    ie. Error while processing message 'de8265f6-c864-4479-1137-9bab17b78b3b';  detailed error description: com.sap.aii.adapter.jms.api.channel.filter.MessageFilterException: Error in creating message ID map for JMS message: ID:c3e2d840d8d4d7f14040404040404040c44f8e2213630b01 at com.sap.aii.adapter.jms.core.channel.filter.InboundDuplicateCheckFilter.filter(InboundDuplicateCheckFilter.java:103)
    Although I am receivng this error, when I check the details of the message processing, all steps are successful and the message is set to status : DLVD
    Audit Log for Message: de8265f6-c864-4479-1137-9bab17b78b3b
    Time Stamp     Status     Description
    09.06.2009 13:27:24     Success     New JMS message with JMS message ID ID:c3e2d840d8d4d7f14040404040404040c44f8e2213630b01 received. The XI message ID for this message is de8265f6-c864-4479-1137-9bab17b78b3b
    09.06.2009 13:27:24     Success     JMS message converted to XI message format successfully
    09.06.2009 13:27:24     Success     RRB: entering RequestResponseBean
    09.06.2009 13:27:24     Success     RRB: suspending the transaction
    09.06.2009 13:27:24     Success     RRB: passing through ...
    09.06.2009 13:27:24     Success     RRB: leaving RequestResponseBean
    09.06.2009 13:27:24     Success     Transform: using Transform.Class: com.sap.aii.messaging.adapter.Conversion
    09.06.2009 13:27:24     Success     Transform: transforming the payload ...
    09.06.2009 13:27:24     Success     Transform: successfully transformed
    09.06.2009 13:27:24     Success     Application attempting to send an XI message synchronously using connection JMS_http://sap.com/xi/XI/System.
    09.06.2009 13:27:24     Success     Trying to put the message into the call queue.
    09.06.2009 13:27:24     Success     Message successfully put into the queue.
    09.06.2009 13:27:24     Success     The message was successfully retrieved from the call queue.
    09.06.2009 13:27:24     Success     The message status set to DLNG.
    09.06.2009 13:27:25     Success     The application sent the message synchronously using connection JMS_http://sap.com/xi/XI/System. Returning to application.
    09.06.2009 13:27:25     Success     The message was successfully transmitted to endpoint http://sapxia.swets.nl:8000/sap/xi/engine?type=entry using connection JMS_http://sap.com/xi/XI/System.
    09.06.2009 13:27:25     Success     The message status set to DLVD.
    Not sure why this is occurring.......

    No, not using correlation id.
    I was able to resolve the issue on this queue by changing the following setting
    Under the PROCESSING tab, under XI SETTINGS
    Time period for Duplicate Check for EO(IO) (secs) it was set to 86400
    I have changed this to 300 seconds and the adapter has now gone green.
    BUT......
    That said, I have the exact scenario on another sender JMS channel set to 300 seconds and it exhibits the same issue.
    correlation settings:
    Set XI message id  to  = GUID
    Set Xi conversation

  • Configuration for JMS Adapter Sensor action and JMS Queue sensor action..!!

    Hi,
    Id like my BPEL process to send an XML message to JMS on Websphere,I was able to do this through a JMS adapter.But I would more like to add sensors into my process which would really do the same thing - send an XML message to JMS Q.
    Now I understand that there are two ways to do this,JMS Queue and JMS Adapter - thorugh bpel sensor action.
    I am able to use JMS Queue and it works fine , but adds its own xml tags to the message,Is there any way I could send only my xml payload as a message to the queue??
    Also could any1 tell me what is the configuration for JMS Adapter sensor action?
    Any suggestions how do I go about it??

    Hey Anirudh,
    Thanx for the response :-)
    All these hold good when I have an AQ adaptor right,But the thing is I want to send a message to a 'JMS' queue with out actually using an adapter configuration wizard and everythng..So I resolved to JMS queue Sensor action..Heres the xml snippet from the sensorAction.xml files which is generated..
    <actions targetNamespace="http://xmlns.oracle.com/Test_JMS_Logging" xmlns="http://xmlns.oracle.com/bpel/sensor" xmlns:tns="http://xmlns.oracle.com/Test_JMS_Logging" xmlns:pc="http://xmlns.oracle.com/bpel/sensor">
    <action name="JMS_LogEntry" publishName="" publishType="JMSQueue" enabled="true" filter="" publishTarget="jms/L_Queue">
    <property name="JMSConnectionFactory">jms/L_QueueCF</property>
    <sensorName>ActivitySensor_JMS</sensorName>
    </action>
    </actions>
    This works grt and adds messages to the queue..But adds its own header info according to the sensor.xsd loacted at the Oracle_home\bpel\system\xmllib\ folder.
    Right now the XML message added to the Queue is:-
    <actionData xmlns="http://xmlns.oracle.com/bpel/sensor">
    <header>
    <sensor sensorName="ActivitySensor_JMS" classname="oracle.tip.pc.services.reports.dca.agents.BpelActivitySensorAgent" kind="activity" target="AddLEntr
    y" xmlns:pc="http://xmlns.oracle.com/bpel/sensor" xmlns:ns2="http://www.ulrhome.com/2008/10/L_Entry" xmlns:tns="http://xmlns.oracle.com/Test_JMS">
    <activityConfig evalTime="completion">
    <variable outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema" target="$WriteL_Produce_Message_InputVariable/L_Entry/ns2:L_Entry/ns2:LCName"/>
    </activityConfig>
    </sensor>
    <instanceId>950016</instanceId>
    <processName>Test_JMS</processName>
    <processRevision>v2009_04_15__40833</processRevision>
    <domain>default</domain>
    <timestamp>2009-04-15T11:21:23.596-04:00</timestamp>
    <midTierInstance>app01.ulrhome.com:9700</midTierInstance>
    </header>
    <payload>
    <activityData>
    <activityType>scope</activityType>
    <evalPoint>completion</evalPoint>
    <durationInSeconds>0.011</durationInSeconds>
    <duration>PT0.011S</duration>
    </activityData>
    <variableData>
    <dataType>12</dataType>
    <data>
    <ns0:LCName xmlns:ns0="LC_Test1http://www.ulrhome.com/2008/10/L_Entry">LC_Test1</ns0:LCName>
    </data>
    <queryName/>
    <target>$WriteL_Produce_Message_InputVariable/L_Entry/ns2:L_Entry/ns2:LCName</target>
    <updaterName>AddL_Entry</updaterName>
    <updaterType>scope</updaterType>
    </variableData>
    </payload>
    </actionData>
    My requirement is that I need to add a sensor to the BPEL process which posts 'Only my payload message to the JMS queue'..
    What I would want the message in the Queue to be is : -
    <data>
    <ns0:LCName xmlns:ns0="LC_Test1http://www.ulrhome.com/2008/10/L_Entry">LC_Test1</ns0:LCName>
    </data>
    Also while creating a Sensor action I get another option as JMS Adaptor,I am not sure of what value to type in this wizard..Heres what I keyed in..M sure this is not right..Cos it dosnt work :-)
    <action name="SensorAction_JMS" publishName="" publishType="JMSAdapter" enabled="true" filter="" publishTarget="jms/LoggingQueue">
    <property name="JMSConnectionName">Log</property>
    </action>
    </actions>
    Could any 1 tel me what values are the right values..And does JMS Adapter mean that I have to create a JMS Apator in the project and give that connection name as a Value..
    I am not finding sufficiant Documentation for 'JMS Adapter' so M clueless and right now any help will be appriciated :-)
    Regards,
    Akshatha.

  • Correlation for JMS Queue

    Hi,
    I have following scenario :
    Queue1
    Bpel1 -> Writes Schema A to Queue1
    Bpel2 -> Writes Schema B to Queue1
    Bpel3 -> Reads from Queue1
    I need that Bpel3 should read only Schema A from Queue and not Schema B.
    So how will i define the correlation between Bpel1 & Bpel 3.
    I tried fetching the processId in Bpel 1 and add it to Invoke property jca.jms.JmsCorrelation_id, but was not able to set the same in Bpel3.
    Any help/spec in setting up correlation for JMS Queues is highly apreciated.
    Thanks !!

    In standard JMS, an application can specify a correlation-id on per message basis using the javax.jms.Message API, and then specify a filter (a "selector") when creating a consumer via the javax.jms.Session API, but, in general, it is usually better to use a separate dedicated queue per business process (simplifies management, simplifies coding, improves perf, etc), or, if that's not an attractive option, to use a single MDB to dispatch messages from the same queue to different business processes. I don't know the specific steps to do the same in BPEL.
    You might want to try posting to the BPEL forum at BPEL
    Hope this helps,
    Tom

  • Programming for Using JMS Distributed Queues

    Hi,
    Does anyone know specifically how your meant to write java code in order to fully make use of JMS Distributed queues. At the moment we have a 3rd party app, which I don't think is written correctly, as it always locks up after using a distributed queue, or a consumer is at 0 on one of the members of the distributed queue, when it should always should be constant and uniform.
    Its as if their code hasn't been written correctly.

    Distributed queue applications are encouraged to leverage WebLogic MDBs, which automatically ensure that consumers are attached to each distributed queue member, and to write applications in a way that has no dependency on which JVM a particular message is processed.
    At a guess, the third party product is setting up a consumer on one member of the distributed Q, while messages are being produced to the other member. If this assumption is true, here are some thoughts:
    * Consider using a single Q for the third party product's usage instead of a distributed queue. Configuring a distributed queue is not adding any high availability, as the product is expecting all messages to pin to the same Q instance.
    * Producers and consumers load-balance independently, but, when "affinity" and "load balance" are both configured to false on a Producer's connection factory, producers will have a tendency to load balance to the member that hosts more than one consumer. This might help somewhat, but my guess is that it won't help in all cases -- for example, after a restart I'm not sure that there's a guarantee that the consumer won't load balance to the "wrong" member (the member that has no messages).
    * It might help to enable "queue forwarding" on the distributed queue configuration. This feature automatically forwards messages trapped in a destination that has no consumers to a queue that has consumers. "Queue forwarding" is not compatible with WebLogic's "unit-of-order" feature, but it's likely the third party product isn't using this feature. Queue forwarding also imposes a performance penalty - but whether you notice the difference depends on whether you have high performance requirements.
    Hope this helps,
    Tom
    Edited by: TomB on Mar 9, 2011 6:28 PM

  • Flex with JMS Topic/Queue for Asynchronous messaging

    I have been working on Flex and JMS integration using Data
    Services for Asynchronous messaging. I am able to do this
    successfuly. Now I am in need to do the same without using the Data
    Services piece.
    For doing this I have done the following ......
    I have created a JMS Webservice in the Oracle JDeveloper 10G
    along with Webservice Client.I am able to Listen to JMS Topic/Queue
    ( this has been created in the Oracle AS ) using this Webservice
    and receive the messages from this JMS Topic/Queue
    Asynchronously.....
    But If I need to use the Flex Client , I am not able to
    Communicate with this Webservice to listen to the JMS Topic/Queue.
    Did any one in this forum tried to communicate with JMS
    Topic/Queue without using Flex Data Service.If so please share your
    inputs.

    Here is my confusion (I'm using J2EESDK1.3).
    On a local server I did the following
    j2eeadmin -addJmsFactory jms/RemoteTCF topic -props url=corbaname:iiop:mars#mars
    In the app client running on the local server I had the code
    ic = new InitialContext();
    // JNDI lookup. The resource factory ref points to the
    // Remote Connection Factory I registered
    tcf = (TopicConnectionFactory)ic.lookup("java:comp/env/jms/TopicConnectionFactory");
    // The env ref points to jms/Topic of the local server
    pTopic = (Topic)ic.lookup("java:comp/env/jms/PTopic");
    So I'm assuming that I'm using a connection factory that connect to mars and a Topic on the local box.
    On remote server mars, I deployed a MDB which use
    jms/TopicConnectionFactory and jms/Topic. But I'm thinking this jms/Topic and the one I used on the local box are not the same one. Right? Then how could the app client and the MDB share messages?
    Some of my explanation I don't if it makes sense or not.
    ConnectionFactory is a way to tell what kind of connection it could generate (Queue, Topic, Durable etc) and Where the connection would go to (local or remote).'
    As for as destination, I'm not sure. How could two server share one Topic?

  • How can a JMS adapter be configured in BPEL to consume messages from multiple queues ?

    How can a JMS adapter be configured in BPEL to consume messages from multiple queues ?

    If you want to use JMS with AQ as datastore then there is some configuration you need to do to enable this. This is outside SOA Suite per sa, e.g. no adapter required.
    If you want to connect to the AQ direct then use the AQ adapter.
    this blog may be of some help understand the configuration
    http://biemond.blogspot.com/2008/01/oracle-jms-with-esb-and-bpel.html
    cheers
    James

Maybe you are looking for