On 08.11.2014 17:59, Konstantin Kolinko wrote:
2014-11-06 19:33 GMT+03:00 Matthias Keller <matthias.kel...@ergon.ch>:
Hi

We have a spurious problem which still happened quite a few times but is not
really reproducible since it only occurs on every 1000. startup or
something.
The effect is that tomcat scans all class files but somewhere something goes
wrong and it tries to load an invalid class name which is often a
combination of two effectively existing class names.
It is confimed to occur on 7.0.55 with Java7, however it's likely not to be
bound to a single version as we've seen it at different sites lately.

example with to garbled classes: (3.class being the first, which must come
from SomeClass$3.class and the second one being something awefully
beautiful:
ConfigEdiAtourtAhpepnltiiccaattiioonn$SAtpaptlei$cIadteinotniCfo^@^@iigeLro.acdlLaissstener.class
)

INFO: Starting Servlet Engine: Apache Tomcat/7.0.55
Oct 28, 2014 10:13:15 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /opt/tomcat/webapps/test-admin.war
Oct 28, 2014 10:13:22 AM org.apache.catalina.startup.ContextConfig
processAnnotationsJndi
SEVERE: Unable to process resource element
[jndi:/localhost/test-admin/WEB-INF/classes/ch/something/3.class] for
annotations
java.io.FileNotFoundException:
jndi:/localhost/test-admin/WEB-INF/classes/ch/something/3.class
         at
org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:389)
         at
org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:1994)
         at
org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:1986)
         at
org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:1986)
         at
org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:1986)
         at
org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:1986)
         at
org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1902)
         at
org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1298)
         at
org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:876)

At that place Tomcat essentially asks you hard drive for the list of
files in WEB-INF/classes directory and opens each file that has name
ending with ".class".

Essentially the directory listing returns some garbage. I do not think
that Tomcat code is responsible for that.

Is your hardware OK? Is it a local harddrive, or a network one?
Thanks for all your input. Given the fact this has happened recently on three totally different systems and OSes (no network drives involved), I'd say it would be strange if there was a hardware defect - and also there is none known on any of the three systems, however this is something I'll further investigate. I'm not very familiar with the syntax here, does the jndi: URL refer to a file in the tomcat's work/localhost/... directory? we have unpackWAR=false, or is the class read directly from the WAR file?

Thanks

Matt

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to