OC4J JMS Message retries

Hello,
I'm using OC4J JMS on OC4J 9.0.4. I have a message I want to X times. (X is normally 1, but could be more :| ) We have the requirement of supporting both OracleAQ JMS and OC4J JMS.
If there is an exception I currently rollback, but with OC4J JMS this means it attempts to redeliver again - forever.
Is there a way to set the maxiumum retries for OC4J JMS! We badly need this functionality.
We have it when using OJMS (OracleAS JMS), we just set the max-retries when we create the queue!
I'm horribly tempted to throw an exception so that we can use "JVM property: oc4j.jms.listenerAttempts", which is only used when exceptions are thrown. If I do this how will this affect the way OJMS works?
Thanks in advance.
Mark

Ok, so I tried throwing a RuntimeException to force a rollback. This happens, and the message is redelivered.
However oc4j.jms.listenerAttempts appears to be ignored. Either the default, or when I specify the property as a system property starting my enqueuing client (java ... -Doc4j.jms.listenerAttempts=1 ...).
Anyone help me out here?

Similar Messages

  • Problem in sending JMS message on remote OC4J

    I have two OC4J standalone (10.1.3.0.0 build 041119.0001.2385)
    The containers work on Windows2000 in different machines connected by the LAN.
    The First container has deployed application from example http://www.oracle.com/technology/tech/java/oc4j/1013/howtos/how-to-jca-intro/doc/how-to-jca-intro.html
    The second container has j2ee application (Servlet) that sending JMS messages in the queue of the first container.
    Code Servlet in second OC4J:
    package mypackage2;
    import javax.servlet. *;
    import javax.servlet.http. *;
    import java.io. PrintWriter;
    import java.io. IOException;
    import javax.jms. *;
    import javax.naming. *;
    import java.util. *;
    public class Servlet1 extends HttpServlet
    private static final String CONTENT_TYPE = "text/html;charset=windows-1251";
    public void init (ServletConfig config) throws ServletException
    super.init (config);
    String QUEUE_NAME = "OracleASjms/MyQueue1";
    String QUEUE_CONNECTION_FACTORY = "OracleASjms/MyQCF";
    public void doGet (HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    response.setContentType (CONTENT_TYPE);
    PrintWriter out = response.getWriter ();
    out.println (" < html > ");
    out.println (" < head > < title > Servlet1 < /title > < /head > ");
    out.println (" < body > ");
    try
    Hashtable env = new Hashtable ();
    env.put (Context. INITIAL_CONTEXT_FACTORY, "oracle.j2ee.rmi.RMIInitialContextFactory");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put (Context. PROVIDER_URL, "ormi://host_OC4J_1:23791/jcamdb");
    env.put ("dedicated.rmicontext", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)ic.lookup (QUEUE_CONNECTION_FACTORY);
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    QueueSession queueSession =
    connection.createQueueSession (false, Session.AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup (QUEUE_NAME);
    ic.close ();
    System.out.println (" Queue: " + queue);
    QueueSender sender = queueSession.createSender (queue);
    System.out.println (" creating Message: " + queue);
    Message message = queueSession.createMessage ();
    System.out.println (" Message created ");
    message.setJMSType ("theMessage");
    message.setLongProperty ("time", System.currentTimeMillis ());
    message.setStringProperty ("id", "11111");
    message.setStringProperty ("oamount", "55555");
    message.setStringProperty ("message", "77777");
    message.setStringProperty ("RECIPIENT", "MDB");
    System.out.println (" Sending message... ");
    sender.send (message);
    System.out.println (" Message sent ");
    sender.close ();
    queueSession.close ();
    connection.close ();
    catch (Exception e)
    System.out.println (" ** TEST FAILED ** < br > Exception: " + e);
    out.println (e.toString ());
    e.printStackTrace ();
    out.println (" < p > The servlet has received a GET. This is the reply. < /p
    ");out.println (" < /body > < /html > ");
    out.close ();
    Error: This code send message in The First container, and should send in the second OC4J !!!!
    Please answer :
    As configure (what code it is necessary to write) servlet (any J2EE the application in OC4J) to use a path to OC4J JMS (remote OC4J JMS) through the Resource Adapter (using OracleASjms.rar). ???

    I have two OC4J standalone (10.1.3.0.0 build 041119.0001.2385)
    The containers work on Windows2000 in different machines connected by the LAN.
    The First container has deployed application from example http://www.oracle.com/technology/tech/java/oc4j/1013/howtos/how-to-jca-intro/doc/how-to-jca-intro.html
    The second container has j2ee application (Servlet) that sending JMS messages in the queue of the first container.
    Code Servlet in second OC4J:
    package mypackage2;
    import javax.servlet. *;
    import javax.servlet.http. *;
    import java.io. PrintWriter;
    import java.io. IOException;
    import javax.jms. *;
    import javax.naming. *;
    import java.util. *;
    public class Servlet1 extends HttpServlet
    private static final String CONTENT_TYPE = "text/html;charset=windows-1251";
    public void init (ServletConfig config) throws ServletException
    super.init (config);
    String QUEUE_NAME = "OracleASjms/MyQueue1";
    String QUEUE_CONNECTION_FACTORY = "OracleASjms/MyQCF";
    public void doGet (HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    response.setContentType (CONTENT_TYPE);
    PrintWriter out = response.getWriter ();
    out.println (" < html > ");
    out.println (" < head > < title > Servlet1 < /title > < /head > ");
    out.println (" < body > ");
    try
    Hashtable env = new Hashtable ();
    env.put (Context. INITIAL_CONTEXT_FACTORY, "oracle.j2ee.rmi.RMIInitialContextFactory");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put (Context. PROVIDER_URL, "ormi://host_OC4J_1:23791/jcamdb");
    env.put ("dedicated.rmicontext", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)ic.lookup (QUEUE_CONNECTION_FACTORY);
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    QueueSession queueSession =
    connection.createQueueSession (false, Session.AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup (QUEUE_NAME);
    ic.close ();
    System.out.println (" Queue: " + queue);
    QueueSender sender = queueSession.createSender (queue);
    System.out.println (" creating Message: " + queue);
    Message message = queueSession.createMessage ();
    System.out.println (" Message created ");
    message.setJMSType ("theMessage");
    message.setLongProperty ("time", System.currentTimeMillis ());
    message.setStringProperty ("id", "11111");
    message.setStringProperty ("oamount", "55555");
    message.setStringProperty ("message", "77777");
    message.setStringProperty ("RECIPIENT", "MDB");
    System.out.println (" Sending message... ");
    sender.send (message);
    System.out.println (" Message sent ");
    sender.close ();
    queueSession.close ();
    connection.close ();
    catch (Exception e)
    System.out.println (" ** TEST FAILED ** < br > Exception: " + e);
    out.println (e.toString ());
    e.printStackTrace ();
    out.println (" < p > The servlet has received a GET. This is the reply. < /p
    ");out.println (" < /body > < /html > ");
    out.close ();
    Error: This code send message in The First container, and should send in the second OC4J !!!!
    Please answer :
    As configure (what code it is necessary to write) servlet (any J2EE the application in OC4J) to use a path to OC4J JMS (remote OC4J JMS) through the Resource Adapter (using OracleASjms.rar). ???

  • How to insert message in OC4J JMS from standalone java client.

    Hi,
    I have been following available examples for creating standalone java clients to insert messages in JMS queues.
    I am able to insert using java client when the SOA suite and the standalone java code are on same machine.
    package producerconsumerinjava;
    import javax.jms.*;
    import javax.naming.*;
    import java.util.Hashtable;
    public class QueueProducer
    public static void main(String[] args)
    String queueName = "jms/demoQueue";
    String queueConnectionFactoryName = "jms/QueueConnectionFactory";
    Context jndiContext = null;
    QueueConnectionFactory queueConnectionFactory = null;
    QueueConnection queueConnection = null;
    QueueSession queueSession = null;
    Queue queue = null;
    QueueSender queueSender = null;
    TextMessage message = null;
    int noMessages = 5;
    * Set the environment for a connection to the OC4J instance
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "oracle.j2ee.rmi.RMIInitialContextFactory");
    env.put(Context.SECURITY_PRINCIPAL, "oc4jadmin");
    env.put(Context.SECURITY_CREDENTIALS, "mypass");
    env.put(Context.PROVIDER_URL,"ormi://myserver.company.com:12402"); //12402 is the rmi port
    * Set the Context Object.
    * Lookup the Queue Connection Factory.
    * Lookup the JMS Destination.
    try
    jndiContext = new InitialContext(env);
    queueConnectionFactory =
    (QueueConnectionFactory) jndiContext.lookup(queueConnectionFactoryName);
    queue = (Queue) jndiContext.lookup(queueName);
    catch (NamingException e)
    System.out.println("JNDI lookup failed: " + e.toString());
    System.exit(1);
    * Create connection.
    * Create session from connection.
    * Create sender.
    * Create text message.
    * Send messages.
    * Send non text message to end text messages.
    * Close connection.
    try
    queueConnection = queueConnectionFactory.createQueueConnection();
    queueSession =
    queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    queueSender = queueSession.createSender(queue);
    message = queueSession.createTextMessage();
    for (int i = 0; i < noMessages; i++)
    message.setText("Message " + (i + 1));
    System.out.println("Producing message: " + message.getText());
    queueSender.send(message);
    queueSender.send(queueSession.createBytesMessage());
    catch (JMSException e)
    System.out.println("Exception occurred: " + e.toString());
    finally
    if (queueConnection != null)
    try
    queueConnection.close();
    catch (JMSException e)
    System.out.println("Closing error: " + e.toString());
    But when the SOA Suite is remote, I am struggling to get the settings correct
    Till now, here is what I have figured out from looking at blogs/tars etc on the Net:
    1. I need to use ApplicationClientInitialContextFactory instead of RMIInitialContextFactory (http://download.oracle.com/docs/cd/E14101_01/doc.1013/e13975/jndi.htm)
    2. The project should have a META-INF/application-client.xml file, which may be dummy (http://www.wever.org/java/space/Oracle/JmsTar1). Question is, my code is there in a single absolutely standalone code..how I can use this application-client.xml and where it has to be placed.
    Errors:
    When trying to run exact same code on local server that tries to enqueue JMS on remotee serverer
    Exception occurred: javax.jms.JMSException: Unable to create a connection to "xxxxxxx.yyyyyy01.dev.com/10.42.456.11:12,602" as user "null".
    Any help is greatly welcome.
    As an exercise, I copied this complete code on the server and then ran locally using a telnet client...it worked. So the problem is coming when accessing the server remotely.
    Rgds,
    Amit

    1. I need to use ApplicationClientInitialContextFactory instead of RMIInitialContextFactoryNot necessarily.
    2. The project should have a META-INF/application-client.xml fileThat's only necessary if going the ApplicationClientInitialContextFactory route.
    There are two types of JMS client applications you can write -- a pure/plain Java app, and an "AppClient". That first is your everyday run-of-the-mill Java application, nothing special. That latter is a special, complicated beast that tries to act as a part of the whole client/server/J2EE architecture which provides you with a semi-managed environment. Either can be made to work, but if all you need is JMS access (using plain OC4J JMS factory/queue names and not JMS Connector names), then the first is easier to get working (and performs a tiny bit better as well due to being a lighter-weight solution).
    I think the problem you are having might be: When you use the plain Java client solution, you do not have any type of management, and that includes user management. With no user management (and if the JMS server is not configured to allow anonymous connections) you need to include the username and password in the call to createConnection. (I think it may be that this is actually true in the AppClient case as well -- I avoid using the AppClient model as much as possible so my memory there is weaker.)
    If you prefer to go the AppClient route, I would point you to a demo I wrote which had a functioning example, but Oracle seems to have removed it (and all of the 10.1.3 demos?) from OTN. :-(
    Hmm, it seems to still be available on the wayback machine:
    http://web.archive.org/web/20061021064014/www.oracle.com/technology/tech/java/oc4j/1013/how_to/index.html
    (Just look down the page for "With OEMS JMS (In-Memory and File-Based)" -- there is an .html document with info, and there is a .zip file with source code.)
    Question is, my code is there in a single absolutely standalone code..how I can use this application-client.xml and where it has to be placed.The app client in my demo had the following directory structure:
    myjavaclient.class
    jndi.properties
    META-INF\MANIFEST.MF
    META-INF\application-client.xml
    META-INF\orion-application-client.xml
    When you use ApplicationClientInitialContextFactory I think it just looks under .\META-INF for the .xml files.
    -Jeff

  • Message posted from BPEL not found in oc4j JMS queue

    Hi,
    I am facing a weird problem when I try to post a message in oc4j JMS from a BPEL process.
    There is no exception(Not even in the logs) and the BPEL process gets completed. But the message is missing(Could not find it while monitoring the queue).
    I am using SOA suite 10.1.3.5 and the oc4j JMS queue which comes with the installation.
    Can someone help me please.
    Saptarishi
    Edited by: saptarishi on May 25, 2010 3:51 PM

    Got a solution.

  • How to consume JMS message in oc4j from web logic server 11.1.1.3

    Hi all,
    I would like to know how to consume the JMS messages in oc4j instance from 11.1.1.3 (web logic). Can anyone guide me any documentation? Thanks.
    Soe

    Hi,
    Have a luk at the below link
    http://blogs.oracle.com/TechMusings/2008/08/connecting_to_weblogic_jms_pro.html
    you also have other options like creating foreigh JNDI or JMS bridge.

  • Problem: sending JMS message in other oc4j

    I have two app server instances " OC4J (1) " and " OC4J (2) ". (snandalone 10.1.3.0.0 - Developer Preview 3 (build 041119.0001.2385)). The containers work on Windows2000 in different machines connected by the LAN.
    OC4J (1):
    I have J2ee of the application [app(1)] (ex. Servlet (1) or MDB (1)) in OC4J (1).
    OC4J (2):
    I have J2ee of the application [app(2)] deploy in OC4J (2) [included Servlet (2) or MDB (2)] . The Servlet (2), or MDB (2) - empty stub, for example code Servlet2:
    package mypackage;
    import javax.servlet. *;
    import javax.servlet.http. *;
    import java.io. PrintWriter;
    import java.io. IOException;
    public class Servlet1 extends HttpServlet
    private static final String CONTENT_TYPE = " text/html; charset=windows-1251 ";
    public void init (ServletConfig config) throws ServletException
    super.init (config);
    public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    response.setContentType (CONTENT_TYPE);
    PrintWriter out = response.getWriter ();
    out.println (" < html > ");
    out.println (" < head > < title > Servlet1 < /title > < /head > ");
    out.println (" < body > ");
    out.println (" < p > The servlet has received a GET. This is the reply. </p > ");
    out.println (" < /body > < /html > ");
    out.close ();
    I have configuration JMS (2) Queue in jms.xml on OC4J (2):
    < jms-server...... port = "9127"
    < queue name = " Demo Queue " location = "jms/demoQueue" > <description> A dummy queue </description> </queue>
    < queue-connection-factory name = "jms/QueueConnectionFactory" location = "jms/QueueConnectionFactory" / >
    </jms-server>
    It JMS (2) Queue already is present in an OC4J 10.1.3 version.
    My task:
    The J2ee application (1) (ex. Servlet (1)) on OC4J (1) it is necessary to receive connection with JMS (2) (on remote OC4J (2)).
    Variant 1: a code in Servlet (1):
    Hashtable env=new Hashtable (8);
    env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2)/app(2):23792 ");
    env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put ("dedicated.connection", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
    ic.lookup ("jms/QueueConnectionFactory");
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    queueSession =
    connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup ("jms/demoQueue");
    ic.close ();
    while (true)
    // - send in JMS (2)
    Problem:
    The Servlet (1) [in oc4j (1)] established JMS connection with oc4j (2) and begins to pass the messages [in JMS Queue (2)].
    The Oc4j (2) creates some system thread for this JMS connection.
    If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
    Saw if this situation repeats some times that amount of the system thread in oc4j (2) is grow.
    To me has answered:
    In 10.1.3, the supported connection path is through the Resource Adapter (using OracleASjms.rar). The Resource Adapter offers many benefits, including the removal of stale connection threads. You have configured your application to bypass the Resource Adapter and use a direct path to OC4J JMS. You will need to create a resource mapping from your OC4J JMS admin objects (queues, topics, and connection factories) to new Resource Adapter admin objects. You can find the details of how to do this in the documentation for OC4J 10g (10.1.3) Developer Preview 3 on OTN.
    You can find the link to the documentation for OC4J DP3 here:
    http: // www.oracle.com/technology/tech/java/oc4 j/1013/index.html
    Then I have tried Variant 2:
    I need to receive connection with remote JMS (2) via generic JMS resource adapter (OracleAS Jms).
    In OC4J (2), it is necessary сonfigure the generic JMS resource adapter (OracleAS Jms) to work with Queue "jms/demoQueue".
    According to the documentation Oracle ® Containers for J2EE Services Guide10g Release 2 (10.1.3) and example
    http: // www.oracle.com/technology/tech/java/oc4 j/1013/howtos/how-to-jca-intro/doc/how- to-jca-intro.html anything it is not necessary to do.
    Note that if you use the generic JMS resource adapter in an OC4J 10.1.3 version that is newer than the OC4J 10.0.3 Developer Preview 2, you can skip. In OC4J 10.1.3 it is a step is already made.
    Code in Servlet (1):
    Hashtable env=new Hashtable (8);
    env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2) /app (2):23792 ");
    env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put ("dedicated.connection", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
    ic.lookup (" java:comp/resource/oc4jjms/jms/QueueCon nectionFactory ");
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    queueSession =
    connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup (" java:comp/resource/oc4jjms/jms/demoQueu e ");
    ic.close ();
    while (true)
    // - send in JMS (2)
    This code works.
    But!!!!!!
    The problem - removal of stale connection threads in OC4J (2) instances has not solve. If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
    How to me to write a code of connection with JMS (2) in Servlet (1), that Resource Adapter (in OC4J (2)) the removal of stale connection threads ???

    I have two app server instances " OC4J (1) " and " OC4J (2) ". (snandalone 10.1.3.0.0 - Developer Preview 3 (build 041119.0001.2385)). The containers work on Windows2000 in different machines connected by the LAN.
    OC4J (1):
    I have J2ee of the application [app(1)] (ex. Servlet (1) or MDB (1)) in OC4J (1).
    OC4J (2):
    I have J2ee of the application [app(2)] deploy in OC4J (2) [included Servlet (2) or MDB (2)] . The Servlet (2), or MDB (2) - empty stub, for example code Servlet2:
    package mypackage;
    import javax.servlet. *;
    import javax.servlet.http. *;
    import java.io. PrintWriter;
    import java.io. IOException;
    public class Servlet1 extends HttpServlet
    private static final String CONTENT_TYPE = " text/html; charset=windows-1251 ";
    public void init (ServletConfig config) throws ServletException
    super.init (config);
    public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    response.setContentType (CONTENT_TYPE);
    PrintWriter out = response.getWriter ();
    out.println (" < html > ");
    out.println (" < head > < title > Servlet1 < /title > < /head > ");
    out.println (" < body > ");
    out.println (" < p > The servlet has received a GET. This is the reply. </p > ");
    out.println (" < /body > < /html > ");
    out.close ();
    I have configuration JMS (2) Queue in jms.xml on OC4J (2):
    < jms-server...... port = "9127"
    < queue name = " Demo Queue " location = "jms/demoQueue" > <description> A dummy queue </description> </queue>
    < queue-connection-factory name = "jms/QueueConnectionFactory" location = "jms/QueueConnectionFactory" / >
    </jms-server>
    It JMS (2) Queue already is present in an OC4J 10.1.3 version.
    My task:
    The J2ee application (1) (ex. Servlet (1)) on OC4J (1) it is necessary to receive connection with JMS (2) (on remote OC4J (2)).
    Variant 1: a code in Servlet (1):
    Hashtable env=new Hashtable (8);
    env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2)/app(2):23792 ");
    env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put ("dedicated.connection", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
    ic.lookup ("jms/QueueConnectionFactory");
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    queueSession =
    connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup ("jms/demoQueue");
    ic.close ();
    while (true)
    // - send in JMS (2)
    Problem:
    The Servlet (1) [in oc4j (1)] established JMS connection with oc4j (2) and begins to pass the messages [in JMS Queue (2)].
    The Oc4j (2) creates some system thread for this JMS connection.
    If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
    Saw if this situation repeats some times that amount of the system thread in oc4j (2) is grow.
    To me has answered:
    In 10.1.3, the supported connection path is through the Resource Adapter (using OracleASjms.rar). The Resource Adapter offers many benefits, including the removal of stale connection threads. You have configured your application to bypass the Resource Adapter and use a direct path to OC4J JMS. You will need to create a resource mapping from your OC4J JMS admin objects (queues, topics, and connection factories) to new Resource Adapter admin objects. You can find the details of how to do this in the documentation for OC4J 10g (10.1.3) Developer Preview 3 on OTN.
    You can find the link to the documentation for OC4J DP3 here:
    http: // www.oracle.com/technology/tech/java/oc4 j/1013/index.html
    Then I have tried Variant 2:
    I need to receive connection with remote JMS (2) via generic JMS resource adapter (OracleAS Jms).
    In OC4J (2), it is necessary сonfigure the generic JMS resource adapter (OracleAS Jms) to work with Queue "jms/demoQueue".
    According to the documentation Oracle ® Containers for J2EE Services Guide10g Release 2 (10.1.3) and example
    http: // www.oracle.com/technology/tech/java/oc4 j/1013/howtos/how-to-jca-intro/doc/how- to-jca-intro.html anything it is not necessary to do.
    Note that if you use the generic JMS resource adapter in an OC4J 10.1.3 version that is newer than the OC4J 10.0.3 Developer Preview 2, you can skip. In OC4J 10.1.3 it is a step is already made.
    Code in Servlet (1):
    Hashtable env=new Hashtable (8);
    env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2) /app (2):23792 ");
    env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put ("dedicated.connection", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
    ic.lookup (" java:comp/resource/oc4jjms/jms/QueueCon nectionFactory ");
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    queueSession =
    connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup (" java:comp/resource/oc4jjms/jms/demoQueu e ");
    ic.close ();
    while (true)
    // - send in JMS (2)
    This code works.
    But!!!!!!
    The problem - removal of stale connection threads in OC4J (2) instances has not solve. If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
    How to me to write a code of connection with JMS (2) in Servlet (1), that Resource Adapter (in OC4J (2)) the removal of stale connection threads ???

  • Need suggestion on  implementing JMS message error recovery

    Hi,
    Our application has a JMS topic where we publish application events. Now, there can be scenarios where the consumers cannot process the message due to some infrastructure issues and would error out. We need a way so that those messages can be reprocessed again later. we are thinking of the following design for JMS message error recovery
    1. Use a persistent TOPIC (this would ensure guaranteed delivery)
    2. Configure a error destination on JMS topic e.g a jms queue
    3. Have an error handling MDB listening to the Error destination. An error handling MDB would dequeue the errored messages from error destination and persist it to a Data base "error" table..
    4. Provide a mechanism to republish those messages to topic (e.g a scheduler or admin ui or a command line utility) .. The messages would deleted from database "error" table and published to topic again....
    A. Are there any issues with the above design which we need to handle?
    B. Are there any additional steps required in a Cluster environment with a distributed topic and distribute error destination? (our error mdb will have one-copy-per-application setting)
    B. From a performance angle, Is it OK to use persistent TOPIC ? Or will it better to persist the message to the db table and then publish it as a non persistent message ... ? (But i guess the performance should be more or less the same in both of these approaches)
    C. Are there any other recommended design patterns for error recovery of JMS messages
    Please advise.
    Regards,
    Arif

    Thanks Tom !
    We may not be able to go with the approach of delaying/pausing redelivery of the messsage because
    1. Pausing entire MDB approach: Our MDB application consumes messages generated by different producers and our MDB needs to continue processing the messages even if messages corresponding to one producer is erroring out
    2. Redelivery delay : This would only delay the retry of an errored message. But there would still be a problem if the message fails during all retries (i.e redelivery limit count). We don't want to lose this message. In our case, It is possible that a particular message cannot be processed due to unavailability of a third party system for hours or may be a day.
    Basically, i am looking on approaches for a robust and performant error recovery/retry framework for our application (refer details in my first post on this thread) while fully making use of all features provided by middleware (WLS). Please advise.
    Regards,
    Arif

  • JMS message, RMI calls and OPMN, is it possible?

    Hi all,
    sorry if this ask is OT but i'm not sure where the question would be pubblished.
    I would send a JMS message to the default demoQueue, but i'm not be able to establish the connection.
    if i use this url:
    java.naming.provider.url=opmn:ormi://remotehost:6004/home
    with the port specified into the file opmn.xml:
    <port local="6101" remote="6201" request="6004"/>
    i receve the error
    AVVERTENZA: Error in obtaining server list from OPMN on host quark.pisa.exis.it:6101. Please verify that OPMN is running.
    javax.naming.NameNotFoundException: java:comp/env/jms/ConnectionFactory not found
    at com.evermind.server.rmi.RMIClientContext.lookup(RMIClientContext.java:51)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at Sender.main(Sender.java:53)
    instead if i use the url
    java.naming.provider.url=ormi://remotehost:3204/home
    with the rmi port obteined with opmnctl status -l
    OC4J | home | 25380 | Alive | 734855204 | 61712 | 1193:02:~ | rmi:3204,jms:3704,ajp:3304
    the program start e stay in wait without any message and terminate only with the keys combination CTRL+C.
    Finally, i i try to use the url:
    java.naming.provider.url=ormi://remotehost/home
    i get the exception
    java.net.ConnectException: Connection refused: connect
    Can you help me?
    Thanks a lot.
    Alessandro
    PS Obviusly i use this class: com.evermind.server.rmi.RMIInitialContextFactory.

    Hi,
    I discovered because i was not be able to connect: I used incorrect type library!
    (i used 10.1.3 library for connect to 10.1.2 server; it seems to be not compatible, why?)
    Now i have another problem. When the program arrive at this point:
    // look up the ConnectionFactory
    javax.jms.ConnectionFactory factory = (javax.jms.ConnectionFactory) ctx.lookup("jms/QueueConnectionFactory");
    // create the connection
    javax.jms.Connection connection = factory.createConnection();
    it throwed the following exception:
    Exception in thread "main" java.lang.NoSuchMethodError: javax.jms.ConnectionFactory.createConnection()Ljavax/jms/Connection;
    Any idea?
    Thanks.
    Alessandro

  • Spring and Jms message: no message in the queue

    Hi all,
    this is my application
    Spring 3.0.5 + Oc4j 10.1.3.3 + Oracle DB + Oracle Aq
    This is the flow:
    1. Update datas
    2. Send jms message
    The application updates correctly datas, in the same transaction sends a message to an oracle jms queue but the queue table is empty.
    Transaction starts with method avvService.updateStatoService()
    This is a log snapshot
    2013-02-07 11:04:48,982 [DEBUG] org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:365) CLIENT: HOST: - Creating new transaction with name [it.mycompany.gevi.service.avvenimenti.AvvenimentoService.updateStatoAvvenimentoService]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-java.lang.Exception
    2013-02-07 11:04:52,340 [DEBUG] it.mycompany.service.qbuilder.logic.QBUpdateService.doExecute(QBUpdateService.java:62) CLIENT: HOST: - DAO.updateService - getStatement 
    2013-02-07 11:04:52,340 [INFO] it.mycompany.service.qbuilder.logic.QBUpdateService.doExecute(QBUpdateService.java:62) CLIENT: HOST: - DAO - SQL is:
              UPDATE TABLE_NAME
              SET STATO = ?
              WHERE COD = ?
    2013-02-07 11:04:52,918 [INFO] it.mycompany.service.qbuilder.logic.QBUpdateService.doExecute(QBUpdateService.java:62) CLIENT: HOST: - DAO - {1=1, 2=1200300146}
    2013-02-07 11:04:52,949 [INFO] it.mycompany.gevi.service.GenericService.updateService(GenericService.java:50) CLIENT: HOST: - Risultato updateService:1
    2013-02-07 11:04:52,965 [DEBUG] org.springframework.transaction.support.AbstractPlatformTransactionManager.handleExistingTransaction(AbstractPlatformTransactionManager.java:470) CLIENT: HOST: - Participating in existing transaction
    2013-02-07 11:04:53,730 [DEBUG] org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:464) CLIENT: HOST: - Executing callback on JMS Session: oracle.jms.AQjmsSession@ee2a92
    2013-02-07 11:04:54,167 [DEBUG] org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:567) CLIENT: HOST: - Sending created message: oracle.jms.AQjmsTextMessage@27fdb9
    2013-02-07 11:04:54,526 [INFO] it.mycompany.gevi.service.JMSSenderService.sendMessage(JMSSenderService.java:64) CLIENT: HOST: - JSM Message Sent!
    2013-02-07 11:04:54,526 [DEBUG] org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:752) CLIENT: HOST: - Initiating transaction commit Spring bean configuration file
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:aop="http://www.springframework.org/schema/aop"
         xmlns:tx="http://www.springframework.org/schema/tx"
         xmlns:p="http://www.springframework.org/schema/p"
         xmlns:jee="http://www.springframework.org/schema/jee"
         xmlns:orcl="http://www.springframework.org/schema/data/orcl"
         xmlns:context="http://www.springframework.org/schema/context"
         xsi:schemaLocation="
              http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
              http://www.springframework.org/schema/tx
              http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
              http://www.springframework.org/schema/aop
              http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
              http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context-3.0.xsd
              http://www.springframework.org/schema/task
              http://www.springframework.org/schema/task/spring-task-3.0.xsd
              http://www.springframework.org/schema/data/orcl
              http://www.springframework.org/schema/data/orcl/spring-data-orcl-1.0.xsd
              http://www.springframework.org/schema/jee
              http://www.springframework.org/schema/jee/spring-jee-3.0.xsd"
         default-lazy-init="true" default-autowire="byName">
         <jee:jndi-lookup id="geviDs" jndi-name="jdbc/DBGeviDS" />
         <jee:jndi-lookup id="geviAqAdmDs" jndi-name="jdbc/AQAdmGeviDS" />
         <orcl:aq-jms-connection-factory id="topicConnectionFactory" data-source="geviAqAdmDs"
          connection-factory-type="TOPIC_CONNECTION" />
         <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
              <property name="sessionTransacted" value="true"/>
            <property name="connectionFactory" ref="topicConnectionFactory"/>
            <property name="explicitQosEnabled" value="true"/>
            <property name="timeToLive" value="60000"/>
            <property name="pubSubDomain" value="true"/>
            <property name="defaultDestinationName" value="VR_INFO_VAR_TOPIC"/>
        </bean>
         <tx:jta-transaction-manager/>
         <tx:annotation-driven transaction-manager="transactionManager"  proxy-target-class="true" />
         <aop:config>
              <aop:pointcut id="genericServiceMethods" expression="execution(* it.mycompany.gevi.service..*Service.*(..))" />
              <aop:advisor pointcut-ref="genericServiceMethods" advice-ref="txServiceAdvice"/>
         </aop:config>
         <tx:advice id="txServiceAdvice" transaction-manager="transactionManager">
              <tx:attributes>
                   <tx:method name="read*Service" read-only="true"/>
                 <!-- Other methods use the default transaction settings (see below) -->
                 <tx:method name="insertReturning*Service"    propagation="REQUIRED" />
                 <tx:method name="create*Service" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                 <tx:method name="delete*Service" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                 <tx:method name="update*Service" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                 <tx:method name="sendMessage" propagation="REQUIRED" rollback-for="java.lang.Exception" />
              </tx:attributes>
         </tx:advice>
         <bean name="genericService" class="it.mycompany.gevi.service.GenericService" />
         <bean name="avvService" class="it.mycompany.gevi.service.avvenimenti.AvvenimentoService"/>
         <bean name="jmsSender" class="it.mycompany.gevi.service.JMSSenderService" >
              <property name="jmsTemplate" ref="jmsTemplate"/>
         </bean>
    </beans>Thanks in advance.

    Hi all,
    this is my application
    Spring 3.0.5 + Oc4j 10.1.3.3 + Oracle DB + Oracle Aq
    This is the flow:
    1. Update datas
    2. Send jms message
    The application updates correctly datas, in the same transaction sends a message to an oracle jms queue but the queue table is empty.
    Transaction starts with method avvService.updateStatoService()
    This is a log snapshot
    2013-02-07 11:04:48,982 [DEBUG] org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:365) CLIENT: HOST: - Creating new transaction with name [it.mycompany.gevi.service.avvenimenti.AvvenimentoService.updateStatoAvvenimentoService]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-java.lang.Exception
    2013-02-07 11:04:52,340 [DEBUG] it.mycompany.service.qbuilder.logic.QBUpdateService.doExecute(QBUpdateService.java:62) CLIENT: HOST: - DAO.updateService - getStatement 
    2013-02-07 11:04:52,340 [INFO] it.mycompany.service.qbuilder.logic.QBUpdateService.doExecute(QBUpdateService.java:62) CLIENT: HOST: - DAO - SQL is:
              UPDATE TABLE_NAME
              SET STATO = ?
              WHERE COD = ?
    2013-02-07 11:04:52,918 [INFO] it.mycompany.service.qbuilder.logic.QBUpdateService.doExecute(QBUpdateService.java:62) CLIENT: HOST: - DAO - {1=1, 2=1200300146}
    2013-02-07 11:04:52,949 [INFO] it.mycompany.gevi.service.GenericService.updateService(GenericService.java:50) CLIENT: HOST: - Risultato updateService:1
    2013-02-07 11:04:52,965 [DEBUG] org.springframework.transaction.support.AbstractPlatformTransactionManager.handleExistingTransaction(AbstractPlatformTransactionManager.java:470) CLIENT: HOST: - Participating in existing transaction
    2013-02-07 11:04:53,730 [DEBUG] org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:464) CLIENT: HOST: - Executing callback on JMS Session: oracle.jms.AQjmsSession@ee2a92
    2013-02-07 11:04:54,167 [DEBUG] org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:567) CLIENT: HOST: - Sending created message: oracle.jms.AQjmsTextMessage@27fdb9
    2013-02-07 11:04:54,526 [INFO] it.mycompany.gevi.service.JMSSenderService.sendMessage(JMSSenderService.java:64) CLIENT: HOST: - JSM Message Sent!
    2013-02-07 11:04:54,526 [DEBUG] org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:752) CLIENT: HOST: - Initiating transaction commit Spring bean configuration file
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:aop="http://www.springframework.org/schema/aop"
         xmlns:tx="http://www.springframework.org/schema/tx"
         xmlns:p="http://www.springframework.org/schema/p"
         xmlns:jee="http://www.springframework.org/schema/jee"
         xmlns:orcl="http://www.springframework.org/schema/data/orcl"
         xmlns:context="http://www.springframework.org/schema/context"
         xsi:schemaLocation="
              http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
              http://www.springframework.org/schema/tx
              http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
              http://www.springframework.org/schema/aop
              http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
              http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context-3.0.xsd
              http://www.springframework.org/schema/task
              http://www.springframework.org/schema/task/spring-task-3.0.xsd
              http://www.springframework.org/schema/data/orcl
              http://www.springframework.org/schema/data/orcl/spring-data-orcl-1.0.xsd
              http://www.springframework.org/schema/jee
              http://www.springframework.org/schema/jee/spring-jee-3.0.xsd"
         default-lazy-init="true" default-autowire="byName">
         <jee:jndi-lookup id="geviDs" jndi-name="jdbc/DBGeviDS" />
         <jee:jndi-lookup id="geviAqAdmDs" jndi-name="jdbc/AQAdmGeviDS" />
         <orcl:aq-jms-connection-factory id="topicConnectionFactory" data-source="geviAqAdmDs"
          connection-factory-type="TOPIC_CONNECTION" />
         <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
              <property name="sessionTransacted" value="true"/>
            <property name="connectionFactory" ref="topicConnectionFactory"/>
            <property name="explicitQosEnabled" value="true"/>
            <property name="timeToLive" value="60000"/>
            <property name="pubSubDomain" value="true"/>
            <property name="defaultDestinationName" value="VR_INFO_VAR_TOPIC"/>
        </bean>
         <tx:jta-transaction-manager/>
         <tx:annotation-driven transaction-manager="transactionManager"  proxy-target-class="true" />
         <aop:config>
              <aop:pointcut id="genericServiceMethods" expression="execution(* it.mycompany.gevi.service..*Service.*(..))" />
              <aop:advisor pointcut-ref="genericServiceMethods" advice-ref="txServiceAdvice"/>
         </aop:config>
         <tx:advice id="txServiceAdvice" transaction-manager="transactionManager">
              <tx:attributes>
                   <tx:method name="read*Service" read-only="true"/>
                 <!-- Other methods use the default transaction settings (see below) -->
                 <tx:method name="insertReturning*Service"    propagation="REQUIRED" />
                 <tx:method name="create*Service" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                 <tx:method name="delete*Service" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                 <tx:method name="update*Service" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                 <tx:method name="sendMessage" propagation="REQUIRED" rollback-for="java.lang.Exception" />
              </tx:attributes>
         </tx:advice>
         <bean name="genericService" class="it.mycompany.gevi.service.GenericService" />
         <bean name="avvService" class="it.mycompany.gevi.service.avvenimenti.AvvenimentoService"/>
         <bean name="jmsSender" class="it.mycompany.gevi.service.JMSSenderService" >
              <property name="jmsTemplate" ref="jmsTemplate"/>
         </bean>
    </beans>Thanks in advance.

  • Password for Oc4j JMS in SOA Suite

    Hi,
    If I want to connect to OC4J JMS from an external application, so that the external application can insert message in queue (say a file persisted queue, that is being managed by the OC4J JMS), I would need to share the hostname, user id and pwd with the client.
    Problem is, the pwd for the OC4J JMS is oc4jadmin password, which I dont want to share with clients for obvious reasons. So is it possible to set the OC4j JMS password to be something other than the oc4jadmin password.
    TIA
    Amit

    You do not need to use admin to connect to OC4J JMS -- you can use any user that has RMI login permission. Just create a new user, give it RMI login permission, and then give the client that username/password. (That's assuming you're OK with giving the client RMI login permission of course.)
    -Jeff

  • JMS message persistance

    Hi
    I have an interface receiving SMS from a SMSC. This message is dumped into a JMS queue where a MDB receives and processes this.
    This MDB relies on a DB connection writing a lot of information away and execute some PL/SQL.
    Question is: When the DB is not available, ie the JDBC connection fails, how do I "re-send" this or save it to process it later when the DB is up again.
    Is there any method available that will "auto re-submit" the JMS message if I don't acknowledge it?
    The currentfunctionlaity works well except for this problem.
    Tks
    Andre

    Isaac -- If you need high reliability or transactional behaviors you really need to be using Oracle JMS. In general we recommend using Oracle JMS for now becasue OC4J JMS is still not JMS 1.0.2 compliant. We are working on that for a future release.
    Thanks -- Jeff

  • OC4J/JMS Queue Listener

    Hello,
    Have a simple test JMS client that is listening for messages posted to a JMS queue setup in the OC4J/JMS. While the messages are ending up in the proper queues [this can be verified via a queue browser] the listener does not seem to be getting any notifications. The receiver code is essentially,
    queueConnection = queueConnectionFactory.createQueueConnection();
    QueueSession queueSession = queueConnection.createQueueSession(
                             false,
                             Session.AUTO_ACKNOWLEDGE);
    QueueReceiver queueReceiver = queueSession.createReceiver(queue);
    System.out.println("Set Listener");
    queueReceiver.setMessageListener(new OracleListener());
    queueConnection.start();
    This is from a remote client for both the sender and the reciever. Any help would be much appreciated.
    Vinay Menon

    I am investigating this issue myself.   I have come up with two possible scenarios.
    1.  Do it in Java -- Of course this defeats the purpose of using SOA Suite.  In the book SOA Suite 11g handbook, chapter twelve he has a jms adapter publishing to a queue and a java program listening to that queue.    http://technology.amis.nl/2010/09/21/soa-suite-11g-handbook-chapter-complements/
    you can refer to the TheFinancialApplication.
    2.  If you have access to the Jms programs that publish the messages to the queue (that your programs want to listen to) and they are done in SOA Suite 11g, you could use Event Delivery Network (EDN) to create a event on the publishing side-- and then set up your listening processes to listen for that Event (which is jms under the hood).
    You could then have those processes kick off from that event.
    Anyone with a better idea?
    -- Update 8 hours later  -- I have a better idea:
    I created a composite that publishes a JMS message to a queue on weblogic using the jms adapter.  I created a second composite with a jms adapter (on the Exposed services side of the composite)  that Consumes a message, hooked it up to a mediator and then wrote the contents of the message to a file.  Uploaded both.
    Moments after the JMS publisher Composite ran, a file was created.  From this I would surmise that you could run other processes as well.
    -- Update two days later.   So much for the better idea.
    Given that the Flow Trace of the last test looked suspiciously like this one one application and not two separate applications, I decided to test it further.  I have two PCs.  On each PC I have a soa domain, Uploaded the jms publisher to one domain, and the JMS Consumer to the other separate domain on the other PC.   Ran the publisher, and the other one just sat still -- didn't start at all.
    The first test was too good to be true!
    Stuart

  • Is JMS 1.0.2 Supported in OC4J JMS 10.1.2 adaptor

    Hi
    I am wondering if JMS 1.0.2 is Supported in OC4J JMS 10.1.2 adaptor.
    Thank you
    Wade Adams
    Message was edited by:
    user617346

    Just wanted to update with what I found out incase anyone else needs this information:
    The SRE 505 eGate JMS Reference PDF file, indicates that SRE JMS is compliant with JMS version 1.0.2. In ICAN 505, the JMS server is compliant with JMS version 1.0.2b.
    Also OC4j 10.1.2 adaptor is compliant iwth JMS version1.0.2b.

  • OC4J/JMS question

    Is there a possibility to send messages to OC4J/JMS queue from remote client program?

    Yes, exactly this way I obtain a connection factory. Here is piece of code, how I do it:
              env.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
              env.put(Context.SECURITY_PRINCIPAL, "admin");
              env.put(Context.SECURITY_CREDENTIALS, "admin");
              env.put(Context.PROVIDER_URL, "ormi://localhost:23791/");
              Context context = new InitialContext(env);
              QueueConnectionFactory connectionFactory = (QueueConnectionFactory)context.lookup("jms/my/test.queueConnectionFactory");
    Then I obtain a connection, lookup my queue and create sender:
    QueueConnection connection = connectionFactory.createQueueConnection();
              QueueSession qSession = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
              Queue q = (Queue)context.lookup("jms/my/test.queue");
              QueueSender sender = qSession.createSender(q);
              connection.start();
    Then I try send my message and it fails on sender's send method:
    TextMessage message = qSession.createTextMessage();
    message.setText("Text message text");
    sender.send(message);
    And exception is:
    javax.jms.JMSException: Unable to connect to JMSServer (/127.0.0.1:9127)
         at com.evermind.server.jms.EvermindQueueConnection.connect(E[i]Long postings are being truncated to ~1 kB at this time.

  • Why are my JMS messages automatically dequeued without consumer?

    I created a simple in-memory JMS queue.
    Now I wrote a BPEL process which writes (successfully ?) JMS message to this JMS queue.
    Another consuming BPEL process is deployed but not started.
    However I cannot see them in MBean JMSDestinationResource on the OC4J Enterprise Manager Web page.
    When I tell the AppServer to browse all currently existing (and waiting) JMS message then there are none.
    However the statistics for this queue show 17 messagesEnqueued and 17 messagesDequeued Messages.
    It seems to me that my JMS messages are automatically dequeued. But why?
    Are in-memory JMS messages not persistent (as long as the AppServer is up and running) ?
    Do I have to set a certain preference to let JMS live in the Queue as long as they are not retrieved by another BPEL process?
    Furthermore I tried the following:
    I started a consuming BPEL process. Yes, he is waiting at the JMS adapter until a new JMS message arrive.
    Then I send from the first BPEL process a JMS message. But even when consumption is possible the JMS message is dequeued and not forwarded to the consumer.
    Why?
    Peter

    It seems to me that my JMS messages are automatically dequeued. But why?
    This is how BPEL PM is designed; The activation-agent is running that belongs to the BPEL process. When a message arrives in a Queue or Table or File it is read into the dehydration store. Then an instance of the appropriate BPEL process is started. This functionality makes the system more stabel and reliable when something is goingin wrong in quees/files/db or any adapter that is used for polling.Are in-memory JMS messages not persistent (as long as the AppServer is up and running) ?
    As you desribed: in-memory messages are only persistent in memory, if you restart the server, the messages are gone.Do I have to set a certain preference to let JMS live in the Queue as long as they are not retrieved by another BPEL process?
    No you can not.Marc
    http://orasoa.blogspot.com

Maybe you are looking for

  • PL/SQL Network Address Type Functions

    Hi, I'm wondering if anyone knows of a PL/SQL package(s) that provides similar capabilities as the following postgreSQL network address type functions: http://www.sql.org/sql-database/postgresql/manual/functions-net.html I don't see anything in the s

  • Creating a new portal in a new domain - no baseportal template

    Using Weblogic Platform 7.0 on Solaris 8, I'm trying to work through the procedure at http://edocs.bea.com/wlp/docs70/dev/newdom.htm "Creating a new portal in a new domain." Step 1 "Creating the new domain" goes fine. I can start the portal server us

  • Bought a Brand New iPod touch, my entire music library WILL NOT SYNC (stuck on waiting for changes)

    I just bought a new ipod touch, and I'm really struggling to not throw this thing against the wall. My music won't sync. Its stuck on "Waiting for Changes to be applied" Im not trying to sync anything else, no video, pictures, apps, anything. Just mu

  • Error in installing sun java directory server

    dear , i am trying to install sun java directiry server from sun java enterprise server using command line ( ./installer ), but this error reported to me when i issue the installer command . # ./installer Error occurred during initialization of VM ja

  • WRT54GS as Access Point

    Is there a way to set up the WRT54GS as an access point for the WRT300N? I just recently purchased the WRT300N and I was looking to extend my signal without purchasing the wireless repeater. Can anyone help with this?