2016-09-08 2 views
0

Я пытаюсь добавить этот фильтр в свой файл web.xml и запустить его на сервере Liberty. Эта конфигурация работает на Tomcat. Однако на Liberty я получаю ошибку, Exception thrown by application class 'java.lang.String.substring:1339'Ошибка в Web.xml в websphere Liberty, а не в Tomcat

Есть ли ограничение длины на 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> 

Стек след:

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] 
+0

Что такое полный стек исключения, которое вы получаете? Не могу много сказать из сообщения об исключении, которое вы изначально разместили. –

+0

@aguibert Я обновил – user1692342

+0

Обратите внимание, что это для того же стека: http://stackoverflow.com/questions/39382445/exception-thrown-by-application-class-java-lang-string-substring1339-webspher –

ответ

1

Это не ясно, что ошибка связана со значениями в web.xml. Из прочитанного API ContainerRequest.getPath, который имеет «Получить путь к текущему запросу относительно базового URI в виде строки», на что следует обратить внимание на URI запроса и при обработке, выполняемой в классах com.sun, несколько, которые перечислены в стеке. Поскольку API вычисляет относительный путь, предлагается несколько возможностей: непоследовательные или неправильные значения пути, предоставляемые кодом обработки запроса контейнера com.ibm; Неожиданные, но действительные значения пути, предоставляемые классам com.sun; ошибка в коде вычисления относительного пути. Я не уверен, как вы их получите, но отправной точкой будет поиск двух URI, которые обрабатываются: URI запроса и базовый URI.