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