[jboss-cvs] JBossAS SVN: r72740 - in trunk/testsuite: src/main/org/jboss/test/cluster/classloader/leak/test and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Apr 25 16:22:57 EDT 2008


Author: bstansberry at jboss.com
Date: 2008-04-25 16:22:57 -0400 (Fri, 25 Apr 2008)
New Revision: 72740

Added:
   trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/FieldGranularityClassloaderLeakUnitTestCase.java
   trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ReplicableClassesClassloaderLeakUnitTestCase.java
   trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingNoReplicableServlet.java
   trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingServlet.java
Removed:
   trunk/testsuite/src/resources/cluster/classloader/leak/war/nocluster/WEB-INF/
Modified:
   trunk/testsuite/imports/sections/cluster.xml
   trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ClassloaderLeakUnitTestCase.java
   trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/ReplicableServlet.java
   trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/SimpleServlet.java
Log:
[JBAS-5405] Add classloader leak tests for simple use of @Replicable classes

Modified: trunk/testsuite/imports/sections/cluster.xml
===================================================================
--- trunk/testsuite/imports/sections/cluster.xml	2008-04-25 17:26:05 UTC (rev 72739)
+++ trunk/testsuite/imports/sections/cluster.xml	2008-04-25 20:22:57 UTC (rev 72740)
@@ -508,18 +508,18 @@
             <include name="org/jboss/test/cluster/classloader/leak/web/aop/*"/>
          </classes>
        </war>
-      <war destfile="${build.lib}/cluster-clleak-field-no-replicable.war"
-          webxml="${build.resources}/cluster/classloader/leak/war/field/noreplicable/WEB-INF/web.xml">
-        <webinf dir="${build.resources}/cluster/classloader/leak/war/field/WEB-INF">
-           <include name="jboss-web.xml"/>
-        </webinf>
-        <classes dir="${build.classes}">
-           <include name="org/jboss/test/classloader/leak/web/*"/>
-           <include name="org/jboss/test/cluster/classloader/leak/web/*"/>
-        </classes>
-      </war>
-       <war destfile="${build.lib}/cluster-clleak-nocluster-replicable.war"
-           webxml="${build.resources}/cluster/classloader/leak/war/nocluster/WEB-INF/web.xml">
+       <war destfile="${build.lib}/cluster-clleak-field-no-replicable.war"
+           webxml="${build.resources}/cluster/classloader/leak/war/field/noreplicable/WEB-INF/web.xml">
+         <webinf dir="${build.resources}/cluster/classloader/leak/war/field/WEB-INF">
+            <include name="jboss-web.xml"/>
+         </webinf>
+         <classes dir="${build.classes}">
+            <include name="org/jboss/test/classloader/leak/web/*"/>
+            <include name="org/jboss/test/cluster/classloader/leak/web/*"/>
+         </classes>
+       </war>
+       <war destfile="${build.lib}/cluster-clleak-nocache-replicable.war"
+           webxml="${build.resources}/cluster/classloader/leak/war/nocache/WEB-INF/web.xml">
          <webinf dir="${build.resources}/cluster/classloader/leak/war/WEB-INF">
             <include name="jboss-web.xml"/>
          </webinf>
@@ -528,7 +528,24 @@
             <include name="org/jboss/test/cluster/classloader/leak/web/*"/>
             <include name="org/jboss/test/cluster/classloader/leak/web/aop/*"/>
          </classes>
+         <fileset dir="${build.resources}/cluster/classloader/leak/war/nocache">
+           <include name="simple.jsp"/>
+         </fileset>
        </war>
+       <war destfile="${build.lib}/cluster-clleak-nocache-no-replicable.war"
+           webxml="${build.resources}/cluster/classloader/leak/war/nocache/noreplicable/WEB-INF/web.xml">
+         <webinf dir="${build.resources}/cluster/classloader/leak/war/WEB-INF">
+            <include name="jboss-web.xml"/>
+         </webinf>
+         <classes dir="${build.classes}">
+            <include name="org/jboss/test/classloader/leak/web/*"/>
+            <include name="org/jboss/test/cluster/classloader/leak/web/*"/>
+            <include name="org/jboss/test/cluster/classloader/leak/web/aop/*"/>
+         </classes>
+         <fileset dir="${build.resources}/cluster/classloader/leak/war/nocache">
+           <include name="simple.jsp"/>
+         </fileset>
+       </war>
    	 <war destfile="${build.lib}/cluster-clleak-simple-ejb.war"
            webxml="${build.resources}/cluster/classloader/leak/war/ejb2/WEB-INF/web.xml">
          <classes dir="${build.classes}">

