Problem creating JMS Error Destination via Ant in WLS 8.1

We've got several JMS queues in our application. We create the server via Ant (using the wlconfig task).
All is well, the queues have been working fine, until we try to add an error destination queue (after several attempts to handle the message, it'll be sent to the error queue for later troubleshooting).
Here's an example of what we've got now:
<create type="JMSQueue" name="batchQueue" property="jmsqueue">
    <set attribute="JNDIName" value="net.nike.cdm.batchQueue"/>
    <set attribute="RedeliveryLimit" value="5"/>
</create>We create another queue to handle the errors, and then add an attribute to the first to point to the second:
<create type="JMSQueue" name="batchErrorQueue" property="batchErrorQueue">
    <set attribute="JNDIName" value="net.nike.cdm.batchErrorQueue"/>
    <set attribute="RedeliveryLimit" value="5"/>
</create>
<create type="JMSQueue" name="batchQueue" property="jmsqueue">
    <set attribute="JNDIName" value="net.nike.cdm.batchQueue"/>
    <set attribute="RedeliveryLimit" value="5"/>
    <set attribute="ErrorDestination" value="${batchErrorQueue}"/>
</create>This seems logical, because if we do this same exact operation via the console, the config.xml goes from this:
<JMSQueue JNDIName="net.nike.cdm.batchQueue"
            Name="batchQueue" RedeliveryLimit="5"/>to this:
<JMSQueue ErrorDestination="batchErrorQueue"
            JNDIName="net.nike.cdm.batchQueue"
            Name="batchQueue" RedeliveryLimit="5"/>
<JMSQueue JNDIName="net.nike.cdm.batchErrorQueue" Name="batchErrorQueue"/>The error we get when trying to do this via Ant is:
[wlconfig] A destination and its ErrorDestination must both be on the same JMS server. (The problematic destination is "batchQueue" on JMS server "cdmdomain"). Also, an ErrorDestination can not be null if the ExpirationPolicy for a destination is "redirect" and a destination can not specify itself as its ErrorDestination.Flipping on -verbose in Ant, the actual exception is:
[wlconfig] SET -mbean cdmdomain:Name=batchQueue,Type=JMSQueue -property ErrorDestination cdmdomain:Name=batchErrorQueue,Type=JMSQue
[wlconfig] A destination and its ErrorDestination must both be on the same JMS server. (The problematic destination is "batchQueue"
s its ErrorDestination.
      [if] Error in class net.sf.antcontrib.logic.IfTask
BUILD FAILED
file:C:/viewstore/CDM_R6.5_Development/B2B_CDM/dev/build.xml:1399: Error invoking MBean command: java.lang.NullPointerException
       at weblogic.ant.taskdefs.management.WLConfig.handleException(WLConfig.java:567)
       at weblogic.ant.taskdefs.management.WLConfig.invokeCommand(WLConfig.java:381)
       at weblogic.ant.taskdefs.management.WLConfig.invokeSetCommand(WLConfig.java:235)
       at weblogic.ant.taskdefs.management.WLConfig.invokeCreateCommand(WLConfig.java:163)
       at weblogic.ant.taskdefs.management.WLConfig.executeCommands(WLConfig.java:106)
       at weblogic.ant.taskdefs.management.WLConfig.invokeCreateCommand(WLConfig.java:167)
       at weblogic.ant.taskdefs.management.WLConfig.executeCommands(WLConfig.java:106)
       at weblogic.ant.taskdefs.management.WLConfig.execute(WLConfig.java:89)
       at org.apache.tools.ant.Task.perform(Task.java:341)
       at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:117)
       at org.apache.tools.ant.Task.perform(Task.java:341)
       at net.sf.antcontrib.logic.IfTask.execute(Unknown Source)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:324)
       at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:147)
       at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:193)
       at org.apache.tools.ant.Task.perform(Task.java:341)
       at org.apache.tools.ant.Target.execute(Target.java:309)
       at org.apache.tools.ant.Target.performTasks(Target.java:336)
       at org.apache.tools.ant.Project.executeTarget(Project.java:1339)
       at org.apache.tools.ant.Project.executeTargets(Project.java:1255)
       at org.apache.tools.ant.Main.runBuild(Main.java:609)
       at org.apache.tools.ant.Main.start(Main.java:196)
       at org.apache.tools.ant.Main.main(Main.java:235)So, my question is, what are we doing wrong? What IS the syntax to set an error destination for a JMS queue via Ant for WLS 8.1?
