Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
奇数Jersey错误:java.lang.StackOverflower错误_Java_Tomcat_Jersey - Fatal编程技术网

奇数Jersey错误:java.lang.StackOverflower错误

奇数Jersey错误:java.lang.StackOverflower错误,java,tomcat,jersey,Java,Tomcat,Jersey,我们已经多次看到这一点,它似乎与我们的代码无关,因为我们的代码都不在stacktrace中。我们正在使用Jersey 1.17,偶尔会出现以下错误: java.lang.StackOverflowerr位于 java.lang.String.toLowerCase(String.java:2496)位于 com.sun.jersey.core.util.StringIgnoreCaseKeyComparator.hash(StringIgnoreCaseKeyComparator.java:53

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

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

然后最后一行永远重复(直到堆栈溢出)。我们在1.18中看到了更多,所以我们降级到1.17,但现在我在那里看到了

这些Web服务99.9%的时间都在工作。这会在jvm中造成问题。还有人看到这个吗?我做错了什么?我们只是有一个正常的1.17安装和整个应用程序是围绕它建立


更新:由于有人建议在应用程序服务器中使用循环,我们正在使用Tomcat 6和basic auth。

所以我的一个朋友发现了这一点,我不敢相信我自己的愚蠢

this.theBasicAuthClient.addFilter(new HTTPBasicAuthFilter(logon, password));
我在每次调用中都添加了这个。因此,我们在类的构造函数中创建客户机并重用它。顺便提一下,我认为这只是在请求的头中添加了基本的身份验证凭据,但它实际上添加了另一个过滤器。所以每次我们执行这个客户端调用时,我们都添加了另一个过滤器!嘎


只要在创建客户端时添加它,然后继续…

然后在
HTTPBasicAuthFilter.java:104
?您正在尝试使用一种循环进行身份验证。有时身份验证过滤器会在其上循环,如果出现错误,您需要停止它们。1.客户端正在调用auth,2。在应用程序3中验证调用。服务需要认证,4。身份验证呼叫。。。。这很容易造成一个循环,而我所知道的应用程序中没有进行身份验证(我们使用tomcat,它进行基本身份验证)。另外,如果您注意到上面的内容,那么巨大堆栈跟踪的其余部分位于第104行。第一个是101,其余的是104。