powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat из Spring boot перестает отвечать
25 сообщений из 174, страница 3 из 7
Tomcat из Spring boot перестает отвечать
    #40029714
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029715
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot hck2#22251435]
mayton

ну а как остальные используют restTempalte ? врятли же выстраивают в очередь все вызовы рест клиента.
по стектрейсу четко видно, что внутри restTemplate что-то ломается при параллельных вызовах. как я понимаю самый адекватный ответ - PROTOTYPE и плодить на каждый вызов отдельный инстанс restTemplate
или я совсем неверно рассуждаю ?

Ты имеешь в виду это?

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html

Давай глянем доку. Я попробую с моим хреновым intermediate Хоть что-то перевести.

Synchronous client to perform HTTP requests, exposing a simple, template method API over underlying HTTP client libraries such as the JDK HttpURLConnection, Apache HttpComponents, and others.
The RestTemplate offers templates for common scenarios by HTTP method, in addition to the generalized exchange and execute methods that support of less frequent cases.

NOTE: As of 5.0 this class is in maintenance mode, with only minor requests for changes and bugs to be accepted going forward. Please, consider using the org.springframework.web.reactive.client.WebClient which has a more modern API and supports sync, async, and streaming scenarios.
Синхронный клиент предназначенный для выполнения HTTP-запросов предоставляющий простой шаблонный API сквозь
базовые HTTP-библиотеки такие как HttpUrlConnection, Apache HttpComponents и другие.


RestTemplate предлагает шаблон для общих сценариев с использованием HTTP, в дополнение к общим методам обмена данными
и исполнения которые поддерживают не очень частые вызовы.

Уведомление. Начиная с версии 5.0 этот класс - в режиме поддержки, которая делается только с минорными
изменениями и багами в будущем. Пожалуйста рассмотрите использование org.springframework.web.reactive.client.WebClient
который имеет более современный API и поддерживает sync, async, and streaming сценарии использования.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029716
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton

Не надо весь проект. Создай макет который делает тоже самое. 1-2 класса.

Кстати это полезно еще тем что ты в процессе уже можешь сам исправить эту ошибку.

я реально не понимаю для чего. разве стектрейс не снимает полностью "вину" с логики моего приложения ? почему по представленому стектрейсу поставить однозначный диагноз ?

at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:891)
заполняет какой-то свой ArrayList, разве не это показывает стектрейс ?
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029718
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
mayton

Не надо весь проект. Создай макет который делает тоже самое. 1-2 класса.

Кстати это полезно еще тем что ты в процессе уже можешь сам исправить эту ошибку.

я реально не понимаю для чего. разве стектрейс не снимает полностью "вину" с логики моего приложения ? почему по представленому стектрейсу поставить однозначный диагноз ?

at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:891)
заполняет какой-то свой ArrayList, разве не это показывает стектрейс ?

Стек трейс - это капитан-очевидность. Он говорит. Чувак. Ты нарушил базовые принципы мультипоточки
в java. Как ты докатился до такой жизни - это вопрос к тебе. Переделывай приложение. Выше по стек ты что-то нарушил
или сдела неправильное допущение.


На самом деле в Java - хорошие стектрейсы. Если не веришь - сходи в С++ и там ты просто впадешь в депрессию
от "информативности" ошибок. Будешь читать состояния регистров процессора и по ним пытсться раскурить что
случилось ДО ТОГО и как.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029719
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
mayton

Не надо весь проект. Создай макет который делает тоже самое. 1-2 класса.

Кстати это полезно еще тем что ты в процессе уже можешь сам исправить эту ошибку.

я реально не понимаю для чего. разве.....

Еще один ленивый показать код ошибки...
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029720
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
>jdbc стандарт тоже вроде как синхронный по спеке но при этом драйвера плодят поток на каждый коннекшон.
Он синхронный и не Thread Safe, ПОЭТОМУ приходится плодить!
Причина и следствие!


Если следовать этой логике то это взаимоисключащие характеристики и вместо синхронный можно использовать thread safe и избавить еще от одного ненужного термина.
Повторю еще раз что resttemplate что apache http client под синхронным не подразумевается thread safety а то что используется блокирующее IO.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029723
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот навскидку
https://stackoverflow.com/questions/22989500/is-resttemplate-thread-safe

RestTemplate is thread-safe once constructed

не потому что он синхронный а потому что обычный паттерн использования в спринге, подразумевается что его состояние не меняется после инициализации при старте контейнера.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029726
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thread safe и синхронизм - это желтое и квадратное.

Потокобезопасность может быть реализована по разному. На блокировках. На атомиках. Вообще на отсутсвии конкуренции
если задача такое позволяет.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029732
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton

Стек трейс - это капитан-очевидность. Он говорит. Чувак. Ты нарушил базовые принципы мультипоточки
в java. Как ты докатился до такой жизни - это вопрос к тебе. Переделывай приложение. Выше по стек ты что-то нарушил
или сдела неправильное допущение.