Any help would be greatly appreciated
Thanks,
Douglas Bullard

I get exactly the same problem - was a resolution to this issue found?
Thanks,
Richard Marriott
[email protected]

Similar Messages

  • JMS Error destination..

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

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

  • Problem Configuring JMS Error Queue

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

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

  • Problems with JMS: Error JMS BEA-040368

    Hi,
    I have run into a problem using JMS on BEA. It appears to happen when we run huge amounts of messages through the queue (100 000+).
    Once this error occurs, we cant get rid of it. Restarting server, re-dployment, nothing works. Every subsequent message sent to the JMS produces this error.
    According to the error message, we have exceeded the maximum allowed transactions for the server, but how do we reset the transactions? And what is causing the error to appear in the first place? Somthing I forget to close or flush?
    I have QueueConnection, QueueSession and QueueRecevier objects open for all transactions, and close them when the bean is destroyed. Should I rather create and close them for each transaction?
    Here is the exception:
    <15.jun.2005 kl 14.55 CEST> <Error> <JMS> <BEA-040368> <The following exception has occurred:
    java.lang.RuntimeException: [EJB:010166]Error occurred while starting transaction: javax.transaction.SystemException: Exceeded maximum allowed transactions on server 'myserver'.
    at weblogic.ejb20.internal.MDListener.perhapsBeginTransaction()V(MDListener.java:325)
    at weblogic.ejb20.internal.MDListener.execute(Lweblogic.kernel.ExecuteThread; )V(MDListener.java:339)
    at weblogic.ejb20.internal.MDListener.onMessage(Ljavax.jms.Message; )V(MDListener.java:262)
    at weblogic.jms.client.JMSSession.onMessage(Ljavax.jms.MessageListener;Lweblogic.jms.common.MessageImpl; )V(JMSSession.java:2678)
    at weblogic.jms.client.JMSSession.execute(Lweblogic.kernel.ExecuteThread; )V(JMSSession.java:2598)
    at weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest; )V(ExecuteThread.java:219)
    at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:178)
    at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread; )V(Unknown Source)
    >

    Developments
    It turned out that my "client" used: this.queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    While the "server" used: this.queueSession = queueConnection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
    Now changing both sessions to use transactions (createQueueSession(true, Session.AUTO_ACKNOWLEDGE)) and fortifying the use of QueueSession.commit() when sending and receiving messages seemed to solve the problem... for a while.
    After a few new tests the problem appeared again, this time on the "client" side. It is obvious that transaction are somehow not commited correctly even though Session.commit() is called after each and every message is sent and received.
    Btw. To make the app "clean up" hanging transactions faster you can change the value in the console at:
    Mydomain --> Services --> JTA --> Abandon Timeout Seconds
    weblogic.jms.common.TransactionRolledBackException: Exceeded maximum allowed transactions on server 'myserver':error beginning transacted session's internal transaction
    at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
    at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:137)
    at weblogic.jms.dispatcher.DispatcherImpl_814_WLStub.dispatchSyncNoTranFuture(Unknown Source)
    at weblogic.jms.dispatcher.DispatcherWrapperState.dispatchSyncNoTran(DispatcherWrapperState.java:472)
    at weblogic.jms.client.JMSProducer.sendInternal(JMSProducer.java:391)
    at weblogic.jms.client.JMSProducer.send(JMSProducer.java:186)
    at no.nrk.returia.test.TestSMSInAdapter.send(TestSMSInAdapter.java:133)
    at no.nrk.returia.test.TestSMSInAdapter.main(TestSMSInAdapter.java:206)

  • Problem Creating JMS Queue Tables

    Oracle 9.2.0.1
    Help Please.
    I'm running into problems trying to create a JMS message queue table. following an example in the Oracle9ias containers for j2ee guide chapter 7. i've created a user and granted execute on sys.dbms_aqadm, sys.dbms_aq,
    sys.dbms_aqin and sys.dbms_aqjms.
    I log into SQL Plus as system with sysbda privilege.
    and attempt to create a table using
    DBMS_AQADM.CREATE_QUEUE_TABLE(
    Queue_table          => 'QTque',
    Queue_payload_type     => 'SYS.AQ$_JMS_STREAM_MESSAGE',
    multiple_consumers     => false);
    but SQL Plus responds with an error saying: unknown command beginning 'DBMS_AQADM...' rest of line ignored.
    is this a problem with my system administrator privileges
    I've given it DBA and AQ_ADMINISTRATOR_ROLE.
    In searching for a way around my problem I discovered you can easily create queue tables in the Advanced Queues section of enterprise manager. Problem doing it this way is a can't figure out how to specify payload type. If I select object I can't see how I can then specify the
    SYS.AQ$_JMS_STREAM_MESSAGE type I require.
    Any Tips appreciated.
    Gary.

    try to execute:
    BEGIN
    DBMS_AQADM.CREATE_QUEUE_TABLE(
    Queue_table => 'QTque',
    Queue_payload_type => 'SYS.AQ$_JMS_STREAM_MESSAGE',
    multiple_consumers => false);
    END;
    Regards,
    Alexei

  • Problems with line numbers (building via ant).

    We use ant for our builds and are having a problem with getting line numbers into call stacks. When running on linux we do not get the lines for our projects (not all projects have debug option), just (Unknown Source), however we do see line numbers for the tib jars. Eclipse is fine, we can see all line numbers as appropriate.
    I have tried "lines", "lines,source" and "lines,var,source" - all build a different sized jar which suggest something is getting added. However as we see line nums for tib it suggests it's some strange java runtime option. We're using sunjdk 1.5.10 and also jrockit.
    Any ideas/answers most appreciated.
    Many thanks, Declan
    Ant task
    <target name="compile" depends="init">
         <javac target="1.5" destdir="${classes}" debug="on" debuglevel="lines,source">
              <src path="${src}"/>               
              <classpath refid="default.classpath"/>
         </javac>     
         <javac target="1.5" destdir="${classes-test}" debug="on" debuglevel="lines,source">
              <src path="${testsrc}"/>
              <classpath refid="default.classpath"/>
              <classpath location="${classes}"/>
         </javac>
    </target>
    Example output
    java.lang.IllegalArgumentException: Field data is null
    at com.tibco.tibrv.TibrvMsg._addImpl(TibrvMsg.java:1503)
    at com.tibco.tibrv.TibrvMsg.add(TibrvMsg.java:1020)
    at com.lehman.fid.jdt.channel.tibrv.TibrvMessage.putObject(Unknown Source)
    at com.lehman.cmd.etrading.orderbook.dp.DefaultDepthPublisher.buildSubMessage(Unknown Source)
    at com.lehman.cmd.etrading.orderbook.dp.DefaultDepthPublisher.buildSubMessage(Unknown Source)
    at com.lehman.cmd.etrading.orderbook.dp.DefaultDepthPublisher.publishDepth(Unknown Source)
    Cmd line
    VM_OPTS="-Dlogfile=../../log/CmdOrderBook.log"
    VM_OPTS="${VM_OPTS} -Dcom.sun.management.jmxremote"
    VM_OPTS="${VM_OPTS} -Dcom.sun.management.jmxremote.authenticate=false"
    VM_OPTS="${VM_OPTS} -Dcom.sun.management.jmxremote.password=false"
    VM_OPTS="${VM_OPTS} -Dcom.sun.management.jmxremote.ssl=false"
    PARAMS="-springcfg orderbook-context.xml -instancename CmdOrderBook"
    exec ${JAVA_HOME}/bin/java -DappInstance=CmdOrderBook -server -Xmx500M -Xms250M -Xincgc ${VM_OPTS} com.lehman.cmd.etrading.orderbook.CommoditiesOrderBook ${PARAMS} >> ../../log/Cm
    dOrderBook.out 2>&1

    We use ant for our builds and are having a problem with getting line numbers into call stacks. When running on linux we do not get the lines for our projects (not all projects have debug option), just (Unknown Source), however we do see line numbers for the tib jars. Eclipse is fine, we can see all line numbers as appropriate.
    I have tried "lines", "lines,source" and "lines,var,source" - all build a different sized jar which suggest something is getting added. However as we see line nums for tib it suggests it's some strange java runtime option. We're using sunjdk 1.5.10 and also jrockit.
    Any ideas/answers most appreciated.
    Many thanks, Declan
    Ant task
    <target name="compile" depends="init">
         <javac target="1.5" destdir="${classes}" debug="on" debuglevel="lines,source">
              <src path="${src}"/>               
              <classpath refid="default.classpath"/>
         </javac>     
         <javac target="1.5" destdir="${classes-test}" debug="on" debuglevel="lines,source">
              <src path="${testsrc}"/>
              <classpath refid="default.classpath"/>
              <classpath location="${classes}"/>
         </javac>
    </target>
    Example output
    java.lang.IllegalArgumentException: Field data is null
    at com.tibco.tibrv.TibrvMsg._addImpl(TibrvMsg.java:1503)
    at com.tibco.tibrv.TibrvMsg.add(TibrvMsg.java:1020)
    at com.lehman.fid.jdt.channel.tibrv.TibrvMessage.putObject(Unknown Source)
    at com.lehman.cmd.etrading.orderbook.dp.DefaultDepthPublisher.buildSubMessage(Unknown Source)
    at com.lehman.cmd.etrading.orderbook.dp.DefaultDepthPublisher.buildSubMessage(Unknown Source)
    at com.lehman.cmd.etrading.orderbook.dp.DefaultDepthPublisher.publishDepth(Unknown Source)
    Cmd line
    VM_OPTS="-Dlogfile=../../log/CmdOrderBook.log"
    VM_OPTS="${VM_OPTS} -Dcom.sun.management.jmxremote"
    VM_OPTS="${VM_OPTS} -Dcom.sun.management.jmxremote.authenticate=false"
    VM_OPTS="${VM_OPTS} -Dcom.sun.management.jmxremote.password=false"
    VM_OPTS="${VM_OPTS} -Dcom.sun.management.jmxremote.ssl=false"
    PARAMS="-springcfg orderbook-context.xml -instancename CmdOrderBook"
    exec ${JAVA_HOME}/bin/java -DappInstance=CmdOrderBook -server -Xmx500M -Xms250M -Xincgc ${VM_OPTS} com.lehman.cmd.etrading.orderbook.CommoditiesOrderBook ${PARAMS} >> ../../log/Cm
    dOrderBook.out 2>&1

  • Publish directly on an error destination

    Hi,
              is it possible to publish directly on an error destintation ?
              my test fails so i was wondering if it was possible
              Thanks for any help,

    Sure, no problem. An error destination is just a regular JMS destination, so you can send to it directly or receive from it directly.

  • Error destinations

              I'm currently facing some problems with the error destinations.
              Suppose one has a queue on which messages are posted regarding
              bank-account transferts. For some business reason, it is important
              that the messages get processed in exactly the same order as they get
              processed.
              To guarantee the order, we make sure there only is a single consumer of the
              queue (a MDB with max-beans-in-pool set to 1).
              Sometimes, messages can't be processed and need to be moved to the error
              destination. We configure that messages get moved immediately to the error
              queue, without any retries.
              Now, to guarantee that we process messages in the correct order, our MDB
              checks manually whether there are any pending messages in the error queue.
              If so, it refuses to process any further messages. It checks the error
              queue by creating a QueueBrowser, and if it finds anything in there, it
              performs a ctx.setRollbackOnly().
              All of this seems to work OK, until we post two messages right after one
              another. If in that case the first messages isn't processed successfully,
              it seems as if it gets moved to the error queue with some delay. This makes
              that by the time we process the second message, the first one isn't yet on
              the error queue.
              Is this indeed the intended behavior ? And if so, is there any alternative
              solution ?
              Regards,
              Francois Staes
              NetConsult BVBA
              [email protected]
              Tel: +32/3/353.44.22
              Mobile: +32/475/73.74.48
              Fax: +32/3/353.44.06
              

    Note that calling "setRollbackOnly" may not take immediate
              effect (which is desirable). I know it is possible to force
              a rollback to occur immediately even
              without returning from the onMessage, but I'm just
              not sure if setRollbackOnly() is the way to do this.
              The transaction newsgroup
              could post how if you need this info.
              Tom, BEA
              >
              >
              > Francois Staes wrote:
              >
              >> I'm currently facing some problems with the error destinations.
              >> Suppose one has a queue on which messages are posted regarding
              >> bank-account transferts. For some business reason, it is important
              >> that the messages get processed in exactly the same order as they get
              >> processed.
              >>
              >> To guarantee the order, we make sure there only is a single consumer
              >> of the
              >> queue (a MDB with max-beans-in-pool set to 1).
              >>
              >> Sometimes, messages can't be processed and need to be moved to the error
              >> destination. We configure that messages get moved immediately to the
              >> error
              >> queue, without any retries.
              >>
              >> Now, to guarantee that we process messages in the correct order, our MDB
              >> checks manually whether there are any pending messages in the error
              >> queue.
              >> If so, it refuses to process any further messages. It checks the error
              >> queue by creating a QueueBrowser, and if it finds anything in there, it
              >> performs a ctx.setRollbackOnly().
              >>
              >> All of this seems to work OK, until we post two messages right after one
              >> another. If in that case the first messages isn't processed successfully,
              >> it seems as if it gets moved to the error queue with some delay. This
              >> makes
              >> that by the time we process the second message, the first one isn't
              >> yet on
              >> the error queue.
              >>
              >> Is this indeed the intended behavior ?
              >
              >
              > Yes.
              >
              > There is another race condition - what if the message is consumed
              > too quickly by your error destination processor? The main MDB
              > would see the error destination as "empty" and proceed to
              > process even though the error destination processor app
              > may not have finished processing the error message.
              >
              >> And if so, is there any alternative
              >> solution ?
              >
              >
              > A couple of ideas:
              >
              > (1) Since the MDB is single threaded it
              > can store the fact that it called "setRollbackOnly" on
              > its message. It can then block itself in some manner until
              > error destination processor does something to indicate
              > that the failed message was processed. (For example,
              > when the MDB app detects the bad message it can
              > block on another Q that the error dest processor knows
              > to send a non-persistent message to when it is done.)
              >
              > (2) Avoid use of the error destination. The
              > MDB app could treat a message as an error message if its
              > "redelivered" flag is set and do something different.
              >
              >>
              >> Regards,
              >>
              >> Francois Staes
              >> NetConsult BVBA
              >>
              >> [email protected]
              >> Tel: +32/3/353.44.22
              >> Mobile: +32/475/73.74.48
              >> Fax: +32/3/353.44.06
              >
              >
              

  • ERROR WHEN I CREATE A JCo DESTINATIONS

    Hi to all
    I have the SLD running. I want create two JCo destinatios. I want create a Web Dynpro application with adaptive RFC Model.
    But, I login to http:///webdynpro/dispatcher/sap.com/tcwdtools/Explorer
    and when I attempt create a JCo destinations, appear the following error:
    500   Internal Server Error
      Web Dynpro Container/SAP J2EE Engine/6.40 
    Failed to process request. Please contact your system administrator.
    Error Summary
    While processing the current request, an exception occured which could not be handled by the application or the framework.
    If the information contained on this page doesn't help you to find and correct the cause of the problem, please contact your system administrator. To facilitate analysis of the problem, keep a copy of this error page. Hint: Most browsers allow to select all content, copy it and then paste it into an empty document (e.g. email or simple text file).
    Root Cause
    The initial exception that caused the request to fail, was:
       java.lang.NullPointerException
        at com.sap.tc.webdynpro.serverimpl.wdc.sl.SystemLandscapeFactory.checkStatus(SystemLandscapeFactory.java:985)
        at com.sap.tc.webdynpro.services.sal.sl.api.WDSystemLandscape.checkStatus(WDSystemLandscape.java:469)
        at com.sap.tc.webdynpro.tools.sld.NameDefinition.updateJCODestinations(NameDefinition.java:272)
        at com.sap.tc.webdynpro.tools.sld.NameDefinition.updateNavigation(NameDefinition.java:237)
        at com.sap.tc.webdynpro.tools.sld.NameDefinition.wdDoInit(NameDefinition.java:144)
        ... 45 more
    Can someone say me, why occurs this error ? I have reviewed all my configuration, but I haven´t found nothing.
    Thank you very much.
    Regards
    Dario Rodriguez

    I think while creating the JCOs you must hav left some field with a NULL  value.Try to check out that all the connection properties hav been specified correctly also make sure that the connection pooling has a small range.

  • Oracle Queue Error creating JMS-120: Dequeue failed

    Hi Guys,
    We are facing serious problems with Oracle queue when dequeuing messages from the queue.
    Our configuration is the following:
    - SOA Suit 10.g (10.1.3.5.0)
    - Dehydration storage - Oracle Database 11gR2 in Exadata Cloud
    We use standard JMS Adabpter from AS10g to dequeue messages from the Oracle queue.
    Suddenly dequeue stop working pooling the flowing errors into the log.xml log file in $ORACLE_HOME/j2ee/oc4j_soa/log/oc4j_soa_SOA_GROUP_1/oc4j directory.
    <MSG_TEXT>Failed to process deferred message</MSG_TEXT>
    <SUPPL_DETAIL><![CDATA[oracle.tip.esb.server.dispatch.QueueHandlerException: Error creating "JMS-120: Dequeue failed"
         at oracle.tip.esb.server.dispatch.JMSDequeuer.dequeue(JMSDequeuer.java:197)
         at oracle.tip.esb.server.dispatch.agent.ESBWork.process(ESBWork.java:178)
         at oracle.tip.esb.server.dispatch.agent.ESBWork.run(ESBWork.java:135)
         at oracle.j2ee.connector.work.WorkWrapper.runTargetWork(WorkWrapper.java:242)
         at oracle.j2ee.connector.work.WorkWrapper.doWork(WorkWrapper.java:215)
         at oracle.j2ee.connector.work.WorkWrapper.run(WorkWrapper.java:190)
         at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:825)
         at java.lang.Thread.run(Thread.java:662)
    Caused by: oracle.jms.AQjmsException: JMS-120: Dequeue failed
         at oracle.jms.AQjmsError.throwEx(AQjmsError.java:308)
         at oracle.jms.AQjmsConsumer.dequeue(AQjmsConsumer.java:2094)
         at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:922)
         at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:835)
         at oracle.jms.AQjmsConsumer.receive(AQjmsConsumer.java:776)
         at oracle.j2ee.ra.jms.generic.CommonConsumerWrapper.receive(CommonConsumerWrapper.java:203)
         at oracle.tip.esb.server.dispatch.JMSDequeuer.dequeue(JMSDequeuer.java:175)
         ... 7 more
    then:
    <COMPONENT_ID>j2ee</COMPONENT_ID>
        <MSG_ID>J2EE JTA-00107</MSG_ID>
    <MSG_TEXT>Error in resource driver during rollback: oracle.jdbc.xa.OracleXAException, errorCode : -7</MSG_TEXT>
    and this message comes out every second:
        <MSG_TEXT>Attempt to use an invalid handle : 'oracle_jdbc_driver_LogicalConnection_Proxy@10af88e3'.</MSG_TEXT>
    Any help, suggestions, hints would be much appreciated.
    cheers!!
    eMarcel                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    Hi there
    I have got the same problem i.e
    oracle.jms.AQjmsException: JMS-120: Dequeue failed
         at oracle.jms.AQjmsError.throwEx(AQjmsError.java:283)
         at oracle.jms.AQjmsConsumer.dequeue(AQjmsConsumer.java:2178)
         at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:1013)
         at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:950)
         at oracle.jms.AQjmsConsumer.receive(AQjmsConsumer.java:897)
         at com.cramer.cdd.mytest.QueueReceive2.init(QueueReceive2.java:122)
         at com.cramer.cdd.mytest.QueueReceive2.main(QueueReceive2.java:152)
    Exception in thread "main
    Please help me in debugging this.
    I have a standalone java application to listen to the aqJMS queue.
    Regards
    Paul

  • Error when trying to create a JCO Destination

    Hi
    I receives the following error when trying to creat a JCO Destination, clicking on the button in the host:port/webdynpro/dispatcher/sap.com/tcwdtools/Explorer
    I get the following error:
    Error stacktrace:
    java.lang.NullPointerException
         at com.sap.tc.webdynpro.serverimpl.wdc.sl.SystemLandscapeFactory.checkStatus(SystemLandscapeFactory.java:880)
         at com.sap.tc.webdynpro.services.sal.sl.api.WDSystemLandscape.checkStatus(WDSystemLandscape.java:469)
         at com.sap.tc.webdynpro.tools.sld.NameDefinition.updateJCODestinations(NameDefinition.java:272)
         at com.sap.tc.webdynpro.tools.sld.NameDefinition.updateNavigation(NameDefinition.java:237)
         at com.sap.tc.webdynpro.tools.sld.NameDefinition.wdDoInit(NameDefinition.java:144)
         at com.sap.tc.webdynpro.tools.sld.wdp.InternalNameDefinition.wdDoInit(InternalNameDefinition.java:223)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.doInit(DelegatingView.java:61)
         at com.sap.tc.webdynpro.progmodel.controller.Controller.initController(Controller.java:215)
         at com.sap.tc.webdynpro.progmodel.view.View.initController(View.java:274)
         at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:200)
         at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:540)
         at com.sap.tc.webdynpro.progmodel.view.ViewManager.bind(ViewManager.java:398)
         at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:555)
         at com.sap.tc.webdynpro.progmodel.view.ViewManager.bindRoot(ViewManager.java:422)
         at com.sap.tc.webdynpro.progmodel.view.ViewManager.init(ViewManager.java:130)
         at com.sap.tc.webdynpro.progmodel.view.InterfaceView.initController(InterfaceView.java:43)
         at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:200)
         at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:540)
         at com.sap.tc.webdynpro.progmodel.view.ViewManager.bind(ViewManager.java:398)
         at com.sap.tc.webdynpro.progmodel.view.ViewManager.makeVisible(ViewManager.java:620)
         at com.sap.tc.webdynpro.progmodel.view.ViewManager.performNavigation(ViewManager.java:263)
         at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.navigate(ClientApplication.java:740)
         at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.handleActionEvent(WebDynproMainTask.java:350)
         at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.execute(WebDynproMainTask.java:640)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:59)
         at com.sap.tc.webdynpro.clientserver.cal.ClientManager.doProcessing(ClientManager.java:251)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doWebDynproProcessing(DispatcherServlet.java:154)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:116)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:55)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:391)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:265)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:345)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:323)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:865)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:240)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)
         at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:162)
    Any ideas?
    Regards
    Kay-Arne

    Hi,
    Have you configured your SLD? Check JCO Destination error out or search for "com.sap.tc.webdynpro.serverimpl.wdc.sl.SystemLandscapeFactory.checkStatus" in the SDN forums.
    Best regards,
    Vladimir

  • Error while creating the JCO destinations

    Hi All,
    I am getting the following error while creating the JCO destinations.
    <b>There are no message servers maintained in the associated SLD. Please contact your system administrator.</b>
    Please help me in resolving this
    Thanks

    http://help.sap.com/saphelp_erp2005vp/helpdata/en/24/8fa93e08503614e10000000a114084/frameset.htm
    Creating New Web AS ABAP Technical Systems
    /*Reward if helpful
    Message was edited by:
            Anant
    Message was edited by:
            Anant

  • Error occurs when creating a new destination in HCI OData Provision Administration

    Hi,
    An error occurs when creating a new destination in HCI OData Provision Administration.
    Please see the screen shot in attachment.
    Any help will be appreciated!
    Thanks,
    Li-hua

    It's the same issue as in MissingResourceException when trying to create a destination. Changing the destination name should do the trick.
    (still looking for the GWaaS colleagues to fix the original issue.)

  • Problem attempting to create a purchase order via SRM Portal instance.

    Unsing SRM7.0 with PPS; When attempting to create a purchase order via the "Create Purchase
    Order" button in SRM Portal instance, after select ECPO type; the following message is show in the screen: "Object or set with GUID 00000000000000000000000000000000 does not exist".
    Could you please advise what the problem might be and what to do.Thanks, responds would be very appreciated.Kind regards.
    Edited by: ital230 on Jun 30, 2010 10:37 AM
    Edited by: ital230 on Jun 30, 2010 11:05 AM

    Solve!
    The problem was the attributes specialy the BSA.
    chekout the attribute should be at highest level and in the user not excluded (grayed).
    Also
    Define Backend System for Product Category: check that the system for category transfer should be from srm to backend:

  • Messages in JMS Topic Error destination

    Hi,
    I have a JMS Topic with an error destination queue configured. Now, In our scenario , there are two subscribers of topic for the same message. Suppose for a message published to topic, subscriber1 is able to processes message successfully but subscriber2 throws errors when processing the same message.
    1. Once the redelivery limit is reached and subscriber2 continues to throw exception, Will the message get en queued to Error Destination (in spite of the fact that subscriber 1 has processed the same message successfully) ?
    2. For a consumer (e.g MDB) listening to Error destination and consuming error messages, Is it possible to determine which topic subscriber was unable to process the message ?
    Please let me know
    Regards,
    Arif

    Here it depends on the state of the message, if the message is visible then the message would be available for consumption, else it is not. In case the subscriber 2 failed to consume the message and the message is still visible then a retry would be made, else the message would not be retried.
    In case the message is visible then the message would be move to the error queue based on the configured redelivery attempts.
    Additionally, an MDB can find the destination using the getJMSDestination() call. But as per my understanding we will only be able to get the name of the last destination which in this case would be error queue:
    http://docs.oracle.com/javaee/1.4/api/javax/jms/Message.html#getJMSDestination%28%29

Maybe you are looking for

  • Error running Reports 6i using OAS4.0.8

    Hi, We have the following architecture: 1. DB Server - Oracle 8.1.7 on W2K server 2. Reports Server - Oracle Reports Server 6.0.8 on W2K server 3. Web Server - OAS 4.0.8 on W2K server When trying to execute report over the web (using Web CGI setup),

  • What does Safari/Mac do for FTP these days?

    i am trying to bookmark an ftp download site for my website that is of the form: ftp://[email protected]//[email protected] i know this is a mouthful but it is the correct url and when i enter it into Safari it kicks it out into Firefox which I also

  • HELP! - airport no longer working after upgrade

    I performed the software update tonight (it prompted me for the first time tonight) to update the Airport Extreme Update 2007-001. Since I made the 'upgrade' I can no long connect to my home network nor any network I can usually get. How can I either

  • Moving data between tables (how to find out if the 2nd table is empty)

    Hi, I have 2 tables, and I'm copying records from one table to another. I've followed the Wiki: [https://www.sdn.sap.com/irj/sdn/wiki?path=/display/vc/movingdatabetween+tables] So far, everything works ok. Here is my question: how do I get the number

  • Reading a tab delimited file and extracting a substring

    hi all, i have a text file which is tab delimited,which contains keys and values.like the first 3 lines are keys which are like 50 keys(1-50).The remaining lines contains values..so that when it is is opened in excel sheet each value gets mapped to i