2016-09-08 3 views
0

このフィルタをweb.xmlファイルに追加して、Libertyサーバーで実行しようとしています。この設定はTomcat上で実行されます。しかし、リバティーについては、エラーが発生します。Exception thrown by application class 'java.lang.String.substring:1339'Websphere LibertyのWeb.xmlにエラーがあり、Tomcatではありません

リバティーには長さ制限がありますか?

<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内の値としなければならないことは明らかではありません。 "ベースURIを基準にした現在のリクエストのパスを文字列として取得する"というContainerRequest.getPath APIの読み込みから見ると、リクエストURIがあり、com.sunクラス内で行われる処理では、いくつかはスタックにリストされています。 APIが相対パスを計算しているので、いくつかの可能性が示唆されています。com.ibm Webコンテナ要求処理コードによって提供される一貫性のないパス値または不正確なパス値。予期しないが有効なパス値がcom.sunクラスに提供されました。相対パス計算コードのバグ。私はあなたがこれらをどのように取得するのかはわかりませんが、出発点は処理されている2つのURI:要求URIとベースURIを見つけることです。

関連する問題