Re: svn commit: r1185853 - in /jakarta/jmeter/trunk: src/protocol/jms/org/apache/jmeter/protocol/jms/ src/protocol/jms/org/apache/jmeter/protocol/jms/client/ src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/ xdocs/
sebb <[email protected]> Wed, 19 Oct 2011 06:52:44 +0100
| Newsgroups | gmane.comp.jakarta.cactus.devel |
|---|---|
| Message-ID | <CAOGo0Va-txXKf=K0+qoEseViz3j1HuT75qrn9CtMMKODTb03dw@mail.gmail.com> |
On 18 October 2011 21:58, <[email protected]> wrote: > Author: pmouawad > Date: Tue Oct 18 20:58:08 2011 > New Revision: 1185853 > > URL: http://svn.apache.org/viewvc?rev=3D1185853&view=3Drev > Log: > Bug 52044 - JMS Subscriber used with many threads leads to javax.naming.N= amingException: Something already bound with ActiveMQ > > Performances impact of No Caching of InitialContext are low. -1 I now think this is the wrong solution, and could have a negative impact. Please revert these changes; we need to discuss further on the dev list. > Modified: > =A0 =A0jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/j= ms/Utils.java > =A0 =A0jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/j= ms/client/InitialContextFactory.java > =A0 =A0jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/j= ms/client/Publisher.java > =A0 =A0jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/j= ms/client/ReceiveSubscriber.java > =A0 =A0jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/j= ms/sampler/PublisherSampler.java > =A0 =A0jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/j= ms/sampler/SubscriberSampler.java > =A0 =A0jakarta/jmeter/trunk/xdocs/changes.xml > > Modified: jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protoco= l/jms/Utils.java > URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/o= rg/apache/jmeter/protocol/jms/Utils.java?rev=3D1185853&r1=3D1185852&r2=3D11= 85853&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- 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 Tue Oct 18 20:58:08 2011 > @@ -39,6 +39,21 @@ import org.apache.log.Logger; > =A0*/ > =A0public final class Utils { > > + =A0 =A0/** > + =A0 =A0 * Close context > + =A0 =A0 * @param closeable {@link Context} > + =A0 =A0 * @param log {@link Logger} > + =A0 =A0 */ > + =A0 =A0public static void close(Context closeable, Logger log) { > + =A0 =A0 =A0 =A0if (closeable !=3D null){ > + =A0 =A0 =A0 =A0 =A0 =A0try { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0closeable.close(); > + =A0 =A0 =A0 =A0 =A0 =A0} catch (Exception e) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0log.error("Error during close: ", e); > + =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0} > + =A0 =A0} > + > =A0 =A0 public static void close(MessageConsumer closeable, Logger log){ > =A0 =A0 =A0 =A0 if (closeable !=3D null){ > =A0 =A0 =A0 =A0 =A0 =A0 try { > @@ -162,5 +177,4 @@ public final class Utils { > =A0 =A0 =A0 =A0 } > =A0 =A0 =A0 =A0 throw new NamingException("Expected javax.jms.ConnectionF= actory, found "+objfac.getClass().getName()); > =A0 =A0 } > - > =A0} > > Modified: jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protoco= l/jms/client/InitialContextFactory.java > URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/o= rg/apache/jmeter/protocol/jms/client/InitialContextFactory.java?rev=3D11858= 53&r1=3D1185852&r2=3D1185853&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- 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 Tue Oct 18 20:58:08 2011 > @@ -48,7 +48,9 @@ public class InitialContextFactory { > =A0 =A0 =A0* @param securityCredentials used to set the property {@link C= ontext#SECURITY_CREDENTIALS} > =A0 =A0 =A0* @return the context, never null > =A0 =A0 =A0* @throws NamingException > + =A0 =A0 * @{@link Deprecated} =A0No more caching of {@link Context}s > =A0 =A0 =A0*/ > + =A0 =A0@Deprecated > =A0 =A0 public static Context lookupContext(String initialContextFactory, > =A0 =A0 =A0 =A0 =A0 =A0 String providerUrl, boolean useAuth, String secur= ityPrincipal, String securityCredentials) throws NamingException { > =A0 =A0 =A0 =A0 String cacheKey =3D createKey(initialContextFactory ,prov= iderUrl, securityPrincipal, securityCredentials); > @@ -88,13 +90,47 @@ public class InitialContextFactory { > =A0 =A0 } > > =A0 =A0 /** > + =A0 =A0 * Create context > + =A0 =A0 * > + =A0 =A0 * @param initialContextFactory used to set the property {@link = Context#INITIAL_CONTEXT_FACTORY} > + =A0 =A0 * @param providerUrl used to set the property {@link Context#PR= OVIDER_URL} > + =A0 =A0 * @param useAuth set true if security is to be used. > + =A0 =A0 * @param securityPrincipal used to set the property {@link Cont= ext#SECURITY_PRINCIPAL} > + =A0 =A0 * @param securityCredentials used to set the property {@link Co= ntext#SECURITY_CREDENTIALS} > + =A0 =A0 * @return the context, never null > + =A0 =A0 * @throws NamingException > + =A0 =A0 */ > + =A0 =A0private static Context lookupContextNoCache(String initialContex= tFactory, > + =A0 =A0 =A0 =A0 =A0 =A0String providerUrl, boolean useAuth, String secu= rityPrincipal, String securityCredentials) throws NamingException { > + =A0 =A0 =A0 =A0Properties props =3D new Properties(); > + =A0 =A0 =A0 =A0props.setProperty(Context.INITIAL_CONTEXT_FACTORY, initi= alContextFactory); > + =A0 =A0 =A0 =A0props.setProperty(Context.PROVIDER_URL, providerUrl); > + =A0 =A0 =A0 =A0if (useAuth && securityPrincipal !=3D null && securityCr= edentials !=3D null > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&& securityPrincipal.length() > 0 && sec= urityCredentials.length() > 0) { > + =A0 =A0 =A0 =A0 =A0 =A0props.setProperty(Context.SECURITY_PRINCIPAL, se= curityPrincipal); > + =A0 =A0 =A0 =A0 =A0 =A0props.setProperty(Context.SECURITY_CREDENTIALS, = securityCredentials); > + =A0 =A0 =A0 =A0 =A0 =A0log.info("authentication properties set"); > + =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0try { > + =A0 =A0 =A0 =A0 =A0 =A0return new InitialContext(props); > + =A0 =A0 =A0 =A0} catch (NoClassDefFoundError e){ > + =A0 =A0 =A0 =A0 =A0 =A0throw new NamingException(e.toString()); > + =A0 =A0 =A0 =A0} catch (Exception e) { > + =A0 =A0 =A0 =A0 =A0 =A0throw new NamingException(e.toString()); > + =A0 =A0 =A0 =A0} > + =A0 =A0} > + > + > + =A0 =A0/** > =A0 =A0 =A0* Create cache key > =A0 =A0 =A0* @param initialContextFactory > =A0 =A0 =A0* @param providerUrl > =A0 =A0 =A0* @param securityPrincipal > =A0 =A0 =A0* @param securityCredentials > =A0 =A0 =A0* @return > + =A0 =A0 *@deprecated No more caching of {@link Context}s > =A0 =A0 =A0*/ > + =A0 =A0@Deprecated > =A0 =A0 private static String createKey(String initialContextFactory, > =A0 =A0 =A0 =A0 =A0 =A0 String providerUrl, String securityPrincipal, > =A0 =A0 =A0 =A0 =A0 =A0 String securityCredentials) { > @@ -138,13 +174,15 @@ public class InitialContextFactory { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 throw new NamingException(e.toString()); > =A0 =A0 =A0 =A0 =A0 =A0 } > =A0 =A0 =A0 =A0 } else { > - =A0 =A0 =A0 =A0 =A0 =A0return lookupContext(initialContextFactory, prov= iderUrl, useAuth, securityPrincipal, securityCredentials); > + =A0 =A0 =A0 =A0 =A0 =A0return lookupContextNoCache(initialContextFactor= y, providerUrl, useAuth, securityPrincipal, securityCredentials); > =A0 =A0 =A0 =A0 } > =A0 =A0 } > > =A0 =A0 /** > =A0 =A0 =A0* clear all the InitialContext objects. > + =A0 =A0 * @deprecated No more caching of {@link Context}s > =A0 =A0 =A0*/ > + =A0 =A0@Deprecated > =A0 =A0 public static void close() { > =A0 =A0 =A0 =A0 for (Context ctx : MAP.values()) { > =A0 =A0 =A0 =A0 =A0 =A0 try { > > Modified: jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protoco= l/jms/client/Publisher.java > URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/o= rg/apache/jmeter/protocol/jms/client/Publisher.java?rev=3D1185853&r1=3D1185= 852&r2=3D1185853&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- 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 Tue Oct 18 20:58:08 2011 > @@ -176,5 +176,6 @@ public class Publisher implements Closea > =A0 =A0 =A0 =A0 Utils.close(producer, log); > =A0 =A0 =A0 =A0 Utils.close(session, log); > =A0 =A0 =A0 =A0 Utils.close(connection, log); > + =A0 =A0 =A0 =A0Utils.close(ctx, log); > =A0 =A0 } > =A0} > > Modified: jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protoco= l/jms/client/ReceiveSubscriber.java > URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/o= rg/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java?rev=3D1185853&r= 1=3D1185852&r2=3D1185853&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- 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 Tue Oct 18 20:58:08 2011 > @@ -154,8 +154,9 @@ public class ReceiveSubscriber implement > =A0 =A0 =A0 =A0 =A0 =A0 String durableSubscriptionId, String clientId, St= ring jmsSelector, boolean useAuth, > =A0 =A0 =A0 =A0 =A0 =A0 String securityPrincipal, String securityCredenti= als, boolean useMessageListener) throws NamingException, JMSException { > =A0 =A0 =A0 =A0 boolean initSuccess =3D false; > + =A0 =A0 =A0 =A0Context ctx =3D null; > =A0 =A0 =A0 =A0 try{ > - =A0 =A0 =A0 =A0 =A0 =A0Context ctx =3D InitialContextFactory.getContext= (useProps, > + =A0 =A0 =A0 =A0 =A0 =A0ctx =3D InitialContextFactory.getContext(useProp= s, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 initialContextFactory, providerUr= l, useAuth, securityPrincipal, securityCredentials); > =A0 =A0 =A0 =A0 =A0 =A0 CONN =3D Utils.getConnection(ctx, connfactory); > =A0 =A0 =A0 =A0 =A0 =A0 if(!isEmpty(clientId)) { > @@ -181,6 +182,7 @@ public class ReceiveSubscriber implement > =A0 =A0 =A0 =A0 =A0 =A0 if(!initSuccess) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 close(); > =A0 =A0 =A0 =A0 =A0 =A0 } > + =A0 =A0 =A0 =A0 =A0 =A0Utils.close(ctx, log); > =A0 =A0 =A0 =A0 } > =A0 =A0 } > > > Modified: jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protoco= l/jms/sampler/PublisherSampler.java > URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/o= rg/apache/jmeter/protocol/jms/sampler/PublisherSampler.java?rev=3D1185853&r= 1=3D1185852&r2=3D1185853&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- 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 Tue Oct 18 20:58:08 2011 > @@ -26,19 +26,16 @@ import javax.jms.JMSException; > =A0import javax.jms.Message; > =A0import javax.naming.NamingException; > > -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; > =A0import org.apache.jmeter.engine.event.LoopIterationEvent; > - > =A0import org.apache.jmeter.protocol.jms.Utils; > -import org.apache.jmeter.protocol.jms.control.gui.JMSPublisherGui; > =A0import org.apache.jmeter.protocol.jms.client.ClientPool; > -import org.apache.jmeter.protocol.jms.client.InitialContextFactory; > =A0import org.apache.jmeter.protocol.jms.client.Publisher; > - > +import org.apache.jmeter.protocol.jms.control.gui.JMSPublisherGui; > +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; > =A0import org.apache.jorphan.logging.LoggingManager; > =A0import org.apache.log.Logger; > > @@ -97,7 +94,6 @@ public class PublisherSampler extends Ba > =A0 =A0 public void testEnded() { > =A0 =A0 =A0 =A0 log.debug("PublisherSampler.testEnded called"); > =A0 =A0 =A0 =A0 ClientPool.clearClient(); > - =A0 =A0 =A0 =A0InitialContextFactory.close(); > =A0 =A0 } > > =A0 =A0 public void testStarted() { > > Modified: jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protoco= l/jms/sampler/SubscriberSampler.java > URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/o= rg/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java?rev=3D1185853&= r1=3D1185852&r2=3D1185853&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- 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 Tue Oct 18 20:58:08 2011 > @@ -27,7 +27,6 @@ import javax.naming.NamingException; > > =A0import org.apache.jmeter.engine.event.LoopIterationEvent; > =A0import org.apache.jmeter.protocol.jms.Utils; > -import org.apache.jmeter.protocol.jms.client.InitialContextFactory; > =A0import org.apache.jmeter.protocol.jms.client.ReceiveSubscriber; > =A0import org.apache.jmeter.protocol.jms.control.gui.JMSSubscriberGui; > =A0import org.apache.jmeter.samplers.Interruptible; > @@ -415,7 +414,7 @@ public class SubscriberSampler extends B > =A0 =A0 =A0* {@inheritDoc} > =A0 =A0 =A0*/ > =A0 =A0 public void testEnded() { > - =A0 =A0 =A0 =A0InitialContextFactory.close(); > + =A0 =A0 =A0 =A0// NOOP > =A0 =A0 } > > =A0 =A0 /** > > Modified: jakarta/jmeter/trunk/xdocs/changes.xml > URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?= rev=3D1185853&r1=3D1185852&r2=3D1185853&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- jakarta/jmeter/trunk/xdocs/changes.xml (original) > +++ jakarta/jmeter/trunk/xdocs/changes.xml Tue Oct 18 20:58:08 2011 > @@ -97,6 +97,7 @@ Mirror server now uses default port 8081 > =A0<li>Bug 51996 - JMS Initial Context leak newly created Context when Mu= ltiple Thread enter InitialContextFactory#lookupContext at the same time</l= i> > =A0<li>Bug 51691 - Authorization does not work for JMS Publisher and JMS = Subscriber</li> > =A0<li>Bug 52036 - Durable Subscription fails with ActiveMQ due to missin= g clientId field</li> > +<li>Bug 52044 - JMS Subscriber used with many threads leads to javax.nam= ing.NamingException: Something already bound with ActiveMQ</li> > =A0</ul> > > =A0<h3>Controllers</h3> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >