Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как увязать не MVC приложение в Java EE 
:(
    Опции темы
Walker
  Дата 28.12.2013, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 23.10.2006

Репутация: нет
Всего: 16



Приветы!

Задача простая - надо периодически брать данные из одного места и класть в другое. Какие данные и как часто брать - пользователь скажет (конфигом или через веб страницу пока без разницы). В принципе это был бы обычный системный сервис, но надо, чтобы запускалось под управлением Application сервера. То есть надо, чтобы сервер стартовал и каким-нибудь тредом запускал и мою аппликуху, которая живёт, пока он работает. Я структуру Java EE приложения только в виде квадратиков представляю. BD -> EJB -> JSP/JSF -> HTML. И есть у меня интуитивное чувство, что бизнес логика где-то в EJB жить должна, но как это так реализовать, чтобы к AS на манер полипа присосаться, - без понятия. smile 
Вопрос собственно заключается в том - чтобы на эту тему почитать (можно на международном). Знаю про официальный оракл Java EE 7 tutorial, но это на два-три месяца, начиная с JSF, а мне бы сразу ближе к делу.

Спасибо за любые советы!


--------------------
"От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..."
PM MAIL   Вверх
Walker
Дата 29.12.2013, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 23.10.2006

Репутация: нет
Всего: 16



Хорошо. Несколько перефразирую задачу. Как правильно написать программу, которая запускается в AS при его старте и хеллоувордит раз в минуту в лог на протяжении всего AS-овского жизненного цикла? Ну типа правильная точка входа и всё такое. (Где вот там метод Main должен быть. smile ) Мысль разовью дальше сам. Видел, что у сервлета есть какой-то init. Метод, вроде, по смыслу подходит. Тред/таймер прямо в нём стартовать? Но общий смысл сервелета - респондить на реквесты. И использовать, как я хочу, наверное, не очень правильно?


--------------------
"От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..."
PM MAIL   Вверх
Samotnik
Дата 29.12.2013, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Если нужно простое и быстрое решение, я бы порекомендовал quartz/B
Идея:
Пишется сервлет (это входная точка, метода main нет в веб прилагах), в нем определяешь кварц, который по расписанию будет дергать нужный метод. 
PM MAIL   Вверх
Walker
Дата 29.12.2013, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 23.10.2006

Репутация: нет
Всего: 16



Ага, ну то есть сервлет-таки нормально заюзать для этих целей. За quartz Спасибо - заценим. Вопрос пока открыт на случай альтернативных интересных мнений.


--------------------
"От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..."
PM MAIL   Вверх
Samotnik
Дата 29.12.2013, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Walker, В Java Web всё сервлеты. Даже новомодные Spring controller'ы внутри сервлеты. 
Цитата(Walker @  29.12.2013,  15:59 Найти цитируемый пост)
Вопрос пока открыт на случай альтернативных интересных мнений.

Все зависит только от тебя, будет ли приложение дорабатываться, развиваться, дополняться, будет ли оно сложное или простое. Если в планах достаточно большое приложение, то рекомендую использовать Spring. Без него скучно, даже в какой-то степени сложнее. Но на это нужно много времени, что бы его изучить. Если все будет просто, то нет смысла его сюда тянуть. В нем, кстати, есть свой скедулер.
PM MAIL   Вверх
sergioK1
Дата 15.1.2014, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(Samotnik @ 29.12.2013,  13:42)
Если нужно простое и быстрое решение, я бы порекомендовал quartz/B
Идея:
Пишется сервлет (это входная точка, метода main нет в веб прилагах), в нем определяешь кварц, который по расписанию будет дергать нужный метод.


Walker,
у меня реализовано так,
Код


public class InitContextListener implements ServletContextListener {

    private  Logger logger=Logger.getLogger(CWContextListener.class);
    

    
    public void contextInitialized(ServletContextEvent  servletEvent) {
    
   MyData data=new Mydata();    
    
    AnyTask    anyTask = new AnyTask(myData);
int now=0;
int period = 0;


    ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
        scheduler.scheduleAtFixedRate(anyTask, now, period, TimeUnit.SECONDS);    
    }

}

 class AnyTask implements Runnable (){

 public AnyTask(Mydata data){
    this.data=data;
}
     public void run(){
       logger.info(" param 1 ="+data.getXXX()+ " param 2 "+ data.getYYY());
}
}


в web.xml прописываем 

Код


 <listener>
    <listener-class>package.InitContextListener</listener-class>
 </listener>



т.е. InitContextListener  это entryPoint(main) вебовской апликации.
ну естесно logger сконфигурируй,


Samotnik, 
KISS  smile 
зачем что-то стороннее? профит где?
PM MAIL   Вверх
Samotnik
Дата 18.1.2014, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



sergioK1, как-то не работал с этим скедулером, нужно подробнее изучить
PM MAIL   Вверх
jk1
Дата 21.1.2014, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 5
Всего: 75



Цитата

зачем что-то стороннее? профит где? 


Давай-ка подумаем, что умеет Quartz и не умеет старый добрый ScheduledExecutorService:

1. Quartz умеет привязывать выполнение к конкретному времени по часам, а не просто оперирует интервалами. В том числе позволяет выполнять задачи каждый третий четверг восьмого месяца в 3.15 утра.

2. Quartz умеет отслеживать ситуации, когда периодичность выполнения сбивается (например прошлое выполнение задачи заняло огромное количество времени, превысив даже интервал между запусками) и пытается выправить расписание, "нагоняя" график при дальнейших срабатываниях таймера.

3. Quartz умеет персистить джобы, позволяя переживать рестарты сервера не сбивая расписание выполнения задач.

4. Quartz умеет правильно работать в кластере, не дублируя выполнения задач. Кластеризация для современного AS - очень частый кейс.

5. Quartz умеет работать в контексте транзакций, в том числе распределенных.

6. Quartz предоставляет базовые средства для мониторинга и сбора статистики по выполнению задач.

Выбирать реализацию, разумеется, надо исходя из потребностей конкретного приложения, которых мы пока не знаем.  smile 


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
sergioK1
Дата 21.1.2014, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(jk1 @ 21.1.2014,  20:40)
Цитата

зачем что-то стороннее? профит где? 


Давай-ка подумаем, что умеет Quartz и не умеет старый добрый ScheduledExecutorService:

1. Quartz умеет привязывать выполнение к конкретному времени по часам, а не просто оперирует интервалами. В том числе позволяет выполнять задачи каждый третий четверг восьмого месяца в 3.15 утра.

2. Quartz умеет отслеживать ситуации, когда периодичность выполнения сбивается (например прошлое выполнение задачи заняло огромное количество времени, превысив даже интервал между запусками) и пытается выправить расписание, "нагоняя" график при дальнейших срабатываниях таймера.

3. Quartz умеет персистить джобы, позволяя переживать рестарты сервера не сбивая расписание выполнения задач.

4. Quartz умеет правильно работать в кластере, не дублируя выполнения задач. Кластеризация для современного AS - очень частый кейс.

5. Quartz умеет работать в контексте транзакций, в том числе распределенных.

6. Quartz предоставляет базовые средства для мониторинга и сбора статистики по выполнению задач.

Выбирать реализацию, разумеется, надо исходя из потребностей конкретного приложения, которых мы пока не знаем.  smile

1)T,C, сказал  что надо каждую минуту,
 drinking  glass of milk caw doesn't  require smile 

2) Кварц это не быстрое решение, с ним надо разбираться ,
А в  реальной жизни, когда аджал на 3 недели , времени с ним 
разбираться особо нет ,

3) Ты с ним работал ? или прочитал на сайте какой он крутой  smile ?

PM MAIL   Вверх
Samotnik
Дата 21.1.2014, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Цитата(sergioK1 @  21.1.2014,  22:08 Найти цитируемый пост)
2) Кварц это не быстрое решение, с ним надо разбираться ,
А в  реальной жизни, когда аджал на 3 недели , времени с ним 
разбираться особо нет ,

Мне хватило первый раз в жизни трех часов, уже года два класс не менялся, все работает  smile 
Ну да ладно, все это флуд, кому что нужно, то и выбирают. Лично на мой взгляд, ScheduledExecutorService показался не гибким. 

Это сообщение отредактировал(а) Samotnik - 21.1.2014, 23:36
PM MAIL   Вверх
Magistrus
Дата 22.1.2014, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



если решишь связыватся с EJB то вот ссылочка
http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html

Это сообщение отредактировал(а) Magistrus - 22.1.2014, 12:51
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
jk1
Дата 22.1.2014, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 5
Всего: 75



Цитата

2) Кварц это не быстрое решение, с ним надо разбираться ,
А в  реальной жизни, когда аджал на 3 недели, времени с ним 
разбираться особо нет ,

Если задача "разобраться с кварцем" занимает больше трех недель, то, конечно, использовать его не стоит. Квалификацию имеющихся разработчиков всегда стоит принимать во внимание при выборе фреймворков и библиотек.
Мой первый опыт с кварцем дал работающий результат через час-два, просто потому что в гугле полно примеров + есть документация.

Цитата

3) Ты с ним работал ? или прочитал на сайте какой он крутой  smile ?

Сам я использую кварц уже порядка двух лет, в основном через спринг. Правда мне не очень понятно, как этот вопрос поможет топикстартеру решить его проблему.

Чтобы избежать недопонимания: Я не пытаюсь объявить кварц панацеей. Мой пост описывает те фичи, которые в кварце есть по сравнению с ExecutorService'ом, отвечает на заданный ранее вопрос.  Дальше ТС пусть сам смотрит, какие фичи больше подходят под его конкретную задачу.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
sergioK1
Дата 22.1.2014, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(jk1 @ 22.1.2014,  14:20)
Сам я использую кварц уже порядка двух лет, в основном через спринг. Правда мне не очень понятно, как этот вопрос поможет топикстартеру решить его проблему.

Чтобы избежать недопонимания: Я не пытаюсь объявить кварц панацеей. Мой пост описывает те фичи, которые в кварце есть по сравнению с ExecutorService'ом, отвечает на заданный ранее вопрос.  Дальше ТС пусть сам смотрит, какие фичи больше подходят под его конкретную задачу.

Я думаю T.C. этого и хотел (увидеть несколько вариантов решения) ,


Про спринг не понял ?какая разница через что кварц вызывать?  

Это сообщение отредактировал(а) sergioK1 - 22.1.2014, 19:25
PM MAIL   Вверх
jk1
Дата 22.1.2014, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 5
Всего: 75



Цитата

Про спринг не понял ?какая разница через что кварц вызывать?  


В спринге есть некоторое количество хелпер-классов, упрощающих работу с Quartz для распространенных кейсов, тот же MethodInvokingJobDetailFactoryBean например. Но никто, конечно, не запрещает использовать родное API как есть.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
sergioK1
Дата 27.1.2014, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



У меня тут такая штука выходит, бежит мой скедуляр  раз в час , обращаеться к облако сервису ,пишет в MySQL потом читает  и шлет 
алерты по майлу, если надо, Ничего сложного но раз в 4-5 дней connection теряеться (пишет что pool пустой), прописан он в (context.xml томсата) ,  в mySQL
видно как при новом запуске открываються новые потоки, но закрываються не всегда , конекшион проверял ,открытых не остаеться ,
Чем лечить такое? 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1585 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.