powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / ServletContextListener.contextInitialized() выполнянется два раза
25 сообщений из 51, страница 1 из 3
ServletContextListener.contextInitialized() выполнянется два раза
    #39989421
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Приложение Spring boot. Создал класс реализующий ServletContextListener.

Почему и в режиме Debug и в режиме Run метод contextInitialized(ServletContextEvent sce) выполняется два раза?
При повторном выполнении контекст остается таким же, что и после первого выполнения метода. Это мешает тестированию приложения.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39989425
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasar
Всем привет!

Приложение Spring boot. Создал класс реализующий ServletContextListener.

Почему и в режиме Debug и в режиме Run метод contextInitialized(ServletContextEvent sce) выполняется два раза?
При повторном выполнении контекст остается таким же, что и после первого выполнения метода. Это мешает тестированию приложения.

Потому что контекст создается два раза, очевидно же?
Как можно без кода, без аннотаций что-то вменяемое ответить?
И вообще зачем спрашивать если можно продебажить?
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39989443
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

contextInitialized - выводится дважды в консоле

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class ExecutorListener implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("contextDestroyed");
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("contextInitialized");
    }

}
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39989445
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение запускается под Tomcat

автор . ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.2.RELEASE)

2020-08-13 16:51:26.243 INFO 2404 --- [ost-startStop-1] com.example.demo.ServletInitializer : Starting ServletInitializer on A-PC with PID 2404 (C:\Dev\Code\Testing\JMX\InitializrSpringbootProject\target\demo-0.0.1-SNAPSHOT\WEB-INF\classes started by A in C:\Dev\apache-tomcat-8\bin)
2020-08-13 16:51:26.250 INFO 2404 --- [ost-startStop-1] com.example.demo.ServletInitializer : No active profile set, falling back to default profiles: default
2020-08-13 16:51:27.405 INFO 2404 --- [ost-startStop-1] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1042 ms
2020-08-13 16:51:28.080 INFO 2404 --- [ost-startStop-1] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-08-13 16:51:28.363 INFO 2404 --- [ost-startStop-1] com.example.demo.ServletInitializer : Started ServletInitializer in 3.012 seconds (JVM running for 6.303)
13-Aug-2020 16:51:28.406 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of deployment descriptor [C:\Dev\apache-tomcat-8\conf\Catalina\localhost\demo.xml] has finished in [5В 236] ms
13-Aug-2020 16:51:28.408 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Установка веб приложения в папку [C:\Dev\apache-tomcat-8\webapps\docs]
contextInitialized
13-Aug-2020 16:51:28.449 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Dev\apache-tomcat-8\webapps\docs] has finished in [41] ms
13-Aug-2020 16:51:28.449 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Установка веб приложения в папку [C:\Dev\apache-tomcat-8\webapps\examples]
13-Aug-2020 16:51:28.734 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Dev\apache-tomcat-8\webapps\examples] has finished in [285] ms
13-Aug-2020 16:51:28.734 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Установка веб приложения в папку [C:\Dev\apache-tomcat-8\webapps\host-manager]
13-Aug-2020 16:51:28.764 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Dev\apache-tomcat-8\webapps\host-manager] has finished in [30] ms
13-Aug-2020 16:51:28.765 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Установка веб приложения в папку [C:\Dev\apache-tomcat-8\webapps\manager]
13-Aug-2020 16:51:28.799 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Dev\apache-tomcat-8\webapps\manager] has finished in [35] ms
13-Aug-2020 16:51:28.804 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8081"]
13-Aug-2020 16:51:28.820 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 5719 ms
2020-08-13 16:51:29.972 INFO 2404 --- [nio-8081-exec-9] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
contextDestroyed
13-Aug-2020 16:51:30.485 INFO [http-nio-8081-exec-9] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/demo]
13-Aug-2020 16:51:30.496 INFO [http-nio-8081-exec-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment descriptor [C:\Dev\apache-tomcat-8\conf\Catalina\localhost\demo.xml]
13-Aug-2020 16:51:31.773 INFO [http-nio-8081-exec-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.2.RELEASE)

2020-08-13 16:51:32.666 INFO 2404 --- [nio-8081-exec-1] com.example.demo.ServletInitializer : Starting ServletInitializer on A-PC with PID 2404 (C:\Dev\Code\Testing\JMX\InitializrSpringbootProject\target\demo-0.0.1-SNAPSHOT\WEB-INF\classes started by A in C:\Dev\apache-tomcat-8\bin)
2020-08-13 16:51:32.670 INFO 2404 --- [nio-8081-exec-1] com.example.demo.ServletInitializer : No active profile set, falling back to default profiles: default
2020-08-13 16:51:33.465 INFO 2404 --- [nio-8081-exec-1] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 733 ms
2020-08-13 16:51:34.031 INFO 2404 --- [nio-8081-exec-1] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-08-13 16:51:34.240 INFO 2404 --- [nio-8081-exec-1] com.example.demo.ServletInitializer : Started ServletInitializer in 2.204 seconds (JVM running for 12.18)
contextInitialized
13-Aug-2020 16:51:34.254 INFO [http-nio-8081-exec-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of deployment descriptor [C:\Dev\apache-tomcat-8\conf\Catalina\localhost\demo.xml] has finished in [3В 758] ms
13-Aug-2020 16:51:34.263 INFO [http-nio-8081-exec-4] org.apache.catalina.util.LifecycleBase.start The start() method was called on component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/demo]] after start() had already been called. The second call will be ignored.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39989448
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее приложение запускается через NetBeans, сервер Tomcat
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39989479
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В логах два старта SpringBootApplication. Вот и будет все по два раза.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39989699
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В логах два старта SpringBootApplication. Вот и будет все по два раза.