На самом деле в Java - хорошие стектрейсы. Если не веришь - сходи в С++ и там ты просто впадешь в депрессию
от "информативности" ошибок. Будешь читать состояния регистров процессора и по ним пытсться раскурить что
случилось ДО ТОГО и как.

да блин, я же никого не обвиняю и не жалуюсь. я реально напрегся, почему по этому стектрейсу люди с опытом не поставили однозначный диагноз и просят код, прототип и т.п. я волнуюсь, что что-то упустил глобально.
разве стектрейс не говорит однозначно, что это restTemplate свой внутренний ArrayList заполняет и падает при параллельном использовании ?
если именно это происходит, то понятно, что я неверно использую restTemplate.

зы. по документации я вроде читаю по английски и вижу про Synchronous client, в про thread safe ничего не говорится.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029735
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хватит уже болтать. Показывай где ArrayList или его итератор. Ты его - шаришь между потоками.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029741
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
mayton

Стек трейс - это капитан-очевидность. Он говорит. Чувак. Ты нарушил базовые принципы мультипоточки
в java. Как ты докатился до такой жизни - это вопрос к тебе. Переделывай приложение. Выше по стек ты что-то нарушил
или сдела неправильное допущение.


На самом деле в Java - хорошие стектрейсы. Если не веришь - сходи в С++ и там ты просто впадешь в депрессию
от "информативности" ошибок. Будешь читать состояния регистров процессора и по ним пытсться раскурить что
случилось ДО ТОГО и как.

да блин, я же никого не обвиняю и не жалуюсь. .

И мы тебя не обвиняем. Ты хороший. Но закругляйся болтать и дай пример на sleep()
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029747
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
mayton

Стек трейс - это капитан-очевидность. Он говорит. Чувак. Ты нарушил базовые принципы мультипоточки
в java. Как ты докатился до такой жизни - это вопрос к тебе. Переделывай приложение. Выше по стек ты что-то нарушил
или сдела неправильное допущение.


На самом деле в Java - хорошие стектрейсы. Если не веришь - сходи в С++ и там ты просто впадешь в депрессию
от "информативности" ошибок. Будешь читать состояния регистров процессора и по ним пытсться раскурить что
случилось ДО ТОГО и как.

да блин, я же никого не обвиняю и не жалуюсь. я реально напрегся, почему по этому стектрейсу люди с опытом не поставили однозначный диагноз и просят код, прототип и т.п. я волнуюсь, что что-то упустил глобально.
разве стектрейс не говорит однозначно, что это restTemplate свой внутренний ArrayList заполняет и падает при параллельном использовании ?
если именно это происходит, то понятно, что я неверно использую restTemplate.

зы. по документации я вроде читаю по английски и вижу про Synchronous client, в про thread safe ничего не говорится.


стектрей это и говорит но не видно зачем ктото меняет ему его.
Код: java
1.
2.
3.
4.
5.
6.
List<MediaType> allSupportedMediaTypes = getMessageConverters().stream()
						.filter(converter -> canReadResponse(this.responseType, converter))
						.flatMap(this::getSupportedMediaTypes)
						.distinct()
						.sorted(MediaType.SPECIFICITY_COMPARATOR)
						.collect(Collectors.toList());



точно нигде setMessageConvertes() или getMessageConverters не вызывается и руками не меняется ?
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029750
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно везде если инжектится RestTemplate поменять на RestOperations и если приложение не компилируется то где то косяк
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029756
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lleming


стектрей это и говорит но не видно зачем ктото меняет ему его.
Код: java
1.
2.
3.
4.
5.
6.
List<MediaType> allSupportedMediaTypes = getMessageConverters().stream()
						.filter(converter -> canReadResponse(this.responseType, converter))
						.flatMap(this::getSupportedMediaTypes)
						.distinct()
						.sorted(MediaType.SPECIFICITY_COMPARATOR)
						.collect(Collectors.toList());



точно нигде setMessageConvertes() или getMessageConverters не вызывается и руками не меняется ?


вызывается, чуть выше код где я restTemplate bean создаю

https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1331858&msg=22250648

выходит редиска найдена
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029762
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй работать с копией массива.

Код: java
1.
new ArrayList(getMessageConverters());



Только копию создавай не здесь. А до того как стартовал поток.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029764
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
Ну вот навскидку
https://stackoverflow.com/questions/22989500/is-resttemplate-thread-safe

RestTemplate is thread-safe once constructed

не потому что он синхронный а потому что обычный паттерн использования в спринге, подразумевается что его состояние не меняется после инициализации при старте контейнера.
ну и что?
Я писал объект ThreadSafe который перестал падать просто добавив синхронизацию или блокировку в метод.
То есть я тупой и глючный объект просто затормозил!
Теперь мы почему то топим за restTemplate который тоже модели поток на запрос.
Пока не вернется ответ, поток будет заблокирован!
Спринг след версии сменят объект класс на НЕБЛОКИРУЮЩИЙ!
И не буде этого restTemplate.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029767
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эволюция:
- контейнер SingleMode для тех кто пишет по старинке на глобальных))
- контейнер не SingleMode и убрана эта галка - для продвинутых в 2003 году
- потоки в приложении и пул для тех кто не доверяет потоку и пулу выше и любит свои велосипеды (ТС тут)
- асинхронный неблокирующий клиент спринг бут с java8
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029770
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он не может решить простую задачу. Правильно пошарить Java ArrayList (которая всегда thread unsafe)
между потоками.

А SpringBoot это просто внешняя обертка этой проблемы. Ну был-бы Google Guice, Или сервлеты. Тот-же баг бы словили.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029777
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
При использовании потоков и пула серверного никаких багов.
А счас он полубеременный.
Спринг заменил класс на котором он пишет асинхронно.
Асинхронно блокируя он пишет))))))
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029781
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Он не может решить простую задачу. Правильно пошарить Java ArrayList (которая всегда thread unsafe)
между потоками.

А SpringBoot это просто внешняя обертка этой проблемы. Ну был-бы Google Guice, Или сервлеты. Тот-же баг бы словили.

а вот тут у меня вопрос. если это спринг, почему не проканало ?
без анотации как я понимаю при старте должен был оздатся бин restTemplate, в нем просетится setMessageConvertes() и дальше все должны были использовать этот бин без изменений. почему я получил ошибку ?
с анотацией @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) каждый тред должен был бы создавать свой бин и каждый делать setMessageConvertes() своему бину. тем не менее я снова получил ошибку.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029786
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
mayton
Он не может решить простую задачу. Правильно пошарить Java ArrayList (которая всегда thread unsafe)
между потоками.

А SpringBoot это просто внешняя обертка этой проблемы. Ну был-бы Google Guice, Или сервлеты. Тот-же баг бы словили.

а вот тут у меня вопрос. если это спринг, почему не проканало ?
без анотации как я понимаю при старте должен был оздатся бин restTemplate, в нем просетится setMessageConvertes() и дальше все должны были использовать этот бин без изменений. почему я получил ошибку ?
с анотацией @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) каждый тред должен был бы создавать свой бин и каждый делать setMessageConvertes() своему бину. тем не менее я снова получил ошибку.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
   @Bean
    public RestOperations restTemplate(RestTemplateBuilder builder) {

        RestTemplate restTemplate = builder
                .setConnectTimeout(Duration.ofMillis(120_000))
                .setReadTimeout(Duration.ofMillis(360_000))
                .build();

        restTemplate.getMessageConverters()
                .add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));

        return restTemplate;
    }



Если так написать проект компилируется ?
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029788
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming
Ну вот навскидку
https://stackoverflow.com/questions/22989500/is-resttemplate-thread-safe

RestTemplate is thread-safe once constructed

не потому что он синхронный а потому что обычный паттерн использования в спринге, подразумевается что его состояние не меняется после инициализации при старте контейнера.
ну и что?
Я писал объект ThreadSafe который перестал падать просто добавив синхронизацию или блокировку в метод.
То есть я тупой и глючный объект просто затормозил!
Теперь мы почему то топим за restTemplate который тоже модели поток на запрос.
Пока не вернется ответ, поток будет заблокирован!
Спринг след версии сменят объект класс на НЕБЛОКИРУЮЩИЙ!
И не буде этого restTemplate.


поток мысли какой то

претензия к
PetroNotC>это что, получается restTemplate нифига не thread safe
Ну дак в справке по нему написано - для СИНХРОННОГО доступа.


То что написано в справке не иммет отновшения к thead safe а только то что внизу блокирующее IO.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029789
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lleming

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
   @Bean
    public RestOperations restTemplate(RestTemplateBuilder builder) {

        RestTemplate restTemplate = builder
                .setConnectTimeout(Duration.ofMillis(120_000))
                .setReadTimeout(Duration.ofMillis(360_000))
                .build();

        restTemplate.getMessageConverters()
                .add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));

        return restTemplate;
    }



Если так написать проект компилируется ?

компилируется, но тесты попадали с
No qualifying bean of type 'org.springframework.web.client.RestTemplate' available: expected at least 1 bean which qualifies as autowire candidate.
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029792
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
То что спринг НЕ РЕКОМЕНДУЕТ использоаать restTemplate это для тебя поток мыслей?
Ну ОК))
...
Рейтинг: 0 / 0
Tomcat из Spring boot перестает отвечать
    #40029794
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имею ввиду нигде в коде руками не вызывается getConverters() setConverters() ?
Если вместо RestTemplate инжектить RestOperations то это гарантируется чистоту RestTemplate
помимо того что конфигурацию поправлена нужно и инжекты поменять

Код: java
1.
2.
3.
4.
5.
6.
7.
@Autowired
private RestTemplate restTempate;

на 

@Autowired
private RestOperations restTemplate;


ну и в конструкторах если иньекция через конструктор
...
Рейтинг: 0 / 0
25 сообщений из 174, страница 3 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat из Spring boot перестает отвечать
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]