https://issues.apache.org/bugzilla/show_bug.cgi?id=51586

             Bug #: 51586
           Summary: ContextConfig.checkHandlesTypes() doesn't check for
                    VerifyError when loading class
           Product: Tomcat 7
           Version: 7.0.19
          Platform: PC
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: you...@gmail.com
    Classification: Unclassified


I've recently upgraded to Tomcat 7 and used to run with
metadata-complete="true" in my web.xml.  With Servlet 3 I decided I'd try some
of the annotation features.  When I turned off metadata-complete I got a
VerifyError trying to load one of my classes.  This class is meant to only work
on Tomcat 6 so the fact Tomcat 7 cannot load this class is expected.  What is
not expected is that Tomcat 7 doesn't just ignore the error and continue
scanning for annotations.  Looking in ContextConfig.checkHandlesTypes() I
checks for virtually every type of loading failure except VerifyError.  Perhaps
VerifyError should be added to this list?

java.lang.VerifyError: class
org.lds.stack.tomcat.decrypt.DecryptingStandardContext overrides final method
start.()V
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1665)
    at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    at
org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2006)
    at
org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1969)
    at
org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1858)
    at
org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1826)
    at
org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1812)
    at
org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1306)
    at
org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:896)
    at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:322)
    at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
    at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5103)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607)
    at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:633)
    at
org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:558)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322)
    at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
    at
org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:379)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:324)
    at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1041)
    at
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
    at
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at
org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:621)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to