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]