Asynchronous consumer doesn't consume?

Can anyone tell my why my message consumer doesn't consume a TextMessage put in a Queue by a MessageDrivenBean?
Another part of my client successfully sent a message to the MDB, and the MDB put a TextMessage in another Queue (queue\goAdminOut) with this property set on the message:
key="Selector"
value="ADCD"
I know the TextMessage is waiting on the Queue, because I can see it using the servers web-consloe.
Its just that the message does not trigger the onMessage () method of the Listener I set on the MessageConsumer in my client.
The MessageConsumer was created with:
Session.createConsumer(Destination destination, java.lang.String messageSelector)
Here is a list of the relevant code included below.
1. Two classes the mimic my client.
TestConsumerView
-- A JFrame that stays alive till it is closed.
TestConsumer
-- An object that is instantiated as a field in TestConsumerView
-- It establishes the connection, session and message consumer
2. The screen print when I run TestConsumerView
3. A screen print from the JBoss JMX web console confirming that the message is in the queue
TestConsumerView Codeimport javax.swing.JFrame;
class TestConsumerView extends JFrame {
  // members
  private static final long    serialVersionUID = 1L;
  private TestConsumer consumer;
  // main ()
  public static void main(String args[]) {
    System.out.println ("** BEGIN: TestConsumerView.main ()");
    System.out.println ("** instantiate TestConsumerView");
    new TestConsumerView();
    System.out.println ("\n** TestConsumerView instantiated");
    System.out.println ("** END:   TestConsumerView.main ()");
  // constructor
  private TestConsumerView () {
    super ();
    System.out.println ("\n**** BEGIN: TestConsumerView.constructor");
    consumer = new TestConsumer ();
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setVisible (true);
    System.out.println ("\n**** END:   TestConsumerView.constructor");
} TestConsumer Code import javax.swing.JFrame;
class TestConsumerView extends JFrame {
  // members
  private static final long    serialVersionUID = 1L;
  private TestConsumer consumer;
  // main ()
  public static void main(String args[]) {
    System.out.println ("** BEGIN: TestConsumerView.main ()");
    System.out.println ("** instantiate TestConsumerView");
    new TestConsumerView();
    System.out.println ("\n** TestConsumerView instantiated");
    System.out.println ("** END:   TestConsumerView.main ()");
  // constructor
  private TestConsumerView () {
    super ();
    System.out.println ("\n**** BEGIN: TestConsumerView.constructor");
    consumer = new TestConsumer ();
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setVisible (true);
    System.out.println ("\n**** END:   TestConsumerView.constructor");
}Screen Output ** BEGIN: TestConsumerView.main ()
** instantiate TestConsumerView
**** BEGIN: TestConsumerView.constructor
****** BEGIN: TestConsumer.constructor
****** calling connect ()
******** BEGIN: TestConsumer.connect ()
******** InitialContext Returned
******** Connection instantiated
******** Session instantiated
******** MessageConsumer instantiated with the selector phrase = Selector='ABCD'
******** add a MessageListener to consumer
********** TCListener.constructor called
******** MessageListener added
******** Connection started
******** END:   TestConsumer.connect ()
****** call to connnect () completed
****** END:   TestConsumer.constructor
**** END:   TestConsumerView.constructor
** TestConsumerView instantiated
** END:   TestConsumerView.main () WEB CONSOLE OUTPUT [SpyTextMessage {
Header {
   jmsDestination  : QUEUE.goAdminOut
   jmsDeliveryMode : 2
   jmsExpiration   : 0
   jmsPriority     : 4
   jmsMessageID    : ID:9-11218101942431
   jmsTimeStamp    : 1121810194243
   jmsCorrelationID: null
   jmsReplyTo      : null
   jmsType         : null
   jmsRedelivered  : false
   jmsProperties   : {Selector='ABCD'}
   jmsPropReadWrite: false
   msgReadOnly     : true
   producerClientId: ID:9
Body {
   text            :The DialogPack was received

Sorry,
I guess I screwed up and put TestConsumerView code twice.
Anyway, the missing TestConsumer code is below.
I am not sure I understand your comment about MDB and a Java GUI client.
Right now I am testing my app on a local server.
Ultimately I intend to use a remote server that mediates between two WebStart downloaded Java GUI clients running on independent PCs.
Kind of a game model with two players.
Both clients can send ObjectMessages to a server side Queue that is listened to by an MDB (i.e. the object would contain all the data needed to enroll a new player, or to describe a new play by one client to the other).
The MDB would process the data in the object attached to the Object Message using Entity Beans and any other server side components required, i.e. to add the new member to the database or update the copy ot the game history.
When done, the MDB would send messages to one or two Queues.
Queue-1 would be listend to by the client that sent the origianl ObjectMessage letting it know if the object was processed correctly.
That is why I want to use a selector. There could be multiple pairs of clients being served by the MDB, so I need to attach a selector to the original Object message that the MDB then sets on its response message so the original client can find the MDB response in Queue-1.
Queue-2 would be listened to by the other client (i.e. to let it know a play has been made). Same concept.
Right now I am just trying to test the original client cycle, i.e. the original client listening to Queue-1 to see if the MDB succeeded.
The Object message to MDB and the MDB message to Queue-1 works because I can use the JBoss web-consloe to see the TextMessaage waiing with the correct selector in the correct Queue.
I just can't seem to write code for an asynchromous consumer in the original client that continuously listens to Queue-1.
Anyway here is the code.
TestConsumer CODEimport java.util.Hashtable;
import javax.jms.JMSException;
import javax.jms.ConnectionFactory;
import javax.jms.Connection;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Destination;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class TestConsumer {
  // constructor
  public TestConsumer () {
    super ();
    System.out.println ("\n****** BEGIN: TestConsumer.constructor");
    System.out.println ("****** calling connect ()");
    connect ();
    System.out.println ("\n****** call to connnect () completed");
    System.out.println ("****** END:   TestConsumer.constructor");
  // members
  private final String selector = "Selector='ABCD'";
  private Session session;
  // members - inner class
  private class TCListener implements MessageListener {
    TCListener () {
      super ();
      System.out.println ("\n********** TCListener.constructor called\n");
    public void onMessage (Message msg) {
      try {
        System.out.println ("    ** BEGIN: TestConsumer.Listen.onMessage ()");
        System.out.println ("       Msg property 'Selector'=" + "\"" + msg.getStringProperty ("Selector") + "\"");
      } catch (JMSException e) {
        System.out.println ("       JMSException");
      System.out.println ("    ** END:   TestConsumer.Listen.onMessage ()");
  // methods
  private void connect () {
    System.out.println ("\n******** BEGIN: TestConsumer.connect ()");
    try {
       Hashtable<String, String> env =
         new Hashtable<String, String> ();
       env.put(Context.INITIAL_CONTEXT_FACTORY,
              "org.jboss.naming.HttpNamingContextFactory");
       env.put(Context.PROVIDER_URL,
              "http://localhost:8080/invoker/JNDIFactory");
       env.put(Context.URL_PKG_PREFIXES,
               "org.jboss.naming:org.jnp.interfaces");
      Context jndiContext = new InitialContext(env);
      System.out.println ("******** InitialContext Returned\n");
      ConnectionFactory factory = (ConnectionFactory)
          jndiContext.lookup("HTTPConnectionFactory");
      Connection connection = factory.createConnection();
      System.out.println ("\n******** Connection instantiated");
      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      System.out.println ("******** Session instantiated");
      Destination destination = (Destination) jndiContext.lookup("queue/goAdminOut");
      MessageConsumer consumer = session.createConsumer(destination, selector);
      System.out.println ("******** MessageConsumer instantiated with the selector phrase = " + selector);
      System.out.println ("******** add a MessageListener to consumer");
      consumer.setMessageListener (new TCListener ());
      System.out.println ("******** MessageListener added");
      connection.start ();
      System.out.println ("******** Connection started");
    } catch (NamingException e) {
      System.out.println ("******** Naming Exception");
    } catch (JMSException e) {
      System.out.println ("******** JMS Execption");
    System.out.println ("******** END:   TestConsumer.connect ()");
}

Similar Messages

  • Asynchronous Consumer Message Size Limitation?

    Hello,
    We are currently evaluating the Sun Message Queue 3.5. We are able to successfully send and asynchronously receive messages that are less than 1K. However, when we increased the size of the message to 2K or more, the asynchronous consumer does not return the message and messages that we send subsequently (large or small) do not get received. Seems like the destination is blocked at that point. We are able to retrieve the message synchronously though using the receive(1000) method.
    Is there maybe a setting that we must check out for this?
    Also, is it possible to support both synchronous and asynchronous messaging at the same time?
    ie. Creating MessageListeners and also using the receive method for the same set of destinations?
    We were planning to use this as a workaround so that if the message is greater that 1K, we'll just receive it synchronously. However, synchronous receiving doesn't seem to work if there is a listener listening to a destination that contains a large message.
    Thanks for your time.

    Outside of specific configurable parameters, nothing in
    the system really cares about the size of the message.
    A few possible reasons:
    1. if you are using receive(timeout), the receive time may
    be too short to complete processing the message (since
    larger messages take longer to send over the network)
    2. if you are setting an expiration time, the larger messages
    could be expiring during the routing stage (since the
    messages take longer)
    3. The larger messages could be exceeding a configured
    size limit on either the destination or broker
    To check:
    imqcmd query dst -n <name> -t t
    or
    imqcmd query bkr
    And look at the size limits
    If the size limits are exceeded, the messages will be rejected.
    Additionally, if

  • Reconnection for asynchronous consumer

    Hello,
    I have a connection with only an asynchronous consumer and a JMS ExceptionListener on it. When I pull out the network cable on the client for 10 minutes or so (long enough for the server to close the connection), then plug it back in, my consumer never receives a message again. There is no exception received by the listener. It doesn't seem to matter if my reconnect settings are infinite or not.
    If I put producers on the connection, the connection is re-established (or the JMSExceptionListener receives an exception) and everything is fine.
    I need to be able to detect the fact that there is a problem. Should I be making synchronous receive calls instead? What about a dummy producer on the connection?
    Thanks,
    Aaron

    Aron,
    I guess, you are facing here 'half open connection' problem.
    There is already bug filed regarding this and the fix will be available within MQ3.6 timeline.
    Bug description is,
    "We're doing some reliability/stress testing that involves periodically disabling/re-enabling network interfaces. Every once in a while we end up with a half open connection between the MQ client and broker--the client thinks the connection is up, but the broker has closed it. The client detects that the connection is down when it tries to publish, but if it's only a subscriber, then
    it never knows the connection went away. The broker has a mechanism that pings the client-side periodically to prevent this situation, but there doesn't appear to a similar mechanism on the client side.
    Ideally, the client's ExceptionListener.onException method should be called when the connection is detected to be (half-)closed."
    Workaround suggested is,
    " To generate traffic between the client and the broker by creating a session and closing it or creating a temporary destination and deleting it. This will trigger the Exception."
    Hope this helps.
    Thanks.
    Sagar
    http://wwws.sun.com/software/products/message_queue

  • Several Onmessage and asynchronous process doesn't function

    Hi,
    I'm using the BPM suite v10.1.2.0.2.
    A process instantiated by a pick with two onMessage, each receiving a distinct message from two different invoke from another process, doesn't function.
    I have the following error :
    <remoteFault>
    <part name="summary" >
    <summary>when invoking endpointAddress 'http://set.by.caller', exception during AXIS invoke: java.net.UnknownHostException: set.by.caller; nested exception is: javax.xml.rpc.JAXRPCException: java.net.UnknownHostException: set.by.caller</summary>
    </part>
    <part name="detail" >
    <detail>javax.xml.rpc.JAXRPCException: java.net.UnknownHostException: set.by.caller</detail>
    </part>
    </remoteFault>
    More clearly, when I Introspect the data entries to instantiate only the process beginning with the pick, It works with one operation, but not for the other.
    I can see that the error is the following : the server always looks after the same portType, and therefore generates the following error : operation cannot be found in the portType.
    I assume the code is correct describing the two operations.
    Has anyone already faced such a bug ?
    Thank you by advance,
    mlamarque

    Hi,
    I've been working on it these past days. I Never found the problem.
    You can find here the useful bpel code :
    <partnerLink myRole="BPELProcess1Provider" name="PartnerLink_1" partnerLinkType="client:BPELProcess1"/>
    <partnerLink myRole="BPELProcess1Provider2" name="PartnerLink_2" partnerLinkType="client:BPELProcess2"/>
    <variable name="variable1" messageType="client:BPELProcess1RequestMessage"/>
    <variable name="variable2" messageType="client:BPELProcess1RequestMessage2"/>
    <pick name="Pick_1" createInstance="yes">
    <onMessage portType="client:BPELProcess11" operation="initiate1" variable="variable1" partnerLink="PartnerLink_1">
    <wait name="Wait_1" for="'PT5S'"/>
    </onMessage>
    <onMessage portType="client:BPELProcess12" operation="initiate2" variable="variable2" partnerLink="PartnerLink_2">
    <wait name="Wait_2" for="'PT5S'"/>
    </onMessage>
    </pick>
    and here is the WSDL code :
    <portType name="BPELProcess11">
    <operation name="initiate1">
    <input message="client:BPELProcess1RequestMessage"/>
    </operation>
    </portType>
    <portType name="BPELProcess12">
    <operation name="initiate2">
    <input message="client:BPELProcess1RequestMessage2"/>
    </operation>
    </portType>
    <plnk:partnerLinkType name="BPELProcess1">
         <plnk:role name="BPELProcess1Provider">
              <plnk:portType name="client:BPELProcess11"/>
         </plnk:role>
    </plnk:partnerLinkType>
    <plnk:partnerLinkType name="BPELProcess2">
         <plnk:role name="BPELProcess1Provider2">
              <plnk:portType name="client:BPELProcess12"/>
         </plnk:role>
    </plnk:partnerLinkType>
    If I Try to introspect the call of 'intiate1' with a HTML form on the BPM server, I get the following error message :
    Unfound operation in the portType. The operation "initiate1" cannot be found in the portType "{http://xmlns.oracle.com/BPELProcess1}BPELProcess12". Check if the "initiate1" operation exists.
    The other branch is working fine.
    I can't help thinking that this is an Oracle Bug : the server always looks after the same branch.
    Anyway, thank you by advance
    Mathieu Lamarque

  • Two consumers (asynchronous) on two JVM's  ( urgent )

    Hi All,
    Is it possible to have two consumer process's on two JVM's to receive the message's published by a single publisher process ?
    The mode of transfer is asynchronous
    consumer 1 on cpu1
    consumer 2 on cpu2
    publisher on cpu0
    thanx in advance

    Yes

  • What is Asynchronous call?

    Hi,
    What is asynchronous? When we say AJAX is asynchronous, it doesn't wait for te server response and will reload only the particular part of the page
    with the server response content immediately rather tan reloading the whole page.I have doubt here, if AJAX calls not does not wait for the server response
    how can it fetch the server data to be displayed in the view?
    Whether that will be stored in an AJAX engine which acts as an interface between user browser and the server?
    Which does have its own internal cache to cache the server response from where the details will be served back to the user?
    Please clarify.Any example with asynchronous and synchronous are highly appreciated.
    Thanks.

    When we say AJAX is asynchronousIt seems to me that when we say 'AJAX is asynchronous' we are just misusing standard terminology. It isn't asynchronous at all. It engages in a request/response protocol. What it is is partial: it doesn't have to submit the entire form, and it doesn't have to process the entire page as a response; it can also pipeline, i.e. submit several requests before it processes any responses. None of this satisfies any definition of 'asynchronous' that I'm aware of.

  • JMS Messages getting stuck in queues

    Hi,
    I am facing this peculiar issue with queue messages not getting picked up.
    Application Architecture: There is 1 JMS queue ( which resides in WLDomain1 with in a Unix Box) and there are 2 windows boxes having 2 weblogic domains each with 3 instances of MDB deployed on each of the domains. So total of 12 consumers (2 Box * 2 Domain * 3 Instances of MDB) listens to the JMS queue.
    Issue: After bringing everything up I am able to see 12 consumer count listening to the queue. But when I run the application which writes total of 13 messages in the queue only 7 of them are getting processed and 6 messages are always getting stuck in the queues. Interestingly this 7 messages are mostly getting processed by consumers with in the same windows box. And the selection of windows box is completely random. To confirm whether both the windows boxes are configured fine I tried to test them individually and it works fine individually, the problem happens only if I bring up both the boxes together.
    Another observation is, if I bring down the non working domains, the pending messages start getting processed by the working domains. It gives an impression that the non working domains seem to lock the messages for processing but doesn't actually process it. Only when I bring down the domains it releases this lock.
    Below is the JMS Life cycle events I captured from log files :
    1. Start domain1 in WIN Box1
    ####<Nov 24, 2009 7:54:00 PM CST> <> <> <1259114040304> <783400> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session60.consumer62)> <> <>
    ####<Nov 24, 2009 7:54:00 PM CST> <> <> <1259114040309> <239900> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session63.consumer65)> <> <>
    ####<Nov 24, 2009 7:54:00 PM CST> <> <> <1259114040313> <2100> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session66.consumer68)> <> <>
    2. Start domain2 in WIN Box 1
    ####<Nov 24, 2009 7:54:55 PM CST> <> <> <1259114095403> <38600> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session70.consumer72)> <> <>
    ####<Nov 24, 2009 7:54:55 PM CST> <> <> <1259114095407> <335400> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session73.consumer75)> <> <>
    ####<Nov 24, 2009 7:54:55 PM CST> <> <> <1259114095410> <997700> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session76.consumer78)> <> <>
    3. Start domain1 in WIN Box 2
    ####<Nov 24, 2009 7:56:12 PM CST> <> <> <1259114172061> <316500> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session80.consumer82)> <> <>
    ####<Nov 24, 2009 7:56:12 PM CST> <> <> <1259114172066> <324300> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session83.consumer85)> <> <>
    ####<Nov 24, 2009 7:56:12 PM CST> <> <> <1259114172072> <757000> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session86.consumer88)> <> <>
    4. Start domain2 in WIN Box 2
    ####<Nov 24, 2009 7:56:54 PM CST> <> <> <1259114214000> <142800> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session90.consumer92)> <> <>
    ####<Nov 24, 2009 7:56:54 PM CST> <> <> <1259114214005> <38200> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session93.consumer95)> <> <>
    ####<Nov 24, 2009 7:56:54 PM CST> <> <> <1259114214009> <22400> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session96.consumer98)> <> <>
    At this point console shows 12 consumers listening the queue which is absolutely fine.
    5. Run application
    --Message Production
    This produces 13 messages ( I have not pasted the complete log)
    -- Message Consumption ( Only 7 messages are consumed)
    ####<Nov 24, 2009 8:00:05 PM CST> <> <> <1259114405953> <576400> <ID:<1047832.1259114392542.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session63.consumer65)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114392542&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    ####<Nov 24, 2009 8:00:10 PM CST> <> <> <1259114410091> <310100> <ID:<1047832.1259114393181.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session66.consumer68)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114393181&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    ####<Nov 24, 2009 8:00:10 PM CST> <> <> <1259114410130> <364600> <ID:<1047832.1259114400626.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session63.consumer65)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114400626&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    ####<Nov 24, 2009 8:00:10 PM CST> <> <> <1259114410134> <540700> <ID:<1047832.1259114393125.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session76.consumer78)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114393125&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    ####<Nov 24, 2009 8:00:10 PM CST> <> <> <1259114410137> <632400> <ID:<1047832.1259114393128.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session73.consumer75)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114393128&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    ####<Nov 24, 2009 8:00:12 PM CST> <> <> <1259114412026> <984200> <ID:<1047832.1259114393123.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session60.consumer62)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114393123&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    ####<Nov 24, 2009 8:00:16 PM CST> <> <> <1259114416045> <41800> <ID:<1047832.1259114400005.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session70.consumer72)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114400005&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    6. At this point Admin Consol shows 6 messages pending in the queue
    and From consumer numbers it is evident that consumers in WIN Box2 domains have not processed any messages
    Now if I stop server in WIN Box2 Domain1, WIN Box1 picks up the messages instantely
    ####<Nov 24, 2009 8:13:22 PM CST> <> <> <1259115202343> <897600> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session80.consumer82)> <> <>
    ####<Nov 24, 2009 8:13:22 PM CST> <> <> <1259115202346> <421900> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session83.consumer85)> <> <>
    ####<Nov 24, 2009 8:13:22 PM CST> <> <> <1259115202379> <582300> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session86.consumer88)> <> <>
    ####<Nov 24, 2009 8:13:24 PM CST> <> <> <1259115204888> <4600> <ID:<1047832.1259114400029.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session76.consumer78)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114400029&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    ####<Nov 24, 2009 8:13:32 PM CST> <> <> <1259115212820> <256700> <ID:<1047832.1259114400258.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session66.consumer68)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114400258&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    ####<Nov 24, 2009 8:13:43 PM CST> <> <> <1259115223579> <280600> <ID:<1047832.1259114400032.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session60.consumer62)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114400032&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    7. At this poing Admin Consol shows 3 messages pending in the queue
    Now if I stop server in WIN Box2 Domain2, the remaining 3 gets processed
    ####<Nov 24, 2009 8:16:08 PM CST> <> <> <1259115368998> <193400> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session90.consumer92)> <> <>
    ####<Nov 24, 2009 8:16:08 PM CST> <> <> <1259115369000> <885500> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session93.consumer95)> <> <>
    ####<Nov 24, 2009 8:16:09 PM CST> <> <> <1259115369002> <902500> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session96.consumer98)> <> <>
    ####<Nov 24, 2009 8:16:25 PM CST> <> <> <1259115385151> <123700> <ID:<1047832.1259114400324.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session70.consumer72)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114400324&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    ####<Nov 24, 2009 8:16:29 PM CST> <> <> <1259115389660> <836600> <ID:<1047832.1259114400535.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session63.consumer65)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114400535&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    ####<Nov 24, 2009 8:16:37 PM CST> <> <> <1259115397823> <610200> <ID:<1047832.1259114400432.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session73.consumer75)> <&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"&gt;&lt;mes:Header&gt;&lt;mes:JMSTimestamp&gt;1259114400432&lt;/mes:JMSTimestamp&gt;&lt;mes:Properties/&gt;&lt;/mes:Header&gt;&lt;/mes:WLJMSMessage&gt;> <>
    Kindly throw some light on this issue. Also do let me know if you need any more specific details about this.
    Thanks,
    Abhijeet
    Edited by: user5240164 on Nov 25, 2009 11:35 AM
    Edited by: user5240164 on Nov 28, 2009 1:21 PM

    Hi,
    The problem may be conflicting names in your configuration. To ensure proper operation of WL Security, JMS, JTA, and JDBC, make sure that (A) each domain has a unique name, and (B) no two WebLogic servers have the same name (even if in two different domains).
    To ensure a more even distribution of messages, either simply send more than a token amount messages (eg, a hundred or so, rather than just 12), or configure a custom connection factory on the domain that hosts the queue, reduce MessagesMaximum on the connection factory to 1, and then modify each MDB to refer to the custom connection factory. The MessagesMaximum setting controls the number of messages that can be pre-pushed (pipelined) to a single asynchronous consumer.
    For more information see "Best Practices for JMS Beginners and Advanced Users" in the latest versions of the JMS admin guide, and "JMS Performance & Tuning Check List" in the WebLogic Performance and Tuning guide.
    Tom

  • Bridge already registered when using two managed servers

    I have defined a messaging bridge with a target of my cluster in Weblogic 9.0 (upgraded from 7.0). My cluster has two managed servers. The bridge and resource adapter also have targets of the cluster. When I start the first managed server, everything works fine. The bridge works. When I bring up the second managed server, I repeatedly get the following:
              javax.jms.JMSException: SJMSBridge is already registered
              Is there something new that I need to define in the config to make this work?

    Here is the full error. I can understand what you are saying about the cluster, but I get this message even when only one server of the cluster is running. That doesn't make sense to me.
              ####<Nov 15, 2005 2:30:36 PM PST> <Info> <MessagingBridge> <PFRIMER> <ManagedServer2> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1132093836274> <BEA-200030> <Bridge "SJMSBridge" is configured to work in "Exactly-once" mode, and it is actually working in "Duplicate-okay" mode.>
              ####<Nov 15, 2005 2:30:36 PM PST> <Info> <MessagingBridge> <PFRIMER> <ManagedServer2> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1132093836805> <BEA-200028> <The bridge "SJMSBridge" has started transferring messages.>
              ####<Nov 15, 2005 2:30:38 PM PST> <Warning> <MessagingBridge> <PFRIMER> <ManagedServer2> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1132093838008> <BEA-200026> <Bridge "SJMSBridge" encountered some problems in one of its adapters or underlying systems. It stopped transferring messages and will try to reconnect to the adapters shortly. (The exception caught was java.lang.Exception: javax.resource.ResourceException: Error setting message listener
                   at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1457)
                   at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1437)
                   at weblogic.jms.adapter.JMSBaseConnection.setMessageListener(JMSBaseConnection.java:1201)
                   at weblogic.jms.adapter.JMSConnectionHandle.setMessageListener(JMSConnectionHandle.java:134)
                   at weblogic.jms.bridge.internal.MessagingBridge.beginForwarding(MessagingBridge.java:951)
                   at weblogic.jms.bridge.internal.MessagingBridge.run(MessagingBridge.java:1038)
                   at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)
                   at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
                   at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
              -------------- Linked Exception ------------
              javax.resource.ResourceException: Error creating asynchronous consumer
                   at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1457)
                   at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1437)
                   at weblogic.jms.adapter.JMSBaseConnection.createConsumer(JMSBaseConnection.java:1299)
                   at weblogic.jms.adapter.JMSBaseConnection.access$400(JMSBaseConnection.java:84)
                   at weblogic.jms.adapter.JMSBaseConnection$11.run(JMSBaseConnection.java:1183)
                   at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
                   at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
                   at weblogic.jms.adapter.JMSBaseConnection.setMessageListener(JMSBaseConnection.java:1180)
                   at weblogic.jms.adapter.JMSConnectionHandle.setMessageListener(JMSConnectionHandle.java:134)
                   at weblogic.jms.bridge.internal.MessagingBridge.beginForwarding(MessagingBridge.java:951)
                   at weblogic.jms.bridge.internal.MessagingBridge.run(MessagingBridge.java:1038)
                   at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)
                   at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
                   at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
              -------------- Linked Exception 2 ------------
              javax.jms.JMSException: SJMSBridge is already registered
                   at org.exolab.jms.messagemgr.ConsumerManager.createDurableConsumerEndpoint(ConsumerManager.java:404)
                   at org.exolab.jms.server.JmsServerSession.createSubscriber(JmsServerSession.java:771)
                   at org.exolab.jms.server.mipc.IpcJmsSessionConnection.createSubscriber(IpcJmsSessionConnection.java:588)
                   at org.exolab.jms.server.mipc.IpcJmsSessionConnection.notify(IpcJmsSessionConnection.java:165)
                   at org.exolab.jms.server.mipc.IpcJmsReceiver.notify(IpcJmsReceiver.java:100)
                   at org.exolab.jms.server.mipc.IpcServerChannel.run(IpcServerChannel.java:161)
              .)>

  • How to use IBM MQ as a JMS Provider?

     

    Chapter 8.2 on session pools in the 1.0.2 spec seems to make no real mention
              of transansactions. If not could you point exactly where? What steps would
              one use to cause a foreign messaging-server to infect an async message
              with a JTA transaction using Chapter 8.2 session pools?
              Chapter 8.3 describes the XA libraries, which are not related to session pools.
              The general community feeling on Chapter 8.2 SessionPools is that in almost all
              cases they are
              inferior to MDBs. To make it worse, they are not a required part of the J2EE
              spec. Their
              only real advantage is that they can pool access to a single topic subscription.
              Nice, but hardly
              worth the trouble. Just brainstorming here, but the elegant solution here
              seems simple: extend
              the JMS spec to allow multiple consumers on a single subscription. This would
              also nicely solve
              one MDB/topic problem, as even with SessionPools, there is no way to have MDBs
              on multiple
              servers share a single subscription...
              I don't think the spec states that SessionPools should run on a client. I'm
              fairly sure
              that SessionPools were intended to be a server-side entity. The numerous
              repetitions stating
              that the MessageListener runs on the app server and that the app server controls
              the threads seems to support
              this. It is an extension past Chapter 8.2 to get them to work off-server.
              (Albeit potentially a nice one, if
              one is absolutely determined to use these things instead of MDBs.)
              Maciej Szefler wrote:
              > I've noticed that BEA maintains that this is a shortcoming in the JMS
              > spec -- particularly that there is no way to integrate XA messages from
              > other JMS implementations into Weblogic without the vendor implementing
              > propriatary Weblogic interfaces, I quote your FAQ:
              >
              > "The only reason this works for WebLogic Server JMS is that we have defined
              > a WebLogic Server extension interface that has a method to associate a
              > message with a transaction. This interface, MDBTransaction, is defined in
              > news://newsgroups.bea.com/[email protected]. It has one method,
              > associateTransaction(), that takes a javax.jms.Message parameter. This
              > message must be associated with the transaction. We are hoping that other
              > JMS vendors interested in integrating with WebLogic Server will implement
              > this interface. "
              >
              > "Another approach called source managed transactions, would be for there to
              > be an API to tell the JMS provider to start a transaction on your behalf
              > before delivering the message to an asynchronous consumer. This API doesn't
              > exist in J2EE either. Even if there were such a provision, few non-WLS JMS
              > providers can begin and drive such a transaction by themselves."
              >
              > I would like to know where it is that you guys came up with this novel (and
              > incorrect) position. The JMS API to do this exists, it is called ASF (JMS
              > spec chapter 8) and if WebLogic implemented it correctly then there would be
              > no problem driving XA MDBs using MQseries. The fact of the matter is that
              > Weblogic 6.1 server is simply not JMS compliant in this respect. The 6.1 JMS
              > implementation does not expose the ASF correctly (it relies on the client
              > using a special ServerSesisonPool implementation), nor does the MDB
              > container use the ASF (which I guess is understandable since it isn't
              > implemented correctly). The question is, is Weblogic 7.0 Server going to use
              > ASF to drive MDBs and is the Weblogic 7.0 JMS implemetation going to
              > correctly expose the ASF to advanced clients that may wish to use it?
              >
              > -Maciej Szefler
              > FiveSight Technologies Inc.
              >
              > "Tom Barnes" <[email protected]> wrote in message
              > news:[email protected]...
              > > Clarification. See in-line.
              > >
              > > Tom Barnes wrote:
              > >
              > > > Hi Steve,
              > > >
              > > > This request comes up numerous times in this newsgroup. Since
              > > > the FAQ isn't quite up to date, here is the cut-and-paste response:
              > > >
              > > > Resources:
              > > > Resource Library/White-Papers/WebLogic Server section on dev2dev site:
              > > >
              > http://dev2dev.bea.com/resourcelibrary/whitepapers.jsp?highlight=whitepapers
              > > > jmsproviders.doc, jmsmdb.doc, jmsjta.doc
              > > >
              > > > Code Library/Code Samples/WebLogic Server section on dev2dev site:
              > > > "WebLogic MQSeries JMS Support"
              > > > wlsmqseries.zip
              > > >
              > > > Code Library/Alpha Code/WebLogic Server section on dev2dev site:
              > > > "Sample JMSBridge For WebLogic 6.0"
              > > > JMSBridge60.zip
              > > >
              > >
              > > The above is 6.0 sample code that has nothing to do the below 6.1 alpha
              > bridge, and
              > > was not developed by anyone on the JMS team. The location for the 6.1
              > information is:
              > >
              > > Resource Library/Guides and Tutorials
              > > "Introducing WebLogic Messaging Bridge"
              > > MessagingBridge61.zip
              > >
              > > (see
              > >
              > http://dev2dev.bea.com/resourcelibrary/guidestutorials/technicalguides.jsp?h
              > ighlight=guidestutorials)
              > >
              > >
              > >
              > > >
              > > > The 6.1 MDB can be driven directly by standard JMS implementations -
              > but
              > > > not transactionally by vendors that do not implement the
              > > > weblogic.jms.extensions.MDBTransaction interface. Such vendors
              > > > (including MQSeries) can be made transactional by using a messaging
              > bridge
              > > > to synchronously forward MQSeries messages into WL queues that in turn
              > > > drive the MDB. The 7.0 MDB will be able to be driven transactionally
              > > > by non-WL vendors.
              > > >
              > > > The messaging bridge works with JMS implementations that implement
              > > > the standard J2EE JMS API. This bridge is available as alpha code
              > > > for 6.1, will be fully supported in 6.1SP3 (due out in June?), and is
              > also
              > > > part of 7.0 (currently released in beta).
              > > >
              > > > Tom
              > > >
              > > > steve chen wrote:
              > > >
              > > > > We like to use IBM MQ as our message provider, use Message Driven
              > Bean (Weblogic
              > > > > 6.1) as the consumer. How do we configure WLS so it uses IBM MQ
              > instead of WLS
              > > > > built in JMS as the provider?
              > > > >
              > > > > Thanks
              > >
              

  • Problem JMS-c api for message Acknowledgement

    Hi,
              I am working in a project that uses bea-JMS C api for
              Communictions.In my project i am using topic messaging for message reciving and sending..Here i am using durablesubscriber for receiving and client Acknowledgement to Acknowledge the message.
              In receiving function I store the message in another JmsMessage for Client-Acknowledgement.
              Here comes one problem that, while i Acknowledge on the receive function each and every message Acknowledge correctly.But while i Acknowledge that message from some other function it return -1 as , that it cannot Acknowledge.The other function is working in another thread.
              Wheather the seprate thread will make the problem for confirmation.

    Similar to JDBC connections, JMS sessions and their related child producers and consumers are not thread-safe (with the one exception of the session.close() method).
              For example, without added application level locking, its not safe to acknowledge a message from one thread while another thread receives or produces a message. This has special implications for asynchronous consumers, as once the asynchronous consumer is created, access to the session and objects is limited to code within the "onMessage()" and "onException()" callbacks.
              This behavior is detailed in the JMS specification.
              Tom

  • Message sitting in Queues for 30 minutes before MDB picks them up

    We're seeing a situation where we place messages on a queue and a small percentage of them will sit on the queue for 30 minutes before being picked up by the MDB to process. Anyone see this before?
              Here is the background. We're running 3 distributed queues on a cluster of 4 Weblogic 8.1 sp3 servers. The 30 minute issue happens on all 3 queues on all 4 servers. Currently we do not see a pattern. It can happen at a busy hour and in the middle of the night with nothing going on. During a busy timeframe, we can get up to 50 msg that hangup over a few minutes; less than 5 minutes.
              Our Service is an enterprise email service where various clients send email request to us via EJB. The EJB puts an entry into the database and puts a request msg into the queue. The MDB pulls it off the queue sends it to an email subsystem and updates the database.
              We added log msgs in both the EJB and MDB to track messages and narrowed it down to the requests just sitting in the JMS queue. We DO NOT set a delivery time via setJMSDeliveryTime().
              As mentioned is happens anytime during the day (busy or idle), may go for days without occuring, on any of the 3 JMS queues, on any of the 4 cluster servers, and for any of the clients. It's consistantly 30 minutes. This occurs on a small number of requests, but is enough to concern our business owner.
              Any thoughts on possible problems or any thoughts on monitoring or tracking down the issue is greatly appreciated.
              Thanks. Later...
              - Wayne

    One possibility is that the messages have already been pushed to an MDB instance in the JMS asynchronous consumer pipeline, but the MDB instance has stalled during message processing - which delays processing of the following messages. The waiting messages count as "pending" in the JMS statistics.
              You can reduce the number of messages in a JMS asynchronous consumer's pipeline via the "MessagesMaximum" connection factory setting (default is 10). First: create a custom connection factory with transactions enabled (to support transactional MDBs), and ack-mode set to "previous" (to support pub/sub MDBs), and MessagesMaximum set to its lowest possible value. Second: specify this connection factory's JNDI name in the MDB's weblogic descriptor.
              Tom, BEA

  • Some design questions

              Hello,
              I got two rather unrelated questions regarding the JMS implementation:
              - Is there any guarantee on when messages become available to consumers?
              Suppose my producer is a session bean which posts a message on a
              queue. Is there any guarantee on whether a QueueBrowser who starts right
              after the transaction is committed will see the message I posted ? Or is
              it possible that some delay causes the message to become visible only some
              time later ?
              - Can QueueBrowsers see messages with a scheduled delivery time that hasn't
              arrived yet ?
              Thanks & Regards,
              Francois Staes.
              Francois Staes
              NetConsult BVBA
              [email protected]
              Tel: +32/3/353.44.22
              Mobile: +32/475/73.74.48
              Fax: +32/3/353.44.06
              

    Hi Francois,
              Since you must process messages in order, then the MDB is the
              only consumer, so why not just cache state in the MDB that
              contains the message-id of the last message processed? If
              a newly received message's message-id matches the stored
              message-id from the previous message, then treat the newly
              received message as an error message.
              This seems much simpler than queue-browser/error-queue.
              Tom, BEA
              P.S. Note that an MDB is destroyed and recreated if the
              onMessage throws a Runtime exception or Error. So you will need to
              put in a "try/catch() {ejbctx.setRollbackOnly(); cacheMessageId(msg);}"
              to prevent the destroy in order to preserve the cached message id
              value...
              Francois Staes wrote:
              > Greg Brail wrote:
              >
              >
              >>>- Is there any guarantee on when messages become available to consumers?
              >>> Suppose my producer is a session bean which posts a message on a
              >>> queue. Is there any guarantee on whether a QueueBrowser who starts
              >>> right after the transaction is committed will see the message I posted
              >>> ? Or is it possible that some delay causes the message to become
              >>> visible only
              >>
              >>some
              >>
              >>> time later ?
              >>
              >>Well, theoretically, there's always going to be "some delay" ;-) In
              >>practice, you should see the message right away. However, if the queue has
              >>a consumer on it, we push messages to that consumer in batches (that's one
              >>of the things that the "messages pending" statistic in the console tells
              >>you about). So, it's possible that the message has already been pushed out
              >>to a consumer, which is why you don't see it.
              >>
              >
              >
              > Thanks for the answer.
              >
              > Let me clarify what I want to achieve: I have an MDB receiving messages
              > about customers. These messages need to be handled in the correct order.
              > But it can happen that some message cannot be processed. Those messages need
              > to be pushed onto a seperate queue (an administrative utility can be used
              > afterwards to requeue them on the default queue so they get re-processed).
              >
              > As soon as there is a message about a certain customer on this error queue,
              > no further messages about that customer should be processed. Hence, from
              > within the MDB we peek on the error queue using a QueueBrowser. If we find
              > anything on there for the same customer as the current message, we
              > immediately stop the processing, and enqueue it on the error queue too.
              >
              > Originally, we tried implementing this using the error-queue feature of WLS.
              > However, moving the messages on the error queue is an asynchronous activity
              > in that case. This means that if a message cannot be processed, and another
              > message arrives right afterwards for the same customer, it might be that
              > the first message isn't yet visible on the error queue....
              >
              > That's why I was thinking about moving them to some kind of error queue
              > manually, and I needed some kind of guarantee that they would be visible
              > immediately.
              >
              > If I understand correctly what you're saying, I think there is no problem
              > because a QueueBrowser is not an asynchronous consumer on the error queue.
              >
              > Thanks for your help,
              >
              > Francois Staes.
              >
              

  • File download code works without error, but no file is downloaded

    Hello,
    I have a very strange problem -- I am trying to download a
    simple file from a server, using virtually identical code to what
    is in the FileReference.download() examples. My code executes
    flawlessly, I get the browse window to select the location to save
    and name of the file, as expected. I click "Save" in the file
    dialog, and the window disappears -- but no file. I know my URL is
    right, because I can test the URL from the browser, and I get the
    file back. But here's the even weirder thing: I threw TCPMon in
    between Flex and the server, and discovered that the
    FileReference.download() method isn't even sending a request to the
    server. If I try the exact same URL through a browser, TCPMon shows
    both the request and response. But Flex never registers a request
    at all.
    Help! I have 100% error free code that follows the
    documentation examples but doesn't request or download the file.
    Your help is appreciated!
    Thanks,
    Brad

    I found the answer to my problem, but now I want to know WHY
    this is, and if it is considered a bug by Adobe -- if anyone out
    there has an explanation, that would be great.
    I implemented the full set of event handlers, and guess what
    -- not only was I not getting any HTTP request being made, but I
    also didn't get any event callbacks. Bottom line, I think I found
    an Actionscript bug.
    The answer to the $64,000 question is this: when the
    FileReference object goes out of scope (I had it declared locally),
    because the download() call is asynchronous, it doesn't call event
    handlers or make a request. It must be garbage collecting it. So
    you have to have your variable as a member, not a local variable.
    Weird. I find no other objects in Actionscript work like that. I
    wonder if it has something to do with the fact that the call
    crosses the native boundary (because it is leaving the Flash
    sandbox, and interacting with the browser/native OS.
    To me, that's like prematurely killing a thread before it has
    completed processing just because it has no parent object with a
    reference to it. In general, most rules for garbage collection I've
    seen in various platforms require either a parent object or thread
    of processing to prevent cleanup.
    If anyone has an explanation, I'm all ears!
    Thanks,
    Brad

  • Dataset jump to specific row

    Hi,
    In short I have two datasets plotted in tables underneath
    each other (different spry regions). When I select a row in table 1
    it updates table 2, this all works just fine. In region 2 I have a
    form with which I can add values to table 2 (PHP MySQL backend)
    also works fine. However when I submit the form (using Spry Ajax
    call) I want to see the result of INSERT statement right away, so I
    refresh the dataset in Region 1 in the response function of
    onSubmit like this:
    function updateResponseDiv(req){
    curRowID = dsAllParts.getCurrentRowID();
    dsAllParts.loadData();
    dsAllParts.setCurrentRow(curRowID);
    Spry.Utils.setInnerHTML('statusbar',
    req.xhRequest.responseText);
    Syntax looks fine I guess (I also tried
    setCurrentRowNumber(curRowID), but the effect is also negative.
    My only guess right now is that because the loadData is
    asynchronous, this doesn't work. But I would still like a solution.
    Who's got an idea ??
    Regards,
    Leon

    Ok, I'd assumed there would be a "next" link to take them to the next slide so they can advance through at their own pace. In that instance, changing the "next" link to "return" wouldn't throw off the look of the presentation that much.
    Keynote can only transition to the next slide, but what you want to do can be faked by making multiple "first" slides.
    start slide
    section 1-1
    section 1-2
    copy of start slide
    section 2-1
    section 2-2
    copy of start slide
    section 3-1
    section 3-2
    copy of start slide
    At the end of each section, the user would see the start slide again. Each copy would have all the same links and, to the user, it would look like they're advancing through the presentation automatically and always returning to the start slide.

  • WebDynpro Application issue consuming asynchronous webservice from SAP PI

    Hello experts i ask you for help thie following issue:
    i am developing a webdynpro application which is supposed to
    send some data from inputfields, and a file, in order to achieve it, that dynpro application is consuming an asyncrhronous webservice , this service is running in SAP Process integration .it uses only a component.
    Iam having serious problems at mapping the asynchronous PI web service model -->to -->controller >and then to->view
    since when i deploy the application into the  SAP portal´s application server, it runs , but  inputfields cannot be written.i dont mean unabled, what i mean, is. cannot write anything on them.ECXEPT the file upload UI element.
    I have reviewed sap help page, 3 sappress books, about dynpro, and the procedure i am performind is agree with them.
    endpoint test answers the folloiwng:
    Message Servlet is in Status OK
    Status information:
    Servlet com.sap.aii.af.mp.soap.web.MessageServlet (Version $Id: //tc/xi/NW04S_20_REL/src/_adapters/_soap/java/com/sap/aii/af/mp/soap/web/MessageServlet.java#1 $) bound to /MessageServlet
    Classname ModuleProcessor: null
    Lookupname for localModuleProcessorLookupName: localejbs/ModuleProcessorBean
    Lookupname for remoteModuleProcessorLookupName: null
    ModuleProcessorClass not instantiated
    ModuleProcessorLocal is Instance of com.sap.aii.af.mp.processor.ModuleProcessorLocalLocalObjectImpl0_0
    ModuleProcessorRemote not instantiated
    what i did is the same as before(in another projects weh i used to import rfc models):
    1.- import webservice model,and add it to component
    2.-map web service model to controller context
    3.-map controller´s context to view context
    4.-create actions and methods
    5.-binding context controller to ui elements
    Dear experts, my questions are:
    What am i doing wrong?
    should i permorm another steps because the web service is in another application server (SAP PI)?
    Should i create a stand alone proxy and then access it from webdynpro?
    when i call the web service model excution it seems does not run, neverthless the invocation does not have any syntax error , what coul it be?
    Thanx in advance!!

    just for the sake of other who may hit this thread , the solution is to add sap-client=<clientno> in the url for wsdl

Maybe you are looking for

  • PO is not getting create in ECC

    Hi ,     I am in SRM 7.0 SP 3.0 and ECC.. I have developed the custom BRF for Category approver and activated Standard Role Resolver 'RR_SPENDING_LIMIT_APPROVER' for SLAPPROVER which is working fine. . But i am facing an issue that once SC has been f

  • Problem: add a picture to a header in Pages 5.2

    Hello! Does anyone know how to add a picrure to header in Pages 5.2? It was easy do do it in previous Pages 4.2 - just Paste and Edit: Now it pastes only picture's name: Apple Support says that Pages 4.2 doesn't work on Maverics so I can't work in pr

  • BPM messages stuck In Process - never get sent

    Hi all, We have had a number of BPM processes running successfully in our XI 3.0 DEV SP17 system for weeks now but suddenly, none are now working. Our BPMs wait a specified amount of time before creating a bundled outbound message. In SXMB_MONI, the

  • Condition Records For output

    Hi, Can anyone help me how to find the condition records for output. We have for the pick, pack and stage different printing options. How can I check it on the system that they have been configured

  • Can't delete or resume print jobs - Epson C60 (shared) on Jaguar

    Epson C60 running as a Shared printer on G3 iMac 700 OS X10.2.x Print job sent from AppleWorks on G4 iBook, 10.4.4, wireless connection. Problem: If there's any interruption to a print job while running, it is not possible to resume the job where it