Сервлеты
От: xan  
Дата: 07.09.04 14:38
Оценка:
У меня следующий вопрос, как я понимаю сервлет это java приложение запускаемое на сервере
А какие действия он может там выполнять может ли он слушать порты, писать в файл на сервере...
Может есть интересная литература про сервлеты
Re: Сервлеты
От: den123 Израиль http://den123.smugmug.com
Дата: 07.09.04 16:06
Оценка:
Здравствуйте, xan, Вы писали:

xan>У меня следующий вопрос, как я понимаю сервлет это java приложение запускаемое на сервере

xan>А какие действия он может там выполнять может ли он слушать порты, писать в файл на сервере...
xan>Может есть интересная литература про сервлеты

Сервлет выполняется на сервере и ему можно делать все, вообще можно делать Java приложению. Так что на все ваши вопросы ответ — да.
WBR — Yuriy
Re[2]: Сервлеты
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 07.09.04 17:25
Оценка: 3 (2)
Здравствуйте, den123, Вы писали:D>Здравствуйте, xan, Вы писали:

xan>>У меня следующий вопрос, как я понимаю сервлет это java приложение запускаемое на сервере

xan>>А какие действия он может там выполнять может ли он слушать порты, писать в файл на сервере...
xan>>Может есть интересная литература про сервлеты

D>Сервлет выполняется на сервере и ему можно делать все, вообще можно делать Java приложению. Так что на все ваши вопросы ответ — да.


А вот у меня сервера нет, а сервлеты, блин, исполняются. Боюсь что если грамотно написать и подписать applet и настроить сеть, то и в applet-е можно будет исполнять сервлеты.

Это я так. Говорить что сервлеты исполняются на сервере это все равно что говорить что люди живут на планете. То есть условие необходимое но не достаточное. Для выполнения сервлетов нужен специальный сервер, т.н. сервлет контейнер. Где он запущен — на сервере, на PDA или еще где — не важно. Важно что он предоставляет среду для выполнения сервлетов, так называемый контекст. Как реализован этот контекст — зависит от контейнера. Так вот через этот контекст и должны происходить все операции взаимодействия с окружающей средой (операции IO, dispatching и т.д.). Все ваимодействия со средой вне контекста не переносимы между контейнерами.

Насчет слушать порты — оно конечно можно, вероятно, но при этом надо учитывать такие аспекты как настройки безопастности, многопоточность, жизненный цикл сервлета и многое другое. ИМХО — сервлет, это не то место, где надо слушать порты. Слава богу в новых спецификациях введены понятия *Listener и иже с ними. Вот там, если что, и можно начать что-то слушать.

Насчет писать в файл на сервере — файл понятие системнозависемое, и может отсутсвовать на некоторых системах вообще. Контекс поддерживает понятие ресурсов (getResource(java.lang.String path) ). Вот его то и надо использовать для взаимодействия с ресурсами (в том числе и, возможно, файлами).

А вообще сервлет предназначен для обслуживания запросов пользователя по определенному протоколу (чаще всего HTTP). Т.е ты как программист создаешь некое web-приложение и в нем пишешь некий сервлет, который например на запрос "привет" отправлят ответ "а не пошел бы ты, Вася Пупкин". Устанавливаешь приложение в сервлет-контейнере (называется деплоймент), при этом не забыв настроить его как описано в документации. Затем запускаешь сервлет-контейнер (если сервлет-контейнер поддерживает "деплоймнт на ходу" — то можешь просто скопировать твое приложение в нужную папку). И вот пользователь вводит в браузере строку "www.superhost/helloServlet&?helloString=привет" а в ответ ему приходит строка "а не пошел бы ты, Вася Пупкин" . А вся замечательность сервлетов в том, что для каждого такого дебильного запроса не нужно занова запустать программу (то есть создавать новый процесс). Он создатся один раз, при запуске сервлет-контейнера и работает пока он сервлет контейнер не остановишь. А каждый запрс выполняется внутри этого процесса, а как — это тема отдельной статьи, коих в Инете пруд-пруди. (Гугл — рулит).

Вобщем RTFM.
ICQ #333355130
Re: Сервлеты
От: Alex-AKF  
Дата: 07.09.04 18:52
Оценка:
07.09.04 в 18:38 xan в своём письме писал(а):

> У меня следующий вопрос, как я понимаю сервлет это java приложение

> запускаемое на сервере
> А какие действия он может там выполнять может ли он слушать порты,
> писать в файл на сервере...
> Может есть интересная литература про сервлеты