Modified: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ClassloaderLeakUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ClassloaderLeakUnitTestCase.java	2008-04-25 17:26:05 UTC (rev 72739)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ClassloaderLeakUnitTestCase.java	2008-04-25 20:22:57 UTC (rev 72740)
@@ -45,10 +45,6 @@
 public class ClassloaderLeakUnitTestCase extends ClassloaderLeakTestBase
 {
    private static final String SIMPLE_WAR = "cluster-clleak-simple.war";
-   private static final String SIMPLE_REPLICABLE_WAR = "cluster-clleak-simple-replicable.war";
-   private static final String FIELD_WAR = "cluster-clleak-field.war";
-   private static final String FIELD_NO_REPLICABLE_WAR = "cluster-clleak-field-no-replicable.war";
-   private static final String NO_CLUSTER_REPLICABLE_WAR = "cluster-clleak-nocluster-replicable.war";
    private static final String SIMPLE_EJB = "cluster-clleak-ejb.jar"; 
    private static final String SIMPLE_EAR = "cluster clleak-simple.ear"; 
    private static final String SIMPLE_ISOLATED_EAR = "cluster-clleak-simple-isolated.ear";
@@ -74,29 +70,9 @@
       return getDeploySetup(ClassloaderLeakUnitTestCase.class, "classloader-leak-test.sar");
    }
    
-//   public void testSimpleWar() throws Exception
-//   {
-//      warTest(SIMPLE_WAR);
-//   }
-//   
-//   public void testSimpleReplicableWar() throws Exception
-//   {
-//      warTest(SIMPLE_REPLICABLE_WAR);
-//   }
-//   
-//   public void testFieldWar() throws Exception
-//   {
-//      warTest(FIELD_WAR);
-//   }
-//   
-//   public void testFieldNoReplicableWar() throws Exception
-//   {
-//      warTest(FIELD_NO_REPLICABLE_WAR);
-//   }
-   
-   public void testNoClusterReplicableWar() throws Exception
+   public void testSimpleWar() throws Exception
    {
-      warTest(NO_CLUSTER_REPLICABLE_WAR);
+      warTest(SIMPLE_WAR);
    }
    
 //   public void testSimpleEjb() throws Exception

