I confirmed that the change I suggested does fix the problem. Simply wrap line 112 of WeblogRequestMapper with the following if().
if(servlet.startsWith("/")) { servlet = servlet.substring(1); //old line 112 } I hope this can be included in a future release. I don't want to have to apply the change each time I upgrade. :) Regards, Sean On Sun, Nov 16, 2014 at 5:45 PM, Sean Pritchard <spritch...@militaryhire.com > wrote: > As a follow up, I edited the error.jsp to dump the stack trace. Here it > it (partial) > > java.lang.StringIndexOutOfBoundsException: String index out of range: -1 > at java.lang.String.substring(String.java:1875) > at > org.apache.roller.weblogger.ui.rendering.WeblogRequestMapper.handleRequest(WeblogRequestMapper.java:112) > at > org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.doFilter(RequestMappingFilter.java:120) > at > com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) > at > org.apache.roller.weblogger.ui.core.filters.InitFilter.doFilter(InitFilter.java:73) > > The error seems to be happening on the last line of this snippet from > WeblogRequestMapper: > > // figure out potential weblog handle > String servlet = request.getRequestURI(); > String pathInfo = null; > > if(servlet != null && servlet.trim().length() > 1) { > > if(request.getContextPath() != null) { > servlet = > servlet.substring(request.getContextPath().length()); > } > > // strip off the leading slash > servlet = servlet.substring(1); //line 112 > > Seems like the assumption is that at least a "/" remains in servlet at > this point. Without launching an argument about spec compliance, it seems > this could be easily fixed by changing the last line to: > > if(servlet.startsWith("/")) { > servlet = servlet.substring(1); > } > > I will probably make that change locally to work around this issue, but it > would be helpful if the change were included in future releases. > > Regards, > Sean > > > > > > > > On Sun, Nov 16, 2014 at 4:19 PM, Sean Pritchard < > spritch...@militaryhire.com> wrote: > >> Hello, >> >> I've recently installed and started using Roller 5.1.1. I deployed it to >> the Resin 4 app server. >> >> I renamed roller.war to blog.war to deploy to the path /blog/. But I'm >> running into a problem where if I request the blog at >> http://hostname/blog/ it works fine. But if I remove the trailing slash >> http://hostname/blog, I get the following error: >> >> Unexpected Exception Status Code 500 Message String index out of range: >> -1 Type >> Exception Roller has encountered and logged an unexpected exception. >> In checking the roller.log, I see no evidence of an exception. I tried >> changing the roller logging levels to DEBUG >> >> log4j.logger.org.apache.roller=DEBUG >> log4j.logger.net.java.roller=DEBUG >> >> But still no stack trace. From the log, I'm guessing the problem is >> happening in the WeblogRequestMapper. My two clues are at 16:03:13,361 >> where the session is released immediately after evaluating the path /blog. >> Or perhaps at 16:03:14,138 where the request is not mapped. >> >> DEBUG 2014-11-16 16:03:13,333 CharEncodingFilter:doFilter - Processing >> CharEncodingFilter >> DEBUG 2014-11-16 16:03:13,334 CharEncodingFilter:doFilter - Set request >> character encoding to UTF-8 >> DEBUG 2014-11-16 16:03:13,358 BootstrapFilter:doFilter - Entered /blog >> DEBUG 2014-11-16 16:03:13,359 WebloggerConfig:getProperty - Fetching >> property [installation.type=manual] >> DEBUG 2014-11-16 16:03:13,359 PersistenceSessionFilter:doFilter - Entered >> /blog >> DEBUG 2014-11-16 16:03:13,360 InitFilter:doFilter - relPath = /blog >> DEBUG 2014-11-16 16:03:13,360 InitFilter:doFilter - absPath = >> http://localhost:8080/blog >> DEBUG 2014-11-16 16:03:13,360 RequestMappingFilter:doFilter - entering >> DEBUG 2014-11-16 16:03:13,361 RequestMappingFilter:doFilter - trying >> mapper org.apache.roller.weblogger.ui.rendering.WeblogRequestMapper >> DEBUG 2014-11-16 16:03:13,361 WeblogRequestMapper:handleRequest - >> evaluating [/blog] >> DEBUG 2014-11-16 16:03:13,361 PersistenceSessionFilter:doFilter - >> Releasing Roller Session >> DEBUG 2014-11-16 16:03:14,127 CharEncodingFilter:doFilter - Processing >> CharEncodingFilter >> DEBUG 2014-11-16 16:03:14,128 CharEncodingFilter:doFilter - Set request >> character encoding to UTF-8 >> DEBUG 2014-11-16 16:03:14,129 BootstrapFilter:doFilter - Entered >> /blog/roller-ui/styles/roller.css >> DEBUG 2014-11-16 16:03:14,129 WebloggerConfig:getProperty - Fetching >> property [installation.type=manual] >> DEBUG 2014-11-16 16:03:14,130 PersistenceSessionFilter:doFilter - Entered >> /blog/roller-ui/styles/roller.css >> DEBUG 2014-11-16 16:03:14,132 WebloggerConfig:getProperty - Fetching >> property [cache.salt.enabled=true] >> DEBUG 2014-11-16 16:03:14,132 WebloggerConfig:getProperty - Fetching >> property [cache.salt.size=5000] >> DEBUG 2014-11-16 16:03:14,132 WebloggerConfig:getProperty - Fetching >> property [cache.salt.timeout=3600] >> INFO 2014-11-16 16:03:14,132 SaltCache:<init> - {id=cache.salt, >> enabled=true, timeout=3600, size=5000} >> DEBUG 2014-11-16 16:03:14,133 CacheManager:constructCache - Constructing >> new cache with props {id=cache.salt, enabled=true, timeout=3600, size=5000} >> DEBUG 2014-11-16 16:03:14,133 ExpiringLRUCacheFactoryImpl:constructCache >> - new cache constructed. size=5000, timeout=3600 >> DEBUG 2014-11-16 16:03:14,136 SaltCache:put - PUT kY1lSl8jyUyRCMfhyj8Z >> DEBUG 2014-11-16 16:03:14,136 RequestMappingFilter:doFilter - entering >> DEBUG 2014-11-16 16:03:14,137 RequestMappingFilter:doFilter - trying >> mapper org.apache.roller.weblogger.ui.rendering.WeblogRequestMapper >> DEBUG 2014-11-16 16:03:14,137 WeblogRequestMapper:handleRequest - >> evaluating [/blog/roller-ui/styles/roller.css] >> DEBUG 2014-11-16 16:03:14,137 WeblogRequestMapper:handleRequest - >> potential weblog handle = roller-ui >> DEBUG 2014-11-16 16:03:14,137 WeblogRequestMapper:handleRequest - SKIPPED >> roller-ui >> DEBUG 2014-11-16 16:03:14,138 RequestMappingFilter:doFilter - request not >> mapped >> DEBUG 2014-11-16 16:03:14,172 RequestMappingFilter:doFilter - exiting >> DEBUG 2014-11-16 16:03:14,173 PersistenceSessionFilter:doFilter - >> Releasing Roller Session >> DEBUG 2014-11-16 16:03:14,173 PersistenceSessionFilter:doFilter - Exiting >> /blog/roller-ui/styles/roller.css >> DEBUG 2014-11-16 16:03:14,173 BootstrapFilter:doFilter - Exiting >> /blog/roller-ui/styles/roller.css >> >> Have any of you run into this problem and know how to fix it? >> >> Thanks in advance, >> Sean >> > >