Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как создается сервлет в томкате ? / 19 сообщений из 19, страница 1 из 1
13.09.2012, 10:05:20
    #37955514
gunner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
Добрый день!

У меня возникли вопросы по поводу поведения сервлета. Когда мы отправляем request на томкат, в томкате есть контэйтенер который обратывает каждый запрос ,этот контэйтенер смотрит web.xml и если находит сервлет , то создает instance этого сервлета,правильно? И этот процесс повторяется на каждый request ? И еще говорят что создается thread , кто создает thread ?

Второй вопрос: допустим есть сервлет который вытаскивает данные из базы данных и показывает на браузере. Для этого я в сервлете загружаю драйвер(Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")) , создаю соединение и вытаскиваю данные и закрываю соединение. То есть практически на каждый request сервлет загружает драйвер, создает соединение и закрывает ?
...
Рейтинг: 0 / 0
13.09.2012, 10:30:11
    #37955561
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
откройте для себя connection pool: http://en.wikipedia.org/wiki/Connection_pool
...
Рейтинг: 0 / 0
13.09.2012, 10:30:51
    #37955563
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
gunnerто создает instance этого сервлета,правильно?
Ну, а как вообще без экземпляра? Вообще спека вроде не особо декларирует время создания. Главное когда вызывается метод init().

gunnerИ этот процесс повторяется на каждый request ?
Обычно нет. Есть SingleThreadModel, но он крайне редко используется.

gunnerИ еще говорят что создается thread , кто создает thread ?
Контейнер создаёт. Но не на каждый запрос. А использует пул. SingleThreadModel тоже, скорее всего, испольщзует пул для экземпляров.

gunnerВторой вопрос: допустим есть сервлет который вытаскивает данные из базы данных и показывает на браузере. Для этого я в сервлете загружаю драйвер(Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")) , создаю соединение и вытаскиваю данные и закрываю соединение. То есть практически на каждый request сервлет загружает драйвер, создает соединение и закрывает ?
Да. Для решения этой проблемы есть DataSource, который вы конфигурируете один раз в контейнере. А приложение его использует.
...
Рейтинг: 0 / 0
13.09.2012, 10:44:34
    #37955596
gunner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
Спасибо ,Blazkowicz


Это значит при запуске томката один раз создается соединение с бд и все экземпляры сервлетов исползуют это соединение?
То есть соединение с базой создается при запуске томката на уровне application scope?
Насчет scope , я так понял что есть три scope'а: page scope, session scope и application scope. Если какой то экземпляр сервлета создается на уровне application scope то этот экземпляр видят все.
...
Рейтинг: 0 / 0
13.09.2012, 10:53:01
    #37955615
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
gunnerЭто значит при запуске томката один раз создается соединение с бд и все экземпляры сервлетов исползуют это соединение?

Это сильно зависит от того куда вы в сервлете свой код запхали. Это раз.
Сервлеты не могут использовать соединение одновременно. JDBC не thread safe. Это два.
Читайте про пул.

[quot gunner]
То есть соединение с базой создается при запуске томката на уровне application scope?
[quot gunner]
В вашем случае или в случае DataSource? DataSource обычно вообще server scope конфигурируют. Но при желании можно и к приложению привязать.

gunnerНасчет scope , я так понял что есть три scope'а: page scope, session scope и application scope. Если какой то экземпляр сервлета создается на уровне application scope то этот экземпляр видят все.
Это отдельная тема хранения данных\атрибутов\настроек соединение с БД лучше к ней не приплетать.
...
Рейтинг: 0 / 0
13.09.2012, 11:15:10
    #37955666
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
BlazkowiczНу, а как вообще без экземпляра? Вообще спека вроде не особо декларирует время создания. Главное когда вызывается метод init(). В спеке как раз все подробно. Экземпляр создается при первом обращении или сразу если указать <load-on-startup>.

BlazkowiczgunnerИ этот процесс повторяется на каждый request ?
Обычно нет. Есть SingleThreadModel, но он крайне редко используется.

SingleThreadModel тут не причем. Этот процесс выполняется только один раз!
...
Рейтинг: 0 / 0
13.09.2012, 11:30:21
    #37955701
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
ТимоНВ спеке как раз все подробно. Экземпляр создается при первом обращении или сразу если указать <load-on-startup>.
Да, ну? Не хочешь привести цитаты подверждающие твоё мнение?
Вот то о чем я говою.
Когда создаётся экземпляр:
Loading and InstantiationThe servlet container is responsible for loading and instantiating servlets. The
loading and instantiation can occur when the container is started, or delayed until
the container determines the servlet is needed to service a request.
When the servlet engine is started, needed servlet classes must be located by the
servlet container. The servlet container loads the servlet class using normal Java class
loading facilities. The loading may be from a local file system, a remote file system,
or other network services.
After loading the Servlet class, the container instantiates it for use.


Как load-on-startup связан с экземплярами:
Assembling the descriptor from web.xml and
web-fragment.xmlServlets are initialized either lazily at request processing time, or eagerly
during deployment. In the latter case, they are initialized in the order indicated
by their load-on-startup elements
...
Рейтинг: 0 / 0
13.09.2012, 11:32:37
    #37955708
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
ТимоНSingleThreadModel тут не причем. Этот процесс выполняется только один раз!
Ну, уж про SingleThreadModel уже кучу раз обсудили. И может снова заглянем в спеку?

Number of InstancesThe servlet declaration which is either via the annotation as described in Chapter 8
or part of the deployment descriptor of the Web application containing the servlet,
as described in Chapter 14, “Deployment Descriptor”, controls how the servlet
container provides instances of the servlet.
For a servlet not hosted in a distributed environment (the default), the servlet
container must use only one instance per servlet declaration. However, for a servlet
implementing the SingleThreadModel interface, the servlet container may
instantiate multiple instances to handle a heavy request load and serialize requests
to a particular instance
.
...
Рейтинг: 0 / 0
13.09.2012, 11:47:16
    #37955734
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
[quot Blazkowicz]Да, ну? Не хочешь привести цитаты подверждающие твоё мнение?
Вот то о чем я говою.
Когда создаётся экземпляр:
Loading and InstantiationThe servlet container is responsible for loading and instantiating servlets. The
loading and instantiation can occur when the container is started, or delayed until
the container determines the servlet is needed to service a request.
When the servlet engine is started, needed servlet classes must be located by the
servlet container. The servlet container loads the servlet class using normal Java class
loading facilities. The loading may be from a local file system, a remote file system,
or other network services.
After loading the Servlet class, the container instantiates it for use.

Верно. Но экзепляр создается все равно один раз.
BlazkowiczКак load-on-startup связан с экземплярами

Никак. Тут я был не прав.
...
Рейтинг: 0 / 0
13.09.2012, 11:51:41
    #37955743
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
ТимоНВерно. Но экзепляр создается все равно один раз.

В SingleThreadModel - не обязательно.
...
Рейтинг: 0 / 0
13.09.2012, 11:55:23
    #37955755
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
BlazkowiczТимоНВерно. Но экзепляр создается все равно один раз.

В SingleThreadModel - не обязательно.
Да, тут не поспоришь )
...
Рейтинг: 0 / 0
13.09.2012, 12:16:05
    #37955803
gunner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
Такой вопрос: когда томкат вызывает метод destroy для определенного экземпляра? Это где-то настраивается время вызова метода или контэйнер сам узнает что браузер закрыт или перешел на другую страницу?
...
Рейтинг: 0 / 0
13.09.2012, 12:19:32
    #37955812
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
gunnerТакой вопрос: когда томкат вызывает метод destroy для определенного экземпляра? Это где-то настраивается время вызова метода или контэйнер сам узнает что браузер закрыт или перешел на другую страницу?
Контейнер вызывает destroy когда останавливает приложение. Закрытие браузера и страницы со временем жизни сервлета и приложения никак не связаны.
...
Рейтинг: 0 / 0
13.09.2012, 12:32:30
    #37955836
gunner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
Blazkowicz , если для каждого пользователя создается экземпляр сервлета который занимает память, значит все эти экземпляры будут занимать память, даже если пользователь не использует этот экземпляр ? Получается если не остановится приложение у нас на сервере будут миллионы экземпляр которые не используются ?
...
Рейтинг: 0 / 0
13.09.2012, 12:36:07
    #37955845
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
gunnerBlazkowicz , если для каждого пользователя создается экземпляр сервлета который занимает память
Попробуйте прочитать то что вам пишут выше. Обычно, экземпляр создаётся один на всё приложение и все им пользуются.
...
Рейтинг: 0 / 0
13.09.2012, 13:30:02
    #37955968
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
gunnerBlazkowicz , если для каждого пользователя создается экземпляр сервлета который занимает память, значит все эти экземпляры будут занимать память, даже если пользователь не использует этот экземпляр ?
Наоборот, для всех пользователей создается один экземпляр (если не SingleThreadModel).
...
Рейтинг: 0 / 0
13.09.2012, 13:39:36
    #37955986
gunner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
ТимоНgunnerBlazkowicz , если для каждого пользователя создается экземпляр сервлета который занимает память, значит все эти экземпляры будут занимать память, даже если пользователь не использует этот экземпляр ?
Наоборот, для всех пользователей создается один экземпляр (если не SingleThreadModel).

ТимоН, если я правильно понял Blazkowicz , то экземпляр создается один раз даже если это SingleThreadModel, в случае SingleThreadModel все запросы обрабатываются по очереди , если не SingleThreadModel то обрабатываются параллельно в thread'е.
...
Рейтинг: 0 / 0
13.09.2012, 13:42:13
    #37955991
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
gunner,

умываю руки, дискутировать тут, походу, бесполезно.
...
Рейтинг: 0 / 0
13.09.2012, 13:52:47
    #37956019
gunner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создается сервлет в томкате ?
Blazkowicz,

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


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