Author: pmouawad
Date: Wed Oct 19 19:44:57 2011
New Revision: 1186430

URL: http://svn.apache.org/viewvc?rev=1186430&view=rev
Log:
Bug 52044 - JMS Subscriber used with many threads leads to 
javax.naming.NamingException: Something already bound with ActiveMQ

Revert of modifications

Modified:
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java
    
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/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
    jakarta/jmeter/trunk/xdocs/changes.xml

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java?rev=1186430&r1=1186429&r2=1186430&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java 
(original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java 
Wed Oct 19 19:44:57 2011
@@ -39,21 +39,6 @@ import org.apache.log.Logger;
  */
 public final class Utils {
 
-    /**
-     * Close context
-     * @param closeable {@link Context}
-     * @param log {@link Logger}
-     */
-    public static void close(Context closeable, Logger log) {
-        if (closeable != null){
-            try {
-                closeable.close();
-            } catch (Exception e) {
-                log.error("Error during close: ", e);
-            }
-        }
-    }
-    
     public static void close(MessageConsumer closeable, Logger log){
         if (closeable != null){
             try {

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java?rev=1186430&r1=1186429&r2=1186430&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java
 Wed Oct 19 19:44:57 2011
@@ -48,9 +48,7 @@ public class InitialContextFactory {
      * @param securityCredentials used to set the property {@link 
Context#SECURITY_CREDENTIALS}
      * @return the context, never null
      * @throws NamingException 
-     * @{@link Deprecated}  No more caching of {@link Context}s
      */
-    @Deprecated
     public static Context lookupContext(String initialContextFactory, 
             String providerUrl, boolean useAuth, String securityPrincipal, 
String securityCredentials) throws NamingException {
         String cacheKey = createKey(initialContextFactory ,providerUrl, 
securityPrincipal, securityCredentials);
@@ -90,47 +88,13 @@ public class InitialContextFactory {
     }
 
     /**
-     * Create context 
-     * 
-     * @param initialContextFactory used to set the property {@link 
Context#INITIAL_CONTEXT_FACTORY}
-     * @param providerUrl used to set the property {@link Context#PROVIDER_URL}
-     * @param useAuth set true if security is to be used.
-     * @param securityPrincipal used to set the property {@link 
Context#SECURITY_PRINCIPAL}
-     * @param securityCredentials used to set the property {@link 
Context#SECURITY_CREDENTIALS}
-     * @return the context, never null
-     * @throws NamingException 
-     */
-    private static Context lookupContextNoCache(String initialContextFactory, 
-            String providerUrl, boolean useAuth, String securityPrincipal, 
String securityCredentials) throws NamingException {
-        Properties props = new Properties();
-        props.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
initialContextFactory);
-        props.setProperty(Context.PROVIDER_URL, providerUrl);
-        if (useAuth && securityPrincipal != null && securityCredentials != null
-                && securityPrincipal.length() > 0 && 
securityCredentials.length() > 0) {
-            props.setProperty(Context.SECURITY_PRINCIPAL, securityPrincipal);
-            props.setProperty(Context.SECURITY_CREDENTIALS, 
securityCredentials);
-            log.info("authentication properties set");
-        }
-        try {
-            return new InitialContext(props);
-        } catch (NoClassDefFoundError e){
-            throw new NamingException(e.toString());
-        } catch (Exception e) {
-            throw new NamingException(e.toString());
-        }
-    }
-
-
-    /**
      * Create cache key
      * @param initialContextFactory
      * @param providerUrl
      * @param securityPrincipal
      * @param securityCredentials
      * @return
-     *@deprecated No more caching of {@link Context}s
      */
-    @Deprecated
     private static String createKey(String initialContextFactory,
             String providerUrl, String securityPrincipal,
             String securityCredentials) {
@@ -174,15 +138,13 @@ public class InitialContextFactory {
                 throw new NamingException(e.toString());
             }
         } else {
-            return lookupContextNoCache(initialContextFactory, providerUrl, 
useAuth, securityPrincipal, securityCredentials);
+            return lookupContext(initialContextFactory, providerUrl, useAuth, 
securityPrincipal, securityCredentials);
         }
     }
     
     /**
      * clear all the InitialContext objects.
-     * @deprecated No more caching of {@link Context}s
      */
-    @Deprecated
     public static void close() {
         for (Context ctx : MAP.values()) {
             try {

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=1186430&r1=1186429&r2=1186430&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
 Wed Oct 19 19:44:57 2011
@@ -176,6 +176,5 @@ public class Publisher implements Closea
         Utils.close(producer, log);
         Utils.close(session, log);
         Utils.close(connection, log);
-        Utils.close(ctx, log);
     }
 }

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=1186430&r1=1186429&r2=1186430&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
 Wed Oct 19 19:44:57 2011
@@ -154,9 +154,8 @@ public class ReceiveSubscriber implement
             String durableSubscriptionId, String clientId, String jmsSelector, 
boolean useAuth, 
             String securityPrincipal, String securityCredentials, boolean 
useMessageListener) throws NamingException, JMSException {
         boolean initSuccess = false;
-        Context ctx = null;
         try{
-            ctx = InitialContextFactory.getContext(useProps, 
+            Context ctx = InitialContextFactory.getContext(useProps, 
                     initialContextFactory, providerUrl, useAuth, 
securityPrincipal, securityCredentials);
             CONN = Utils.getConnection(ctx, connfactory);
             if(!isEmpty(clientId)) {
@@ -182,7 +181,6 @@ public class ReceiveSubscriber implement
             if(!initSuccess) {
                 close();
             }
-            Utils.close(ctx, log);
         }
     }
     

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java?rev=1186430&r1=1186429&r2=1186430&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java
 Wed Oct 19 19:44:57 2011
@@ -26,16 +26,18 @@ import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.naming.NamingException;
 
-import org.apache.jmeter.engine.event.LoopIterationEvent;
-import org.apache.jmeter.protocol.jms.Utils;
-import org.apache.jmeter.protocol.jms.client.ClientPool;
-import org.apache.jmeter.protocol.jms.client.Publisher;
-import org.apache.jmeter.protocol.jms.control.gui.JMSPublisherGui;
+import org.apache.jorphan.io.TextFile;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.services.FileServer;
 import org.apache.jmeter.testelement.TestListener;
 import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.io.TextFile;
+import org.apache.jmeter.engine.event.LoopIterationEvent;
+import org.apache.jmeter.protocol.jms.Utils;
+import org.apache.jmeter.protocol.jms.control.gui.JMSPublisherGui;
+import org.apache.jmeter.protocol.jms.client.ClientPool;
+import org.apache.jmeter.protocol.jms.client.InitialContextFactory;
+import org.apache.jmeter.protocol.jms.client.Publisher;
+
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.log.Logger;
 
@@ -94,6 +96,7 @@ public class PublisherSampler extends Ba
     public void testEnded() {
         log.debug("PublisherSampler.testEnded called");
         ClientPool.clearClient();
+        InitialContextFactory.close();
     }
 
     public void testStarted() {

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java?rev=1186430&r1=1186429&r2=1186430&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
 Wed Oct 19 19:44:57 2011
@@ -27,6 +27,7 @@ import javax.naming.NamingException;
 
 import org.apache.jmeter.engine.event.LoopIterationEvent;
 import org.apache.jmeter.protocol.jms.Utils;
+import org.apache.jmeter.protocol.jms.client.InitialContextFactory;
 import org.apache.jmeter.protocol.jms.client.ReceiveSubscriber;
 import org.apache.jmeter.protocol.jms.control.gui.JMSSubscriberGui;
 import org.apache.jmeter.samplers.Interruptible;
@@ -414,7 +415,7 @@ public class SubscriberSampler extends B
      * {@inheritDoc}
      */
     public void testEnded() {
-        // NOOP
+        InitialContextFactory.close();
     }
 
     /**

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1186430&r1=1186429&r2=1186430&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Wed Oct 19 19:44:57 2011
@@ -97,7 +97,6 @@ Mirror server now uses default port 8081
 <li>Bug 51996 - JMS Initial Context leak newly created Context when Multiple 
Thread enter InitialContextFactory#lookupContext at the same time</li>
 <li>Bug 51691 - Authorization does not work for JMS Publisher and JMS 
Subscriber</li>
 <li>Bug 52036 - Durable Subscription fails with ActiveMQ due to missing 
clientId field</li>
-<li>Bug 52044 - JMS Subscriber used with many threads leads to 
javax.naming.NamingException: Something already bound with ActiveMQ</li>
 </ul>
 
 <h3>Controllers</h3>



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

Reply via email to