Да это всё и даже больше можно делать.(главное чтоб разрешения были).
На вскидку — неплохие примеры всего этого были например в орейлевской
книжке Java Servlet Programmnig (не найдёшь-мыльни >-) )
Posted via RSDN NNTP Server 1.9 gamma
Re[3]: Сервлеты
От: Alex-AKF  
Дата: 07.09.04 19:07
Оценка: -1
> Насчет слушать порты — оно конечно можно, вероятно, но при этом надо
> учитывать такие аспекты как настройки безопастности, многопоточность,
> жизненный цикл сервлета и многое другое. ИМХО — сервлет, это не то
> место, где надо слушать порты. Слава богу в новых спецификациях введены
> понятия *Listener и иже с ними. Вот там, если что, и можно начать что-то
> слушать.
1) @Listener@ — это случайно не те что были и раньше — LifeCycleListeners?
2) Сокеты слушать можно и нужно, если того требует задача.
Рекомендую посмотреть Java Servlet Programming (orelly). Особенно главу 10
@Applet-Servlet Communication@ — когда я только начинал изучать всё это
дело — эта глава прям-таки открыла мне глаза на мир >.

> А вообще сервлет предназначен для обслуживания запросов пользователя по

> определенному протоколу (чаще всего HTTP).
Да — по протоколу — но ПО любому, который тебе нужен и который ты сможешь
реализовать.

> Вобщем RTFM.


Ваистину — всем читать API. (там даже иногда интересные вещи пишут)
Posted via RSDN NNTP Server 1.9 gamma
Re[2]: Сервлеты
От: xan  
Дата: 08.09.04 04:59
Оценка:
Здравствуйте, Alex-AKF, Вы писали:

AA>07.09.04 в 18:38 xan в своём письме писал(а):


>> У меня следующий вопрос, как я понимаю сервлет это java приложение

>> запускаемое на сервере
>> А какие действия он может там выполнять может ли он слушать порты,
>> писать в файл на сервере...
>> Может есть интересная литература про сервлеты

AA>Да это всё и даже больше можно делать.(главное чтоб разрешения были).

AA>На вскидку — неплохие примеры всего этого были например в орейлевской
AA>книжке Java Servlet Programmnig (не найдёшь-мыльни >-) )

Спасибо за ответы буду читать орелли
Re[4]: Сервлеты
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 08.09.04 06:30
Оценка:
Здравствуйте, Alex-AKF, Вы писали:


AA>1) @Listener@ — это случайно не те что были и раньше — LifeCycleListeners?


Сначала было слово. И слово это было 2 байта.
LifeCycleListeners появились в сервлетах только с версии 2.3
Если ты застал 2.2, то может быть вспомнишь про то, что в спецификации был доступен только HttpSessionBindingListener. Остальные прелести стали появляться потом, в том что я называю "новые спецификации".

AA>2) Сокеты слушать можно и нужно, если того требует задача.

AA>Рекомендую посмотреть Java Servlet Programming (orelly). Особенно главу 10
AA>@Applet-Servlet Communication@ — когда я только начинал изучать всё это
AA>дело — эта глава прям-таки открыла мне глаза на мир >.


Ну так книга то писалась в далеком 1998, а спецификация 2.3 с "LifeCycleListeners" появилась только в 2000.
Тогда действительно небыло "стандартного" способа запустить поток при старте аппликейшена. Поэтому и приходилось писать сервлет, который при инициализации пускает тред и ставить ему load-on-startup в ОЧЕНЬ маленькое значение.


AA>Да — по протоколу — но ПО любому, который тебе нужен и который ты сможешь

AA>реализовать.

А я что сказал Тока нужно чтобы и клиент поддерживал этот протокол. Поэтому он и называется "определенный протокол".
ICQ #333355130
Re[5]: Сервлеты
От: Alex-AKF  
Дата: 08.09.04 12:27
Оценка:
1)Про Listenerы я уточнил — вдруг они чего новго уже выпустили.
2)По поводу запуска потока: что в сервлете, что в listener'e — сути не
меняет — всё изоморфно.
3)Про потокол я уточнил потому, что — не надо зацикливаться на HTTP, что
вот — есть реализация HTTP и всё — мол никакие сокеты нам не нужны. Ещё
раз повторю, что если есть !объективная! необходимость при разработке
своего клиент-серверного решения использовать те же сокеты — надо это
делать.

А ещё из той книжки меня в то время поразило "прикручивание" RMI к классу
(кажись)сервлета.
Мдя — книжка была оч хорошая.
Posted via RSDN NNTP Server 1.9 gamma
Re[6]: Сервлеты
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 08.09.04 13:05
Оценка:
Здравствуйте, Alex-AKF, Вы писали:

AA>1)Про Listenerы я уточнил — вдруг они чего новго уже выпустили.

AA>2)По поводу запуска потока: что в сервлете, что в listener'e — сути не
AA>меняет — всё изоморфно.
AA>3)Про потокол я уточнил потому, что — не надо зацикливаться на HTTP, что
AA>вот — есть реализация HTTP и всё — мол никакие сокеты нам не нужны. Ещё
AA>раз повторю, что если есть !объективная! необходимость при разработке
AA>своего клиент-серверного решения использовать те же сокеты — надо это
AA>делать.

AA>А ещё из той книжки меня в то время поразило "прикручивание" RMI к классу

AA>(кажись)сервлета.
AA>Мдя — книжка была оч хорошая.

