|
|
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
Допустим у меня есть некоторое веб приложение, в котором есть ряд классов, которые часто нужно исправлять. В этих класса собственно реализован парсеры разных веб страниц. Веб страницы часто меняются и нужно менять код парсеров соответственно. Классов таких дохрена. Соответственно очень часто приходится вносить изменения. Что за собой влечет пересборку всего приложения и перезалитие его на сервер, перезапуск томкота. Возникает вопрос. А можно ли както реализовать типа модули для веб приложения? Чтоб не перезапускать целиком томкэт. Чтоб как динамические библиотеки эти модули докладывать в определенное место? Сразу возникает вопрос, надо ли будет их выгружать и потом подгружать после замены и как вообще это можно реализовать, если можно вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 09:18:27 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jab, что ты собрал всё в кучу: пересборку (долго что ли?), деплой, перезапуск Приложения и перезапуск Томката. Ну, и до кучи совсем забыл об удобствах пользователя. Как обычно, программист думает только о себе. Вот инфа пригодится: процесс обновление веб приложения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 09:58:54 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
Petro123 , у меня нет кладовщика и неправильных данных вводимых кладовщиком. У меня должен постоянно быть запущен сервер. На время передеплоя, кто не успел дополучить ответ с сервера, тот получит ошибку, а кто захочет обратится к серверу то тоже получит ошибку. Хоть передеплой у меня занимает примерно секунд 5, но тем не менее. Собственно вручную происходит загрузка war на сервер, дальнейшая его распаковка там и потом уже рестарт томкота занимает секунды. За эти секунды кто-то может словить ошибки т.к. я не смотрю, да и не могу ждать, чтоб повыходили все и не заходили новые. Это происходит глубокой ночью для пользователей, но не факт, что все будут спать и не вздумается выполнять запросы к приложению. Так что как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 10:32:13 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
Я вот думаю, может можно .class файлы грузить как-то динамически.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 10:34:27 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jab, По ссылке дело не в кладовщике или Васе пупкине. А корректном обновлении всего стека Приложения включая кэши. - почему нужно перезапускать томкат, если у него есть веб-админка для управления деплоем и перезапуском приложений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 10:36:59 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
описать парсинг, например, груви-скриптами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 10:55:22 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jabЯ вот думаю, может можно .class файлы грузить как-то динамически.. Да. Можно перезагружать классы. Но нужно быть уверенным, что после перезагрузки, загруженные ранее классы удалятся GC, а то иначе приложение когда-нибудь упадет с OutOfMemory. пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 11:53:30 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jabДопустим у меня есть некоторое веб приложение, в котором есть ряд классов, которые часто нужно исправлять. В этих класса собственно реализован парсеры разных веб страниц. Ошибка в архитектуре. Если страниц много, то должен быть какой-то обобщенный механизм разбора сайтов. Например, с помощью xpath или регулярных выражений. И заниматься такими штуками должны не программисты, а более дешевый персонал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 13:30:49 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jabУ меня должен постоянно быть запущен сервер. На время передеплоя, кто не успел дополучить ответ с сервера, тот получит ошибку, а кто захочет обратится к серверу то тоже получит ошибку. Вторая ошибка в архитектуре. Модуль сбора (fetcher) и UI должны быть разными приложениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 13:32:08 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
Я думал по поводу обобщенного механизма парсинга. И по поводу скриптов думал. Но сайтов очень много и на некоторых чтоб вынуть нужное приходится изрядно извратится! Иногда достаточно просто распарсить по тэгам страничку и собрать данные. Иногда попадаются более толковые странички, где заложен готовый json с нужной мне информацией (позаботились писатели сайта). Иногда приходится яваскрипт парсить на страничке, чтоб выдрать нужную информацию. Иногда есть АПИ и туда надо перейти, чтоб получить опять таки либо json либо xml, который распарсить по элементам. Иногда всё в куче на одной страничке и приходится извратится чертика, чтоб достать что-то. Нет общего принципа. Вот например на некоторых часть информации достаю разбирая тэги, другую часть достаю разбирая яваскрипт и ещё некоторую часть достаю выполняя в цикле запросы дополнительно и получая респонсы с нужной информацией. Как это описать всё в скриптах я не представляю даже. В коде то не сразу опишешь... изьебнуться приходится изрядно и под отладчиком потом доводить до ума если где не работает по непонятной причине. А причины бывают как json кривой пришел или ещё х.з. ньюансов много. Наверно в перезагрузке классов выход из положения. Реализовано так. Есть массив с названиями классов. Посути они все загружаются в массип при пуске приложения. Потом когда делается запрос, то находим в массиве нужный класс и клонируем его и уже в клоне выполняем методы парсинга. Вот я и подумал, что может сделать методы выгрузки из массива и догрузки в массив. Ну и чтоб из памяти выгружать можно было... В общем пока не знаю как правильно делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 15:40:53 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
Колекция обьектов(классов парсеров), а не массив. По старой привычке массивами называю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 15:43:25 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jabКак это описать всё в скриптах я не представляю даже. В коде то не сразу опишешь... изьебнуться приходится изрядно и под отладчиком потом доводить до ума если где не работает по непонятной причине. groovy также функционален, как и Java. А еще сайты имеют свойство переодически обновлятся. По мелкому или по крупному. Менять разметку, логику работы и т.п. Вам нужны механизмы, которые будут отслеживать проблему "поплохевших" сайтов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 15:51:09 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jab, я не очень понял Цель веб-приложения по ТЗ. Но, если ты парсишь внешние рессурсы, не в Системе. То эту область нельзя автоматизировать. Всё равно будет N класов под N сайтов-урлов. Что у тебя столько классов, что в памяти не вмещаются? Не может быть. Памяти под данные не хватает, а под методы - не может быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 16:04:59 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
LeonidvА еще сайты имеют свойство переодически обновлятся. По мелкому или по крупному. Менять разметку, логику работы и т.п. Вам нужны механизмы, которые будут отслеживать проблему "поплохевших" сайтов. Так и есть! Иногда изменится название класса в HTML и уже не работает. Достаточно зайти, взглянуть на HTML и поправить одну строчку кода и начинает работать. А ради этого нужно релизить заново целое приложение. Не кашерно как-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 16:15:30 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
Petro123Что у тебя столько классов, что в памяти не вмещаются? Не может быть. Памяти под данные не хватает, а под методы - не может быть. Не в этом дело. Дело в предыдущем посте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 16:18:27 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jabPetro123Что у тебя столько классов, что в памяти не вмещаются? Не может быть. Памяти под данные не хватает, а под методы - не может быть. Не в этом дело. Дело в предыдущем посте. теперь понял, но это тебе не поможет. Не автоматизируется = Нельзя разнести статику методов и динамику изменений шаблона сайта. Либо экономия на спичках. Пишу IMHO - плюнь. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 16:29:43 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jabLeonidvА еще сайты имеют свойство переодически обновлятся. По мелкому или по крупному. Менять разметку, логику работы и т.п. Вам нужны механизмы, которые будут отслеживать проблему "поплохевших" сайтов. Так и есть! Иногда изменится название класса в HTML и уже не работает. Достаточно зайти, взглянуть на HTML и поправить одну строчку кода и начинает работать. А ради этого нужно релизить заново целое приложение. Не кашерно как-то. У нас не обработка сайтов, но есть система правил, которая регулярно меняется, и более того правила могут быть доавлены изменены в рантайме - так вот мы прикрутили BeanShell интерпретатор, пару общих функций, заимплементили контекст, в который можно пихать мапу с параметрами, сделали таблички для правил, в которых содержится код самих правил, ну и пару экранов к нему - теперь если нужно поправить правило - просто лезешь через админ страницу - меняешь че надо без всяких перезапусков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 16:32:22 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
забыл ник, много ушло времени? ...Интерпретатор или DSL прикручивать надо. Только фактически это почти такой же код получается. В общем, КПД - вещь сложная. От проекта и денег зависит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 16:39:07 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
Petro123забыл ник, много ушло времени? ...Интерпретатор или DSL прикручивать надо. Только фактически это почти такой же код получается. В общем, КПД - вещь сложная. От проекта и денег зависит. На правилах у нас весь проект держится, они были но в немного другом виде, на самом деле на скрины как всегда больше всего времени ушло, а так прикрутить - биншелл - день, настроить какие-то переменные в контексте и кастомные функции - еще день, структура базы - день, ну так по мелочи еще день - а на скрины неделя где-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 17:14:05 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
Если нужен hot redeploy отдельных модулей, то нужно смотреть в сторону osgi. Самому написать тоже можно в принципе, например, грузить каждый такой плагин-класс в отдельном класслоадере. Но там много тонкостей при взаимодействии классов из разных класслоадеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 17:28:37 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jabА можно ли както реализовать типа модули для веб приложения? Чтоб не перезапускать целиком томкэт.Выносите ваше "часто меняющееся" в отдельное приложение перестартовываете (только один) контекст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 17:55:32 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
jab, я конечно дико извиняюсь, так как в вебе я не так давно да и в java тоже но есть одна ну просто хорошая технология на которой построен Eclipse и NetBeans это технология OSGi думаю вам она как и мне нужна, тока я в ней еще не шарю =) http://samolisov.blogspot.com/2010/08/glassfish-osgi-equinox.html вообщем принцип прост, построить модульное приложение вот и все, модули можно динамически подключать, как раз без перезагрузки всего что так не хочется перезагружать.... вообщем гугл и OSGi но это все равно что написать ваше APP с нуля... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2012, 08:02:15 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
+1 за OSGi. Посмотрите, например, как сделана загрузка плагинов в продуктах Atlassian (Confluence, JIRA, etc.). Только текущий проект переписывать на OSGi, если он написан не профессионалами (по моему опыту большинство Java-программистов вообще не подозревают о наличии Classloader'ов и даже знать о них не хотят, когда пишут код), -- проще застрелиться, столько повылазит того, на что можно было раньше не обращать внимания, что помрете тестировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2012, 16:04:06 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
Petro123То эту область нельзя автоматизировать. Зависит от задачи. Иногда можно (и в этом случае нужно) делать автоматизацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2012, 16:47:32 |
|
||
|
Модули для WEB приложения. (как реализовать?)
|
|||
|---|---|---|---|
|
#18+
LeonidvPetro123То эту область нельзя автоматизировать. Зависит от задачи. Иногда можно (и в этом случае нужно) делать автоматизацию. у тебя какое образование? В одном предложении 3 взаимоисключающих обоснования. Т.е. фраза ни о чём. Разговаривай с аффтаром, а не со мной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2012, 19:48:34 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=281&tid=2131443]: |
0ms |
get settings: |
22ms |
get forum list: |
30ms |
check forum access: |
9ms |
check topic access: |
9ms |
track hit: |
67ms |
get topic data: |
23ms |
get forum data: |
6ms |
get page messages: |
106ms |
get tp. blocked users: |
3ms |
| others: | 347ms |
| total: | 622ms |

| 0 / 0 |
