JMS Timestamp in a Uniform Distributed Queue on Weblogic Console

Dear Experts,
I should need a clarification on how JMS Timestamp is valorized in a Uniform Distributed Queue. I explain me better :
I will use the JMS Timestamp to re-order messages fetched from the Uniform Distributed Queue. Is it reliable ? How can I synchronize the this JMS property to be sure it is not dependent from physical machine where Uniform Distributed Queue is deployed ?
Thanks a lot,
Mike

Try posting this in the weblogic jms forum : WebLogic Server - JMS where you might get help from Tom Barnes who is the weblogic jms development team lead.
As far as I know time synchronization across machines should be a routine task for system admins. We had windows environment , where it was done using windows time service. The time server was configured on the domain controller and the time service running on the windows nodes periodically resynchronized its time with that of the time server.

Similar Messages

  • Message payload logging for Uniform Distribute Queue

    Hi All,
    We have a requirement to log the message payload, of every jms message received in a Uniform Distribute Queue in Weblogic.
    Please let us know how can we achieve this.
    Thanks.

    If you want to avoid use of the Path Service, then the alternative is to make the destination members highly available. This will help ensure that the host member for a particular UOO is up.
    One approach to HA is to configure "service migration". For more information see the Automatic Service Migration white-paper at
    http://www.oracle.com/technology/products/weblogic/pdf/weblogic-automatic-service-migration-whitepaper.pdf
    In addition, I recommend referencing Best Practices for JMS Beginners and Advanced Users
    http://docs.oracle.com/cd/E17904_01/web.1111/e13738/best_practice.htm#JMSAD455 to help with WL configuration in general.
    Hope this helps,
    Tom

  • JMS Uniform Distribute Queue Unit Of Order, problem when one node goes down

    Hi ,
    I have the following code which post a message (with Unit of Order set ) to a Uniform Distribute Queue in a cluster with two member servers (server1 and server2).
    --UDQ is targeted to a subdeployment that is mapped to two JMS servers pointing to each member servers
    --Connection Factory is using default targeting ( i tried mapping to Sub deployment also)
    javax.naming.InitialContext serverContext = new javax.naming.InitialContext();
    javax.jms.QueueConnectionFactory qConnFactory = (javax.jms.QueueConnectionFactory)serverContext.lookup(jmsQConnFactoryName);
    javax.jms.QueueConnection qConn = (javax.jms.QueueConnection)qConnFactory.createConnection();
    javax.jms.QueueSession qSession = qConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    javax.jms.Queue q = ( javax.jms.Queue)serverContext.lookup(jmsQName);
    weblogic.jms.extensions.WLMessageProducer qSender = (weblogic.jms.extensions.WLMessageProducer) qSession.createProducer(q);
    qSender.setUnitOfOrder("MyUnitOfOrder");
    javax.jms.ObjectMessage message = qSession.createObjectMessage();
    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("something", "SomeObject");
    message.setObject(map);
    qSender.send(message);
    } catch (Exception e) {           
    Steps followed:
    1. Post a message from "server1"
    2. Message picked up by "server2"
    3. Everything fine
    4. Shutdown "server2"
    5. Post a message from "server1"
    6. ERROR: "hashed member of MyAppJMSModule!MyDistributedQ is MyAppJMSModule!MyJMSServer-2@MyDistributedQ which is not available"
    WebLogic version : 10.3.5
    Is there a way (other than configuring Path Service ) to make this code work "with unit of order" for a UDQ even if some member servers go down ?
    Thanks very much for your time.

    If you want to avoid use of the Path Service, then the alternative is to make the destination members highly available. This will help ensure that the host member for a particular UOO is up.
    One approach to HA is to configure "service migration". For more information see the Automatic Service Migration white-paper at
    http://www.oracle.com/technology/products/weblogic/pdf/weblogic-automatic-service-migration-whitepaper.pdf
    In addition, I recommend referencing Best Practices for JMS Beginners and Advanced Users
    http://docs.oracle.com/cd/E17904_01/web.1111/e13738/best_practice.htm#JMSAD455 to help with WL configuration in general.
    Hope this helps,
    Tom

  • API to list Uniform Distributed Queue JMS Servers

    Hi all,
    I posted this in the SOA suite forum but this one may be better.
    I am writing a POJO webservice to synchronously read a message from a JMS queue. Unfortunately the queue is actually a uniform distributed queue so I actually need to look for messages in each of the local queues.
    I have written code to find the JNDI names of the local queues as follows:
    StringArray DistribMemberNames = new StringArray();
    String ttt;
    ttt = JMSHelper.uddMemberJNDIName("IMPJMSServer_1", part1.getJNDIName());
    DistribMemberNames.add(ttt);
    ttt = JMSHelper.uddMemberJNDIName("IMPJMSServer_2", part1.getJNDIName());
    DistribMemberNames.add(ttt);
    This works fine but I have hard coded the names of the JMS Servers and this is bad practice. I need to find a method where I can take the JNDI name of the uniform distributed queue and find all the JMSServer names. I have been looking for days but I can’t find anywhere in the API documentation that describes this.
    Does anyone have any suggestions?
    Thanks
    Robert
    (I am using 11.1.1.5 on a clustered weblogic enviroment)

    Hi,
    I have managed to answer this question myself.
    I needed to create a context:
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    m_jndiContext = new InitialContext(env);
    Look up the main runtime mbean
    MBeanServer server;
    server = (MBeanServer) m_jndiContext.lookup("java:comp/env/jmx/runtime");
    Navigate down the domain configuration to get the JMSServers
    ObjectName service = null;
    ObjectName domainConfiguration = null;
    ObjectName[] jmsServers = null;
    service = new ObjectName(
    "com.bea:Name=RuntimeService,"
    + "Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
    domainConfiguration = (ObjectName) server.getAttribute(service, "DomainConfiguration");
    jmsServers = (ObjectName[]) server.getAttribute(domainConfiguration, "JMSServers");
    For each server you can retrive it's name:
    for (int i = 0; i < length_serverRT; i++) {
    String jmsServerName = "";
    jmsServerName = (String) server.getAttribute(serverRT, "Name");
    I had to do some additional filtering for my own requirements
    Robert

  • Uniform Distributed Queue - Delay in handing over to listener

    Hi,
    We have cluster of two managed servers. We have two physical destinations (queues) configured as uniform distributed queues. With this setup we observed that when a message is put in to the uniform distributed queue, it takes a while before it hands of to the consumer (message driven bean). This we are observing every time a message is delivered. Is there a configuration that we are missing that is causing this behavior?
    Thanks,

    Here are the answers
    How long is "a while"? How are you measuring the delay?
    It is usually around 5 mins. We are measuring the delay using wall clock timings (We have debug statements in the consumer. That are getting printed after 5 mins).Does your config.xml or JMS Module configuration have a "time-to-deliver-override/TimeToDeliverOverride" configured on a destination, or a "default-time-to-deliver/DefaultTimeToDeliver" configured on a connection factory, or does your app use the "setJMSDeliveryTime" extension?
    No. We have not overridden the any of these parameters. See below for jmsmodule.xmlDoes your sender or MDB app happen to have a "sleep( or wait(" encoded in it somewhere?
    No. :-)Did you enable transaction batching on the MDB?
    NoOr you hava you configured a batch delay somehow (this can happen if a SAF Agent or Bridge is in the flow)? No
    Are you using Error Destinations?
    No
    jms-module.xml
    <?xml version='1.0' encoding='UTF-8'?>
    <weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
    <connection-factory name="inventoryWSQueueCF">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryWSQueueCF</jndi-name>
    <transaction-params>
    <xa-connection-factory-enabled>true</xa-connection-factory-enabled>
    </transaction-params>
    </connection-factory>
    <connection-factory name="inventoryTPQueueCF">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryTPQueueCF</jndi-name>
    <transaction-params>
    <xa-connection-factory-enabled>true</xa-connection-factory-enabled>
    </transaction-params>
    </connection-factory>
    <connection-factory name="inventoryWSQueueAlternateCF">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryWSQueueAlternateCF</jndi-name>
    <transaction-params>
    <xa-connection-factory-enabled>true</xa-connection-factory-enabled>
    </transaction-params>
    </connection-factory>
    <uniform-distributed-queue name="inventoryWSQueue">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryWSQueue</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    <forward-delay>10</forward-delay>
    </uniform-distributed-queue>
    <uniform-distributed-queue name="inventoryWSQueueAlternate">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryWSQueueAlternate</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    <forward-delay>10</forward-delay>
    </uniform-distributed-queue>
    <uniform-distributed-queue name="inventoryTPQueue">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryTPQueue</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    </uniform-distributed-queue>
    </weblogic-jms>
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • Forward Delay on Uniform Distributed queues with no consumers

    Suppose you have a cluster with 2 members, and a uniform distributed queue targeted to the cluster. Messages are produced onto the queue by an application targeted to the cluster, so both distributed members should receive messages. Messages within the queues are consumed by a remote WL server which intermittantly connects ( with t3:// ).
    By default, the forward delay is disabled ( set to -1 ) on a queue, so no messages will be forwarded from a queue with no consumers to a queue that does have consumers. A load balancer in front of the cluster should result in the remote cluster's JMS consumer alternating its connection across the cluster.
    If the remote server is connecting to only a single node within the cluster, it will only consume messages from one queue, leaving the other queue's messages un-consumed. But if both queues are configured to use forward delay, and there are no consumers to either queue, will the messages be continuously forwarded back and forth between the queues?
    Or, once the forward delay has expired, will the queues wait for a consumer to show up and then forward all its messages at once?
    I'm wondering how much "sloshing" there's going to be between the nodes of the cluster, as messages are pushed back and forth between the queues.

    From the documentation, a distributed queue forward delay is:
    The amount of time (in seconds) that a distributed queue member with messages, but no consumers, will wait before forwarding its messages to other queue members that do have consumers.Therefore, messages will not forward if a consumer attaches before the configure idle period passes, or if there are no consumers on other queue members.
    I think one case where "Sloshing" would occur if all of the following were true: consumers are transitory and only exist for slightly more than the idle period, message rates are sufficiently high so that the consumer sometimes cannot keep up for significant periods of time, not all destinations are concurrently serviced by consumers, and the limited number of consumers that do exist frequently do not re-attach to the same member.
    Obligatory distributed queue best practice note: For the best performance, simplicity, HA, and message ordering support, it's generally a best practice to ensure that every member of a distributed queue is serviced by a consumer. WebLogic MDBs are specifically designed to handle this need simply and automatically.
    Tom
    Edited by: TomB on Apr 23, 2009 6:27 AM

  • Monitoring jms distributed queue on WebLogic 8.1 via MBeans

    Good afternon,
    please do you have someone java code (only basic enough !) for jmx monitoring jms distributed queue on weblogic 8.1 (Monitor all Active JMS Destinations and there Consumers, Consumers High, Consumers Total and so on..). Think should be used JMSDestinationRuntimeMBean interface but have no idea how write the code.
    Thank you for any hint
    Lada Dvorak

    This is a simple jmx sample code based on WLS 8.x
    import javax.naming.Context;
    import java.util.Set;
    import java.util.Iterator;
    import java.io.PrintWriter;
    import java.io.FileOutputStream;
    import weblogic.jndi.Environment;
    import weblogic.management.MBeanHome;
    import weblogic.management.WebLogicMBean;
    import weblogic.management.WebLogicObjectName;
    public class ListAllMBeans{   
         public static void main(String args[]) {       
              String url = "t3://localhost:7001";
              String username = "weblogic";
              String password = "weblogic";
              PrintWriter pWriter = null; // print without buffering
    try {            //Obtaining an MBeanHome Using JNDI           
                   Environment env = new Environment();
                   env.setProviderUrl(url);
                   env.setSecurityPrincipal(username);
                   env.setSecurityCredentials(password);
                   Context ctx = env.getInitialContext();
                   MBeanHome home = (MBeanHome)ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);
    Set allMBeans = home.getAllMBeans();
                   System.out.println("Size: " + allMBeans.size());
                   for (Iterator itr = allMBeans.iterator(); itr.hasNext(); ) {              
                        WebLogicMBean mbean = (WebLogicMBean)itr.next();
                        WebLogicObjectName objectName = mbean.getObjectName();
                        pWriter = new PrintWriter(new FileOutputStream("JMXType.txt", true), true);
                        pWriter.println(objectName.getName() + " is a(n) " + mbean.getType());
                        //System.out.println(objectName.getName() + " is a(n) " + mbean.getType());
              }catch(Exception e){           
                   System.out.println(e);
    I hope this will be helpful to you.

  • Uniform Distributed queue members

    When I create a uniform distributed queue, members are getting auto populated. Do I need to create members with same name in managed servers to work with uniform distributed queue?
    In case of weighted DQ I can create members and associate it with DQ.
    In case of uniform DQ, will it create members dynamically with same name on 2 managed servers? If creates dynamically(if we need not create explicitly) how can I monitor the messages in the queue members?
    Thanks
    Santhosh

    However, what if one of the members which is already associated with a consumer, and the consumer is killed after a period of time, will the messages from that member be transferred to other members with consumers?Yes.
    Tom

  • Issue with Distributed Queue and WebLogic Clustering

    Hi, When a message is received by distributed queue, MDB is processing the message on two managed servers. There seems to be issue with clustering and the physical queues present on both the managed servers are receving the message.
    Our environment configuration details are as below:
    One Web logic Cluster with 2 nodes (2 managed web logic servers).
    One MDB deployed on the cluster listening to a queue with JNDI name “xng/jms/CODEventsQueue”
    One Distributed queue with two members on the two nodes of the cluster, and with JNDI name “xng/jms/CODEventsQueue”
    Two members of the distributed queue deployed on two JMS servers, which are separately deployed on each managed server .
    And the distributed queue is deployed on the cluster.
    Any help is appreciated.
    Thanks
    Sampath

    It is not clear to me how you concluded that "both the managed servers are receiving the message". Did you monitor the queues' statistics, or did you see both MDB instances received the same message?
    It looks like that you using a weighted distributed queue. Do the two physical queues that compose the distributed queue have their own JNDI names? If so, what are they?
    Have you tried to use a uniform distributed queue and see if the same behavior shows up?
    You can find more about uniform distributed destination at
    http://edocs.bea.com/wls/docs103/jms/dds.html#wp1313713
    BTW, which WebLogic Server releases are you using? Could you provide the distributed queue configuration?
    Thanks,
    Dongbo

  • How to get Uniform distributed queue message counts with help of JMX

    Hi,
    Is there any way to get given queue message count, pending message counts using JMX. I can get all queue names and counts using JMX... after that i have to show only selected queue details.
    Thanks,
    -Som

    Hi,
    Following is the WLS snippet from an upcoming WLS JMS message management white paper that you can use to get the message statistics for a given destination.
    With appropriate command line parameters, this script can be used to poll and dump the statistics of any destination on a specified interval.
    Note that the WLST uses JMX API under the cover, so you can easily convert this into a pure JMX java program.
    Hope this helps.
    Kats
    WebLogic JMS Message Statistics Script for weblogic.WLST
    This script can be used for dumping message statistics of a given JMS Destination.
    Based on the arguments, the script creates can print out message statistics
    Usage: java weblogic.WLST msg_statistics.py [options]
    Options:
      username=...           username to connect to WebLogic Server       - defaults to "weblogic"
      password=...           password to connect to WebLogic Server       - defaults to "weblogic"
      url=...                Provider URL of the Administration Server    - defaults to "t3://localhost:7001"
      wlsServerName=...      WebLogic Server Name                         - defaults to "examplesServer"
      jmsServerName=...      JMS Server Name that hosts the destination   - defaults to "examplesJMSServer"
      jmsModuleName=...      JMS Module Name that defines the destination - defaults to "examples-jms"
      jmsDestinationName=... JMS Destination name to get the statistics   - defaults to "exampleQueue"
      pollingIntervalInSeconds=... Time interval between statistics dump  - defaults to "60 secs"
      redirectStdout=...     File name to redirect the stdout of WLST     - defaults to no redirect and the results wil be printed out to stdout.
      help                   Prints out this usage help
    Note that all the defaults are set based WebLogic Examples domain that is part of WebLogic Server installation.
    The "examples" server can be started from "C:/Oracle/Middleware/wlserver_10.3/samples/domains/wl_server" using startWebLogic.sh
    To try this script OOTB, start the "examples" server and run the JMS sample as described below.
    cd :/Oracle/Middleware/wlserver_10.3/samples/domains/wl_server/bin
    . ./setDomainEnv.sh
    cd $WL_HOME/samples/server/examples/src/examples/jms/queue
    javac -d . *.java
    export CLASSPATH=".;$CLASSPATH"
    java examples.jms.queue.QueueSend t3://localhost:7001
    Follow the prompts to populate the queue
    Examples:
      msg_statistics.py - Dump the message statistics of the exampleQueue for every 1 min
      msg_statistics.py user=weblogic pass=weblogic url=t3://localhost:7001
                          wlsServerName=examplesServer jmsServerName=examplesJMSServer
                    jmsModuleName=examples-jms jmsDestinationName=exampleQueue
                    pollingIntervalInSeconds=30
    For more details on JMS Message Management using WLST, see "WebLogic JMS Message Management In a Nutshell" whitepaper.
    from weblogic.jms.extensions import JMSMessageInfo
    from weblogic.messaging.kernel import Cursor
    from javax.jms import TextMessage
    from javax.jms import DeliveryMode
    from java.io import ByteArrayOutputStream
    from java.io import StringBufferInputStream
    from java.util import Properties
    from java.util import Date
    from java.lang import *
    import jarray
    import sys
    # shows_messages() definition
    def dump_statistics(wlsServerName, jmsServerName, jmsModuleName, jmsDestinationName, pollingIntervalInSeconds):
      pollingIntervalInMillis = long(pollingIntervalInSeconds) * 1000L
      domainRuntime()
      cd ('ServerRuntimes')
      spath = wlsServerName + "/JMSRuntime/" + wlsServerName +".jms"
      cd (spath)
      fullDestName=jmsServerName+'/Destinations/'+jmsModuleName +'!'+jmsDestinationName
      cdPathForDestName='JMSServers/'+ fullDestName
      cd (cdPathForDestName)
      while 1:
        print "========================================================================================================================"
        print "Messages     Messages      Messages      Messages      Bytes        Bytes        Bytes           Bytes    "
        print "Current       Pending       High          Received      Current      Pending      High            Received "
        print "Count         Count         Count         Count         Count        Count        Count           Count    "
        print "========================================================================================================================"
        s = "%8d     %8d     %8d     %8d     %8d     %8d     %8d     %d" % (cmo.getMessagesCurrentCount(), cmo.getMessagesPendingCount(), cmo.getMessagesHighCount(), cmo.getMessagesReceivedCount(), cmo.getBytesCurrentCount(), cmo.getBytesPendingCount(), cmo.getBytesHighCount(), cmo.getBytesReceivedCount())
        print s
        print ''
        Thread.sleep(long(pollingIntervalInMillis))
    # Function to handle script arguments of the variety 'n=v', where
    # arguments are placed into a dictionary of nv pairs and returned
    # to the caller
    def argsToDict(args):
      d = {}
      for arg in args:
        #print "arg: " + arg
        pair = arg.split('=', 1)
        #print "pair: " + str(pair)
        if len(pair) == 2:
          # binary argument, store as key pair
          key = pair[0]
          val = pair[1]
          d[key] = val
        else:
          # Unary argument, story with empty (non-null) key
          d[arg] = ''
      print "Arguments: " + str(d)
      return d
    # Returns the value found in the provided map, at the location
    # specified by 'key'; if no entry exists in the map for 'key',
    # the provided default is returned.
    def getValue(dict, key, default=None):
      ret = default
      if dict is not None:
        try:
          ret=dict[key]
        except KeyError:
          pass
      return ret
    # Connect to the target server specified in the provide args
    def connectIfNecessary(argsDict=None):
      # connect if necessary
      if connected == "false":
        user=getValue(argsDict, "user", "weblogic")
        passwd=getValue(argsDict, "pass", "weblogic")
        url=getValue(argsDict, "url", "t3://localhost:7001")
        print "Connecting with [" + user + "," + passwd + "," + url + "]"
        connect(user,passwd,url)
    # Retrieve a positional argument if it exists; if not,
    # the provided default is returned.
    # Params:
    # pos   The integer location in sys.argv of the parameter
    # default  The default value to return if the parameter does not exist
    # returns the value at sys.argv[pos], or the provided default if necesssary
    def getPositionalArgument(pos, default):
      value=None
      try:
        value=sys.argv[pos]
      except:
        value=default
      return value
    # Main
    argsDict = argsToDict(sys.argv)
    redirectOutputFileName = getValue(argsDict, "redirectStdout")
    if redirectOutputFileName is None:
      pass
    else:
      redirect(redirectOutputFileName, 'false')
      print "The output from this program gets written into file " + redirectOutputFileName
      sys.stdout = open(redirectOutputFileName, "w")
    isHelp = getValue(argsDict, "help")
    if isHelp is None:
      pass
    else:
      print __doc__
      exit()
    connectIfNecessary(argsDict)
    wlsServerName = getValue(argsDict, "wlsServerName", "examplesServer")
    jmsServerName = getValue(argsDict, "jmsServerName", "examplesJMSServer")
    jmsModuleName = getValue(argsDict, "jmsModuleName", "examples-jms") 
    jmsDestinationName = getValue(argsDict, "jmsDestinationName", "exampleQueue")
    pollingIntervalInSeconds = getValue(argsDict, "pollingIntervalInSeconds", "60")
    dump_statistics(wlsServerName, jmsServerName, jmsModuleName, jmsDestinationName, pollingIntervalInSeconds)
    disconnect()
    print 'End of script ...'
    exit() 

  • WebLogic 12.1.2 erases subdeployment on Distributed Queue when targeted to multiple JMS Servers

    Update: verified in a 12.1.1.0 (JDK6) cluster - bug does not occur there.
    Hi,
      I have been migrating an 10.3.5.0 server to WebLogic 12.1.2.0 and have been unable to keep the subdeployment dropdown populated in the subdeployment tab of a uniform distributed queue when the subdeployment targets more than 1 JMS Server.
      If I uncheck one of the servers - I work fine - however I would like to target all JMS Servers in the cluster - this used to work fine in 10.3.5.0
      Following
    http://docs.oracle.com/cd/E24329_01/apirefs.1211/e24401/taskhelp/jms_modules/distributed_queues/CreateUniformDistributedQueues.html
      I am able to create a new queue no problem against the multiple-server subdeployment - but when I navigate to the subdeployment dropdown - the target is erased with "None".
    If I save the subdeployment after setting it during the queue create - it is erased
    <sub-deployment-name>MW-JMS-SubDeployment</sub-deployment-name>
    Before:
    <weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
      <uniform-distributed-queue name="HousekeeperControlQueue">
        <sub-deployment-name>MW-JMS-SubDeployment</sub-deployment-name>
        <jndi-name>jms/HousekeeperControlQueue</jndi-name>
      </uniform-distributed-queue>
    </weblogic-jms>
    After:
    <weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
      <uniform-distributed-queue name="HousekeeperControlQueue">
        <jndi-name>jms/HousekeeperControlQueue</jndi-name>
      </uniform-distributed-queue>
    </weblogic-jms>
    Workaround:
    - upon server startup the config is valid - just dont re-save the jms module or the subdeployment target will be erases
    - also when creating a new subdeployment you will be able to select it from a jms distributed queue in the advanced targeting section even if it contains expected multiple JMS servers
    - you will not however be able to edit the JMS queue once created - if there is any change to targeting - recreating the queue is required
      thank you
      /michael

    Update: verified in a 12.1.1.0 (JDK6) cluster - bug does not occur there.
    Hi,
      I have been migrating an 10.3.5.0 server to WebLogic 12.1.2.0 and have been unable to keep the subdeployment dropdown populated in the subdeployment tab of a uniform distributed queue when the subdeployment targets more than 1 JMS Server.
      If I uncheck one of the servers - I work fine - however I would like to target all JMS Servers in the cluster - this used to work fine in 10.3.5.0
      Following
    http://docs.oracle.com/cd/E24329_01/apirefs.1211/e24401/taskhelp/jms_modules/distributed_queues/CreateUniformDistributedQueues.html
      I am able to create a new queue no problem against the multiple-server subdeployment - but when I navigate to the subdeployment dropdown - the target is erased with "None".
    If I save the subdeployment after setting it during the queue create - it is erased
    <sub-deployment-name>MW-JMS-SubDeployment</sub-deployment-name>
    Before:
    <weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
      <uniform-distributed-queue name="HousekeeperControlQueue">
        <sub-deployment-name>MW-JMS-SubDeployment</sub-deployment-name>
        <jndi-name>jms/HousekeeperControlQueue</jndi-name>
      </uniform-distributed-queue>
    </weblogic-jms>
    After:
    <weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
      <uniform-distributed-queue name="HousekeeperControlQueue">
        <jndi-name>jms/HousekeeperControlQueue</jndi-name>
      </uniform-distributed-queue>
    </weblogic-jms>
    Workaround:
    - upon server startup the config is valid - just dont re-save the jms module or the subdeployment target will be erases
    - also when creating a new subdeployment you will be able to select it from a jms distributed queue in the advanced targeting section even if it contains expected multiple JMS servers
    - you will not however be able to edit the JMS queue once created - if there is any change to targeting - recreating the queue is required
      thank you
      /michael

  • How to enable JMS logging to capture message body for Uniform Distributed Q

    Hi All,
    we need to log JMS message body for our PROD env. but we do not see any "All Body" option in JMSQueue-> logging for our Uniform Distributed Queue.
    Please let me know how can we achieve our requirement.
    Thanks in Advance.

    got the solution.
    This is a know bug - [ID 1377584.1]
    adding below parameters in config/jms file should do the requirement.:
    <message-logging-params>
    <message-logging-enabled>true</message-logging-enabled>
    <message-logging-format>%header%,JMSCorrelationID,JMSDeliveryMode,JMSDestination,JMSExpiration,JMSMessageID,JMSPriority,JMSRedelivered,JMSReplyTo,JMSTimestamp,JMSType,%properties%,JMSXDeliveryCount,JMSXUserID,JMS_BEA_DeliveryTime,JMS_BEA_RedeliveryLimit,JMS_BEA_UnitOfOrder,*%body%*</message-logging-format>
    </message-logging-params>
    Edited by: Bob on May 10, 2013 11:53 AM

  • WebLogic 10.3 jms Uniform Distributed Destination

    We are running WL Server 10.3 on Suse 11.0. I have created a Cluster, Servers, JMS Servers, Connection Factory and a Distributed Destination. On the Connection Factory, I have the "Server Affinity" checkbox unchecked. Server/Cluster all look good. I am using the jmsfullclient.jar for the test.
    When attempting to access the distributed destination, I get the following error on the second message. If I were to turn on "Session Affinity" in the Cluster, the problem does not arise but I lose the value of the distributed destination. Any suggestions and assistance would be appreciated.:
    weblogic.jms.common.JMSException: No failover destination.
         at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110)
         at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSyncNoTran(DispatcherAdapter.java:61)
         at weblogic.jms.client.JMSProducer.toFEProducer(JMSProducer.java:1275)
         at weblogic.jms.client.JMSProducer.deliveryInternal(JMSProducer.java:783)
         at weblogic.jms.client.JMSProducer.sendInternal(JMSProducer.java:541)
         at weblogic.jms.client.JMSProducer.sendWithListener(JMSProducer.java:394)
         at weblogic.jms.client.JMSProducer.send(JMSProducer.java:384)
         at weblogic.jms.client.WLProducerImpl.send(WLProducerImpl.java:970)
         at com.overstock.util.Example.main(Example.java:44)
    Caused by: weblogic.jms.common.JMSException: No failover destination.
         at weblogic.jms.frontend.FEProducer.pickNextDestination(FEProducer.java:750)
         at weblogic.jms.frontend.FEProducer.sendRetryDestination(FEProducer.java:1092)
         at weblogic.jms.frontend.FEProducer.send(FEProducer.java:1399)
         at weblogic.jms.frontend.FEProducer.invoke(FEProducer.java:1460)
         at weblogic.messaging.dispatcher.Request.wrappedFiniteStateMachine(Request.java:961)
         at weblogic.messaging.dispatcher.DispatcherServerRef.invoke(DispatcherServerRef.java:276)
         at weblogic.messaging.dispatcher.DispatcherServerRef.handleRequest(DispatcherServerRef.java:141)
         at weblogic.messaging.dispatcher.DispatcherServerRef.access$000(DispatcherServerRef.java:34)
         at weblogic.messaging.dispatcher.DispatcherServerRef$2.run(DispatcherServerRef.java:111)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused by: weblogic.messaging.dispatcher.DispatcherException: could not find Server null
         at weblogic.messaging.dispatcher.DispatcherManager.dispatcherCreate(DispatcherManager.java:176)
         at weblogic.messaging.dispatcher.DispatcherManager.dispatcherFindOrCreate(DispatcherManager.java:58)
         at weblogic.jms.dispatcher.JMSDispatcherManager.dispatcherFindOrCreate(JMSDispatcherManager.java:219)
         at weblogic.jms.dispatcher.JMSDispatcherManager.dispatcherFindOrCreateChecked(JMSDispatcherManager.java:230)
         at weblogic.jms.frontend.FEProducer.findDispatcher(FEProducer.java:825)
         at weblogic.jms.frontend.FEProducer.sendRetryDestination(FEProducer.java:995)
         ... 9 more
    Caused by: javax.naming.NameNotFoundException: Unable to resolve 'weblogic.messaging.dispatcher.S:null'. Resolved 'weblogic.messaging.dispatcher'; remaining name 'S:null'
         at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
         at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:252)
         at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:182)
         at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206)
         at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
         at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
         at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
         at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254)
         at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:380)
         at javax.naming.InitialContext.lookup(InitialContext.java:392)
         at weblogic.messaging.dispatcher.DispatcherManager.dispatcherCreate(DispatcherManager.java:172)
         ... 14 more
    My client code is extremely basic and is the following:
    public class Example {
    public static void main(String args[]) {
    String providerUrl = "t3://localhost:7003,localhost:7005";
    Hashtable<String, String> ht = new Hashtable<String, String>();
    ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    ht.put(Context.PROVIDER_URL, providerUrl);
    InitialContext ctx = null;
    try {
    ctx = new InitialContext(ht);
    ConnectionFactory connFactory = (ConnectionFactory) ctx
    .lookup("connectionfactory");
    Destination dest = (Destination) ctx.lookup("distributedqueue");
    Connection conn = null;
    Session session = null;
    MessageProducer p = null;
    try {
    conn = connFactory.createConnection();
    conn.start();
    System.out.println("Thread:" + Thread.currentThread().getId() + " got a connection "
    + conn.hashCode());
    session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    p = session.createProducer(dest);
    System.out.println("Thread:" + Thread.currentThread().getId() + " started a connection");
    for (int i = 0; i < 1000; i++) {
    p.send(session.createTextMessage());
    System.out.println("FinishedRunning:" + Thread.currentThread().getId());
    catch (JMSException e) {
    e.printStackTrace();
    finally {
    if (p != null) {
    try {
    p.close();
    catch (JMSException e) {
    e.printStackTrace();
    if (session != null) {
    try {
    session.close();
    catch (JMSException e) {
    e.printStackTrace();
    if (conn != null) {
    try {
    conn.close();
    catch (JMSException e) {
    e.printStackTrace();
    catch (Exception e) {
    e.printStackTrace();
    Edited by: svachary on Jan 8, 2009 1:01 PM

    Hi,
    I would suggest you to go through these 2 links which you give all the details about UDD
    Topic:Steps to Configure Uniform Distributed Queue (UDQ) on Weblogic Server
    http://middlewaremagic.com/weblogic/?p=3747
    Topic:JMS Demo using WebLogic Uniform Distributed Queue (UDQ)
    http://middlewaremagic.com/weblogic/?page_id=1976
    Tips to solve UDQ issues
    - Make sure the Server Affinity Enabled parameter should be un-checked (disable) which under the [ Connection factory –> Configuration (tab) –> Load Balance (sub-tab)]
    - Disable the Server Affinity Enabled parameter for the connection factory whish is been used by your UDQ.
    - All the managed servers are in the same cluster.
    - If the managed serves are in different boxes make sure the listing address is given correctly which is under [ Machine –> Configuration (tab) –> Node Manager (sub-tab) ]
    - Test if you are able to PING the servers on different boxes and make sure that there is no network issues and you are able to communicate with the servers.
    Hope this helps you.
    Regards,
    Ravish Mody
    http://middlewaremagic.com/weblogic/
    Come, Join Us and Experience The Magic…

  • Message Listener Listening to only 1 queue in distributed queue setup!

    Hi guys,
    This may be the wrong place to place this post.
    We created a message system with OSB proxies moving messages back and forth between distributed queues. After all this shuffling messages around, the messages end up in a distributed queue where a java client is waiting to pick up results. Our problem is, it's only reading one of the queues in this distributed queue.
    The following is the code segment that waits for the message with a specific id:
    public Message receiveMessage(String queueName, String messageId) throws FrameworkException {
    BytesMessage bytesMessage = null;
    if (null == queueSession) {
    init();
    try {
    Queue receiveQueue = lookupQueue(queueName);
    QueueReceiver queueReceiver = null;
    String selector =null;
    if (null == messageId) {
    queueReceiver = queueSession.createReceiver(receiveQueue);
    } else {
    selector = "JMSCorrelationID = '" + messageId + "'";
    queueReceiver = queueSession.createReceiver(receiveQueue, selector);
    bytesMessage =(BytesMessage) queueReceiver.receive();
    queueReceiver.close();
    }catch{...
    Will queueReceiver.receive() listen to every member in a distributed queue (spread across 2 managed servers in a cluster)?
    Thanks alot

    Yes, the uniform distributed queue should be available on all targeted servers, providing that the jms module has been targeted to all of the OSB servers, and that your java app ( .war file? ) is targeted to both.
    You can stop the java application so that messages remain in the queue "long enough" for you to see them from within the WL console. Then you can shutdown nodes in your cluster individually, so conform that the message is truly being distributed. Then the issue is whether the java app is reading from the entire distributed queue instead of just one node.
    When you use the monitoring tab on your queue, do you see a queue entry for each jms server ( each mgd server needs one )?
    Or is the issue that the java client is only reading from one server?

  • Queue vs Distributed queue

    Hi Guys,
    Could you please help me resolve some doubts on Regular Queue and Distributed Queues.
    1. What is the basic Difference between regular q and distributed q.
    2. Can we deploy the regular q on clustered weblogic, If yes, how will this be different from deploying a distributed q on cluster.
    Regards

    Hi,
    Queue or Distributed Queue had same set of working design but only one difference is one queue is set for one pinned services where as Distributed queue is targeted to Cluster that means, One distirbuted queue can have multiple queue which are targeted to individual managed server or JMS server.
    I hope you know difference between Uniform distributed queue and Distributed queue.
    Uniform Distributed queue will created its own temporary queue destination on run time where as Distributed queue will required physical queue to assigned with in clustere.
    Hope I address your query.
    Regards,
    Kal

Maybe you are looking for

  • Error coming out while opening a report !

    I am getting following error while opening a report : 5200: Error executing query: java.lang.ArithmeticException: / by zerojava.lang.ArithmeticException;hasPovDims=1;povXML=<?xml version="1.0"?><datasources><datasource name="CASCLS" dsid="11a620ba_13

  • Tabs don't restore even though session restore was selected.

    I have made sure this was not a one-off occurence, and each time my session is not restored. I clicked the 'restore session' pop-up box but this did not work, then I changed my settings to restore tabs automatically (Tools>Options>When firefox starts

  • Right/best method to open and close form?

    When i click a button from FormA, it open FormC and it should be the same with button from FormB-used to open the same FormC but it doesn't. this happen when i previously open FormC from FormA before opening it in FormB. I use setvisible(true) to ope

  • Backupping from single-user mode

    I am currently only able to use the single-user mode, and am looking for possibilities to take some backup of certain files before I venture reinstalling or something. Is it possible to write to disk from S-U mode? How? Can I do it in another way, e.

  • BPM - Process Performance Indicators and Process Monitoring

    Hi, In SAP BPM, is there any way to get some reports or dashboard with key PPI (Process Performance Indicators). What we are really interested in is to know how many times a month a process or a specific task of a process has been run, how many time