Added: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/FieldGranularityClassloaderLeakUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/FieldGranularityClassloaderLeakUnitTestCase.java	                        (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/FieldGranularityClassloaderLeakUnitTestCase.java	2008-04-25 20:22:57 UTC (rev 72740)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.cluster.classloader.leak.test;
+
+import junit.framework.Test;
+
+/**
+ * Test for classloader leaks following deployment, use and undeployment
+ * of various packages (wars, ejb jars and ears with and without scoped
+ * classloaders).
+ * <p/>
+ * If these tests are run with JBoss Profiler's jbossAgent (.dll or .so) on the path
+ * and the AS is started with -agentlib:jbossAgent, in case of classloader leakage
+ * an extensive report will be logged to the server log, showing the path to root of
+ * all references to the classloader.
+ * 
+ * @author Brian Stansberry
+ */
+public class FieldGranularityClassloaderLeakUnitTestCase extends ClassloaderLeakTestBase
+{
+   private static final String SIMPLE_REPLICABLE_WAR = "cluster-clleak-simple-replicable.war";
+   private static final String FIELD_WAR = "cluster-clleak-field.war";
+   private static final String FIELD_NO_REPLICABLE_WAR = "cluster-clleak-field-no-replicable.war";
+   
+   
+   public FieldGranularityClassloaderLeakUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+
+   public static Test suite() throws Exception
+   {
+      return getDeploySetup(FieldGranularityClassloaderLeakUnitTestCase.class, "classloader-leak-test.sar");
+   }
+   
+   public void testSimpleReplicableWar() throws Exception
+   {
+      warTest(SIMPLE_REPLICABLE_WAR);
+   }
+   
+   public void testFieldWar() throws Exception
+   {
+      warTest(FIELD_WAR);
+   }
+   
+   public void testFieldNoReplicableWar() throws Exception
+   {
+      warTest(FIELD_NO_REPLICABLE_WAR);
+   }
+   
+   protected String getWarContextPath()
+   {
+      return "clustered-clleak";
+   }
+   
+   protected String[] getEjbKeys()
+   {
+      return new String[]{};
+   }
+   
+   protected void makeEjbRequests() throws Exception
+   {
+      throw new UnsupportedOperationException("No EJB tests");
+   }
+}

Added: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ReplicableClassesClassloaderLeakUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ReplicableClassesClassloaderLeakUnitTestCase.java	                        (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ReplicableClassesClassloaderLeakUnitTestCase.java	2008-04-25 20:22:57 UTC (rev 72740)
@@ -0,0 +1,93 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.cluster.classloader.leak.test;
+
+import junit.framework.Test;
+
+/**
+ * Test for classloader leaks following deployment, use and undeployment
+ * of wars that instantiate AOP-prepared classes. These wars do very little
+ * with the classes; just instantiate some objects, populate fields, etc; don't
+ * even cache the objects in a session.  Basically testing for pure AOP issues.
+ * <p/>
+ * If these tests are run with JBoss Profiler's jbossAgent (.dll or .so) on the path
+ * and the AS is started with -agentlib:jbossAgent, in case of classloader leakage
+ * an extensive report will be logged to the server log, showing the path to root of
+ * all references to the classloader.
+ * 
+ * @author Brian Stansberry
+ */
+public class ReplicableClassesClassloaderLeakUnitTestCase 
+   extends org.jboss.test.classloader.leak.test.ClassloaderLeakTestBase
+{
+   private static final String NO_CACHE_REPLICABLE_WAR = "cluster-clleak-nocache-replicable.war";
+   private static final String NO_CACHE_NO_REPLICABLE_WAR = "cluster-clleak-nocache-no-replicable.war";
+   
+   
+   public ReplicableClassesClassloaderLeakUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+
+   public static Test suite() throws Exception
+   {
+      return getDeploySetup(ReplicableClassesClassloaderLeakUnitTestCase.class, "classloader-leak-test.sar");
+   }
+   
+   /**
+    * Test with a version of the classes that haven't been aspectized. This
+    * is a form of "control" for the testNoCacheReplicableWar() test. 
+    * 
+    * @throws Exception
+    */
+   public void testNoCacheNoReplicableWar() throws Exception
+   {
+      warTest(NO_CACHE_NO_REPLICABLE_WAR);
+   }
+   
+   /**
+    * Test with a version of the classes that have been aopc prepared. This is
+    * the real test. 
+    * 
+    * @throws Exception
+    */
+   public void testNoCacheReplicableWar() throws Exception
+   {
+      warTest(NO_CACHE_REPLICABLE_WAR);
+   }
+   
+   protected String getWarContextPath()
+   {
+      return "clustered-clleak";
+   }
+   
+   protected String[] getEjbKeys()
+   {
+      return new String[]{};
+   }
+   
+   protected void makeEjbRequests() throws Exception
+   {
+      throw new UnsupportedOperationException("No EJB tests");
+   }
+}

Added: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingNoReplicableServlet.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingNoReplicableServlet.java	                        (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingNoReplicableServlet.java	2008-04-25 20:22:57 UTC (rev 72740)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.cluster.classloader.leak.web;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class NoCachingNoReplicableServlet extends HttpServlet
+{
+   private static final long serialVersionUID = 1L;
+
+   protected void doGet(HttpServletRequest req, HttpServletResponse res)
+      throws ServletException, IOException
+   {
+      org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET", Thread.currentThread().getContextClassLoader());
+      org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET_TCCL", Thread.currentThread().getContextClassLoader());
+      
+      Person ben = new Person();
+      Address addr = new Address();
+      addr.setZip(95123);
+      addr.setCity("San Jose");
+      ben.setAge(100);
+      ben.setName("Ben");
+      ben.setAddress(addr);
+      List languages = new ArrayList();
+      languages.add("Farsi");
+      ben.setLanguages(languages);
+      
+      res.setContentType("text/text");
+      PrintWriter writer = res.getWriter();
+      writer.println("WEBAPP");
+      writer.flush();
+   }
+   
+}

Added: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingServlet.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingServlet.java	                        (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingServlet.java	2008-04-25 20:22:57 UTC (rev 72740)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.cluster.classloader.leak.web;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.test.cluster.classloader.leak.web.aop.Address;
+import org.jboss.test.cluster.classloader.leak.web.aop.Person;
+
+public class NoCachingServlet extends HttpServlet
+{
+   private static final long serialVersionUID = 1L;
+
+   protected void doGet(HttpServletRequest req, HttpServletResponse res)
+      throws ServletException, IOException
+   {
+      org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET", Thread.currentThread().getContextClassLoader());
+      org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET_TCCL", Thread.currentThread().getContextClassLoader());
+      
+      Person ben = new Person();
+      Address addr = new Address();
+      addr.setZip(95123);
+      addr.setCity("San Jose");
+      ben.setAge(100);
+      ben.setName("Ben");
+      ben.setAddress(addr);
+      List languages = new ArrayList();
+      languages.add("Farsi");
+      ben.setLanguages(languages);
+      
+      res.setContentType("text/text");
+      PrintWriter writer = res.getWriter();
+      writer.println("WEBAPP");
+      writer.flush();
+   }
+   
+}

Modified: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/ReplicableServlet.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/ReplicableServlet.java	2008-04-25 17:26:05 UTC (rev 72739)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/ReplicableServlet.java	2008-04-25 20:22:57 UTC (rev 72740)
@@ -23,6 +23,8 @@
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
@@ -30,8 +32,6 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.jboss.test.cluster.classloader.leak.web.aop.Address;
 import org.jboss.test.cluster.classloader.leak.web.aop.Person;
 
@@ -45,9 +45,6 @@
       org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET", Thread.currentThread().getContextClassLoader());
       org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET_TCCL", Thread.currentThread().getContextClassLoader());
       
-      Log log = LogFactory.getLog("WEBAPP");
-      log.info("Logging from " + getClass().getName());
-      
       HttpSession session = req.getSession();
       Person ben = (Person) session.getAttribute("TEST_PERSON");
       if (ben == null)
@@ -59,11 +56,15 @@
          ben.setAge(100);
          ben.setName("Ben");
          ben.setAddress(addr);
+         List languages = new ArrayList();
+         languages.add("Farsi");
+         ben.setLanguages(languages);
          session.setAttribute("TEST_PERSON", ben);
       }
       else
       {
          ben.setAge(ben.getAge() + 1);
+         ben.getLanguages().add("Java");
       }
       
       res.setContentType("text/text");

Modified: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/SimpleServlet.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/SimpleServlet.java	2008-04-25 17:26:05 UTC (rev 72739)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/SimpleServlet.java	2008-04-25 20:22:57 UTC (rev 72740)
@@ -23,6 +23,8 @@
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
@@ -30,11 +32,6 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jboss.test.cluster.classloader.leak.web.Address;
-import org.jboss.test.cluster.classloader.leak.web.Person;
-
 public class SimpleServlet extends HttpServlet
 {
    private static final long serialVersionUID = 1L;
@@ -45,9 +42,6 @@
       org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET", Thread.currentThread().getContextClassLoader());
       org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET_TCCL", Thread.currentThread().getContextClassLoader());
       
-      Log log = LogFactory.getLog("WEBAPP");
-      log.info("Logging from " + getClass().getName());
-      
       HttpSession session = req.getSession();
       Person ben = (Person) session.getAttribute("TEST_PERSON");
       if (ben == null)
@@ -59,11 +53,15 @@
          ben.setAge(100);
          ben.setName("Ben");
          ben.setAddress(addr);
+         List languages = new ArrayList();
+         languages.add("Farsi");
+         ben.setLanguages(languages);
          session.setAttribute("TEST_PERSON", ben);
       }
       else
       {
          ben.setAge(ben.getAge() + 1);
+         ben.getLanguages().add("Java");
       }
       
       res.setContentType("text/text");




More information about the jboss-cvs-commits mailing list