Для чего происходит 2-ой запуск?
Как сделать один запуск?
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39989709
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это Котяра
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
...
2020-08-13 16:51:28.363 INFO 2404 --- [ost-startStop-1]
 com.example.demo.ServletInitializer :
 Started ServletInitializer in 3.012 seconds (JVM running for 6.303)
13-Aug-2020 16:51:28.406 INFO [localhost-startStop-1]
 org.apache.catalina.startup.HostConfig.deployDescriptor
  Deployment of deployment descriptor
  [C:\Dev\apache-tomcat-8\conf\Catalina\localhost\demo.xml]
  has finished in [5В 236] ms
...
2020-08-13 16:51:29.972 INFO 2404 --- [nio-8081-exec-9]
 o.s.s.concurrent.ThreadPoolTaskExecutor :
 Shutting down ExecutorService 'applicationTaskExecutor'
  contextDestroyed
13-Aug-2020 16:51:30.485 INFO [http-nio-8081-exec-9]
 org.apache.catalina.startup.HostConfig.undeploy
  Undeploying context [/demo]
13-Aug-2020 16:51:30.496 INFO [http-nio-8081-exec-1]
 org.apache.catalina.startup.HostConfig.deployDescriptor
  Deploying deployment descriptor
  [C:\Dev\apache-tomcat-8\conf\Catalina\localhost\demo.xml]
это Бутяра
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
2020-08-13 16:51:34.240 INFO 2404 --- [nio-8081-exec-1]
 com.example.demo.ServletInitializer :
  Started ServletInitializer in 2.204 seconds (JVM running for 12.18)
   contextInitialized
13-Aug-2020 16:51:34.254 INFO [http-nio-8081-exec-1]
 org.apache.catalina.startup.HostConfig.deployDescriptor
  Deployment of deployment descriptor
  [C:\Dev\apache-tomcat-8\conf\Catalina\localhost\demo.xml]
  has finished in [3В 758] ms
Читайте доки, смотрите скрипты запуска у себя и в примерах.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39989910
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringBoot - это вобщем связующий клей для фреймворков. Он сам по себе мало чего делает.
Но он может искусственно поднять Tomcat в качестве веб-контейнера для того чтоб обеспечить
деятельность http-листенеров. Собственно пуск Томката всегда видно в логах. Только детализацию
надо включить.

Мы как-то поднимали голосование по веб-серверам и Томкат как эталонная реализация (и бесплатная)
HTTP - занял у нас первое место по частоте использований.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39989926
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79, чем старше ты будешь становиться - тем больше ты будешь искать простых решений сложных зада.

SpringBoot - это сложый стек технологий. Хотя внешняя обёртка (то что называется бут) была создана
специально чтобы облегчить процесс бут-страпа приложений от хеллоу-ворд до ентерпрайза.
Те кто это делали - своего добились. К сожалению комплексность под капотом не ушла а осталась.
И ты можешь очень долго использовать бут но при этом практически будешь не в состоянии пофиксить
его-же внутреннию бутовую ошибку например. Тот факт что ты в восторге от бута - это просто внешнее
эмоциональное состояние какраз от его внешнего дизайна. Не позволяй себе очаровываться. Инженер
должен быть хладнокровным. Как анатом.

Копни глубже. Почитай как и зачем он использует cglib например. Это интересная тема. Хорошо прокачивает
общие знания.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39989984
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79, какой я тебе олдскул? Тебе сорокет? Ну и я недалеко ушел.

Так что нечего тут в молодого играть. Я прекрасно вижу твои трудности
и как ты рассуждаешь. У тебя точка зрения менятеся от работы к работе.

У тебя мудрость настанет тогда, когда перестанешь идеализировать
Spring или "прятаться в домике" бизнес-кодера. Если хочешь расти
в карьере - будешь учить bash, python, groovy, kotlin, scala, и тысячи
диалектов конфигураций теже Докеры. И тот-же SQL учить придется.
Будет задача перформанса. И некому ее решать. Будешь сам решать.
Нет такого девопса который тебе SQL напишет. И нет такого архитектора
который за тебя напишет конфигурации gradle, maven. И никто бинарные
форматы сериализаций за тебя читать не будет. Ты должен уметь глазами
читать hex-codes. Это полезный скил по жизни. Как у самурая - владение
клинком. Так и у разработчика способность читать целые числа хотя-бы
в трех системах счисления. И Linux знать надо чтоб обосновать и выбрать
конфигурацию. Кто за тебя ее выберет? Заказчик что-ли? Он невкурсе?
И амазон облако соптимизировать по биллинку тоже тебе надо.

