powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Спринг. совсем простой вопрос по бинам
25 сообщений из 32, страница 1 из 2
Спринг. совсем простой вопрос по бинам
    #39225560
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
собссно есть проект на спринг мвс, надо запустить процесс ровно один раз ровно после запуска всех остальных причиндалов. я так понимаю я просто создаю бин, прописываю его в конфиге и всё? как мне его вызвать только раз. там же синглтоны по дефолту все.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225564
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в смысле я просто как обычно раз вызваю его и собссно всё? а где лучше это сделать?
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225570
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2ровно после запуска всех остальных причиндалов
по русски говори
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225595
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@PostConstruct, нет?
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225601
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123lor2ровно после запуска всех остальных причиндалов
по русски говори
когда ты спринг мвс приложение запускаешь, до того как всё стартанет - он внутри себя запускает кучу разных бинов и подключает кучу разных библиотек.

Так вот, если ты просто в классике пишешь бин в а-ля:

Код: java
1.
2.
3.
4.
5.
6.
7.
@Configuration
......
@Bean
    public Daemon startDaemon(){
        Daemon d = new Daemon();
        return d;
    }



то спринг его "проинициализирует" дважды. один раз где то посередине, а потом в конце. а мне надо чтоб только в конце было.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225658
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2надо запустить процесс ровно один раз ровно после запуска всех остальных причиндалов
Не после "ВСЕХ остальных причиндалов", а только после тех, от которых этот бин зависит. Иначе у вас присутствуют какие-то не очевидные для спринга связи. Что чревато.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225672
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
долго смотреть от которых он зависит, проще запустить просто после всех и не переживать. ну ладно даже если так - это еще сложнее )) порядок инициализации бинов надо знать как минимум. в общем сделал колхоз стайл с синглотоном:

Код: java
1.
2.
3.
4.
5.
    @Bean
    public Daemon startDaemon(){
        Daemon d = Daemon.start();
        return d;
    }



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
public class Daemon {
    static Daemon d;
   

    public static Daemon start() {
        if (d == null) {
            d = new Daemon();
            return d;
        } else {
            return d;
        }
    }

    Daemon() {
        System.out.println("START START START!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(" daemon is running!!!");
                }
            }
        });
        t.run();

    }
}



в таком виде работает, запускается раз (можно запускать тред с задержкой, и наверняка будет после всех) но мне кажется это костыль, и есть наверняка какая-нибудь красивая аннотация, которая запустит что то тогда, когда надо. типа скеджюэль.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225680
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2долго смотреть от которых он зависит, проще запустить просто после всех и не переживать.
Спринг знает кто от чего зависит, поэтому ему проще.
http://www.journaldev.com/2637/spring-bean-life-cycle-methods-initializingbean-disposablebean-postconstruct-predestroy-aware-interfaces

lor2и есть наверняка какая-нибудь красивая аннотация, которая запустит что то тогда, когда надо. типа скеджюэль.
Написали же уже выше про @PostConstruct
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225685
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник@PostConstruct, нет?
точно. теперь запускается как надо :) благодарю.

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

всё же я думаю есть какой то простой способ.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225690
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот что вываливает:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
27-Apr-2016 16:30:54.666 SEVERE [main] org.apache.catalina.startup.Catalina.stopServer Catalina.stop: 
 java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at java.net.Socket.connect(Socket.java:538)
	at java.net.Socket.<init>(Socket.java:434)
	at java.net.Socket.<init>(Socket.java:211)
	at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:450)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:400)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:487)
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225752
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2вот что вываливает:
Кто-то пытается остановить Tomcat, когда он не запущен. При чем тут Spring?
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225764
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кто кто. идея. кто ж еще.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225767
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2кто кто. идея. кто ж еще.
И?
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225788
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
ладно ладно. если это норамльно, то пусть так и будет.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225830
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lor2,

и всё же, вопрос: правильно ли я делаю запуская таким образом демона для своего мвс приложения?
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225846
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2lor2,

и всё же, вопрос: правильно ли я делаю запуская таким образом демона для своего мвс приложения?
Зависит от того что ты вкладываешь понятие в "запуская таким образом демона". Если это new Thread().start(), то нет, не правильно.
Такое решение чревато несколькими проблемами.
- Утечки в пермген/metaspace при редеплое.
- Код, вызываемый из нового потока не может корректно работать с контекстом Spring и JEE контейнера.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39225869
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2демона для своего мвс приложения
imho демон это аналог службы винды. Т.е. термин операционки
https://ru.wikipedia.org/wiki/Демон_(программа)
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39226039
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
где то в американской книжке читал как они там определенный тип тредов называли демонами. в яве.

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

какое решение?

то, что я сверху написал оно да работает но мне не нравится именно то что ты описал при редеплое выходит фигня какая то.

да, я могу тупо написать еще одно приложение, которое будет с этим спринг мвс приложением скажем, общаться через тот же рест перекидываясь джейсонами. но. я хотел бы в рамках одного приложения это сделать.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39226047
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вкратце, как пример задачи - я хочу на яве написать телеграм бота с вебадминкой. не городить же мне отдельно админку отдельно "тело" бота? приложение элементарное.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39226048
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2где то в американской книжке читал как они там определенный тип тредов называли демонами. в яве.
https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#isDaemon()
JavaDoc, да. Отличная книга.

lor2а так да суть ты верно описал.
допустим, у меня есть некое спринг приложение. я в рамках этого приложения хочу запускать параллельно процесс, который крутится постоянно в качестве "демона" и отправляет по нужному адресу нужную инфу.
какое решение?

Механизмы запуска фоновых задач средствами контейнера:
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39226058
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет это был не явадокс, видать пейсатель тиснул чутка вдохновения оттуда )) кстати спасибо за наводку, это как раз тема скедлера )
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39226060
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жесть!
Jetty + Netty тебя спасут.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39226076
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
no56892,

спасибо, но я хочу спринг и томкат. еще вариант:

самый простой:

@Scheduled(fixedDelay=5000)
public void doSomething() {

запускает процесс в методе и ждет его окончания , потом через 5 сек запускает его же еще раз.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39226081
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2допустим, у меня есть некое спринг приложение. я в рамках этого приложения хочу запускать параллельно процесс, который крутится постоянно в качестве "демона" и отправляет по нужному адресу нужную инфу.
нужно чтобы каши не было.
"спринг приложение" - это архитектура.
Непонятно зачем тут веб контейнер и аппСервер у тебя.
Если запросов к АппСерверу нету.
...
Рейтинг: 0 / 0
Спринг. совсем простой вопрос по бинам
    #39226106
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2вкратце, как пример задачи - я хочу на яве написать телеграм бота с вебадминкой. не городить же мне отдельно админку отдельно "тело" бота? приложение элементарное.
Тут смешались в кучу кони, люди. Начни с малого. Напиши консольное приложение и запускай
его по cron-у. В качестве веб-слушателя подключи Джетти. Как посоветовали правильно выше.
все равно тебе 1 страничка нужна. Логи смотреть и трабл-шутить.

Вобщем будь скромнее мать твою пятак
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Спринг. совсем простой вопрос по бинам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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