奇怪的泽西岛错误:java.lang.StackOverflowError

时间:2015-05-12 13:33:48

标签: java tomcat jersey

我们已多次看到它,它似乎与我们的代码无关,因为我们的代码都不在stacktrace中。我们正在使用Jersey 1.17,我们偶尔会得到这个错误:

  

java.lang.StackOverflowError at   java.lang.String.toLowerCase(String.java:2496)at   com.sun.jersey.core.util.StringIgnoreCaseKeyComparator.hash(StringIgnoreCaseKeyComparator.java:53)at   com.sun.jersey.core.util.StringIgnoreCaseKeyComparator.hash(StringIgnoreCaseKeyComparator.java:48)at at   com.sun.jersey.core.util.KeyComparatorHashMap.keyComparatorHash(KeyComparatorHashMap.java:294)at   com.sun.jersey.core.util.KeyComparatorHashMap.containsKey(KeyComparatorHashMap.java:359)at at   com.sun.jersey.api.client.filter.HTTPBasicAuthFilter.handle(HTTPBasicAuthFilter.java:101)at at   com.sun.jersey.api.client.filter.HTTPBasicAuthFilter.handle(HTTPBasicAuthFilter.java:104)at at   com.sun.jersey.api.client.filter.HTTPBasicAuthFilter.handle(HTTPBasicAuthFilter.java:104)at ...

然后最后一行永远重复(好吧,直到stackoverflow)。我们在1.18中看到了更多,所以我们降级到1.17,但现在我只是在那里看到它。

这些网络服务有99.9%的时间可以使用。这会导致jvm出现问题。有人见过这个吗?我究竟做错了什么?我们只需要正常的1.17安装,整个应用程序都是围绕它构建的。

更新:由于有人在应用服务器中建议了一个循环,我们正在使用Tomcat 6和基本身份验证。

1 个答案:

答案 0 :(得分:1)

所以我的一个伙伴发现了这个,我无法相信自己的愚蠢。

this.theBasicAuthClient.addFilter(new HTTPBasicAuthFilter(logon, password));

我在每次调用时都添加了这个。所以我们在我们类的构造函数中创建客户端并重用它。顺便说一句,我认为这只是在请求的标题中添加了基本的身份验证凭据,但它确实添加了另一个过滤器。所以每次我们执行此客户端调用时,我们都会添加另一个过GAA!

只需在创建客户端时添加它并继续...