Bad enqueue of 895C40 in queue 87B4E0?

- Critical Bad enqueue of 895C40 in queue 87B4E0
- Information WLCCP Infrastructure Authenticated
What is the message about?

Check the following URL for more details,
http://www.cisco.com/univercd/cc/td/doc/product/rtrmgmt/cwparent/cw_1105/wlse/2_9/u_gd/devices.htm#wp1748860

Similar Messages

  • How to enqueue message in a queue

    Hi,
    Can someone please help me by posting the PL/SQL or Stored procedure to "enqueue message" in a queue, which i am going to run in a dbms_scheduler at specific time.
    Thankyou.

    You can use the following procedure :
    DBMS_AQ.ENQUEUE (
    queue_name IN VARCHAR2,
    enqueue_options IN enqueue_options_t,
    message_properties IN message_properties_t,
    payload IN "<ADT_1>",
    msgid OUT RAW);

  • Invalid Payload Headers enqueuing on WF_BPEL_Q AQ queue

    Hello,
    I've created a BPEL process to post messages to the WF_BPEL_Q AQ queue on EBS R12.
    This is the payloadHeader I'm passing on the jca.aq.HeaderDocument property of the Invoke AQ Adapter activity from my BPEL process:
    <Header><PayloadHeader><MSG_ID>1</MSG_ID><INREPLYTO_MSG_ID/><FROM_PARTY>Schneider</FROM_PARTY><TO_PARTY>Kalyan</TO_PARTY><ACTION_NAME/><DOCTYPE_NAME>850</DOCTYPE_NAME><DOCTYPE_REVISION>5010</DOCTYPE_REVISION><MSG_TYPE>1</MSG_TYPE><PAYLOAD/><ATTACHMENT/></PayloadHeader></Header>
    It seems I'm missing a couple of Header, according to the BPELFault:
    <bpelFault><faultType>0</faultType><bindingFault xmlns="http://schemas.oracle.com/bpel/extension"><part name="summary"><summary>Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'Enqueue' failed due to: AQ_INVALID_PAYLOAD_HEADERS_MISSING_ELEMENT_OUTBOUND. Failed to access an element of payload headers. Payload headers missing an entry for [ObjectFieldName] value specified in InteractionSpec. Make sure jca.aq.HeaderDocument property is defined correctly. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. </summary></part><part name="detail"><detail>AQ_INVALID_PAYLOAD_HEADERS_MISSING_ELEMENT_OUTBOUND. Failed to access an element of payload headers. Payload headers missing an entry for [ObjectFieldName] value specified in InteractionSpec. Make sure jca.aq.HeaderDocument property is defined correctly. </detail></part><part name="code"><code>null</code></part></bindingFault></bpelFault>
    Does anybody have a valid Payload Header to pass to the jca.aq.HeaderDocument property of the BPEL Invoke Activity?
    Tks in advance!
    Luiz Malere

    I'm facing a similar problem. In my case, there is notifications on Oracle SOA Suite, but the message in wf_bpel_qtab still remains.
    Did you find something?
    Thanks.

  • How to show the all the users with dequeue or enqueue privileges on a queue

    Hi
    As dba I want to know which users has which rights on a queue.
    Is there a sys table or view where I can see that?
    Something like dba_tab_privs for tables etc.
    Or is the there a plsql procedure which can help me?
    ruud van der wal

    yes... dba_tab_privs
    select * from dba_tab_privs where privilege in ('ENQUEUE','DEQUEUE');

  • Problems enqueuing a CLOB on JMS_TEXT queue and dequeue from JMS

    Hi, I have a PL/SQL procedure that enqueues in a JMS_TEXT queue a CLOB, and a MDB in J2EE reading messages from that queue. The problem is that text from dequeued messages appears as null in java, but if I send messages to the queue using Varchar2 I get the correct message. What's wrong?? Thanks.

    Hi,
    I encountered the same problem. The fix was to use a more recent aqapi13.jar:
    if last modification date is 22th April 2002, then it does not read CLOB content.
    if last modification date is 14th October 2004, then it does read CLOB content.
    Note I am using Oracle 9i Release 2.

  • How to enqueue a XML file into a JMS AQ Queue

    Hi guys:
    I have a XML file in a directory 'X' and need to enqueue it into a queue of obejct type 'SYS.AQ$_JMS_MESSAGE'.
    How can I do this?
    XML File => 'c:\xml_odi_files\enqueue_file.xml'
    Queue Name => Podesc_Queue
    Queue Table => Podesc_Queue_Table
    I took a look into the dbms_aq but didn't found a solution reading directly from a XML file.
    I'm using Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    Regards.
    Luiz Araujo

    OK, then something like this :
    - load the file into a CLOB, using DBMS_LOB package or DBMS_XSLPROCESSOR.READTOCLOB procedure (a very convenient wrapper)
    - build a new AQ$_JMS_MESSAGE object of type JMS_TEXT_MESSAGE
    - set the CLOB content
      v_msg        sys.aq$_jms_message;
      v_payload    clob;
    BEGIN
      v_payload := dbms_xslprocessor.read2clob(
                     'XML_DIR'                  -- Oracle directory object pointing to the physical location of the file
                   , 'test.xml'                 -- Filename
                   , nls_charset_id('AL32UTF8') -- Encoding of the file (ex. UTF-8), default is DB charset
      v_msg := sys.aq$_jms_message.construct(DBMS_AQ.JMS_TEXT_MESSAGE);
      v_msg.set_text(v_payload);
      -- Enqueueing...
      DBMS_AQ.Enqueue(
      );

  • BADI for RF Queue Determination

    Dear all,
    I am playing with the RF Queue Determination BADI and I woul like to share my thoughts with you.
    I am considering using the RF Queue BADI for something else than Queue Determination:
    IF Queue is XXX, AND the Two Step Confirmation status is  yellow (ls_TAP-PVQUI = 'x'), then I want to CLEAR the current document number as shown in Transaction LRFMD.
    So, rather than determining a Queue, I want to perform a CLEAR.
    Will it let me use this BADI for this purpose? Am still strugling the term after CLEAR
    IF ls_tap-queue = 'KLEXP-05'
        AND ls_TAP-PVQUI = 'X'.
          clear LRF_WKQU-DOCNUM.
          ENDIF.
    Thank you for your time,
    Best regards,
    Nick

    Nick,
    As fas as I know this badi is used during TO creation. At that time no document number is assigned to a RF user.
    I wouldn't advise clearing from this badi enhancement. It is not ment to be used for this purpose.
    Regards.
    Ronald

  • Dataflow problem, queuing in subvi dequeuing in main vi

    ive stuck on a very simple data flow problem here, I'd like to pass data being enqueue in the subvi and dequeue in the main vi consumer loop. Ive attached the vi, since im already stuck on this problem, i was hoping i could learn a few things, specially implementing action engine in this situation  
    thanks.
    Solved!
    Go to Solution.
    Attachments:
    Counter Main.vi ‏16 KB
    counter subvi.vi ‏11 KB

    Your subVI doesn't make any sense since your loop will always exit after the first iteration and you always initialize your counter to 0 every time you execute it. That is one issue.
    Your code also suffers from multiple places that are dequeueing data from the queue. You will get undeterministic behavior since you don't know which dequeue will get the data first. Generally for a producer/consumer architecture using queues one or more loops loops should be enqueueing data to the queue. One and only one loop should be dequeueing data. These loops shuold run in parallel to each other. In your code you will only run your subVI whenever you press the start button and as stated you will always post a value of 1 to the queue. What you would need to do is have your subVI run independently once it is started. Use the "Start Asychronous CAll" to start your subVI when the Start button is presed and then let it simply run. Have it post the counter to the queue. Your lower loop in the main VI should dequeue the values and display them. You do not need the Wait in that lower loop since that is the purpose of the dequeue. That loop will be idle if there is no data present and will only run when data is in the queue.
    In the upper loop of your main VI remove the dequeue and enqueue. You don't need them since the subVI is all that is needed to post the data to the queue.
    Try this:
    Mark Yedinak
    "Does anyone know where the love of God goes when the waves turn the minutes to hours?"
    Wreck of the Edmund Fitzgerald - Gordon Lightfoot

  • Queue problems!

    MAIN QUESTION IS:
    WHEN INSERTING AN ITEM INTO A QUEUE IT OVERWRITES THE PREVIOUS ITEMS WITH THE NEW ITEM, PLUS IT ADDS THAT ITEM AS WELL. SO IF THE QUEUE ORIGINALLY HAD 'N' ITEMS, WHEN YOU ADD A NEW ITEM YOU GET N+1 OF THAT NEW ITEM.
    SEE BELOW FOR MORE EXPLANATION. ALTHOUGH IT LOOKS LONG IT IS EAAAAAAASY TO TRACE!
    Hi,
    I am implementing a queue using class LinkedList. The queue has objects of type 'ItemType' which is a user-defined type. ItemType is a coordinate with x & y values.
    public class Queue {
        LinkedList queueList;
        ItemType item = new ItemType();
        int size;
        /** Creates a new instance of Queue */
        public Queue() {
            queueList = new LinkedList();
            size = queueList.size();
        public void enqueue(ItemType newItem){
            System.out.println("Queue is being accessed for enqueue");
            print();
            System.out.println("Queue size before adding is: "+queueList.size());       
                    size = queueList.size();       
            if(size>0){
                 queueList.add(size,newItem);
            else{
                 queueList.add(0,newItem);
            System.out.print("Item added to the queue: ");
            newItem.print();
            System.out.println("Queue size after adding is: "+queueList.size());   
            print();
        public ItemType dequeue(){
            System.out.println("Queue is being accessed for dequeue");
            System.out.println("Queue size before removing is: "+queueList.size());
            ItemType item = (ItemType) queueList.remove();
            System.out.print("Item removed from the queue: ");
            item.print();
            System.out.println("Queue size after removing is: "+queueList.size());        
            return item;
        public boolean isEmpty()
            System.out.println("Queue is being accessed for isEmpty");
            if (queueList.isEmpty())
                return true;
            else
                return false;
        public void print(){
            System.out.println("Queue is being accessed for print");
            ItemType item;
            ListIterator iterator = queueList.listIterator(0);
            int counter = queueList.size();
            int index = 0;
            System.out.println("Queue size is: "+counter);
            System.out.println("Queue is currently : ");
            while(iterator.hasNext()){
                item = (ItemType) iterator.next();
                item.print();
    }//end of class Queue In my application, I am using a queue in which I enqueue to it and dequeue from it in certain steps. When I run the following code 'this is an excerpt only', the results are reasonable.
      ItemType aa = new ItemType();     
            ItemType bb = new ItemType();
            ItemType cc = new ItemType();
            ItemType dd = new ItemType();  
            ItemType ee = new ItemType(); 
            ItemType ff = new ItemType(); 
            bb.setX(1);
            bb.setY(1);
            dd.setX(2);
            dd.setY(2);
            ee.setX(3);
            ee.setY(3);
            ff.setX(4);
            ff.setY(4);       
            System.out.println("a is");
            aa.print();   
            System.out.println("b is");
            bb.print();
            System.out.println("d is");
            dd.print();       
            System.out.println("e is");
            ee.print();    
            System.out.println("f is");
            ff.print();            
            Q.enqueue(ff);
            Q.enqueue(aa);
            Q.enqueue(bb);
            Q.enqueue(ee);
            Q.enqueue(dd);       
            Q.print();
            cc=Q.dequeue();
            System.out.print("a is");
            cc.print();
            Q.print();
            cc=Q.dequeue();
            System.out.print("b is");
            cc.print();
            Q.print();
            cc=Q.dequeue();
            System.out.print("d is");
            cc.print();
            Q.print();
            cc=Q.dequeue();
            System.out.print("e is");
            cc.print();
            Q.print();
            cc=Q.dequeue();
            System.out.print("f is");
            cc.print();       
            Q.print();I get the following output (its quite simple, I am basically checking if the queue is working properly FIFO):
    a is
    (0,0)
    b is
    (1,1)
    d is
    (2,2)
    e is
    (3,3)
    f is
    (4,4)
    Queue is being accessed for enqueue
    Queue is being accessed for print
    Queue size is: 0
    Queue is currently :
    Queue size before adding is: 0
    Item added to the queue: (4,4)
    Queue size after adding is: 1
    Queue is being accessed for print
    Queue size is: 1
    Queue is currently :
    (4,4)
    Queue is being accessed for enqueue
    Queue is being accessed for print
    Queue size is: 1
    Queue is currently :
    (4,4)
    Queue size before adding is: 1
    Item added to the queue: (0,0)
    Queue size after adding is: 2
    Queue is being accessed for print
    Queue size is: 2
    Queue is currently :
    (4,4)
    (0,0)
    Queue is being accessed for enqueue
    Queue is being accessed for print
    Queue size is: 2
    Queue is currently :
    (4,4)
    (0,0)
    Queue size before adding is: 2
    Item added to the queue: (1,1)
    Queue size after adding is: 3
    Queue is being accessed for print
    Queue size is: 3
    Queue is currently :
    (4,4)
    (0,0)
    (1,1)
    Queue is being accessed for enqueue
    Queue is being accessed for print
    Queue size is: 3
    Queue is currently :
    (4,4)
    (0,0)
    (1,1)
    Queue size before adding is: 3
    Item added to the queue: (3,3)
    Queue size after adding is: 4
    Queue is being accessed for print
    Queue size is: 4
    Queue is currently :
    (4,4)
    (0,0)
    (1,1)
    (3,3)
    Queue is being accessed for enqueue
    Queue is being accessed for print
    Queue size is: 4
    Queue is currently :
    (4,4)
    (0,0)
    (1,1)
    (3,3)
    Queue size before adding is: 4
    Item added to the queue: (2,2)
    Queue size after adding is: 5
    Queue is being accessed for print
    Queue size is: 5
    Queue is currently :
    (4,4)
    (0,0)
    (1,1)
    (3,3)
    (2,2)
    Queue is being accessed for print
    Queue size is: 5
    Queue is currently :
    (4,4)
    (0,0)
    (1,1)
    (3,3)
    (2,2)
    Queue is being accessed for dequeue
    Queue size before removing is: 5
    Item removed from the queue: (4,4)
    Queue size after removing is: 4
    a is(4,4)
    Queue is being accessed for print
    Queue size is: 4
    Queue is currently :
    (0,0)
    (1,1)
    (3,3)
    (2,2)
    Queue is being accessed for dequeue
    Queue size before removing is: 4
    Item removed from the queue: (0,0)
    Queue size after removing is: 3
    b is(0,0)
    Queue is being accessed for print
    Queue size is: 3
    Queue is currently :
    (1,1)
    (3,3)
    (2,2)
    Queue is being accessed for dequeue
    Queue size before removing is: 3
    Item removed from the queue: (1,1)
    Queue size after removing is: 2
    d is(1,1)
    Queue is being accessed for print
    Queue size is: 2
    Queue is currently :
    (3,3)
    (2,2)
    Queue is being accessed for dequeue
    Queue size before removing is: 2
    Item removed from the queue: (3,3)
    Queue size after removing is: 1
    e is(3,3)
    Queue is being accessed for print
    Queue size is: 1
    Queue is currently :
    (2,2)
    Queue is being accessed for dequeue
    Queue size before removing is: 1
    Item removed from the queue: (2,2)
    Queue size after removing is: 0
    f is(2,2)
    Queue is being accessed for print
    Queue size is: 0
    Queue is currently :
    However, when I use the queue in a different application, I get strange results.
    If the queue has currently for example (1,1) and I want to add (2,2), instead of the queue currently being (1,1) (2,2), it is displayed as (2,2) (2,2). The original item is replaced by the new item (for as many times as the new size of the queue)??
    The code is basically doing the following. Dequeuing coordinates from a queue. For each coordinate it labels the neighboring coordinates (up, down, left, right) and enqueues them into the queue. Then it takes the next coordinate in the queue and does the same, and so on....
    The code is quite long but it's fairly basic. There's a lot of auditing in there:
       public void labelGrid(){
    //*                    LABELLING GRID & GETTING NEIGHBOURS OF SQUARE                        *
    queue.enqueue(a) ;     //Insert the starting point into the queue
    x=a.getX();
    y=a.getY();
    grid[x][y].setMark(1);
    while(!queue.isEmpty () && found == 0)
           if(queue.isEmpty())
               System.out.println("Queue is empty and we are in while");
            queue.print();
         c = queue.dequeue();
            System.out.print("Item just dequeued: ");
            c.print();
            System.out.println("");
            if(c.isEqualTo(b)){
                System.out.println("found is :" + found);
                found = 1 ;
                System.out.println("found is :" + found);
         x=c.getX();
         y=c.getY() ;
         value = grid[x][y].getValue();
         //This method is based on that every square has four neighbours,
         //so each time we dequeue a square from the queue, we label its
         //neighbours(up,down,left and right), but there are some constraints
         // such as if the neighbour is marked , is a block or out of the
         //bound of the matrix
       if ((x+1)<m && grid[x+1][y].getValue() != -2 && grid [x+1][y].getMark()!= 1)
                    queue.print();
              grid[x+1][y].setValue(value +1);
                    System.out.println("d is before modifying it: ");
                    d.print();
                    queue.print();
              d.setX(x+1);
                    d.setY(y);
              grid[x+1][y].setMark(1);
                    queue.print();
                    System.out.println("d after modifying it & before inserting into the queue: ");
                    d.print();
                    System.out.println("QUEUE BEFORE ENQUEUE(D)");
                    queue.print();
              queue.enqueue(d);
                    System.out.println("QUEUE AFTER ENQUEUE(D)");               
                    queue.print();
                    System.out.print("Location ");               
                    d.print();
                    System.out.println(" is being labeled");
                    System.out.println("Grid after new label");
           for(int i = 0; i < m; i++)
                System.out.println("");
            for (int j=0; j<n; j++)
              System.out.print(grid[i][j].getValue()) ;
              System.out.print("  ");
                     System.out.println("");
       if ((x-1)>-1 && grid [x-1][y].getValue() != -2 && grid [x-1][y].getMark()!= 1)
              grid[x-1][y].setValue(value +1);
                    System.out.println("d is before modifying it: ");
                    d.print();
                    d.setX(x-1);
                    d.setY(y);
              grid[x-1][y].setMark(1);
                    System.out.println("d after before modifying it & before inserting into the queue: ");
                    d.print();               
                    System.out.println("QUEUE BEFORE ENQUEUE(D)");
                    queue.print();
              queue.enqueue(d);
                    System.out.println("QUEUE AFTER ENQUEUE(D)");               
                    queue.print();
                    System.out.print("Location ");               
                    d.print();
                    System.out.println(" is being labeled");               
                    System.out.println("Grid after new label");
                    for(int i = 0; i < m; i++)
                     System.out.println("");
            for (int j=0; j<n; j++)
              System.out.print(grid[i][j].getValue()) ;
              System.out.print("  ");
                               System.out.println("");
         if ((y+1)<n && grid [x][y+1].getValue()!= -2 && grid[x][y+1].getMark()!= 1)
              grid[x][y+1].setValue(value +1);
              System.out.println("d is before modifying it: ");
                    d.print();
                    d.setX(x);
                    d.setY(y + 1);
              grid[x][y+1].setMark(1);
                    System.out.println("d after before modifying it & before inserting into the queue: ");
                    d.print();               
                    System.out.println("QUEUE BEFORE ENQUEUE(D)");
                    queue.print();
              queue.enqueue(d);
                    System.out.println("QUEUE AFTER ENQUEUE(D)");               
                    queue.print();
                    System.out.print("Location ");               
                    d.print();
                    System.out.println(" is being labeled");               
                    System.out.println("Grid after new label");
                            for(int i = 0; i < m; i++)
                    System.out.println("");
            for (int j=0; j<n; j++)
              System.out.print(grid[i][j].getValue()) ;
              System.out.print("  ");
                               System.out.println("");
         if ((y-1)>-1 && grid [x][y-1].getValue() != -2 && grid[x][y-1].getMark()!= 1)
              grid[x][y-1].setValue(value +1);
                    System.out.println("d is before modifying it: ");
                    d.print();
                    d.setX(x);
                    d.setY(y - 1);
              grid[x][y-1].setMark(1);
                    System.out.println("d after before modifying it & before inserting into the queue: ");
                    d.print();               
                    System.out.println("QUEUE BEFORE ENQUEUE(D)");
                    queue.print();
              queue.enqueue(d);
                    System.out.println("QUEUE AFTER ENQUEUE(D)");               
                    queue.print();
                    System.out.print("Location ");               
                    d.print();
                    System.out.println(" is being labeled");               
                    System.out.println("Grid after new label");
                    for(int i = 0; i < m; i++)
                    System.out.println("");
            for (int j=0; j<n; j++)
              System.out.print(grid[i][j].getValue()) ;
              System.out.print("  ");
                               System.out.println("");
    }//end of while
    //Printing out the whole matrix
            for(int i = 0; i < m; i++)
              System.out.println("");
            for (int j=0; j<n; j++)
              System.out.print(grid[i][j].getValue()) ;
              System.out.print("  ");
       }//end of labelGrid()This is part of the output, note how the queue changes and clones the new item
    Queue is currently :
    (4,3)
    Location (4,3)
    is being labeled
    Grid after new label
    -1 -1 -1 -1 -1 -1 -1 -1
    -1 -1 -1 -1 -1 -1 -1 -1
    -1 -1 -1 -1 -1 -1 -1 -1
    -1 -1 -1 0 -1 -1 -1 -1
    -1 -1 -1 1 -1 -1 -1 -1
    -1 -1 -1 -1 -1 -1 -1 -1
    -1 -1 -1 -1 -1 -1 24 -1
    d is before modifying it:
    (4,3)
    d after before modifying it & before inserting into the queue:
    (2,3)
    QUEUE BEFORE ENQUEUE(D)
    Queue is being accessed for print
    Queue size is: 1
    Queue is currently :
    (2,3)
    Queue is being accessed for enqueue
    Queue is being accessed for print
    Queue size is: 1
    Queue is currently :
    (2,3)
    Queue size before adding is: 1
    Item added to the queue: (2,3)
    Queue size after adding is: 2
    Queue is being accessed for print
    Queue size is: 2
    Queue is currently :
    (2,3)
    (2,3)
    QUEUE AFTER ENQUEUE(D)
    Queue is being accessed for print
    Queue size is: 2
    Queue is currently :
    (2,3)
    (2,3)
    Location (2,3)
    is being labeled
    Hope you could help out:
    thanks!

    Thank for your reply Paulo! Sorry, the posting of the attachment did not work. Here is the code.
    Attachments:
    Measure.llb ‏50 KB

  • Messages in Oracle SOA-ESB queues duplicate - enqueing with same ENQ_TXN_ID

    Hi,
    We have a flow which accepts payloads from a third party application and this payload is enqueued into an advanced queue. Another process dequeues these payloads and does further processing. During the process of enqueuing, we observe that one payload gets enqueued more than once. I have observed that these messages get the same ENQ_TXN_ID. Please note that this issue happens sporadically.
    Please advice if there is any patch that should be applied to fix the multiple enqueue issue.
    This issue is seen in the production instance.
    We are able to reproduce this error in QA also. But so far, no solution is working.
    Below is the script used to create our queue.
    BEGIN
    dbms_aqadm.stop_queue(queue_name=>'SAVE_REQUISITION_Q');
    dbms_aqadm.drop_queue(queue_name=>'SAVE_REQUISITION_Q');
    dbms_aqadm.drop_queue_table(queue_table=>'SAVE_REQUISITION_Q_TAB');
    dbms_aqadm.create_queue_table(queue_table=>'SAVE_REQUISITION_Q_TAB',
    queue_payload_type=>'sys.aq$_jms_text_message',multiple_consumers=>true);
    dbms_aqadm.create_queue(queue_name=>'SAVE_REQUISITION_Q', queue_table=>'SAVE_REQUISITION_Q_TAB');
    dbms_aqadm.start_queue(queue_name=>'SAVE_REQUISITION_Q');
    END;
    Please help.
    Thanks,
    Ved
    Edited by: user582595 on Mar 1, 2012 7:56 AM

    Anyone with JMS queue knowledge please help me fix this problem. This is happening in production and Oracle support is not able to suggest a resolution yet. They are working with me, but I would need to resolve this issue ASAP.
    Thanks much,
    ved

  • Xml in oracle advance queue

    i had already created a queue which will hold raw type of data. anybody know how enqueue it to the queue.pls. help

    The "Handling Asynchronous XML Messages in Queues" section on page 159 of Building Oracle XML Applications covers how to do this in detail from PL/SQL, and the similary-titled section on page 256 shows in detail how to do this with Java.
    You can download the source code for the book's hundreds of examples from the O'Reilly web site. These examples are in Chapters 5 (PL/SQL) and 6 (Java) respectively.

  • Bussines Service for AQ enqueuing

    I have created a business service based on a JCA Adaptor for enqueuing messages to a queue. When try the bussines service from the test console a new message appears in the queue table but the payload fields are empty, so the adapter is working but the content of the message is not propagated.
    Besides if i try to build a proxy service based on this bussines service i get the following error:
    "Invalid WSDL for JCA proxy service. If you are creating a Proxy from a Business Service, please select a different transport type (for example, http). If not, WSDL must contain JCA activation spec properties."
    Have anybody faced with these problems? Is a problem in the wsdl generated by Jdeveloper?
    I would apreciate a little help because i am quite stuck.
    I have followed these stetps to build the bussiness Service:
    I have created the wsdl definitions for the JCA Adapter using JDeveloper Wizard 10.1.3.4.0 selecting new AQ Adapter called GeocodingResultEqueuer, i selected the connection, the enqueue operation, the name of the queue, a correlation ID, and the whole Object RESPONSE_GEOCODING option.
    I have upload to the Bus the aqAdapterOutboundHeaders.wsld, aqAdapterOutboundHeaders.xsd, DAVIDA_RESPONSE_GEOCODING.xsd and the GeocodingResultEnqueuer.wsdl files.
    I have created a bussines service based on the GeocodingResultEnqueuer wsdl and selected the following options:
    General Configuration
    Service Type: Web Service - SOAP 1.1 (WSDL: WS-Portlets/comun/definitions/GeocodingResultEqueuer, binding="Enqueue_binding")
    Transport Configuration
    Protocol: jca
    Load Balancing Algorithm: round-robin
    Endpoint URI: jca://ss
    Retry Count: 0
    Retry Iteration Interval: 30
    Retry Application Errors: Yes
    JCA Transport Configuration
    Adapter Name: AQ Adapter
    Adapter Type: AQ
    Always use configuration from JCA: WSDL true
    Connection Mode: Non-Managed
    Overwrite Connection Authentication Properties: false
    Connection Factory Properties: ConnectionString = "jdbc:oracle:thin:@inver:2484:I917"
    Operation Name: Enqueue
    Interaction Spec Properties: Correlation = "SPS501"
    QueueName: = "RESPONSE_GEOCODING_QUEUE"
    OpaqueSchema = "false"

    This is very common error usually occurs when you create a Proxy directly from BS (Vice versa) or when we use BS WSDL for the proxy with out modifications. What would be the type of Proxy that invokes BS. In this case it is JCA. For Inbound JCA wsdl are different from outbound JCA WSDL. As per your use case you have to create a corresponding inbound wsdl to be used for proxy, or uses the out bound wsdl for proxy but change the transport from JCA to some other for the proxy service.
    JCA inbound proxies are supposed to be invoked by ERP/EIS. So to expose a JCA BS through OSB we need to select transport other than JCA for the proxy.
    Let me know if this does not solve your issue.
    Manoj

  • Build applicatio​n based on queue message handler template

    I programmed an application, using QMH template in LV and made a build out of it. The build has the "main.vi" and it is always included. But, after build is complete, the application starts by clicking on my apllication.exe and immediately terminate itself !!!! any idea about why? (I have one global function ("exit" which set to false at initialize state of the application" and shared variables, but both seem not the items to be blamed !!

    I recently (about two years ago) started using the QMH fairly heavily, "re-inventing" my usage of it several times (that means taking a LabVIEW Real-Time project of several hundred VIs and almost "starting over").  I've attached a Demo Snippet to illustrate some Lessons Learned.
         First, an admission -- see all of those Queue wires?  I've gotten rid of most of them by using a Queue Action Engine that handles all of the Queue actions except Dequeue.  In place of the Obtain Queue, Enqueue, and Release Queue calls, I have a Message Queue VI that takes an Enum (Obtain, Enqueue, or Release) and (optional) inputs (such as the Element to Enqueue).  The only Queue wire in my diagram is the one from the call to Enqueue Initialize to the (necessary) Dequeue Element (but I don't need the Queue wire coming out of Dequeue Element as I use my VI instead of Release Queue).  Not only don't I need a Queue wire going into the parallel Event Handling loop, but I don't need a wire going into a sub-VI that needs to "send a Message", which makes spawning asynchronous parallel loops easy.
         You'll notice my Messages are Strings, not an Enum.  I'm a little conflicted here -- I like the "error-checking" feature of Enums, but especially when designing, it is so much easier to say "Hey, I need another State here to do this" and simply name it and add it.
         The Event Handling Loop, for the most part, should do nothing except generate a message, passing the Event New Value (if needed) as the Data part of the message.  In particular, the Exit message is just another Message -- it doesn't need to be "filtered out" for special handling.
         To stop all of the loops, I use a Local Shared Variable (you could use a Global or FGV/VIG as well) -- the TimeOut case in the Event Handling Loop wires this variable to the loop Stop, and as you can see, the Exit message sets it;
         You may notice the 500 msec timeout on the Dequeue -- this allows you to catch cases where no messages come in.  Here I "do nothing".  But you'll notice that this makes my Stop code work.  The User pushes Stop, generates an Event, calls the Stop Message, sets the Stop Shared Variable to True, but that (probably) does not stop the lower loop, as the earlier False value was probably read and "connected" to the Stop indicator when the loop was entered.  200 msec later, the Event Timeout fires, sees the Stop Shared Variable = True, and stops the Event loop.  After another 300 msec, the Dequeue times out, enters the True Case and does nothing, but now the Shared Variable is True and the lower loop stops.
         You are correct that if you want to do repetitive things with this model, you need to repeatedly call the State you want to run.  It depends how much of your code you want to put into a single QMH -- it might be just as simple to have yet another parallel loop do the same thing every 100 msec, and use the State Machine to handle the User Interface (I've done it both ways, depending on circumstances).
         Have fun!
    BS

  • Oracle Streams 'ORA-25215: user_data type and queue type do not match'

    I am trying replication between two databases (10.2.0.3) using Oracle Streams.
    I have followed the instructions at http://www.oracle.com/technology/oramag/oracle/04-nov/o64streams.html
    The main steps are:
    1. Set up ARCHIVELOG mode.
    2. Set up the Streams administrator.
    3. Set initialization parameters.
    4. Create a database link.
    5. Set up source and destination queues.
    6. Set up supplemental logging at the source database.
    7. Configure the capture process at the source database.
    8. Configure the propagation process.
    9. Create the destination table.
    10. Grant object privileges.
    11. Set the instantiation system change number (SCN).
    12. Configure the apply process at the destination database.
    13. Start the capture and apply processes.
    For step 5, I have used the 'set_up_queue' in the 'dbms_strems_adm package'. This procedure creates a queue table and an associated queue.
    The problem is that, in the propagation process, I get this error:
    'ORA-25215: user_data type and queue type do not match'
    I have checked it, and the queue table and its associated queue are created as shown:
    sys.dbms_aqadm.create_queue_table (
    queue_table => 'CAPTURE_SFQTAB'
    , queue_payload_type => 'SYS.ANYDATA'
    , sort_list => ''
    , COMMENT => ''
    , multiple_consumers => TRUE
    , message_grouping => DBMS_AQADM.TRANSACTIONAL
    , storage_clause => 'TABLESPACE STREAMSTS LOGGING'
    , compatible => '8.1'
    , primary_instance => '0'
    , secondary_instance => '0');
    sys.dbms_aqadm.create_queue(
    queue_name => 'CAPTURE_SFQ'
    , queue_table => 'CAPTURE_SFQTAB'
    , queue_type => sys.dbms_aqadm.NORMAL_QUEUE
    , max_retries => '5'
    , retry_delay => '0'
    , retention_time => '0'
    , COMMENT => '');
    The capture process is 'capturing changes' but it seems that these changes cannot be enqueued into the capture queue because the data type is not correct.
    As far as I know, 'sys.anydata' payload type and 'normal_queue' type are the right parameters to get a successful configuration.
    I would be really grateful for any idea!

    Hi
    You need to run a VERIFY to make sure that the queues are compatible. At least on my 10.2.0.3/4 I need to do it.
    DECLARE
    rc BINARY_INTEGER;
    BEGIN
    DBMS_AQADM.VERIFY_QUEUE_TYPES(
    src_queue_name => 'np_out_onlinex',
    dest_queue_name => 'np_out_onlinex',
    rc => rc, , destination => 'scnp.pfa.dk',
    transformation => 'TransformDim2JMS_001x');
    DBMS_OUTPUT.PUT_LINE('Compatible: '||rc);
    If you dont have transformations and/or a remote destination - then delete those params.
    Check the table: SYS.AQ$_MESSAGE_TYPES there you can see what are verified or not
    regards
    Mette

  • High REDO Generation for enqueue and dequeue

    Hi,
    We have found high redo generation while enqueue and dequeue. Which is in-turn affecting our database performance.
    Please find a sample test result below :
    Create the Type:-
    CREATE OR REPLACE
    type src_message_type_new_1 as object(
    no varchar(10),
    title varchar2(30),
    text varchar2(2000))
    Create the Queue and Queue Table:-
    CREATE OR REPLACE procedure create_src_queue
    as
    begin
    DBMS_AQADM.CREATE_QUEUE_TABLE
    (queue_table => 'src_queue_tbl_1',
    queue_payload_type => 'src_message_type_new_1',
         --multiple_consumers => TRUE,
         compatible=>10.1,
         storage_clause=>'TABLESPACE EDW_OBJ_AUTO_9',
    comment => 'General message queue table created on ' ||
    TO_CHAR(SYSDATE,'MON-DD-YYYY HH24:MI:SS'
         commit;
    DBMS_AQADM.CREATE_QUEUE
    (queue_name => 'src_queue_1',
    queue_table => 'src_queue_tbl_1',
    comment => 'Test Queue Number 1'
         commit;
    dbms_aqadm.start_queue
    ('src_queue_1');
         commit;
    end;
    Redo Log Size:-
    select
    n.name, t.value
    from
    v$mystat t join
    v$statname n
    on
    t.statistic# = n.statistic#
    where
    n.name = 'redo size'
    Output:-
    595184
    Enqueue Message into the Queue Table:-
    CREATE OR REPLACE PROCEDURE enque_msg_ab
    as
    queue_options DBMS_AQ.ENQUEUE_OPTIONS_T;
    message_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
    message_id raw(16);
    my_message dev_hub.src_message_type_new_1;
    begin
    my_message:=src_message_type_new_1(
    '1',
    'This is a sample message',
    'This message has been posted on');
    DBMS_AQ.ENQUEUE(
    queue_name=>'dev_hub.src_queue_1',
    enqueue_options=>queue_options,
    message_properties=>message_properties,
    payload=>my_message,
    msgid =>message_id);
    commit;
    end;
    Redo Log Size:-
    select
    n.name, t.value
    from
    v$mystat t join
    v$statname n
    on
    t.statistic# = n.statistic#
    where
    n.name = 'redo size'
    Output:-
    596740
    Can any one tell us the reason for this high redo generation and how can this can be controlled?
    Regards,
    Koushik

    Please find my answers below :
    What full version of Oracle?
    - 10.1.0.5
    How large is the average message?
    - in some byets only, at max 1-2 KB and not more than this.
    What kind of performance problem is 300G of redo causing? How? Have you ran a statspack report? What did it show?
    - Actually we are facing some performance issue as a overall prespective for our daily batch processing, which now causing a delay in the batch SLA. So we have produced an AWR report for our database and from there we have found that total redo generation is around 400 GB, amoung which 300 GB has been generated by enqueue-dequeue process.
    What other activity is taking place on this instance? That is, is all this redo really being generated as the result of the AQ activity or is some of it the result of the messages being processed? How are the messages created?
    - Normal batch process everyday. Batch process also generates REDO but the amount is low compare to enqueue-dequeue process.
    Have you looked at providing a separate physical disk stripe for the online redo logs and for the archive log location from the database data file physical disk and IO channels?
    - No, as we are not the production DBA so we don't have the direct access to production database.
    What kind of file system and disk are you using?
    - I am not sure about it. I will try to confirm it by production DBA. Is there any other way to find it out, whether it is on filesystem or raw device?
    Can you please provide any help in this topic.
    Regards,
    Koushik

Maybe you are looking for