Author: sebb
Date: Sat Sep 17 21:45:33 2011
New Revision: 1172073

URL: http://svn.apache.org/viewvc?rev=1172073&view=rev
Log:
Bug 51841 - JMS : If an error occurs in ReceiveSubscriber constructor or 
Publisher, then Connections will stay open

Modified:
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
    jakarta/jmeter/trunk/xdocs/changes.xml

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java?rev=1172073&r1=1172072&r2=1172073&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java
 Sat Sep 17 21:45:33 2011
@@ -94,16 +94,24 @@ public class Publisher implements Closea
             String securityPrincipal, String securityCredentials,
             boolean staticDestination) throws JMSException, NamingException {
         super();
-        ctx = InitialContextFactory.getContext(useProps, 
initialContextFactory, 
-                providerUrl, useAuth, securityPrincipal, securityCredentials);
-        connection = Utils.getConnection(ctx, connfactory);
-        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        staticDest = staticDestination;
-        if (staticDest) {
-            Destination dest = Utils.lookupDestination(ctx, destinationName);
-            producer = session.createProducer(dest);
-        } else {
-            producer = session.createProducer(null);
+        boolean initSuccess = false;
+        try{
+            ctx = InitialContextFactory.getContext(useProps, 
initialContextFactory, 
+                    providerUrl, useAuth, securityPrincipal, 
securityCredentials);
+            connection = Utils.getConnection(ctx, connfactory);
+            session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+            staticDest = staticDestination;
+            if (staticDest) {
+                Destination dest = Utils.lookupDestination(ctx, 
destinationName);
+                producer = session.createProducer(dest);
+            } else {
+                producer = session.createProducer(null);
+            }
+            initSuccess = true;
+        } finally {
+            if(!initSuccess) {
+                close();
+            }
         }
     }
 

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java?rev=1172073&r1=1172072&r2=1172073&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
 Sat Sep 17 21:45:33 2011
@@ -84,14 +84,22 @@ public class ReceiveSubscriber implement
             String initialContextFactory, String providerUrl, String 
connfactory, String destinationName,
             String durableSubscriptionId, boolean useAuth, 
             String securityPrincipal, String securityCredentials) throws 
NamingException, JMSException {
-        Context ctx = InitialContextFactory.getContext(useProps, 
-                initialContextFactory, providerUrl, useAuth, 
securityPrincipal, securityCredentials);
-        CONN = Utils.getConnection(ctx, connfactory);
-        SESSION = CONN.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        Destination dest = Utils.lookupDestination(ctx, destinationName);
-               SUBSCRIBER = createSubscriber(SESSION, dest, 
durableSubscriptionId);
-        queue = null;
-        log.debug("<init> complete");
+        boolean initSuccess = false;
+        try{
+            Context ctx = InitialContextFactory.getContext(useProps, 
+                    initialContextFactory, providerUrl, useAuth, 
securityPrincipal, securityCredentials);
+            CONN = Utils.getConnection(ctx, connfactory);
+            SESSION = CONN.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            Destination dest = Utils.lookupDestination(ctx, destinationName);
+               SUBSCRIBER = createSubscriber(SESSION, dest, 
durableSubscriptionId);
+            queue = null;
+            log.debug("<init> complete");
+            initSuccess = true;
+        } finally {
+            if(!initSuccess) {
+                close();
+            }
+        }
     }
 
     /**
@@ -117,19 +125,28 @@ public class ReceiveSubscriber implement
             String initialContextFactory, String providerUrl, String 
connfactory, String destinationName,
             String durableSubscriptionId, boolean useAuth, 
             String securityPrincipal, String securityCredentials) throws 
NamingException, JMSException {
-        Context ctx = InitialContextFactory.getContext(useProps, 
-                initialContextFactory, providerUrl, useAuth, 
securityPrincipal, securityCredentials);
-        CONN = Utils.getConnection(ctx, connfactory);
-        SESSION = CONN.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        Destination dest = Utils.lookupDestination(ctx, destinationName);
-        SUBSCRIBER = createSubscriber(SESSION, dest, durableSubscriptionId);
-        if (queueSize <=0) {
-            queue = new LinkedBlockingQueue<Message>();
-        } else {
-            queue = new LinkedBlockingQueue<Message>(queueSize);            
+        boolean initSuccess = false;
+        try{
+            Context ctx = InitialContextFactory.getContext(useProps, 
+                    initialContextFactory, providerUrl, useAuth, 
securityPrincipal, securityCredentials);
+            CONN = Utils.getConnection(ctx, connfactory);
+            SESSION = CONN.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            Destination dest = Utils.lookupDestination(ctx, destinationName);
+            SUBSCRIBER = createSubscriber(SESSION, dest, 
durableSubscriptionId);
+            if (queueSize <=0) {
+                queue = new LinkedBlockingQueue<Message>();
+            } else {
+                queue = new LinkedBlockingQueue<Message>(queueSize);           
 
+            }
+            SUBSCRIBER.setMessageListener(this);
+            log.debug("<init> complete");
+            initSuccess = true;
+        }
+        finally {
+            if(!initSuccess) {
+                close();
+            }
         }
-        SUBSCRIBER.setMessageListener(this);
-        log.debug("<init> complete");
     }
     
     /**
@@ -208,7 +225,9 @@ public class ReceiveSubscriber implement
     public void close() { // called from threadFinished() thread
         log.debug("close()");
         try {
-            CONN.stop();
+            if(CONN != null) {
+                CONN.stop();
+            }
         } catch (JMSException e) {
             log.error(e.getMessage());
         }

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1172073&r1=1172072&r2=1172073&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Sat Sep 17 21:45:33 2011
@@ -86,6 +86,7 @@ This can be overridden by setting the JM
 <li>Bug 43293 - Java Request fields not cleared when creating new sampler</li>
 <li>Bug 51830 - Webservice Soap Request triggers too many popups when 
Webservice WSDL URL is down</li>
 <li>WebService(SOAP) request - add a connect timeout to get the wsdl used to 
populate Web Methods when server doesn't response</li>
+<li>Bug 51841 - JMS : If an error occurs in ReceiveSubscriber constructor or 
Publisher, then Connections will stay open</li>
 </ul>
 
 <h3>Controllers</h3>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to