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

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

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



то спринг его "проинициализирует" дважды. один раз где то посередине, а потом в конце. а мне надо чтоб только в конце было.
...
Рейтинг: 0 / 0
27.04.2016, 14:22
    #39225658
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
lor2надо запустить процесс ровно один раз ровно после запуска всех остальных причиндалов
Не после "ВСЕХ остальных причиндалов", а только после тех, от которых этот бин зависит. Иначе у вас присутствуют какие-то не очевидные для спринга связи. Что чревато.
...
Рейтинг: 0 / 0
27.04.2016, 14:27
    #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
27.04.2016, 14:31
    #39225680
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
lor2долго смотреть от которых он зависит, проще запустить просто после всех и не переживать.
Спринг знает кто от чего зависит, поэтому ему проще.
http://www.journaldev.com/2637/spring-bean-life-cycle-methods-initializingbean-disposablebean-postconstruct-predestroy-aware-interfaces

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

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

всё же я думаю есть какой то простой способ.
...
Рейтинг: 0 / 0
27.04.2016, 14:35
    #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
27.04.2016, 15:11
    #39225752
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
lor2вот что вываливает:
Кто-то пытается остановить Tomcat, когда он не запущен. При чем тут Spring?
...
Рейтинг: 0 / 0
27.04.2016, 15:19
    #39225764
lor2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
кто кто. идея. кто ж еще.
...
Рейтинг: 0 / 0
27.04.2016, 15:21
    #39225767
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
lor2кто кто. идея. кто ж еще.
И?
...
Рейтинг: 0 / 0
27.04.2016, 15:32
    #39225788
lor2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
Blazkowicz,
ладно ладно. если это норамльно, то пусть так и будет.
...
Рейтинг: 0 / 0
27.04.2016, 15:58
    #39225830
lor2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
lor2,

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

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

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

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

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

да, я могу тупо написать еще одно приложение, которое будет с этим спринг мвс приложением скажем, общаться через тот же рест перекидываясь джейсонами. но. я хотел бы в рамках одного приложения это сделать.
...
Рейтинг: 0 / 0
27.04.2016, 18:34
    #39226047
lor2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
вкратце, как пример задачи - я хочу на яве написать телеграм бота с вебадминкой. не городить же мне отдельно админку отдельно "тело" бота? приложение элементарное.
...
Рейтинг: 0 / 0
27.04.2016, 18:34
    #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
27.04.2016, 18:43
    #39226058
lor2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
нет это был не явадокс, видать пейсатель тиснул чутка вдохновения оттуда )) кстати спасибо за наводку, это как раз тема скедлера )
...
Рейтинг: 0 / 0
27.04.2016, 18:44
    #39226060
no56892
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
Жесть!
Jetty + Netty тебя спасут.
...
Рейтинг: 0 / 0
27.04.2016, 19:05
    #39226076
lor2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Спринг. совсем простой вопрос по бинам
no56892,

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

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

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

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

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


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