Could be a good short term solution.  I'm all for the "quick fix to buy time" 
strategy.

The xbean-finder suggestion would be great long-term if we could work that out. 
 We could then get consistent include/exclude support for embedded and tomcat.  
As we ideally won't have to scan twice like we do now.

On a related scanning note, I hope we can get Meta-Annotation support worked in 
for Servlets too.  That will probably require deeper changes though.  Might not 
be possible very easily.  Anyway, it would require xbean-finder so if that's 
there already, could be good.


-David

On Apr 1, 2011, at 3:15 PM, Jonathan Gallimore wrote:

> Looks like we can specify some jars to exclude on StandardJarScanner - I'm
> going to experiment with that and see if that works. Should hopefully get it
> done tomorrow morning.
> 
> Jon
> 
> On Fri, Apr 1, 2011 at 10:21 PM, Jonathan Gallimore <
> [email protected]> wrote:
> 
>> Sorry about that! It looks like not scanning the classloader classes is not
>> quite right. Seems like we've identified why we're loading so many classes
>> though. I was thinking that maybe we could swap the JarScanner in the
>> StandardContext for one that either filters out our jar files, or uses
>> xbean-finder. What do you think?
>> 
>> Jon
>> 
>> 
>> On Fri, Apr 1, 2011 at 9:00 PM, David Blevins <[email protected]>wrote:
>> 
>>> We're definitely heading in the right direction.  We might need to tweak
>>> our JSF support a bit.  See tck@
>>> 
>>> Side note, check out the BackportUtil class.  Probably can merge that
>>> TomcatHelper right in.
>>> 
>>> 
>>> -David
>>> 
>>> On Mar 31, 2011, at 4:19 PM, [email protected] wrote:
>>> 
>>>> Author: jgallimore
>>>> Date: Thu Mar 31 23:19:14 2011
>>>> New Revision: 1087503
>>>> 
>>>> URL: http://svn.apache.org/viewvc?rev=1087503&view=rev
>>>> Log:
>>>> stop tomcat scanning the whole classpath looking for web.xml fragments
>>>> 
>>>> Modified:
>>>> 
>>> openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/GlobalListenerSupport.java
>>>> 
>>> openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java
>>>> 
>>>> Modified:
>>> openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/GlobalListenerSupport.java
>>>> URL:
>>> http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/GlobalListenerSupport.java?rev=1087503&r1=1087502&r2=1087503&view=diff
>>>> 
>>> ==============================================================================
>>>> ---
>>> openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/GlobalListenerSupport.java
>>> (original)
>>>> +++
>>> openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/GlobalListenerSupport.java
>>> Thu Mar 31 23:19:14 2011
>>>> @@ -28,6 +28,7 @@ import org.apache.catalina.core.Standard
>>>> import org.apache.catalina.core.StandardHost;
>>>> import org.apache.catalina.core.StandardServer;
>>>> import org.apache.openejb.tomcat.loader.TomcatHelper;
>>>> +import org.apache.tomcat.JarScanner;
>>>> 
>>>> import java.beans.PropertyChangeEvent;
>>>> import java.beans.PropertyChangeListener;
>>>> @@ -113,6 +114,10 @@ public class GlobalListenerSupport imple
>>>>                contextListener.afterStop(standardContext);
>>>>            } else if (DESTROY_EVENT.equals(type) ||
>>> Lifecycle.AFTER_DESTROY_EVENT.equals(type)) {
>>>>                contextListener.destroy(standardContext);
>>>> +            } else if (Lifecycle.CONFIGURE_START_EVENT.equals(type)) {
>>>> +             if (TomcatHelper.isTomcat7()) {
>>>> +                     TomcatHelper.configureJarScanner(standardContext);
>>>> +             }
>>>>            }
>>>>        } else if (source instanceof StandardHost) {
>>>>            StandardHost standardHost = (StandardHost) source;
>>>> 
>>>> Modified:
>>> openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java
>>>> URL:
>>> http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java?rev=1087503&r1=1087502&r2=1087503&view=diff
>>>> 
>>> ==============================================================================
>>>> ---
>>> openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java
>>> (original)
>>>> +++
>>> openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java
>>> Thu Mar 31 23:19:14 2011
>>>> @@ -130,4 +130,14 @@ public class TomcatHelper {
>>>>      public static boolean isTomcat7() {
>>>>              return
>>> System.getProperty("tomcat.version").startsWith("7.");
>>>>      }
>>>> +
>>>> +     public static void configureJarScanner(StandardContext
>>> standardContext) {
>>>> +             try {
>>>> +                     Object jarScanner =
>>> StandardContext.class.getMethod("getJarScanner").invoke(standardContext);
>>>> +
>>> jarScanner.getClass().getMethod("setScanClassPath",
>>> Boolean.TYPE).invoke(jarScanner, false);
>>>> +             } catch (Exception e) {
>>>> +                     // ignore
>>>> +                     e.printStackTrace();
>>>> +             }
>>>> +     }
>>>> }
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 

Reply via email to