![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| p0zt3r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 4.2.2007 Где: Самара Репутация: нет Всего: 6 |
Привет всем!
Вопрос, наверное, достаточно ламерский. Знаком с Java 3 дня. Передо мной достаточно большой интранет-веб сервис, работающий на контейнере JBOSS, и мне нужно его немного доработать и что-то переделать. Знаком с синтаксисом Java, но сам я PHP-программист, есть также опыт ActionScript. Проблема первая: Я не знаком с Java вообще. За 3 дня узнал, в принципе, как всё это работает, но поверхностно. Где посмотреть как устроен JBOSS и как происходит обработка запросов? Ведь, как я понимаю, JBOSS при своём запуске подключает сервлет-классы, вызывая в них init-метод, после чего начинается главный цикл JBOSS - биндинг к сокетам, получение HTTP-запроса, определение того, что клиенту нужно и выполнение doGet/doPost методов конкретного сервлета. Объясните мне, как программисту, который писал под TCP/IP на С++ когда-то небольшие программы, как работает весь цикл JBOSS'а. Проблема вторая: Подозреваю, что архитектура системы передо мной, мягко говоря, корявая. Дело в том, что есть в ней набор представлений - экранов для пользователей, где они могут выполнять различные однотипные действия. Их около сотни - всякие добавления новых юзеров, покупка товаров, вывод отчётов и т.п. Некоторые действия требуют подтверждения или состоят из нескольких шагов. Все эти действия реализованы как сервлеты. Правильно ли это архитектурно? Потому что, как мне очевидно, сервлетов должно быть немного, например:
Иными словами, сервлеты отражают объекты мира и действия над ними. В данной же архитектуре это выглядит вот так:
Сервлеты, как я понимаю их философию, это как бы маленькие веб-серверы, которые работают внутри JBOSS, который реализует среду для их выполнения (надстройку над JVM), и маппинг физических HTTP-запросов в java-классы (сами сервлеты). Ну и третий вопрос: Какую книгу посоветуете, чтобы узнать, что значат хитромудрые слова, типа beans, web facets, что такое stripes и тому подобное? Просто нужно много свечей, чтобы перечитать всё в Интернете, а нужна хорошая выборка по Веб-технологиям Java. Не могу запомнить даже некоторые названия и не знаю, что конкретно мне может быть необходимо. Вообще не знаю, какой вопрос задать, чтобы мне на него ответили, потому что не знаю, чего я не знаю. Спасибо за понимание! Благодарю всех за ответы! Живите счастливо! --------------------
24*7*365*геморой*зарплата=0 |
|||
|
||||
| Platon |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 10 Всего: 40 |
Интересно, что смогут человеку посоветовать.
Я так и не осмелился взяться за Java4Web, а когда возьмусь, то уберегу свой хрупкий мозг от кучи всяких тяжеловесных фреймворков. А за судьбой ТС интересно понаблюдать. Сам я тоже на хлеб зарабатываю PHP, а Java в свободное время, хотя когда сайтец денежку приносить начнет, потихоньку переделаю под Java Обычно всех направляют на эту мыльную оперу Взяли новичка, писали проект с начала и довели его до логического завершения.
А смысл вам это знать? JBoss как раз такая "надстройка", которая позволяет программисту избежать этой головной боли.
В принципе, можно каждое действие писать в отдельный сервлет. Наверно, это кому как нравится. Во многих фреймворках вообще 1 сервлет-диспетчер, который сам распределяет запросы по своим внутренним структурам. Удачи! |
||||
|
|||||
| serger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 2 Всего: 5 |
-------------------- упс! |
|||
|
||||
| p0zt3r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 4.2.2007 Где: Самара Репутация: нет Всего: 6 |
Platon, а как я могу кодить не представляя как это устроено? Я не говорю о всех технических тонкостях. Но с чёрными ящиками тяжеловато.
Просто по факту это всё дико тормозит. Может ли это связано быть с количеством сервлетов, допустим? Или это просто код такой? --------------------
24*7*365*геморой*зарплата=0 |
|||
|
||||
| cube |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 11.4.2007 Репутация: нет Всего: 3 |
JBoss вообще тяжеловесная штука, она будет тормозить. Если тебя берут как разработчика именно под то с чем тебе сложно, и не понятно. Я бы наверное отказался, хотя на яве сижу уже нормально. Но на JBoss, пока не претендую, мне кажется громоздко, сложно и немножко неоправданно. Я долгое время примерно с год привыкал к apache cocoon, на работе был уже веб проект который крутился на этой штуке, за год, я научился писать свои проекты с использованием этой технологии, но сейчас сесть снова на cocoon - упаси господи... на мой взгляд такая же как jboss тяжелая во всех смыслах этого слова штука как для мозгов так и для компа. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 10 Всего: 40 |
у черного ящика обычно есть белые API, которые обычно логично преподаются в книжках, которые пока почему-то никто не порекомендовал ещё, кроме как serger, но сановские доки читать - не лучший вариант. У меня есть 3 книжки по JBoss в формате chm. Сам, понятное дело, их даже не открывал и сильных рекомендаций дать не могу, если надо стучись в личку, отправлю по почте. Добавлено через 1 минуту и 52 секунды cube, бальзам а душу, а то я начал подозревать себя в слабоумии. Это сообщение отредактировал(а) Platon - 27.7.2009, 17:34 |
|||
|
||||
| Vasay |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 18 Всего: 73 |
Сложно что-то советовать не зная архитектуры приложения. Но из описания данного p0zt3r, сложилось впечатление, что лучше и не знать. JBoss - это всего лишь сервер приложений, реализующий Java EE спецификацию. Вопрос, что из Java EE использует приложение? Вполне возможно, приложению JBoss совершенно не нужен - хватило бы и TomCat-а. p0zt3r, Можете выложить код, например, ShowNewsAtMainPageServlet ? -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
| p0zt3r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 4.2.2007 Где: Самара Репутация: нет Всего: 6 |
Vasay, с новостями всё понятно. Я покажу штуку, которая позволяет добавить заказ. В PHP это называется "быдлокодинг". Я не знаю, насколько это приемлимо в Java, несмотря даже на то, что просто нет шаблонизатора. (Кстати, какие есть шаблонизаторы?)
Есть, например, технология EJB, которая реализует динамическое обращение к объектам и в моём случае, она используется. Мне нужно вывести, допустим, пользователю список возможных действий в данном конкретном сервлете. Как это правильно (в стиле Java) сделать? Т.е. по сути, сервлет ещё не знает во время выполнения, что реализует конкретный класс (ex.: он создаётся во время выполнения отдельной факторией), отвечающий за логику, и ему надо на лету узнать какие доступны его методы. После этого он отрисовывает клиенту, скажем JSON (это уже понятно как делается), в котором есть список действий, доступных для клиента. Соответственно, хотелось бы понять, как удобнее всего делать маппинг URI к сервлету в данном случае, ведь есть два варианта:
Скажем, мне нужно сделать админку, с помощью которой можно было бы деплоить на сервер jar'ы и прикручивать их к интерфейсу (как, скажем в PHP CMS Joomla - каждый модуль может быть просто залит на сервер и сразу становится видимым для CMS). Насколько широки возможности работы с динамическими типами в Java? А вот пример кода
Если кто-то заметил, в этой каше, форма передаётся сервлету RedirectedFromAddingOfferServlet. В нём происходит отрисовка второго шага действия. И т.п. Как вот к такому трэшу прикручивать Веб 2.0?! Вижу, что нужен, во-первых, шаблонизатор. Во-вторых, нужно либо хранить какие-то метаданные представлений, чтобы делать сборку, либо делать сборку страниц уже на клиенте. В-третьих, необходимо разработать модель взаимодейтсвия клиента с сервером на основе событий, либо продумать MVC-логику фронтэнда сервера. Какие есть решения и какие мысли? --------------------
24*7*365*геморой*зарплата=0 |
|||
|
||||
| Vasay |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 18 Всего: 73 |
p0zt3r,
мда... Могу Вам только посочувствовать.
Шаблогизаторы: Velocity, freemarker. Мысли - выкинуть этот движок, взять, например, Spring+Hibernate(TopLink или JPA)+Velocity (freemarker или Jsp) и сделать с нуля... Так как расширение функционала такого проекта будет стоить много крови и нервов. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 10 Всего: 40 |
присоединяюсь. Мегажестоко (( техлида в отставку! поставить вопрос перед начальством. |
|||
|
||||
| p0zt3r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 4.2.2007 Где: Самара Репутация: нет Всего: 6 |
Platon, техлиду самому посочувствовать можно
Добавлено через 2 минуты и 32 секунды Пойду лучше за водкой --------------------
24*7*365*геморой*зарплата=0 |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 4 Всего: 27 |
Единственный случай, когда можно оправдать хоть как-то этот код это если бы он был написан в прошлом веке. В любом случае - на свалку.
По существу. Очень желательно сразу начать рефакторить. Первым делом - разметку в jsp не меня функционала. (или в Velocity) Привести все к виду Model 2. А потом уже смотреть и рефакторить архитектуру, прикручивать фреймворки и всякие хибернейты, на следующей итерации. Если сразу за все взяться - ничего не получится и пойдете потом в интернетах java'у хулить Это сообщение отредактировал(а) fixxer - 27.7.2009, 23:20 -------------------- ![]() |
|||
|
||||
| p0zt3r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 4.2.2007 Где: Самара Репутация: нет Всего: 6 |
Я хочу поблагодарить Platon за отличные книги по JBOSS! Особенно за доку JBOSS at Work!
fixxer, не! Я почитал сейчас про JBOSS и всё встало на свои места. Сервлеты рулят однозначно! Спасибо за поддержку, но думаю тут надо всё под корень сносить. И к этому и идём. Собственно, бизнес-логика переработана. Веб всё равно с нуля писать. Причём, я там хочу реализовать так, чтобы сборка страницы на клиенте делалась. Т.е. больше уклон на написание мощного js-клиента. А сервер будет только ресурсы предоставлять. JSP я не вижу смысла использовать пока. Т.е. он-то конечно будет, но только для того, чтобы выдать клиенту клиентское js приложение и интерфейс нескольких страниц. Всё остальное будет собираться уже этим клиентом. --------------------
24*7*365*геморой*зарплата=0 |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 4 Всего: 27 |
Хозяин, конечно, барин. Но как на мой вкус js и ajax это в конце - шлифовка, лоск или когда ничего уже не помогает. (Другой вариант если все вокруг ajax строить. Но на это есть GWT и прочее) Если грамотно страничку по кусочкам собирать - посмотри Tiles. Или компонентные фреймворки Tapestry 5, Wicket, JSF.
-------------------- ![]() |
|||
|
||||
| Vasay |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 18 Всего: 73 |
p0zt3r,
Я так понял это интернет сайт? Если так, то
неверный ход. для 99% проектов - это смерть: - Несовместимость с SEO - Несоответствие URL контенту - Вы не заставить все это корректно работать во всех браузерах Так же лучше избегать для публичных ресурсов фрэймворков активно использующих js (jsf, gwt....)
Почитайте, например, про Spring MVC, например это: http://static.springsource.org/docs/Spring-MVC-step-by-step/ -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |