Bringing together multiple jms server queues

I am running wl6.1 sp7 on two seperate machines. Each machine has the same
          application deployed to it with identical JMS Servers. We use a hardware
          loadbalancer to round-robin these instances. I have a requirement where I
          need to pull all messages off of a queue on a scheduled basis, combine the
          messages and deliver them to an external destination. The plan was to write
          an EJB that was invoked from a client scheduled with cron. How would I use
          the JMS API to connect to the same queue on two different JMS Servers and
          consume all of their messages from within one EJB deployed to either of
          these two servers?
          

There is no limit on the number of destinations in a JMS server and each JMS server can use a different store.

Similar Messages

  • 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

  • Issue listeneing queue from Weblogic Cluster server with multiple managed server

    Haveing issue listeneing queue from Weblogic Cluster server with multiple managed server.
    Weblogic Cluster structure is like
    Weblogic Cluster01
      --ManagedServer01(http://server01.myhost.com:7001)
      --ManagedServer02(http://server02.myhost.com:7001)
    JMS Servers
      JMSserver01 targeting: ManagedServer01
      JMSserver02 targeting: ManagedServer02
      JMSmodule
      ConnectionFactory01 targeting:JMSserver01,JMSserver02
      UDQueue01 targeting:JMSserver01,JMSserver02
    Uniform Distributed Queue in Monitoring tab showing like this
      mysystemmodule!JMSserver01@UDQueue01
      mysystemmodule!JMSserver02@UDQueue01
    So when I am sending message to any Host(by specifying the provider URL) its distributing equally on both server like
      mysystemmodule!JMSserver01@UDQueue01 10
      mysystemmodule!JMSserver02@UDQueue01 10
    But when try to listen message from these queue, it is listening from one server, for which URL given to connect.
      mysystemmodule!JMSserver01@UDQueue01 0
      mysystemmodule!JMSserver02@UDQueue01 10
    untill I connect to other server by giveing its URL, will not able to access other message left on the queue.
    Solutions that tried
      1) we have tried give both server URL coma sparated in provider URL
    we need to configur same scenario for 5 managed server with 3 listener on other servers.
    Do any one have solution for this.

    You need to have:
    1. Consumers connected to each UDQ member
    OR
    2. If no consumers in some of the members is expected, you can configure Forward Delay (specify the amount of time, in seconds, that a queue member with messages, but with no consumers, will wait before forwarding its messages to other queue members that do have consumers):
    http://docs.oracle.com/cd/E12839_01/apirefs.1111/e13952/taskhelp/jms_modules/distributed_queues/ConfigureUDQGeneral.html
    For example you can set it to 10 (10s)
    Additional Information here:
    http://docs.oracle.com/cd/E23943_01/web.1111/e13727/dds.htm#i1314228
    http://docs.oracle.com/cd/E23943_01/apirefs.1111/e13951/mbeans/DistributedQueueBean.html?skipReload=true#ForwardDelay
    How Does JMS Load Balancing Work with Distributed Queues and Uniform Distributed Queues? (Doc ID 827294.1)
    I hope this helps
    Best Regards
    Luz

  • 1 JMS Server [3 Queues] OR 3 JMS Servers [1 Q each]

              Hi
              I am still debating myself which configuration is better purely from performance
              perspective whether to have multiple queues hosted my the same JMS server or give
              one JMS server per Queue. Just wondering if someone can throw some light on this
              as I dont see this thing addressed in the JMS performance guide - is it because
              it dosent make any difference?
              I am trying to figure out if in the first setup since all queues will use the
              same store they will end up using a where clause to get data from the Queue and
              in the 2nd case it will be like select * without a where clause? In that case
              the 2nd config will give better performance. I am using file store.
              Its likely that in my configuration one of the Queues is going to be pounded big
              time whereas the other 2 queues message volume will be significantly low.
              Any thoughts/pointers is appreciated.
              thanks
              Anamitra
              

    Internally, the JDBC store does simple
              inserts/deletes/single-record-selects -
              it has notion of destinations.
              I'm fairly sure that the JMS Performance Guide does cover this topic,
              but I don't have time to comb through it. Anyhow, with DB stores
              I think it is likely you will get better performace by using
              multiple stores - provided the introduction of multiple
              stores doesn't start forcing too many transactions to become
              two-phase that were one-phase before. Each store
              counts as an XA resource, so two stores in the same
              transaction forces a 2PC transaction.
              (With file stores one might get worse performance.)
              Tom
              Anamitra wrote:
              > Hi
              > I am still debating myself which configuration is better purely from performance
              > perspective whether to have multiple queues hosted my the same JMS server or give
              > one JMS server per Queue. Just wondering if someone can throw some light on this
              > as I dont see this thing addressed in the JMS performance guide - is it because
              > it dosent make any difference?
              >
              > I am trying to figure out if in the first setup since all queues will use the
              > same store they will end up using a where clause to get data from the Queue and
              > in the 2nd case it will be like select * without a where clause? In that case
              > the 2nd config will give better performance. I am using file store.
              SQL has nothing to do with file stores, so I don't understand
              the question. Anyhow, I happen to
              know that no JDBC store SQL references queues - messages
              are handled individually regardless of queue
              or topic.
              >
              > Its likely that in my configuration one of the Queues is going to be pounded big
              > time whereas the other 2 queues message volume will be significantly low.
              I think there is little point in seperating into seperate stores unless
              all stores would be very active.
              Anyhow, this is all simple enough to test on your own as it
              only involves configuration changes. I highly
              recommend trying it out.
              >
              > Any thoughts/pointers is appreciated.
              > thanks
              > Anamitra
              

  • Bringing in Multiple Images Together?

    Hi everybody. Is there any way of bringing in multiple images at the same time into a HTML page in Dreamweaver? I am trying to place about 70 small thumb nails on the same page. At the moment I have to bring them all in, one at a time, which takes forever! If you could just select a folder and bring all the images in that folder in to your page together, ordered as they are in the folder that would be a lot quicker. Thanks for your help.

    Copy & paste this code into a new, blank document.  SaveAs gallery_test.php.  Change php code to point to your Gallery/thumbs and Gallery/slides.  If you don't have a local testing server, upload to your remote site to test.
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>HTML5 Document</title>
    <!--[if lt IE 9]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <!--LATEST JQUERY CORE LIBRARY-->
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <!--FANCYBOX plugins-->
    <link href="http://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.4/jquery.fancybox.css" rel="stylesheet" media="screen">
    <script src="http://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.4/jquery.fancybox.pack.js"></script>
    <style>
        padding: 0;
        -moz-box-sizing: border-box;
        -webkit-box-sizing: border-box;
        box-sizing: border-box;
    body {
        margin: 0;
        padding: 0;
        background: #08035F;
        color: #333;
        font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", "DejaVu Sans", Verdana, sans-serif;
        font-siz: 100%;
    #wrapper {
        width: 1000px; /**adjust width in px or %**/
        margin: 0 auto; /**with width, this is centered**/
    header {
        background: #355DA0;
        width: 100%;
        margin: 0 auto;
        color: #FFF;
    #inner_wrapper {
        background: #CCC7B3;
        overflow: hidden; /**float containment**/
    aside {
        float: left;
        width: 14%;
    section {
        background: #FFF;
        width: 72%;
        float: left;
        margin: 0 auto;
    /**Begin image gallery styles**/
    .thumbs { /*divs that hold gallery pictures*/
        float: left;
        margin: 0.5%; /*space between thumbnails*/
        border: 1px dotted #CCC;
        /**same size images**/
        width: 135px;
        height: 99px;
        opacity: .70
    .thumbs a { /* in every .thumbs div there is a hyperlink exactly the size of the container */
        width: 135px;
        height: 99px;
        text-indent: -99999px; /*move text links off screen*/
        display: block;
        outline: none;
    /**on mouse over**/
    .thumbs:hover { opacity: 1.0 }
    /**end gallery styles**/
    footer {
        clear: both;
        background: #222;
        width: 100%;
        color: #FFF;
        margin: 0 auto
    </style>
    </head>
    <body>
    <div id="wrapper">
    <header> <h1>Header</h1>
    <nav>Navigtion</nav>
    </header>
    <div id="inner_wrapper">
    <aside> LEFT ASIDE </aside>
    <section> <h2>Dynamic Thumbnails go here</h2>
    <?php
    $directory = 'GALLERY/thumbs'; //path to your thumbnails
    $link = 'GALLERY/slides'; //path to your full-sized images
    $allowed_types = array('jpg','jpeg','gif','png');
    $aFiles = array();
    $dir_handle = @opendir($directory) or die("There is an error with your image directory!");
    while ($file = readdir($dir_handle)) //traverse through files
    if($file=='.' || $file == '..') continue; //skip links to parent directories
    $file_parts = explode('.',$file); //split filenames and put each part in an array
    $ext = strtolower(array_pop($file_parts)); //last element is the file extension
    $title = implode('.',$file_parts); //what's left is the filename
    if(in_array($ext,$allowed_types))
    $aFiles[] = $file; //filename array
    closedir($dir_handle); //close directory
    natsort($aFiles); // natural sort by filename 01, 02, 10, 20
    $i=0;
    foreach ($aFiles as $file) {
    $file_parts = explode('.',$file); //split filenames and put each part in an array
    $ext = strtolower(array_pop($file_parts)); //last element is the file extension
    $title = implode('.',$file_parts); //what's left is the filename
    $title = htmlspecialchars($title); //make it html-safe
    echo '<div class="thumbs" style="background:url('.$directory.'/'.$file.') no-repeat 50% 50%">
    <a class="fancybox" data-fancybox-group="gallery" href="GALLERY/slides/'.$file.'" title="'.$title.'">'.$title.'</a>
    </div>';
    $i++; //increment the image counter
    ?>
    <!--end gallery-->
    </section>
    <aside> RIGHT ASIDE </aside>
    <!--end inner_wrapper--></div>
    <footer>Footer</footer>
    <!--end wrapper--></div>
    <!--FancyBox function code-->
    <script>
    $(document).ready(function() {
        $('.fancybox').fancybox();
    </script>
    </body>
    </html>
    Nancy O.

  • Connecting to multiple JMS queues

    Hi,
    I need to connect to multiple JMS queues that all have different username/passwords however I'm struggling to find where to add these details.
    In the past we have used the args -Dtibco.default.user=xyz -Dtibco.default.password=1234 on the Server Start tab when connecting to a single queue.
    Clearly this won't work for multiple queues.
    I have tried adding the details on the bridge source but it doesn't seem to make any difference. Any ideas?
    Thanks
    Willy

    Hi Willy,
    This is definitely the week for interop questions.
    There are two opportunities that I know of to pass username and password on a bridge source destination. There are the "username" and "password" attributes, which I assume would work in most cases. Not sure. There are also the JNDI properties, presumably via the standard strings "java.naming.security.principal" and "java.naming.security.credentials".
    It would be interesting to see the full stack trace that your getting.
    Tom
    PS. It's been my experience that many applications don't need to use a bridge for retreiving foreign vendor messages as they can simply receive from foreign vendors directly. For example, via a combination of MDBs and the Foreign JMS facility. For more information see [ Integrating Remote JMS Providers | http://download.oracle.com/docs/cd/E12839_01/web.1111/e13727/interop.htm#JMSPG553 ].

  • JMSHelper throws 'JMS server is not targetted' creating distributed queue

    I am trying to use the 8.1 weblogic.jms.extensions.JMSHelper to create a distributed queue. The target JMS servers are all migratable servers. When calling method createDistributedQueueAsync() I get a JMSException thrown compaining that the [first] JMS server is not targetted. Looking at the code provided in [http://forums.bea.com/bea/thread.jspa?messageID=200023386] which is based on the JMSHelper class source, the exception may be thrown because the target MBean is of class MigratableTargetMBean, whereas the JMSHelper is expecting class TargetMBean. Yet, the 9.0 documentation (which at least documents it) suggests that MigratableTargetMBean is derived from TargetMBean
              Does anyone have experience of this issue or its resolution, short of crafting the code by hand as per the above-referenced reply?

    Hi,
    Just to remember the configuration: 2 managed servers configured as cluster that should be deployed on 2 different machine.
    Following summary of the tests:
         - node manager + admin server + 1 managed server running on the first machine --> server failed to init with error "Server is not in the majority cluster partition"
         - node manager + admin server + 2 managed servers running on the one machine --> servers are running without errors
         - node manager + admin server + 1 managed server running on the first  machine / node manager runs on the second machine --> server on the first machine runs without errors without the famous error ' Server is not in the majority cluster partition'.
    Bottom line, seems that if the node manager is not running on the remote machine, the cluster is not in a stable state and so the single managed server failed to initialize.
    Is it according the documentation / expectations ?
    Thanks,
    Yaakov

  • How to create a JMS queue linked to external (remote) JMS server?

    Hello,
    I'm trying to receive messages from a remote JMS queue. I found some information on the Internet on how to create an external JNDI resource (my remote JMS queue connection factory is bound to LDAP context on remote box). I was able to configure JNDI resource that points to remote queue connection factory, but I don't know what to do next.
    How can I create a local JMS destination (queue) that will be the image of the remote queue? At least I'm guessing this is what needs to be done in order to deploy MDBs.
    I would appreciate it if someone could tell me how to get this working. Maybe the steps I took were not in the right direction - the bottom line is that JMS queue and queue connection factory are deployed on a remote server, and I need to get messages sent to them on the local server. I'm using Sun App Server from J2EE 1.4.
    Thank you,
    Mark

    Please refer to http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6377822, particularly the evaluation. Could your situation be the same too (i.e server ip address changing dynamically)? Also, which OS are you using and do you have any firewalls setup that prevents access to port 3700?

  • JMS Server on a cluster stores all  msgs posted to Distributed Queue on 1 server failure

              Hi
              I have a Cluster setup with 2 managed servers srvr1 & srvr2 each running its own
              JMS server.
              Product version in use is Weblogic SP2.
              Configured a Distributed Queue and deployed it on both the JMS servers.
              Set the load-balancing to round-Robin and Server-Affinity to False on the connection
              factory.
              The producer is an external client which posts 100 messages to the Distributed
              queue.
              Consumers are MDBs pinned to the respective physical queues on the respective
              JMS servers.
              Each server has its own store.
              Once 100 messages are posted to the Distributed Queue. The messages are distributed
              to
              the 2 Physical Destinations equally i.e 50-50 each.
              While the MDBs are processing the msgs, server srvr1 is brought down at a point
              when it has consumed only 10 of its 50 msgs.
              When the srvr1 is brought up again, i am finding that the store for that JMS server
              contains the 40 unprocessed msgs in its physical queue + the msgs on the other
              queue that were unprocessed at the time this server crashed.
              When srvr1 went down, srvr2 was running and it went on to process all its 50 msgs
              completly. Why would those processed msgs show up again when srvr1 is brought
              up ?
              Please provide some input !!
              Ravi.
              

              The log message is from the distributed destination
              "forwarders". In distributed queues, these forwarders
              automatically move messages from queues without
              consumers to queues that have them (queue
              forwarders are disabled by default). In distributed topics,
              the forwarders serve
              to replicate a published message from the local
              topic member to each of the remote topic members.
              "Raviprasad Athivilli" <[email protected]> wrote:
              >
              >Tom
              >
              >I think you are right. When the server1 is brought up again, its picking
              >up all
              >the messages
              >that were written to the store.
              >
              >But as it starts processing them, i get this exception on the server2
              >that has
              >been running from the beginning.
              >
              ><Oct 10, 2003 6:20:19 PM EDT> <Error> <JMS> <040366> <JMS Distributed
              >Destination
              >member "MyQueue@JMSServer-02" in "MyQueue"
              >unable to accept connection from remote member "MyQueue@JMSServer-01"
              >due to exception
              >weblogic.jms.common.JMSException: can't find
              >queue target jndi table for MyQueue@JMSServer-01 != MyQueue
              >weblogic.jms.common.JMSException: can't find queue target jndi table
              >for MyQueue@JMSServer-01
              >!= MyQueue
              > at weblogic.jms.backend.BEDestination.setupSystemSubscription(BEDestination.java:3466)
              > at weblogic.jms.backend.BEManager.sessionAndTopicSubscriberCreate(BEManager.java:234)
              > at weblogic.jms.backend.BEManager.invoke(BEManager.java:384)
              > at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:602)
              > at weblogic.jms.dispatcher.DispatcherImpl.dispatchAsync(DispatcherImpl.java:152)
              > at weblogic.jms.dispatcher.DispatcherImpl.dispatchAsyncFuture(DispatcherImpl.java:396)
              > at weblogic.jms.dispatcher.DispatcherImpl_WLSkel.invoke(Unknown
              >Source)
              > at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362)
              > at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313)
              > at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821)
              > at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308)
              > at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)
              >
              >What does this mean ?
              >
              >Ravi.
              >Tom Barnes <[email protected]> wrote:
              >>Seems more than odd. Are you sure that q1 got unprocessed
              >>messages from q2? How did you confirm?
              >>
              >>Perhaps q1 got messages its MDB already processed back again -
              >>an indication that the MDB is throwing Runtime exceptions
              >>or Errors, and the container is rolling back transactions.
              >>
              >>Raviprasad Athivilli wrote:
              >>> Hi
              >>>
              >>> I have a Cluster setup with 2 managed servers srvr1 & srvr2 each running
              >>its own
              >>> JMS server.
              >>> Product version in use is Weblogic SP2.
              >>> Configured a Distributed Queue and deployed it on both the JMS servers.
              >>> Set the load-balancing to round-Robin and Server-Affinity to False
              >>on the connection
              >>> factory.
              >>>
              >>> The producer is an external client which posts 100 messages to the
              >>Distributed
              >>> queue.
              >>> Consumers are MDBs pinned to the respective physical queues on the
              >>respective
              >>> JMS servers.
              >>> Each server has its own store.
              >>>
              >>> Once 100 messages are posted to the Distributed Queue. The messages
              >>are distributed
              >>> to
              >>> the 2 Physical Destinations equally i.e 50-50 each.
              >>>
              >>> While the MDBs are processing the msgs, server srvr1 is brought down
              >>at a point
              >>> when it has consumed only 10 of its 50 msgs.
              >>>
              >>> When the srvr1 is brought up again, i am finding that the store for
              >>that JMS server
              >>> contains the 40 unprocessed msgs in its physical queue + the msgs
              >on
              >>the other
              >>> queue that were unprocessed at the time this server crashed.
              >>>
              >>> When srvr1 went down, srvr2 was running and it went on to process
              >all
              >>its 50 msgs
              >>> completly. Why would those processed msgs show up again when srvr1
              >>is brought
              >>> up ?
              >>>
              >>> Please provide some input !!
              >>>
              >>> Ravi.
              >>
              >
              

  • JNDI Names of JMS server's queue not replicating to cluster

              Am having some trouble configuring a JMS Server and Queues in a clustered development
              environment. It is a simple cluster of 2 servers (Server1 and Server2) both on
              a single machine.
              The "JobServer" JMS Server is targeted to "Server1 (migratable)". All the JNDI
              names for the Queues appear in the JNDI tree of Server1, but not in Server2.
              When the sending of a message is attempted on Server2, the following occurs:
              javax.naming.NameNotFoundException: While trying to lookup 'jms.STARSIIPostQueue'
              didn't find subcontext 'jms' Resolved ; remaining name 'jms/STARSIIPostQueue'
              at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:858)
              This may be a problem with the cluster configuration, but I haven't been able
              to see anything wrong with it.
              Any and all help will be appreciated.
              There is the Config.xml file:
              <?xml version="1.0" encoding="UTF-8"?>
              <Domain ConfigurationVersion="8.1.2.0" Name="mydomain">
              <Server ExtraEjbcOptions="-J-mx512m" ListenAddress=""
              ListenPort="7001" Name="myserver" NativeIOEnabled="true"
              ServerVersion="8.1.2.0" StdoutDebugEnabled="true" StdoutSeverityLevel="64">
              <SSL Enabled="false" HostnameVerificationIgnored="false"
              IdentityAndTrustLocations="KeyStores" ListenPort="7002" Name="myserver"/>
              <Log Name="myserver" NumberOfFilesLimited="true"/>
              </Server>
              <Security Name="mydomain"
              PasswordPolicy="wl_default_password_policy"
              Realm="wl_default_realm" RealmSetup="true">
              <weblogic.security.providers.authentication.DefaultAuthenticator
              Name="Security:Name=myrealmDefaultAuthenticator" Realm="Security:Name=myrealm"/>
              <weblogic.security.providers.authentication.DefaultIdentityAsserter
              ActiveTypes="AuthenticatedUser"
              Name="Security:Name=myrealmDefaultIdentityAsserter" Realm="Security:Name=myrealm"/>
              <weblogic.security.providers.authorization.DefaultRoleMapper
              Name="Security:Name=myrealmDefaultRoleMapper" Realm="Security:Name=myrealm"/>
              <weblogic.security.providers.authorization.DefaultAuthorizer
              Name="Security:Name=myrealmDefaultAuthorizer" Realm="Security:Name=myrealm"/>
              <weblogic.security.providers.authorization.DefaultAdjudicator
              Name="Security:Name=myrealmDefaultAdjudicator"
              Realm="Security:Name=myrealm" RequireUnanimousPermit="false"/>
              <weblogic.security.providers.credentials.DefaultCredentialMapper
              Name="Security:Name=myrealmDefaultCredentialMapper" Realm="Security:Name=myrealm"/>
              <weblogic.management.security.authentication.UserLockoutManager
              Name="Security:Name=myrealmUserLockoutManager" Realm="Security:Name=myrealm"/>
              <weblogic.management.security.Realm
              Adjudicator="Security:Name=myrealmDefaultAdjudicator"
              Auditors="Security:Name=myrealmSTARSIIAuditor"
              AuthenticationProviders="Security:Name=myrealmSTARSIIAuthenticator|Security:Name=myrealmDefaultAuthenticator|Security:Name=myrealmDefaultIdentityAsserter"
              Authorizers="Security:Name=myrealmDefaultAuthorizer|Security:Name=myrealmSTARSIIAuthorizer"
              CredentialMappers="Security:Name=myrealmDefaultCredentialMapper"
              DefaultRealm="true" DisplayName="myrealm"
              FullyDelegateAuthorization="true"
              Name="Security:Name=myrealm"
              RoleMappers="Security:Name=myrealmDefaultRoleMapper" UserLockoutManager="Security:Name=myrealmUserLockoutManager"/>
              <gov.fns.starsii.common.security.authentication.STARSIIAuthenticator
              ControlFlag="SUFFICIENT"
              Name="Security:Name=myrealmSTARSIIAuthenticator" Realm="Security:Name=myrealm"/>
              <gov.fns.starsii.common.security.authorization.STARSIIAuthorizer
              ExemptUri="/common/,/images/,/warning.do,/login.do"
              Name="Security:Name=myrealmSTARSIIAuthorizer"
              PolicyDeploymentEnabled="false"
              Realm="Security:Name=myrealm" Verbose="false" denyPermNotFound="true"/>
              <gov.fns.starsii.common.security.audit.STARSIIAuditor
              Name="Security:Name=myrealmSTARSIIAuditor" Realm="Security:Name=myrealm"/>
              </Security>
              <EmbeddedLDAP
              Credential="{3DES}aD+gV9rRggnoShH/kWurILaHTBP/z0jVoZHtp/hU1xI=" Name="mydomain"/>
              <SecurityConfiguration
              Credential="{3DES}mhxP4PeuUHmoX6Aggpj5SNB+AX16Gaol8dOfUzXu7xM8CFNASyNdYIOoqtlqPAZvfZgB14KBtY8MkdKGu/iWFq1xQ07walY8"
              Name="mydomain" RealmBootStrapVersion="1"/>
              <Realm FileRealm="wl_default_file_realm" Name="wl_default_realm"/>
              <FileRealm Name="wl_default_file_realm"/>
              <PasswordPolicy Name="wl_default_password_policy"/>
              <JDBCConnectionPool
              DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
              Name="STARSII BRSB Pool"
              Password="{3DES}9pslRpr051lR9/NEKdanag=="
              Properties="user=brsbapp;portNumber=1433;databaseName=brsbdev;serverName=str2-dev-db"
              Targets="" TestTableName="SQL SELECT COUNT(*) FROM sysobjects" URL="jdbc:bea:sqlserver://str2-dev-db:1433"/>
              <JDBCTxDataSource JNDIName="jdbc/StarsIIDS" Name="StarsIIDS"
              PoolName="STARSII Store Pool" Targets="MyCluster"/>
              <JDBCTxDataSource JNDIName="jdbc/TXStarsIIDS" Name="TXStarsIIDS"
              PoolName="STARSII Store Pool" Targets="MyCluster"/>
              <!--StartupClass
              ClassName="gov.fns.starsii.common.common.PropertiesFileLoader"
              DeploymentOrder="250" Name="STARS II Properties Startup Class" Targets="myserver,MyCluster"/>
              <StartupClass
              ClassName="gov.fns.starsii.common.common.ReferenceValuesHelper"
              DeploymentOrder="500"
              Name="STARS II Reference Values Startup Class" Targets="myserver,MyCluster"/>
              <StartupClass
              ClassName="gov.fns.starsii.common.common.ReportCriteriaHelper"
              DeploymentOrder="750"
              Name="STARS II Reports Criteria Startup Class" Targets="myserver,MyCluster"/
              -->
              <MailSession JNDIName="mail/STARSIIMailSession"
              Name="STARSIIMailSession" Properties="mail.host=str2-dev-prj" Targets="myserver"/>
              <JDBCConnectionPool
              DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
              Name="STARSII Store Pool"
              Password="{3DES}nKggeFT8wZkm0R9H8mXaEQ=="
              Properties="user=storeapp;portNumber=1433;databaseName=storedev;serverName=str2-dev-db"
              Targets="MyCluster"
              TestTableName="SQL SELECT COUNT(*) FROM sysobjects" URL="jdbc:bea:sqlserver://str2-dev-db:1433"/>
              <JDBCConnectionPool
              DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
              Name="AffTest" Password=""
              Properties="user=sa;portNumber=1433;databaseName=affTest;serverName=AFRANK\AFRANK"
              Targets="" TestTableName="SQL SELECT COUNT(*) FROM sysobjects" URL="jdbc:bea:sqlserver://AFRANK\AFRANK:1433"/>
              <JDBCTxDataSource JNDIName="jdbc/AffTest" Name="AffTest"
              PoolName="AffTest" Targets=""/>
              <JDBCConnectionPool DriverName="weblogic.jdbcspy.SpyDriver"
              Name="Spy STARSII BRSB Pool"
              Password="{3DES}9pslRpr051lR9/NEKdanag=="
              Properties="user=brsbapp;portNumber=1433;databaseName=brsbdev;serverName=str2-dev-db"
              Targets="" TestTableName="SQL SELECT COUNT(*) FROM sysobjects" URL="jdbc:spy:{jdbc:bea:sqlserver://str2-dev-db:1433};log=(file)C:\cvsrepo\sql.log"/>
              <JDBCConnectionPool
              DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
              Name="STARSII Store Pool 2"
              Password="{3DES}nKggeFT8wZkm0R9H8mXaEQ=="
              Properties="user=storeapp;portNumber=1433;databaseName=storedev;serverName=str2-dev-db"
              Targets="" TestTableName="SQL SELECT COUNT(*) FROM sysobjects" URL="jdbc:bea:sqlserver://str2-dev-db:1433"/>
              <JDBCTxDataSource JNDIName="jdbc/StarsIIDS2" Name="StarsIIDS2"
              PoolName="STARSII Store Pool" Targets=""/>
              <JDBCConnectionPool
              DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
              Name="STARSII Stars Pool"
              Password="{3DES}tjstL+8fUvdPQzqhNcCYGA=="
              Properties="user=starsapp;portNumber=1433;databaseName=stars;serverName=str2-dev-db"
              Targets="MyCluster"
              TestTableName="SQL SELECT COUNT(*) FROM sysobjects" URL="jdbc:bea:sqlserver://str2-dev-db:1433"/>
              <Machine Name="MachineA">
              <NodeManager DebugEnabled="true" ListenPort="5555" Name="MachineA"/>
              </Machine>
              <Server Cluster="MyCluster" ExpectedToRun="false"
              ExtraEjbcOptions="-J-mx521m" JDBCLoggingEnabled="true"
              ListenAddress="10.0.0.14" ListenPort="7002" Machine="MachineA"
              Name="Server1" ServerVersion="8.1.2.0" StdoutDebugEnabled="true" StdoutSeverityLevel="64">
              <ServerDebug Name="Server1"/>
              <SSL IdentityAndTrustLocations="KeyStores" Name="Server1"/>
              <KernelDebug Name="Server1"/>
              <Log Name="Server1"/>
              <ServerStart Name="Server1"
              OutputFile="C:\bea\user_projects\domains\mydomain\.\NodeManagerClientLogs\mydomain_Server1\startServer_05_05_2004-12_50_56-4.log"
              Password="{3DES}js4NnTcuqRE15gEGfNTu4Q==" Username="system"/>
              <WebServer Name="Server1"/>
              <COM Name="Server1"/>
              <IIOP Name="Server1"/>
              <JTAMigratableTarget Name="Server1" UserPreferredServer="Server1"/>
              <JTARecoveryService Name="Server1"/>
              </Server>
              <Cluster ClusterAddress="10.0.0.14, 10.0.2.15"
              MulticastAddress="226.0.0.244" Name="MyCluster"/>
              <Server Cluster="MyCluster" ExpectedToRun="false"
              ExtraEjbcOptions="-J-mx521m" ListenAddress="10.0.2.15"
              ListenPort="7002" Machine="MachineB" Name="Server2"
              ServerVersion="8.1.2.0" StdoutDebugEnabled="true" StdoutSeverityLevel="64">
              <ServerDebug Name="Server2"/>
              <SSL IdentityAndTrustLocations="KeyStores" Name="Server2"/>
              <KernelDebug Name="Server2"/>
              <Log Name="Server2"/>
              <ServerStart Name="Server2"
              Password="{3DES}js4NnTcuqRE15gEGfNTu4Q==" Username="system"/>
              <WebServer Name="Server2"/>
              <COM Name="Server2"/>
              <IIOP Name="Server2"/>
              <JTAMigratableTarget Name="Server2" UserPreferredServer="Server2"/>
              <JTARecoveryService Name="Server2"/>
              </Server>
              <MigratableTarget Cluster="MyCluster" Name="Server1 (migratable)"
              Notes="This is a system generated default migratable target for a server.
              Do not delete manually." UserPreferredServer="Server1"/>
              <MigratableTarget Cluster="MyCluster" Name="Server2 (migratable)"
              Notes="This is a system generated default migratable target for a server.
              Do not delete manually." UserPreferredServer="Server2"/>
              <Application Deployed="true" Name="STARSII"
              Path="C:\cvsrepo\STARSII\STARSII" StagingMode="nostage" TwoPhase="true">
              <EJBComponent Name="../brsbMessage" Targets="MyCluster" URI="../brsbMessage"/>
              <EJBComponent Name="../brsbSession" Targets="MyCluster" URI="../brsbSession"/>
              <EJBComponent Name="../commonSession" Targets="MyCluster" URI="../commonSession"/>
              <EJBComponent Name="../complianceMessage" Targets="MyCluster" URI="../complianceMessage"/>
              <EJBComponent Name="../complianceSession" Targets="MyCluster" URI="../complianceSession"/>
              <EJBComponent Name="../starsiiEntity" Targets="MyCluster" URI="../starsiiEntity"/>
              <EJBComponent Name="../storeSession" Targets="MyCluster" URI="../storeSession"/>
              <WebAppComponent Name="/brsb" Targets="MyCluster" URI="../brsbWebApp"/>
              <WebAppComponent Name="/compliance" Targets="MyCluster" URI="../complianceWebApp"/>
              <WebAppComponent Name="/common" Targets="MyCluster" URI="../mainWebApp"/>
              <WebAppComponent Name="/store" Targets="MyCluster" URI="../storeWebApp"/>
              </Application>
              <Application Name="AffWebApp" Path="C:\cvsrepo\STARSII"
              StagingMode="nostage" TwoPhase="true">
              <WebAppComponent Name="AffWebApp" Targets="" URI="AffWebApp"/>
              </Application>
              <Application Name="activeportal"
              Path="C:\bea\user_projects\domains\mydomain\myserver\upload"
              StagingMode="nostage" TwoPhase="true">
              <WebAppComponent Name="activeportal" Targets="" URI="activeportal.war"/>
              </Application>
              <JTA Name="mydomain" TimeoutSeconds="300"/>
              <JMSServer Name="JobServer" Targets="Server1 (migratable)">
              <JMSQueue CreationTime="1072820642598"
              JNDIName="jms/STARSIIJobQueue" Name="STARSIIJobQueue"/>
              <JMSQueue CreationTime="1072820669345"
              JNDIName="jms/STARSIIPostQueue" Name="STARSIIPostQueue"/>
              <JMSQueue CreationTime="1088000795852"
              JNDIName="jms/STARSIIValidationQueue" Name="STARSIIValidationQueue"/>
              <JMSQueue CreationTime="1072820687125"
              JNDIName="jms/STARSIIErrorQueue" Name="STARSIIErrorQueue"/>
              <JMSQueue CreationTime="1072820687125"
              JNDIName="jms/STARSIIEmailQueue" Name="STARSIIEmailQueue"/>
              <JMSQueue CreationTime="1072820687225"
              JNDIName="jms/STARSIIEBTStateQueue" Name="STARSIIEBTStateQueue"/>
              <JMSQueue CreationTime="1072820687325"
              JNDIName="jms/STARSIIRFIQueue" Name="STARSIIRFIQueue"/>
              <JMSQueue CreationTime="1072820687425"
              JNDIName="jms/STARSIIRedeQueue" Name="STARSIIRedeQueue"/>
              <JMSQueue CreationTime="1072820687525"
              JNDIName="jms/STARSIIWatchListQueue" Name="STARIIWatchListQueue"/>
              <JMSQueue CreationTime="1072820687625"
              JNDIName="jms/STARSIIDeleteTransFileQueue" Name="STARSIIDeleteTransFileQueue"/>
              <JMSQueue CreationTime="1072820687725"
              JNDIName="jms/STARSIIUpdateAMRQueue" Name="STARSIIUpdateAMRQueue"/>
              <JMSQueue CreationTime="1072820687825"
              JNDIName="jms/STARSIIVPPExtractQueue" Name="STARSIIVPPExtractQueue"/>
              <JMSQueue CreationTime="1072820687925"
              JNDIName="jms/STARSIISIFSUploadQueue" Name="STARSIISIFSUploadQueue"/>
              <JMSQueue CreationTime="1072820688025"
              JNDIName="jms/STARSIIMARSQueue" Name="STARSIIMARSQueue"/>
              <JMSQueue CreationTime="1072820688125"
              JNDIName="jms/STARSIIFRBRichmondExtractQueue" Name="STARSIIFRBRichmondExtractQueue"/>
              <JMSQueue CreationTime="1072820688225"
              JNDIName="jms/STARSIICOTSExtractQueue" Name="STARSIICOTSExtractQueue"/>
              <JMSQueue CreationTime="1072820688325"
              JNDIName="jms/STARSIIVPPUploadQueue" Name="STARSIIVPPUploadQueue"/>
              </JMSServer>
              <Machine Name="MachineB">
              <NodeManager DebugEnabled="true" Name="MachineB"/>
              </Machine>
              </Domain>
              

    Internally, many BEA developers and testers use various versions
              of XP with clustering on a daily basis. I don't know what
              is unique about your machine. I suggest raising the issue
              with customer support and/or posting to the clustering newsgroup...
              Andy Frank wrote:
              > It would seems that my OS and the MultiCast config are to blame. The MultiCast
              > test utility worked fine the Win2K machines I tried. Think I will take another
              > look at MS KB article 827536 and/or think about another dev OS.
              >
              > "Andy Frank" <[email protected]> wrote:
              >
              >>Tom,
              >>Thanks for this info.
              >>
              >>My servers don't look like they are running in different subnets (had
              >>a friend
              >>look this over and he concurs).
              >>
              >>My network admin says he hasn't blocked multicast traffic.
              >>
              >>I think the MultiCast test utility is telling me that I have some kind
              >>of multicast
              >>config problem. Output follows:
              >>
              >>------ Begin MultiCast test utility output: ------
              >>C:\bea\weblogic81\server\bin>java utils.MulticastTest -N server200 -A
              >>237.155.15
              >>5.1 -t 15
              >>***** WARNING ***** WARNING ***** WARNING *****
              >>Do NOT use the same multicast address as a running WLS cluster.
              >>
              >>
              >>Starting test. Hit any key to abort
              >>
              >>
              >>Using multicast address 237.155.155.1:7001
              >>Will send messages under the name server200 every 2 seconds
              >>Will print warning every 15 seconds if no messages are received
              >>
              >> I (server200) sent message num 1
              >> I (server200) sent message num 2
              >> I (server200) sent message num 3
              >> I (server200) sent message num 4
              >> I (server200) sent message num 5
              >> I (server200) sent message num 6
              >> I (server200) sent message num 7
              >>java.net.SocketTimeoutException: Receive timed out
              >> at java.net.PlainDatagramSocketImpl.receive(Native Method)
              >> at java.net.DatagramSocket.receive(DatagramSocket.java:680)
              >> at utils.MulticastTest$Receiver.run(MulticastTest.java:304)
              >> I (server200) sent message num 8
              >> I (server200) sent message num 9
              >> I (server200) sent message num 10
              >> I (server200) sent message num 11
              >> I (server200) sent message num 12
              >>------ End MultiCast test utility output: ------
              >>
              >>No "Received message X from server200" messages. I think I need to look
              >>into
              >>configuring multicast communications on my OK (Windows XP Pro, ver 2002
              >>SP1).
              >>I did see MS KB article 827536 about "An IP multicast may not be sent
              >>correctly
              >
              >>from Windows XP or from Windows Server 2003" (I do have 2 network adapters),
              >
              >>but
              >>the resolution scared me some.
              >>
              >>Think I will try some things out on another OS and see what that gets
              >>me.
              >>
              >>Any other thoughts on this will be appreciated.
              >>
              >>
              >>Tom Barnes wrote:
              >>
              >>>I too suspect something is going wrong with clustering, I wonder
              >>>if the servers are running in different subnets (even though
              >>>they are on the same box) and/or your network admin has
              >>>blocked multicast traffic.
              >>>
              >>>The MultiCast test utility should help narrow things down:
              >>>
              >>>http://e-docs.bea.com/wls/docs81/admin_ref/utils.html#1199798
              >>>
              >>>Tom
              >>>
              >>>Andy Frank wrote:
              >>>
              >>>
              >>>>Am having some trouble configuring a JMS Server and Queues in a clustered
              >>>
              >>>development
              >>>
              >>>>environment. It is a simple cluster of 2 servers (Server1 and Server2)
              >>>
              >>>both on
              >>>
              >>>>a single machine.
              >>>>
              >>>>The "JobServer" JMS Server is targeted to "Server1 (migratable)".
              >>
              >>>All the JNDI
              >>>
              >>>>names for the Queues appear in the JNDI tree of Server1, but not in
              >>>
              >>>Server2.
              >>>
              >>>>When the sending of a message is attempted on Server2, the following
              >>>
              >>>occurs:
              >>>
              >>>>javax.naming.NameNotFoundException: While trying to lookup 'jms.STARSIIPostQueue'
              >>>>didn't find subcontext 'jms' Resolved ; remaining name 'jms/STARSIIPostQueue'
              >>>> at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:858)
              >>>>
              >>>>This may be a problem with the cluster configuration, but I haven't
              >>>
              >>>been able
              >>>
              >>>>to see anything wrong with it.
              >>>>
              >>>>Any and all help will be appreciated.
              >>>>
              >>>>There is the Config.xml file:
              >>>><?xml version="1.0" encoding="UTF-8"?>
              >>>><Domain ConfigurationVersion="8.1.2.0" Name="mydomain">
              >>>> <Server ExtraEjbcOptions="-J-mx512m" ListenAddress=""
              >>>> ListenPort="7001" Name="myserver" NativeIOEnabled="true"
              >>>> ServerVersion="8.1.2.0" StdoutDebugEnabled="true" StdoutSeverityLevel="64">
              >>>> <SSL Enabled="false" HostnameVerificationIgnored="false"
              >>>> IdentityAndTrustLocations="KeyStores" ListenPort="7002"
              >>>
              >>>Name="myserver"/>
              >>>
              >>>> <Log Name="myserver" NumberOfFilesLimited="true"/>
              >>>> </Server>
              >>>> <Security Name="mydomain"
              >>>> PasswordPolicy="wl_default_password_policy"
              >>>> Realm="wl_default_realm" RealmSetup="true">
              >>>> <weblogic.security.providers.authentication.DefaultAuthenticator
              >>>> Name="Security:Name=myrealmDefaultAuthenticator" Realm="Security:Name=myrealm"/>
              >>>>
              >>>> <weblogic.security.providers.authentication.DefaultIdentityAsserter
              >>>> ActiveTypes="AuthenticatedUser"
              >>>> Name="Security:Name=myrealmDefaultIdentityAsserter" Realm="Security:Name=myrealm"/>
              >>>> <weblogic.security.providers.authorization.DefaultRoleMapper
              >>>> Name="Security:Name=myrealmDefaultRoleMapper" Realm="Security:Name=myrealm"/>
              >>>> <weblogic.security.providers.authorization.DefaultAuthorizer
              >>>> Name="Security:Name=myrealmDefaultAuthorizer" Realm="Security:Name=myrealm"/>
              >>>> <weblogic.security.providers.authorization.DefaultAdjudicator
              >>>> Name="Security:Name=myrealmDefaultAdjudicator"
              >>>> Realm="Security:Name=myrealm" RequireUnanimousPermit="false"/>
              >>>> <weblogic.security.providers.credentials.DefaultCredentialMapper
              >>>> Name="Security:Name=myrealmDefaultCredentialMapper" Realm="Security:Name=myrealm"/>
              >>>> <weblogic.management.security.authentication.UserLockoutManager
              >>>> Name="Security:Name=myrealmUserLockoutManager" Realm="Security:Name=myrealm"/>
              >>>> <weblogic.management.security.Realm
              >>>> Adjudicator="Security:Name=myrealmDefaultAdjudicator"
              >>>> Auditors="Security:Name=myrealmSTARSIIAuditor"
              >>>> AuthenticationProviders="Security:Name=myrealmSTARSIIAuthenticator|Security:Name=myrealmDefaultAuthenticator|Security:Name=myrealmDefaultIdentityAsserter"
              >>>> Authorizers="Security:Name=myrealmDefaultAuthorizer|Security:Name=myrealmSTARSIIAuthorizer"
              >>>> CredentialMappers="Security:Name=myrealmDefaultCredentialMapper"
              >>>> DefaultRealm="true" DisplayName="myrealm"
              >>>> FullyDelegateAuthorization="true"
              >>>> Name="Security:Name=myrealm"
              >>>> RoleMappers="Security:Name=myrealmDefaultRoleMapper" UserLockoutManager="Security:Name=myrealmUserLockoutManager"/>
              >>>>
              >>>> <gov.fns.starsii.common.security.authentication.STARSIIAuthenticator
              >>>> ControlFlag="SUFFICIENT"
              >>>> Name="Security:Name=myrealmSTARSIIAuthenticator" Realm="Security:Name=myrealm"/>
              >>>> <gov.fns.starsii.common.security.authorization.STARSIIAuthorizer
              >>>> ExemptUri="/common/,/images/,/warning.do,/login.do"
              >>>> Name="Security:Name=myrealmSTARSIIAuthorizer"
              >>>> PolicyDeploymentEnabled="false"
              >>>> Realm="Security:Name=myrealm" Verbose="false" denyPermNotFound="true"/>
              >>>> <gov.fns.starsii.common.security.audit.STARSIIAuditor
              >>>> Name="Security:Name=myrealmSTARSIIAuditor" Realm="Security:Name=myrealm"/>
              >>>> </Security>
              >>>> <EmbeddedLDAP
              >>>> Credential="{3DES}aD+gV9rRggnoShH/kWurILaHTBP/z0jVoZHtp/hU1xI="
              >>>
              >>>Name="mydomain"/>
              >>>
              >>>> <SecurityConfiguration
              >>>> Credential="{3DES}mhxP4PeuUHmoX6Aggpj5SNB+AX16Gaol8dOfUzXu7xM8CFNASyNdYIOoqtlqPAZvfZgB14KBtY8MkdKGu/iWFq1xQ07walY8"
              >>>> Name="mydomain" RealmBootStrapVersion="1"/>
              >>>> <Realm FileRealm="wl_default_file_realm" Name="wl_default_realm"/>
              >>>> <FileRealm Name="wl_default_file_realm"/>
              >>>> <PasswordPolicy Name="wl_default_password_policy"/>
              >>>> <JDBCConnectionPool
              >>>> DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
              >>>> Name="STARSII BRSB Pool"
              >>>> Password="{3DES}9pslRpr051lR9/NEKdanag=="
              >>>> Properties="user=brsbapp;portNumber=1433;databaseName=brsbdev;serverName=str2-dev-db"
              >>>> Targets="" TestTableName="SQL SELECT COUNT(*) FROM sysobjects"
              >>>
              >>>URL="jdbc:bea:sqlserver://str2-dev-db:1433"/>
              >>>
              >>>> <JDBCTxDataSource JNDIName="jdbc/StarsIIDS" Name="StarsIIDS"
              >>>> PoolName="STARSII Store Pool" Targets="MyCluster"/>
              >>>> <JDBCTxDataSource JNDIName="jdbc/TXStarsIIDS" Name="TXStarsIIDS"
              >>>> PoolName="STARSII Store Pool" Targets="MyCluster"/>
              >>>> <!--StartupClass
              >>>> ClassName="gov.fns.starsii.common.common.PropertiesFileLoader"
              >>>> DeploymentOrder="250" Name="STARS II Properties Startup Class"
              >>>
              >>>Targets="myserver,MyCluster"/>
              >>>
              >>>> <StartupClass
              >>>> ClassName="gov.fns.starsii.common.common.ReferenceValuesHelper"
              >>>> DeploymentOrder="500"
              >>>> Name="STARS II Reference Values Startup Class" Targets="myserver,MyCluster"/>
              >>>> <StartupClass
              >>>> ClassName="gov.fns.starsii.common.common.ReportCriteriaHelper"
              >>>> DeploymentOrder="750"
              >>>> Name="STARS II Reports Criteria Startup Class" Targets="myserver,MyCluster"/
              >>>>-->
              >>>> <MailSession JNDIName="mail/STARSIIMailSession"
              >>>> Name="STARSIIMailSession" Properties="mail.host=str2-dev-prj"
              >>>
              >>>Targets="myserver"/>
              >>>
              >>>> <JDBCConnectionPool
              >>>> DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
              >>>> Name="STARSII Store Pool"
              >>>> Password="{3DES}nKggeFT8wZkm0R9H8mXaEQ=="
              >>>> Properties="user=storeapp;portNumber=1433;databaseName=storedev;serverName=str2-dev-db"
              >>>> Targets="MyCluster"
              >>>> TestTableName="SQL SELECT COUNT(*) FROM sysobjects" URL="jdbc:bea:sqlserver://str2-dev-db:1433"/>
              >>>> <JDBCConnectionPool
              >>>> DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
              >>>> Name="AffTest" Password=""
              >>>> Properties="user=sa;portNumber=1433;databaseName=affTest;serverName=AFRANK\AFRANK"
              >>>> Targets="" TestTableName="SQL SELECT COUNT(*) FROM sysobjects"
              >>>
              >>>URL="jdbc:bea:sqlserver://AFRANK\AFRANK:1433"/>
              >>>
              >>>> <JDBCTxDataSource JNDIName="jdbc/AffTest" Name="AffTest"
              >>>> PoolName="AffTest" Targets=""/>
              >>>> <JDBCConnectionPool DriverName="weblogic.jdbcspy.SpyDriver"
              >>>> Name="Spy STARSII BRSB Pool"
              >>>> Password="{3DES}9pslRpr051lR9/NEKdanag=="
              >>>> Properties="user=brsbapp;portNumber=1433;databaseName=brsbdev;serverName=str2-dev-db"
              >>>> Targets="" TestTableName="SQL SELECT COUNT(*) FROM sysobjects"
              >>>
              >>>URL="jdbc:spy:{jdbc:bea:sqlserver://str2-dev-db:1433};log=(file)C:\cvsrepo\sql.log"/>
              >>>
              >>>> <JDBCConnectionPool
              >>>> DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
              >>>> Name="STARSII Store Pool 2"
              >>>> Password="{3DES}nKggeFT8wZkm0R9H8mXaEQ=="
              >>>> Properties="user=storeapp;portNumber=1433;databaseName=storedev;serverName=str2-dev-db"
              >>>> Targets="" TestTableName="SQL SELECT COUNT(*) FROM sysobjects"
              >>>
              >>>URL="jdbc:bea:sqlserver://str2-dev-db:1433"/>
              >>>
              >>>> <JDBCTxDataSource JNDIName="jdbc/StarsIIDS2" Name="StarsIIDS2"
              >>>> PoolName="STARSII Store Pool" Targets=""/>
              >>>> <JDBCConnectionPool
              >>>> DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
              >>>> Name="STARSII Stars Pool"
              >>>> Password="{3DES}tjstL+8fUvdPQzqhNcCYGA=="
              >>>> Properties="user=starsapp;portNumber=1433;databaseName=stars;serverName=str2-dev-db"
              >>>> Targets="MyCluster"
              >>>> TestTableName="SQL SELECT COUNT(*) FROM sysobjects" URL="jdbc:bea:sqlserver://str2-dev-db:1433"/>
              >>>> <Machine Name="MachineA">
              >>>> <NodeManager DebugEnabled="true" ListenPort="5555" Name="MachineA"/>
              >>>> </Machine>
              >>>> <Server Cluster="MyCluster" ExpectedToRun="false"
              >>>> ExtraEjbcOptions="-J-mx521m" JDBCLoggingEnabled="true"
              >>>> ListenAddress="10.0.0.14" ListenPort="7002" Machine="MachineA"
              >>>> Name="Server1" ServerVersion="8.1.2.0" StdoutDebugEnabled="true"
              >>>
              >>>StdoutSeverityLevel="64">
              >>>
              >>>> <ServerDebug Name="Server1"/>
              >>>> <SSL IdentityAndTrustLocations="KeyStores" Name="Server1"/>
              >>>> <KernelDebug Name="Server1"/>
              >>>> <Log Name="Server1"/>
              >>>> <ServerStart Name="Server1"
              >>>> OutputFile="C:\bea\user_projects\domains\mydomain\.\NodeManagerClientLogs\mydomain_Server1\startServer_05_05_2004-12_50_56-4.log"
              >>>> Password="{3DES}js4NnTcuqRE15gEGfNTu4Q==" Username="system"/>
              >>>> <WebServer Name="Server1"/>
              >>>> <COM Name="Server1"/>
              >>>> <IIOP Name="Server1"/>
              >>>> <JTAMigratableTarget Name="Server1" UserPreferredServer="Server1"/>
              >>>> <JTARecoveryService Name="Server1"/>
              >>>> </Server>
              >>>> <Cluster ClusterAddress="10.0.0.14, 10.0.2.15"
              >>>> MulticastAddress="226.0.0.244" Name="MyCluster"/>
              >>>> <Server Cluster="MyCluster" ExpectedToRun="false"
              >>>> ExtraEjbcOptions="-J-mx521m" ListenAddress="10.0.2.15"
              >>>> ListenPort="7002" Machine="MachineB" Name="Server2"
              >>>> ServerVersion="8.1.2.0" StdoutDebugEnabled="true" StdoutSeverityLevel="64">
              >>>> <ServerDebug Name="Server2"/>
              >>>> <SSL IdentityAndTrustLocations="KeyStores" Name="Server2"/>
              >>>> <KernelDebug Name="Server2"/>
              >>>> <Log Name="Server2"/>
              >>>> <ServerStart Name="Server2"
              >>>> Password="{3DES}js4NnTcuqRE15gEGfNTu4Q==" Username="system"/>
              >>>> <WebServer Name="Server2"/>
              >>>> <COM Name="Server2"/>
              >>>> <IIOP Name="Server2"/>
              >>>> <JTAMigratableTarget Name="Server2" UserPreferredServer="Server2"/>
              >>>> <JTARecoveryService Name="Server2"/>
              >>>> </Server>
              >>>> <MigratableTarget Cluster="MyCluster" Name="Server1 (migratable)"
              >>>> Notes="This is a system generated default migratable target
              >>>
              >>>for a server.
              >>>
              >>>>Do not delete manually." UserPreferredServer="Server1"/>
              >>>> <MigratableTarget Cluster="MyCluster" Name="Server2 (migratable)"
              >>>> Notes="This is a system generated default migratable target
              >>>
              >>>for a server.
              >>>
              >>>>Do not delete manually." UserPreferredServer="Server2"/>
              >>>> <Application Deployed="true" Name="STARSII"
              >>>> Path="C:\cvsrepo\STARSII\STARSII" StagingMode="nostage" TwoPhase="true">
              >>>> <EJBComponent Name="../brsbMessage" Targets="MyCluster" URI="../brsbMessage"/>
              >>>> <EJBComponent Name="../brsbSession" Targets="MyCluster" URI="../brsbSession"/>
              >>>> <EJBComponent Name="../commonSession" Targets="MyCluster"
              >>
              >>URI="../commonSession"/>
              >>
              >>>> <EJBComponent Name="../complianceMessage" Targets="MyCluster"
              >>>
              >>>URI="../complianceMessage"/>
              >>>
              >>>> <EJBComponent Name="../complianceSession" Targets="MyCluster"
              >>>
              >>>URI="../complianceSession"/>
              >>>
              >>>> <EJBComponent Name="../starsiiEntity" Targets="MyCluster"
              >>
              >>URI="../starsiiEntity"/>
              >>
              >>>> <EJBComponent Name="../storeSession" Targets="MyCluster" URI="../storeSession"/>
              >>>> <WebAppComponent Name="/brsb" Targets="MyCluster" URI="../brsbWebApp"/>
              >>>> <WebAppComponent Name="/compliance" Targets="MyCluster" URI="../complianceWebApp"/>
              >>>> <WebAppComponent Name="/common" Targets="MyCluster" URI="../mainWebApp"/>
              >>>> <WebAppComponent Name="/store" Targets="MyCluster" URI="../storeWebApp"/>
              >>>> </Application>
              >>>> <Application Name="AffWebApp" Path="C:\cvsrepo\STARSII"
              >>>> StagingMode="nostage" TwoPhase="true">
              >>>> <WebAppComponent Name="AffWebApp" Targets="" URI="AffWebApp"/>
              >>>> </Application>
              >>>> <Application Name="activeportal"
              >>>> Path="C:\bea\user_projects\domains\mydomain\myserver\upload"
              >>>> StagingMode="nostage" TwoPhase="true">
              >>>> <WebAppComponent Name="activeportal" Targets="" URI="activeportal.war"/>
              >>>> </Application>
              >>>> <JTA Name="mydomain" TimeoutSeconds="300"/>
              >>>> <JMSServer Name="JobServer" Targets="Server1 (migratable)">
              >>>> <JMSQueue CreationTime="1072820642598"
              >>>> JNDIName="jms/STARSIIJobQueue" Name="STARSIIJobQueue"/>
              >>>> <JMSQueue CreationTime="1072820669345"
              >>>> JNDIName="jms/STARSIIPostQueue" Name="STARSIIPostQueue"/>
              >>>> <JMSQueue CreationTime="1088000795852"
              >>>> JNDIName="jms/STARSIIValidationQueue" Name="STARSIIValidationQueue"/>
              >>>> <JMSQueue CreationTime="1072820687125"
              >>>> JNDIName="jms/STARSIIErrorQueue" Name="STARSIIErrorQueue"/>
              >>>> <JMSQueue CreationTime="1072820687125"
              >>>> JNDIName="jms/STARSIIEmailQueue" Name="STARSIIEmailQueue"/>
              >>>> <JMSQueue CreationTime="1072820687225"
              >>>> JNDIName="jms/STARSIIEBTStateQueue" Name="STARSIIEBTStateQueue"/>
              >>>> <JMSQueue CreationTime="1072820687325"
              >>>> JNDIName="jms/STARSIIRFIQueue" Name="STARSIIRFIQueue"/>
              >>>> <JMSQueue CreationTime="1072820687425"
              >>>> JNDIName="jms/STARSIIRedeQueue" Name="STARSIIRedeQueue"/>
              >>>> <JMSQueue CreationTime="1072820687525"
              >>>> JNDIName="jms/STARSIIWatchListQueue" Name="STARIIWatchListQueue"/>
              >>>> <JMSQueue CreationTime="1072820687625"
              >>>> JNDIName="jms/STARSIIDeleteTransFileQueue" Name="STARSIIDeleteTransFileQueue"/>
              >>>> <JMSQueue CreationTime="1072820687725"
              >>>> JNDIName="jms/STARSIIUpdateAMRQueue" Name="STARSIIUpdateAMRQueue"/>
              >>>> <JMSQueue CreationTime="1072820687825"
              >>>> JNDIName="jms/STARSIIVPPExtractQueue" Name="STARSIIVPPExtractQueue"/>
              >>>> <JMSQueue CreationTime="1072820687925"
              >>>> JNDIName="jms/STARSIISIFSUploadQueue" Name="STARSIISIFSUploadQueue"/>
              >>>> <JMSQueue CreationTime="1072820688025"
              >>>> JNDIName="jms/STARSIIMARSQueue" Name="STARSIIMARSQueue"/>
              >>>> <JMSQueue CreationTime="1072820688125"
              >>>> JNDIName="jms/STARSIIFRBRichmondExtractQueue" Name="STARSIIFRBRichmondExtractQueue"/>
              >>>> <JMSQueue CreationTime="1072820688225"
              >>>> JNDIName="jms/STARSIICOTSExtractQueue" Name="STARSIICOTSExtractQueue"/>
              >>>> <JMSQueue CreationTime="1072820688325"
              >>>> JNDIName="jms/STARSIIVPPUploadQueue" Name="STARSIIVPPUploadQueue"/>
              >>>> </JMSServer>
              >>>> <Machine Name="MachineB">
              >>>> <NodeManager DebugEnabled="true" Name="MachineB"/>
              >>>> </Machine>
              >>>></Domain>
              >>>
              >
              

  • How do you span a jta usertransaction across multiple jms servers?

    I have an ejb that connects to multiple jms servers (non-clustered) and
              retrieves messages. Those messages are concatenated together and placed on
              another jms queue. Is it possible to do all of this inside of one
              transaction? I am having trouble pulling this off.
              

    Sure, you can do this. Assuming you're using WLS JMS, you have to make sure that for all the JMS servers you're talking to, you use a connection factory with the "XA Connection Factory Enabled" flag set. You also need to make sure that you use JTA to start a transaction before retrieving the first message, and commit it after you're done with the final send.

  • Foreign JMS Server Persistance\Retry in case Remote JMS Provider goes down

    Hi All
    I would need more clarity on this. How does the Foreign JMS Server behave in case the remote JMS provider goes down. Does it take the message from the Publishing Proxy Service and retries\persists the JMS Message till the remote provide is up?
    Please let us know. This would effect our design as retrial is very important here. Thanks

    If you want to provide guaranteed delivery with automatic retries when using remote JMS implementations, there are multiple ways to implement it:
    1. While reading from a foreign JMS destination
    Create a Foreign JMS server using transactional drivers (use XA in case of JMS). The messages remain on remote server JMS queue and OSB proxy polls the message directly on remote server. So if Remote Server is down OSB will not be able to read the message. Once remote server is up OSB will pick up the message (as long as foreign JMS server provides persistence and maintains the messages in the queue during a server restart). In case of error in OSB foreign queue can do retry if it provides a retry mechanism.
    2. While writing the message to a foreign JMS destination
    a. Use a foreign JMS server using transactional connection. Put the retry mechanism in OSB Business service which writes to the foreign JMS/MQ queue. In case of failure Business Service can retry based on configuration. If you want to provide guaranteed delivery then create a local JMS queue to store the messages. So when remote destination is down for a long time undelivered messages will be rolled back to the local queue. You can put retry mechanism on the local queue.
    b. Use a messaging bridge which will write the messages to the remote destination. You can configure retry delivery rules in messaging bridge so once busienss service writes the message to the bridge, a SAF agent will ensure the delivery to remote destination whenever it is up.

  • What is the association between JMS Server and JMS Module in weblogic 10?

    Hi,
    I have a created a ConnectionFactory, Queue, Topic under JMS Modules in Weblogic Server 10 using admin console.
    And I have created a JMS Server and Targetted to the current running server (Admin Server).
    But when I run the Queue Sender program it is unable to LookUP the jndi which I gave for Queue.
    queue = (Queue) initialContext.lookup("jndi_queue");
    Exception:
    javax.naming.NameNotFoundException: Unable to resolve 'jndi_queue'.
    But I configured this jndi name when I create the Queue in JMS Module in Weblogic Server 10.
    How JMS Module and JMS server are associated.
    My Doubt is if i have several JMS Modules and only one JMS Server created then how does the JMS Server identifies which Queue/Topic belongs to which JMS Module????
    Please advice.
    Thanks....

    Hi,
    Once you have JMS servers configured:
    Step 1: Target the JMS configuration module to the cluster that will host the destination, or, if not using clustering, target the module to the individual WL server that will host the JMS server.
    Step 2: Configure a "subdeployment" for the module and set it to reference the exact JMS server(s) that will host the destination. If you're using a distributed desitnation, you can specify multiple JMS servers, if you're using a regular destination, only specify a single destination.
    Step 3: Create a destination resource in the module, and set its subdeployment to the subdeployment you specified in step 1 (the console calls this "advanced targeting"). As a best practice avoid the "default targeting" option for the resource - always choose subdeployment (advanced) targeting.
    For more information, reference the "best practices" chapter of the JMS configuration guide:
    http://download.oracle.com/docs/cd/E14571_01/web.1111/e13738/best_practice.htm#CACJCGHG
    I also I highly recommend the JMS chapter of the book "Professional Oracle WebLogic".
    Hope this helps,
    Tom

  • How to deploy a MDBean into cluster with only one JMS server instance running on one of the cluster servers

              I am trying to deploy a MDBean in my cluster ( two servers). The MDBean requires
              the destinestion has to each cluster server. It means that I have to deploy my
              JMS server over the cluster. This will result multiple destinations (queue or
              topic) are created.
              Is there a way to run one JMS server with a clustered MDBean?
              Thanks,
              Taohe
              

    Check out my posting from 4-3 in this thread.
    http://forums.ni.com/ni/board/message?board.id=BreakPoint&message.id=5&jump=true
    I think I may have answered your question before you asked it.
    In that example I use the picture control to manipulate a bunch of rectangular images of booleans.
    I hope this helps,
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Multiple JMS Senders

              I want to build a sample application, in which i want to have 50 Queue Senders and
              50 Queue receivers. Therefore, I want a pool of 50 senders so that anybody can just
              pick a sender from the pool and post the message. It is important to have a pool,
              when the application is just real time like stock trading application where stock
              quotes will have to be published every now and then.
              Does there exist any in-built facility in Weblogic JMS Server, that allows to create
              such a pool or it has to be implemented in the application?
              Regards
              Jay
              

    Hi Jay,
              Yes, the queue is synchronized, it must be to serve multiple
              senders and consumers after all. This synchronization can pretty much
              be ignored, as the synchronize is short - it makes up only a fraction
              of the total message path.
              There is often a win to multiple senders as there is other overhead beyond
              the synchronize, especially if they invoke long running O/S
              calls - (such as network calls and/or persist-to-store calls). The senders can
              run in parallel. On the other hand, if the sender is non-persistent, you may find
              that
              no more than 1 or 2 senders running full-bore in a tight loop
              are needed to grab all bandwidth and firehose the system with messages.
              The pool example only creates a sender when no sender is available,
              and so ends up creating only as many as are needed to run in parallel.
              Tom
              Jay Rege wrote:
              > Hi Tom,
              >
              > Thanks a lot for your reply. I have one more question on the JMS fundamentals.
              >
              > We are creating a pool of JMS Senders for same Queue. So what happens when multiple
              > senders are trying to write to the same Queue? Is the queue synchronized? If it is
              > synchronized, then even though we are using multiple senders, but only one sender
              > can access the Queue at any point in time. So multiplexing the JMS Senders doesn't
              > really help here.
              >
              > Regards
              > Jay
              >
              > Tom Barnes <[email protected]> wrote:
              > >
              > >No built in pools, except for receivers (MDBs). Attached is a basic sample
              > >sender pool implementation (completely untested).
              > >
              > >Jay Rege wrote:
              > >
              > >> I want to build a sample application, in which i want to have 50 Queue
              > >Senders and
              > >> 50 Queue receivers. Therefore, I want a pool of 50 senders so that anybody
              > >can just
              > >> pick a sender from the pool and post the message. It is important to have
              > >a pool,
              > >> when the application is just real time like stock trading application
              > >where stock
              > >> quotes will have to be published every now and then.
              > >>
              > >> Does there exist any in-built facility in Weblogic JMS Server, that allows
              > >to create
              > >> such a pool or it has to be implemented in the application?
              > >>
              > >> Regards
              > >> Jay
              > >
              > >
              > >import javax.jms.*;
              > >import javax.naming.Context;
              > >import javax.naming.InitialContext;
              > >import javax.naming.NamingException;
              > >import java.util.HashMap;
              > >import java.util.Iterator;
              > >import java.util.LinkedList;
              > >import weblogic.jms.extensions.WLSession;
              > >
              > >
              > >/**
              > > * A pool of JMS queue producers. Producers are created
              > > * on an as needed basis and are cached based on queue
              > > * JNDI name. Each producer gets its own jms session
              > > * and jms connection. Producers are removed when the pool
              > > * is closed, or when the JMS provider calls their exception listener.
              > > */
              > >
              > >public final class SenderPool {
              > >
              > > private class SenderPoolElt implements ExceptionListener {
              > > String queueName; // JNDI name of queue
              > > InitialContext ctx;
              > > QueueConnectionFactory qcf;
              > > QueueConnection qc;
              > > QueueSession qsession;
              > > QueueSender qsender;
              > > Queue queue;
              > > TextMessage textMessage;
              > >
              > > // called by messaging system on connection or session failure
              > > public void onException(JMSException e) {
              > > e.printStackTrace();
              > > remove(this);
              > > close();
              > > }
              > >
              > > void close() {
              > > if (ctx != null) try { ctx.close(); } catch (Exception ignore) {};
              > > if (qc != null) try { qc.close();  } catch (Exception ignore) {};
              > > }
              > > }
              > >
              > > // a hash map of linked lists of producers that use the same queue
              > > private HashMap pLists = new HashMap();
              > >
              > > private boolean closed;
              > >
              > > public SenderPool() {
              > > }
              > >
              > > // get a sender from the pool or create one
              > > private SenderPoolElt get(String queueName)
              > > throws JMSException, NamingException {
              > > synchronized(pLists) {
              > > LinkedList producers = (LinkedList)pLists.get(queueName);
              > > if (producers != null && producers.size() > 0) {
              > > return (SenderPoolElt)producers.removeFirst();
              > > }
              > > }
              > > SenderPoolElt spe = new SenderPoolElt();
              > > try {
              > > spe.ctx = new InitialContext();
              > > spe.qcf = (QueueConnectionFactory)
              > > spe.ctx.lookup("javax.jms.QueueConnectionFactory");
              > > spe.qc = spe.qcf.createQueueConnection();
              > > spe.qsession = spe.qc.createQueueSession(false, 0);
              > > spe.queueName = queueName;
              > > spe.queue = (Queue)spe.ctx.lookup(queueName);
              > > spe.qsender = spe.qsession.createSender(spe.queue);
              > > spe.textMessage = spe.qsession.createTextMessage();
              > > ((WLSession)spe.qsession).setExceptionListener(spe);
              > > spe.qc.setExceptionListener(spe);
              > > } catch ( JMSException je ) {
              > > spe.close();
              > > throw je;
              > > } catch ( NamingException ne ) {
              > > spe.close();
              > > throw ne;
              > > }
              > > return spe;
              > > }
              > >
              > > // called by spe when it gets an exception
              > > private void remove(SenderPoolElt spe) {
              > > synchronized(pLists) {
              > > LinkedList producers = (LinkedList)pLists.get(spe.queueName);
              > > if (producers != null) producers.remove(spe);
              > > }
              > > }
              > >
              > > /**
              > > * Send a text message using a producer in the pool
              > > * that is associated with the given queue.
              > > */
              > > public String send(String queueJNDIName, String text, boolean persistent)
              > > throws JMSException, NamingException {
              > > synchronized(pLists) {
              > > if (closed) throw new JMSException("Producer pool closed");
              > > }
              > >
              > > SenderPoolElt spe;
              > >
              > > try {
              > > spe = get(queueJNDIName);
              > > } catch (Exception e) {
              > > // just for the heck of it, try one more time
              > > spe = get(queueJNDIName);
              > > }
              > >
              > > spe.textMessage.clearBody();
              > > spe.textMessage.setText(text);
              > > spe.qsender.setDeliveryMode((persistent)?DeliveryMode.PERSISTENT
              > > :DeliveryMode.NON_PERSISTENT);
              > >
              > > try {
              > > spe.qsender.send(spe.textMessage);
              > > } catch (JMSException e) {
              > > spe.close();
              > > throw e;
              > > }
              > >
              > > String messageId = spe.textMessage.getJMSMessageID();
              > > spe.textMessage.clearBody();
              > >
              > > boolean isClosed = false;
              > >
              > > synchronized(pLists) {
              > > if (closed) {
              > > // may have closed during send, must clean up spe, but don't
              > > // want to close it under lock
              > > isClosed = true;
              > > } else {
              > > // put sender in pool now that we are done
              > > LinkedList producers = (LinkedList)pLists.get(spe.queueName);
              > > if (producers == null) {
              > > producers = new LinkedList();
              > > pLists.put(spe.queueName, producers);
              > > }
              > > producers.add(spe);
              > > }
              > > }
              > >
              > > if (isClosed) spe.close();
              > >
              > > return messageId;
              > > }
              > >
              > > /**
              > > * Close all producers in the pool.
              > > */
              > > public void close() {
              > > // don't want to call spe.close under a lock, so we use a state flag
              > > synchronized(pLists) {
              > > if (closed) return;
              > > closed = true;
              > > }
              > > for (Iterator iter = pLists.values().iterator(); iter.hasNext();) {
              > > LinkedList producers = (LinkedList)iter.next();
              > > do {
              > > if (producers.size() == 0) break;
              > > ((SenderPoolElt)producers.removeFirst()).close();
              > > } while (true);
              > > }
              > > pLists.clear(); // save the garbage collector some thinking
              > > pLists = null;
              > > }
              > >
              > >}
              > >
              > >
              

Maybe you are looking for