Hi Nicholas,

The extra check seems like a good idea. I've checked in the change in SVN 1.1 
branch and SVN trunk.

Best regards,
Jerome Louvel
--
Restlet ~ Founder and Lead developer ~ http://www.restlet.org
Noelios Technologies ~ Co-founder ~ http://www.noelios.com
 

-----Message d'origine-----
De : Nicholas Brown [mailto:nibr...@us.ibm.com] 
Envoye : lundi 19 janvier 2009 16:44
A : discuss@restlet.tigris.org
Objet : StackOverflowError

I am getting a StackOverflowError while starting up the servlet with the 
servlet extension.  Has anyone else seen this?  Here is
part of the stack trace:
        at 
com.noelios.restlet.ext.servlet.ServletWarEntity.<init>(ServletWarEntity.java:107)
        at 
com.noelios.restlet.ext.servlet.ServletWarEntity.<init>(ServletWarEntity.java:107)
        at 
com.noelios.restlet.ext.servlet.ServletWarEntity.<init>(ServletWarEntity.java:107)
        at 
com.noelios.restlet.ext.servlet.ServletWarEntity.<init>(ServletWarEntity.java:107)
        at 
com.noelios.restlet.ext.servlet.ServletWarEntity.<init>(ServletWarEntity.java:107)
        at 
com.noelios.restlet.ext.servlet.ServletWarEntity.<init>(ServletWarEntity.java:107)
        at 
com.noelios.restlet.ext.servlet.ServletWarEntity.<init>(ServletWarEntity.java:107)
        at 
com.noelios.restlet.ext.servlet.ServletWarEntity.<init>(ServletWarEntity.java:107)
        at 
com.noelios.restlet.ext.servlet.ServletWarEntity.<init>(ServletWarEntity.java:94)
        at 
com.noelios.restlet.ext.servlet.ServletWarEntity.getParent(ServletWarEntity.java:154)
        at 
com.noelios.restlet.local.EntityClientHelper.handleEntityGet(EntityClientHelper.java:309)
        at 
com.noelios.restlet.local.EntityClientHelper.handleEntity(EntityClientHelper.java:202)
        at 
com.noelios.restlet.local.EntityClientHelper.handle(EntityClientHelper.java:179)
        at 
com.noelios.restlet.ext.servlet.ServletWarClientHelper.handle(ServletWarClientHelper.java:102)
        at 
com.noelios.restlet.ext.servlet.ServletWarClient.handle(ServletWarClient.java:91)
        at org.restlet.Uniform.handle(Uniform.java:108)
        at org.restlet.Uniform.get(Uniform.java:96)
        at 
com.noelios.restlet.ext.servlet.ServerServlet.createComponent(ServerServlet.java:377)
        at 
com.noelios.restlet.ext.servlet.ServerServlet.getComponent(ServerServlet.java:740)
        at 
com.noelios.restlet.ext.servlet.ServerServlet.init(ServerServlet.java:819)
        at javax.servlet.GenericServlet.init(GenericServlet.java:211)

It appears that its trying to recursively traverse all resources under WEB-INF, 
but is infinitely looping around the WEB-INF/web.xml
resource.  When the path points to that resource, 
getServletContext().getResourcePaths(path) returns one resource, the web.xml.
Looking at the API for the ServletContext, its not that clear what it is 
expected to do when the argument points to a resource and
not a path, so this may be a case where different implementations are working 
differently.  It can be easily fixed within the
ServletWarEntity class with a "if (!childPath.equals(this.path))" check prior 
to creating the next ServletWarEntity.  Can this
change be made, or do I need to take this up with our webcontainer?

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1034883

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1039284

Reply via email to