Keep It Simple.
Do One Thing, and Do It Well.
(с) Justin Gehtland, Bruce A. Tate
ICQ #333355130
Re[6]: Сервлеты
От: mselez  
Дата: 08.09.04 13:44
Оценка:
Здравствуйте, Alex-AKF, Вы писали:


AA>3)Про потокол я уточнил потому, что — не надо зацикливаться на HTTP, что

AA>вот — есть реализация HTTP и всё — мол никакие сокеты нам не нужны. Ещё
AA>раз повторю, что если есть !объективная! необходимость при разработке
AA>своего клиент-серверного решения использовать те же сокеты — надо это
AA>делать.

Если клиент работает за файерволом, то может оказаться, что соединение по протоколу HTTP — единственный возможный вариант. И в этом случае удобно использовать сервлеты по их прямому назначению. Соединение по HTTP — относительно медленное, но зато работает везде.
Re[7]: Сервлеты
От: Alex-AKF  
Дата: 08.09.04 14:39
Оценка:
> Если клиент работает за файерволом, то может оказаться, что соединение
> по протоколу HTTP — единственный возможный вариант.

Да -может. разве я утверждал обратное? Повторюсь: См. ТРЕБОВАНИЯ ЗАДАЧИ.
Posted via RSDN NNTP Server 1.9 gamma
Re[6]: Сервлеты
От: dshe  
Дата: 08.09.04 16:17
Оценка:
Здравствуйте, Alex-AKF, Вы писали:

AA>3)Про потокол я уточнил потому, что — не надо зацикливаться на HTTP, что

AA>вот — есть реализация HTTP и всё — мол никакие сокеты нам не нужны. Ещё
AA>раз повторю, что если есть !объективная! необходимость при разработке
AA>своего клиент-серверного решения использовать те же сокеты — надо это
AA>делать.

AA>А ещё из той книжки меня в то время поразило "прикручивание" RMI к классу

AA>(кажись)сервлета.
AA>Мдя — книжка была оч хорошая.

Я хотел бы уточнить. RMI запросы к сервлету попадали через метод service(ServletRequest, ServletResponse), или в сервлете просто создавался RMI объект?

Если первый вариант, то возникает вопрос, зачем это может понадобиться, поскольку сервлету скорее всего придется делать маршалинг-демаршалинг параметров, а это довольно неудобно; если же второй -- то интересно, какая нужда заставила это делать именно в сервлете (а не каким-нибудь внешним standalone приложением).
--
Дмитро
Re[7]: Сервлеты
От: Alex-AKF  
Дата: 08.09.04 20:17
Оценка:
> Я хотел бы уточнить. RMI запросы к сервлету попадали через метод
> service(ServletRequest, ServletResponse), или в сервлете просто
> создавался RMI объект?
>
> Если первый вариант, то возникает вопрос, зачем это может понадобиться,
> поскольку сервлету скорее всего придется делать маршалинг-демаршалинг
> параметров, а это довольно неудобно; если же второй -- то интересно,
> какая нужда заставила это делать именно в сервлете (а не каким-нибудь
> внешним standalone приложением).

Как я помню (лень смотреть):
1)В той книге — чтоб сэкономить место всю т.н. "бизнесс логику" делали
прямо в сервлете (а может во времена автора это было модно...).
2)Клсасс не толко наследвался от хттпсервлет но и реализовывал какой-то из
RMi интерфейсов
3)В сервлете добавляли реализацию метода (то же что-то такое стандартное,
по работе с registry в RMI).
4)Ну и далее по сценарию — заглушки, то, сё.....

В итоге — одни и те же методы использовлаись и в сервлете и как RMI —
очень интересное решение. (А если "бизнесслогику" вынести в JB и
"скрестить" их с RMI — получиться что-то вроде dummy-EJB своими руками на
веб-контейнере)

Зачем? Ну во первых — это книга и глава про взаимодействие с сервлетом. Во
вторых — решение (с некоторыми доработками) мне кажется оч даже
интересным: когда есть только веб-контейнер,а нужно ещё и реализовать
толстые клиенты — то решение в плане "написание" представляется очень даже
"дешовым". (Хтя сейчас конечно смысл оно свой и теряет — широкое
распространение SOAP и пр xml-based rpc + скоро апачгруп грозились дать
миру полноценный полностью бесплатный сервер приложений)

Почему не @standalone@ -понятия не имею. Могу лишь предположить —
deployment
Posted via RSDN NNTP Server 1.9 gamma
Re: Сервлеты
От: Tark Россия  
Дата: 08.09.04 21:23
Оценка:
Здравствуйте, xan, Вы писали:

xan>У меня следующий вопрос, как я понимаю сервлет это java приложение запускаемое на сервере

xan>А какие действия он может там выполнять может ли он слушать порты, писать в файл на сервере...
xan>Может есть интересная литература про сервлеты

Да, естественно, он (сервлет) может читать/писать файлы на сервере, в выделенном под домен месте, запускать скрипты на сервере. Вот про прослушивание портов не уверен... сдается мне, что не может=) а вот насчет литературы про сервлеты — на www.java.sun.com, в разделе J2EE.

Best regards.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.