0

I am trying to add this filter in my web.xml file and run it on Liberty server. This configuration runs on Tomcat. However on Liberty I get an error,Exception thrown by application class 'java.lang.String.substring:1339'

Is there some length limitation on Liberty?

<filter>
     <filter-name>jersey</filter-name>
     <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
     <init-param>
       <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
       <param-value>/(flex|images|js|css|jsp)/.*</param-value>
     </init-param>
          <init-param>
       <param-name>com.sun.jersey.config.property.packages</param-name>
       <param-value>com.sun.jersey;com.netflix</param-value>
     </init-param>
  </filter>

Stack trace:

Exception thrown by application class 'java.lang.String.substring:1339'
java.lang.StringIndexOutOfBoundsException: String index out of range: 8
at java.lang.String.substring(String.java:1339)
at com.sun.jersey.spi.container.ContainerRequest.getEncodedPath(ContainerRequest.java:377)
at com.sun.jersey.spi.container.ContainerRequest.getPath(ContainerRequest.java:370)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1463)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:895)
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:843)
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:804)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207)
at [internal classes]
at com.netflix.eureka.ServerRequestAuthFilter.doFilter(ServerRequestAuthFilter.java:34)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207)
at [internal classes]
at com.netflix.eureka.StatusFilter.doFilter(StatusFilter.java:68)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207)
at [internal classes]
user1692342
  • 5,007
  • 11
  • 69
  • 128

1 Answers1

1

It's not clear that the error has to do with the values in web.xml. From a read of the ContainerRequest.getPath API, which has "Get the path of the current request relative to the base URI as a string", what to look at is the request URI and at the processing done within the com.sun classes, several which are listed in the stack. Since the API is computing a relative path, several possibilities suggest themselves: Inconsistent or incorrect path values provided by the com.ibm web container request handling code; Unexpected but valid path values provided to the com.sun classes; a bug in the relative path computation code. I'm not sure how you would get these, but the starting point would be to find out the two URIs which are being processed: The request URI, and the base URI.

Thomas Bitonti
  • 1,179
  • 7
  • 14