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
-
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
/michaelUpdate: 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
WillyHi 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,
MarkPlease 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. ThanksIf 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 -
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 -
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
-
I have a Mac Book Pro - HELP - problems with bootcamp = too full
I have have a Mac Book Pro. My drive is full. Sadly I had the partition set up at a store that should have known what they were doing (NOT an apple store, but a certified store that carries only Apple products), anyway.. I am now at the point where
-
Safari is giving me a missing plug in message when I try to view things like movie trailers. The trailers play on Firefox, so I'm not sure what's missing from Safari. I have Safari 5.0.6 and Mac OS X 10.5.8.
-
I have a form with a button which dynamically pops up in front of text items (using set_item property, position and visible). This works on c/s but on the web the button does not appear. Is there a reason for this ? I have fixed it using stacked canv
-
Can I use Airport Express with iPhone in my hotel room?
Is there a way to set up an Airport Express in my hotel room when I travel, so that the provided High Speed internet cable in the room can be plugged into my Airport Express, giving me a wireless internet connection for the iPhone? I use Airport Expr
-
Is there a BAPI to update LIKP and LIPS? Thanks