/ / Непарна помилка Джерсі: java.lang.StackOverflowError - java, tomcat, jersey

Непарний Джерсі Помилка: java.lang.StackOverflowError - java, tomcat, jersey

Ми бачили це неодноразово, і, схоже, це не пов'язано з нашим кодом, оскільки жоден наш код не знаходиться в стек-трасі. Ми використовуємо Jersey 1.17, і ми періодично отримуємо цю помилку:

java.lang.StackOverflowError at 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) у ...

І тоді останній рядок повторюється назавжди (ну, до тих пір, поки не відбудеться stackoverflow). Ми бачили це більше в 1,18 і тому ми знизили його до 1,17, але тепер я просто побачив це.

Ці веб-сервіси працюють 99,9% часу. Це спричиняє неприємності в jvm. Хтось ще бачив це? Що я роблю неправильно? У нас просто нормальна установка 1,17, і навколо неї побудовано весь додаток.

Оновлення. Оскільки хтось запропонував цикл на сервері додатків, ми використовуємо Tomcat 6 та основний auth.

Відповіді:

1 для відповіді № 1

Тож мій приятель знайшов це, і я не можу повірити власному дурості.

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

Я додавав це при кожному виклику. Тож ми робимо клієнта в конструкторі нашого класу і повторно використовуємо його. Минувшись, я подумав, що це лише додало основні дані автентичності у заголовку запиту, але це дійсно додає ще один фільтр. Тому щоразу, коли ми виконували цей клієнтський дзвінок, ми додавали ще один фільтр! GAA!

Просто додайте його, коли ви створюєте клієнта і рухаєтесь далі ...