geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kevan Miller <kevan.mil...@gmail.com>
Subject Re: StringIndexOutOfBoundsException in getClassFileName
Date Fri, 07 Nov 2008 14:45:13 GMT
Hi Doug,

On Nov 7, 2008, at 1:29 AM, Doug Reeder wrote:

> I have an app (developed in NetBeans) which passes all the verifier  
> tests and runs fine in GlassFish.  I'm able to deploy and start it  
> running in Geronimo (2.1.3, Jetty), but when I try to actually  
> access one of the JSPs, I get the following error:
> java.lang.StringIndexOutOfBoundsException: String index out of  
> range: 0
> 	at java.lang.String.charAt(String.java:558)
> 	at  
> org.apache.jasper.compiler.JspUtil.makeJavaIdentifier(JspUtil.java: 
> 962)
> 	at  
> org 
> .apache 
> .jasper 
> .JspCompilationContext 
> .getServletClassName(JspCompilationContext.java:371)
> 	at  
> org 
> .apache 
> .jasper 
> .JspCompilationContext.getClassFileName(JspCompilationContext.java: 
> 511)
> 	at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:403)
> 	at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:351)
> 	at  
> org 
> .apache 
> .jasper.JspCompilationContext.compile(JspCompilationContext.java:582)
> 	at  
> org 
> .apache 
> .jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:312)
> 	at  
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 
> 342)
> 	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
> 	at  
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
> 	at  
> org 
> .apache 
> .geronimo 
> .jetty6 
> .InternalJettyServletHolder.handle(InternalJettyServletHolder.java:65)
> 	at  
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 
> 362)
> 	at  
> org 
> .mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 
> 216)
> 	at  
> org 
> .apache 
> .geronimo 
> .jetty6 
> .handler.JettySecurityHandler.handle(JettySecurityHandler.java:114)
> 	at  
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 
> 181)
> 	at  
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 
> 726)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 
> 405)
> 	at org.apache.geronimo.jetty6.handler.TwistyWebAppContext.access 
> $101(TwistyWebAppContext.java:40)
> 	at org.apache.geronimo.jetty6.handler.TwistyWebAppContext 
> $TwistyHandler.handle(TwistyWebAppContext.java:65)
> 	at  
> org 
> .apache 
> .geronimo 
> .jetty6 
> .handler 
> .ThreadClassloaderHandler.handle(ThreadClassloaderHandler.java:46)
> 	at  
> org 
> .apache 
> .geronimo 
> .jetty6 
> .handler.InstanceContextHandler.handle(InstanceContextHandler.java:58)
> 	at  
> org 
> .apache 
> .geronimo 
> .jetty6 
> .handler.UserTransactionHandler.handle(UserTransactionHandler.java:48)
> 	at  
> org 
> .apache 
> .geronimo 
> .jetty6 
> .handler.ComponentContextHandler.handle(ComponentContextHandler.java: 
> 47)
> 	at  
> org 
> .apache 
> .geronimo 
> .jetty6.handler.TwistyWebAppContext.handle(TwistyWebAppContext.java: 
> 59)
> 	at  
> org 
> .mortbay 
> .jetty 
> .handler 
> .ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
> 	at  
> org 
> .mortbay 
> .jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at  
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 
> 139)
> 	at org.mortbay.jetty.Server.handle(Server.java:324)
> 	at  
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 
> 505)
> 	at org.mortbay.jetty.HttpConnection 
> $RequestHandler.headerComplete(HttpConnection.java:828)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
> 	at  
> org 
> .mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java: 
> 395)
> 	at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:214)
> 	at org.apache.geronimo.pool.ThreadPool 
> $ContextClassLoaderRunnable.run(ThreadPool.java:344)
> 	at java.util.concurrent.ThreadPoolExecutor 
> $Worker.runTask(ThreadPoolExecutor.java:650)
> 	at java.util.concurrent.ThreadPoolExecutor 
> $Worker.run(ThreadPoolExecutor.java:675)
> 	at java.lang.Thread.run(Thread.java:613)
>
> 1) Is there an analog to the verifier tool for Geronimo?

No.

>
> 2) Where should I be looking to fix this? None of the source code  
> files in the stack trace are mine!

Tomcat source code, in this case. Jetty uses the Jasper compiler for  
JSP compilation. In particular -- http://svn.apache.org/viewvc/tomcat/tc6.0.x/tags/TOMCAT_6_0_18/java/org/apache/jasper/JspCompilationContext.java?revision=678601&view=markup

What's the URI of your JSP?

Tomcat is looking for the last '/' character in your URI, creating a  
substring based on the remainder of the URI, and trying to create a  
unique java classname based on this substring. In your case, the  
substring is a zero length string. Massaging your uri should work- 
around the problem...

--kevan


Mime
View raw message