Видишь сколько всего надо? А ты хочешь отсидеться в кустах.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990009
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
В принципе если ты знаешь историю- то поймешь ,что именно разделение труда и есть основной двигатель прогресса.
Коряво оно сейчас разделяется.
Исторически разделение труда стартовало на относительно простых технологических процессах. Типа "девятнадцать операций для изготовления булавки". Только потом подтянулось разделение труда в инженерной и научной сфере, что позволило создавать неимоверно сложные процессы и технологии, которые уже невозможно уложить в голове отдельно взятого человека.
Программирование, в некотором смысле, шло в обратном направлении: академически простые элементарные операции (машина Тьюринга - примитивна), которые сразу объединены в сложнейшие комплексы.
Современные попытки "индустриализации" программирования - скорее попытки управлять этой сложностью, а не реальное разделение труда. Просто потому, что в "нормальной" индустрии даже простой рабочий неплохо понимает общий процесс: что, как, зачем и почему. А в программировании этого понимания нет до сих - большая и местами дурно пахнущая куча механик и эвристик: "исторически сложилось".
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990038
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasar
Точнее приложение запускается через NetBeans, сервер Tomcat
ну там же видно в логе, что оно запускается, деплоится, потом происходит редеплой. Очевидно, что редеплой делает ваша IDE (может явно, а может и не явно за счет обновления содержимого директории), а не бут.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990107
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
mayton
Zzz79, какой я тебе олдскул? Тебе сорокет? Ну и я недалеко ушел.
ты олдскул в плане прогерства)
я то новая водлна - не успел застать конфигрустов слава богу)



Ахахах.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990122
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79

В некоторых конторах собственно ничего и не поменялось- бекэнд разраб в их понимании должен уметь и сервак настроить и порты прокинуть и Тимсити до кучи.
В нормальных конторах,где процесс выстроен правильно такого просто априори быть не может,там дев опс выполняет свои задачи,фронт свои,бек свои.


Во тип! не смог в коте приложение развернуть и поэтому решил что этим кто-то другой должен заниматься
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990181
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
В некоторых конторах ...
В нормальных конторах ...
Хотел понаписать "многабукав", но передумал - потерянное вы поколение. Жизнь ваша не просто скудна - вы даже не пытаетесь понять, насколько вы оскопили сами себя: "Да чё тут думать - прыгать надо".
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990249
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Zzz79
В некоторых конторах ...
В нормальных конторах ...
Хотел понаписать "многабукав", но передумал - потерянное вы поколение. Жизнь ваша не просто скудна - вы даже не пытаетесь понять, насколько вы оскопили сами себя: "Да чё тут думать - прыгать надо".


Чем сильнее специализация, тем развитее экономика.
Так что все норм.

Раньше программисты, перед тем чем программировать паяли себе компьютер. :-)

Понятно, что знать лучше чем не знать.
Но если знаниями постоянно не пользоваться они забываются.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990273
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Чем сильнее специализация, тем развитее экономика
уже специалист.
Ключевое в современной экономике - разделение труда. Специализация - (уже) пройденный этап.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990284
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по моему, современному программисту просто не хватает философии.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990328
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы браться за философию надо бы подтянуть, для начала, общее образование.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990337
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
сейчас на прод стенд выделяют даже в слабонагруженой системе как у нас 16 гиг озу-а
"... кому жемчуг мелок".
Я вот вижу рабочие системы, где виртуальной машине выделено 4-8ГБ. И больше не будет. Вообще или в обозримом будущем.

P.S.
Зарубите уже на своём снобском носу, что не вы, а бизнес решает - сколько денег выделить на ресурсы.
А уж сколько ресурсов вы сможете купить на эти деньги - уже совсем другая история.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990342
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79

Пример с волгой мне напомнил одного товарища,который до сих пор против ломбок,он как только эти анотации видит у его пар из ушей идет- тоже олд скул прогер далеко за 50 .Пытался с ним спорить,что все это тонны гетеров,сетеров и конструкторов и билдеров просто захламляют класс,делают его не читаемым- бесполезно обьяснять "там же все равно будет этот код")


ИМХО lombok не особо нужен.
Как минимум в IDEA и Eclipse можно создавать getter/setter и пр. через автогенерацию.
Вместо lombok можно взять Kotlin. ;-)
У lombok есть сайдэфекты, при работе со Spring [ [spoiler]url=
YouTube Video
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990343
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

У lombok есть сайдэфекты, при работе со Spring
есть смысл тратить час на просмотр или там очередные имбецилы?
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990350
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
тратить час

я так понимаю речь о 40-й минуте и дальше
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990354
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
очередные имбецилы?
ну да, так и есть. Мы берем и вставляем бизнес-логику в POJO (@javax.validation.Valid придумано для лохов видимо), а потом удивляемся чего это оно не работает как ожидается, и при этом виноватым оказывается annotation processor, а про то что это все может и без lombok лететь в тартарары при смене сериализатора/компилятора мы умалчиваем.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / ServletContextListener.contextInitialized() выполнянется два раза
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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