User: d_jencks
  Date: 02/02/14 20:17:05

  Modified:    src/main/org/jboss/test/perf/test PerfTest.java
  Log:
  Workaround for bug 516684. Set context classloader to be classloader of class of 
object we are trying to look up in jndi before lookup.  Proxy is then generated with 
correct classloader.
  
  Revision  Changes    Path
  1.3       +91 -64    jbosstest/src/main/org/jboss/test/perf/test/PerfTest.java
  
  Index: PerfTest.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosstest/src/main/org/jboss/test/perf/test/PerfTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PerfTest.java     14 Feb 2002 06:27:53 -0000      1.2
  +++ PerfTest.java     15 Feb 2002 04:17:05 -0000      1.3
  @@ -26,7 +26,7 @@
    *showing the output of each test run.
    
    @author [EMAIL PROTECTED]
  - @version $Revision: 1.2 $
  + @version $Revision: 1.3 $
    */
   public class PerfTest implements PerfTestMBean
   {
  @@ -94,85 +94,112 @@
      public void testTimings(StringBuffer results) throws Exception
      {
         results.append("\n+++ testTimings()");
  -      Object obj = new InitialContext().lookup("Probe");
  -      // Print out some codebase info for the ProbeHome
  -      Class homeClass = obj.getClass();
  -      ClassLoader cl = homeClass.getClassLoader();
  -      results.append("\nProbeHome.ClassLoader="+cl);
  -      ClassLoader parent = cl;
  -      while( parent != null )
  -      {
  -         results.append("\n.."+parent);
  -         if( parent instanceof URLClassLoader )
  +      ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
  +      
Thread.currentThread().setContextClassLoader(ProbeHome.class.getClassLoader());
  +      try 
  +      {
  +         Object obj = new InitialContext().lookup("Probe");
  +         // Print out some codebase info for the ProbeHome
  +         Class homeClass = obj.getClass();
  +         ClassLoader cl = homeClass.getClassLoader();
  +         results.append("\nProbeHome.ClassLoader="+cl);
  +         ClassLoader parent = cl;
  +         while( parent != null )
            {
  -            URLClassLoader ucl = (URLClassLoader) parent;
  -            URL[] urls = ucl.getURLs();
  -            int length = urls != null ? urls.length : 0;
  -            for(int u = 0; u < length; u ++)
  +            results.append("\n.."+parent);
  +            if( parent instanceof URLClassLoader )
               {
  -               results.append("\n...."+urls[u]);
  +               URLClassLoader ucl = (URLClassLoader) parent;
  +               URL[] urls = ucl.getURLs();
  +               int length = urls != null ? urls.length : 0;
  +               for(int u = 0; u < length; u ++)
  +               {
  +                  results.append("\n...."+urls[u]);
  +               }
               }
  +            if( parent != null )
  +               parent = parent.getParent();
            }
  -         if( parent != null )
  -            parent = parent.getParent();
  -      }
  -      results.append("\nProbeHome Interfaces:");
  -      Class[] ifaces = homeClass.getInterfaces();
  -      for(int i = 0; i < ifaces.length; i ++)
  -      {
  -         results.append("\n++"+ifaces[i]);
  -         ProtectionDomain pd = ifaces[i].getProtectionDomain();
  -         CodeSource cs = pd.getCodeSource();
  -         if( cs != null )
  -            results.append("\n++++CodeSource: "+cs);
  +         results.append("\nProbeHome Interfaces:");
  +         Class[] ifaces = homeClass.getInterfaces();
  +         for(int i = 0; i < ifaces.length; i ++)
  +         {
  +            results.append("\n++"+ifaces[i]);
  +            ProtectionDomain pd = ifaces[i].getProtectionDomain();
  +            CodeSource cs = pd.getCodeSource();
  +            if( cs != null )
  +               results.append("\n++++CodeSource: "+cs);
  +            else
  +               results.append("\n++++Null CodeSource");
  +         }
  +         CodeSource homeCS = ProbeHome.class.getProtectionDomain().getCodeSource();
  +         if( homeCS != null )
  +            results.append("\nPerfTest ProbHome CodeSource: "+homeCS);
            else
  -            results.append("\n++++Null CodeSource");
  +            results.append("\nPerfTest ProbHome CodeSource is NULL");
  +         
  +         ProbeHome home = (ProbeHome) obj;
  +         results.append("\n\nFound ProbeHome @ jndiName=Probe");
  +         Probe bean = home.create();
  +         results.append("\nCreated Probe");
  +         warmup(bean, results);
  +         noop(bean, results);
  +         ping(bean, results);
  +         echo(bean, results);
         }
  -      CodeSource homeCS = ProbeHome.class.getProtectionDomain().getCodeSource();
  -      if( homeCS != null )
  -         results.append("\nPerfTest ProbHome CodeSource: "+homeCS);
  -      else
  -         results.append("\nPerfTest ProbHome CodeSource is NULL");
  -
  -      ProbeHome home = (ProbeHome) obj;
  -      results.append("\n\nFound ProbeHome @ jndiName=Probe");
  -      Probe bean = home.create();
  -      results.append("\nCreated Probe");
  -      warmup(bean, results);
  -      noop(bean, results);
  -      ping(bean, results);
  -      echo(bean, results);
  +      finally
  +      {
  +         Thread.currentThread().setContextClassLoader(oldCl);
  +      } // end of finally
      }
   
      public void testTimingsCMT(StringBuffer results) throws Exception
      {
         results.append("\n+++ testTimingsCMT()");
  -      Object obj = new InitialContext().lookup("ProbeCMT");
  -      ProbeHome home = (ProbeHome) obj;
  -      results.append("\nFound ProbeHome @ jndiName=ProbeCMT");
  -      Probe bean = home.create();
  -      results.append("\nCreated ProbeCMT");
  -      warmup(bean, results);
  -      noop(bean, results);
  -      ping(bean, results);
  -      echo(bean, results);
  +      ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
  +      
Thread.currentThread().setContextClassLoader(ProbeHome.class.getClassLoader());
  +      try 
  +      {
  +         Object obj = new InitialContext().lookup("ProbeCMT");
  +         ProbeHome home = (ProbeHome) obj;
  +         results.append("\nFound ProbeHome @ jndiName=ProbeCMT");
  +         Probe bean = home.create();
  +         results.append("\nCreated ProbeCMT");
  +         warmup(bean, results);
  +         noop(bean, results);
  +         ping(bean, results);
  +         echo(bean, results);
  +      }
  +      finally
  +      {
  +         Thread.currentThread().setContextClassLoader(oldCl);
  +      } // end of finally
      }
   
      public void testTxTimings(StringBuffer results) throws Exception
      {
         results.append("\n+++ testTxTimings()");
  -      Object obj = new InitialContext().lookup("TxSession");
  -      TxSessionHome home = (TxSessionHome) obj;
  -      results.append("\nFound TxSession @ jndiName=TxSession");
  -      TxSession bean = home.create();
  -      results.append("\nCreated TxSession");
  -      txRequired(bean, results);
  -      txRequiresNew(bean, results);
  -      txSupports(bean, results);
  -      txNotSupported(bean, results);
  -      requiredToSupports(bean, results);
  -      requiredToMandatory(bean, results);
  -      requiredToRequiresNew(bean, results);
  +      ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
  +      
Thread.currentThread().setContextClassLoader(TxSessionHome.class.getClassLoader());
  +      try 
  +      {
  +         Object obj = new InitialContext().lookup("TxSession");
  +         TxSessionHome home = (TxSessionHome) obj;
  +         results.append("\nFound TxSession @ jndiName=TxSession");
  +         TxSession bean = home.create();
  +         results.append("\nCreated TxSession");
  +         txRequired(bean, results);
  +         txRequiresNew(bean, results);
  +         txSupports(bean, results);
  +         txNotSupported(bean, results);
  +         requiredToSupports(bean, results);
  +         requiredToMandatory(bean, results);
  +         requiredToRequiresNew(bean, results);
  +      }
  +      finally
  +      {
  +         Thread.currentThread().setContextClassLoader(oldCl);
  +      } // end of finally
      }
   
      private void warmup(Probe bean, StringBuffer results) throws Exception
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to