Для чего нужен метод finalize()?​

Метод finalize() служит для уничтожения объектов, он вызывается автоматически сборщиком мусора. Его можно использовать как последний шанс закрыть ресурс. Но никак не первый. Использование finalize() стоит сократить к минимуму. Согласно Джошуа Блоху этот метод замедляет работу сборщика мусора в ~430 раз. А это уже весомая причина задуматься перед его использованием. Также не стоит доверять важные процессы очистки методу по той причине, что сборщик мусора может быть и не вызван ни разу. Дополнительно почитать о методе на хабре тык и тык

Пример работы с tomcat и сервлетами

Ваш путь постижения дзена JavaEE не сможет пройти мимо сервлетов Java и их контейнеров. И чем раньше вы разберётесь с тем, как они взаимодействуют – тем легче будет проходить погружение в более тяжеловесные фрэймворки. Предлагаю познакомиться с контейнером под названием Tomcat, посмотрим как он устанавливается, запускается и работает с приложениями, а заодно напишем маленький сервлет для демонстрации идеи их использования.

Tomcat реализует спецификацию сервлетов и является веб сервером. Он умеет «на лету» подхватывать приложения. Начнём с самого начала. А для этого нам его необходимо скачать. Apache предлагают версии сервера как для 32х, так и для 64-разрядных машин. Также можно выбрать для загрузки либо инсталлятор, ло архив с потрохами сервера. Мы выберем второй вариант и разворачивать будем в среде windows. Качаем архив и распаковываем его в папку, желательно поближе к корню диска(c:\Tomcat). Перед запуском необходимо прописать переменные среды CATALINA_HOME и JAVA_HOME. Для этого идём Панель управления->Система->пример использования tomcat (java servlet)->Дополнительные параметры системы

пример использования tomcat (java servlet)

->Переменные среды

пример использования tomcat (java servlet)

Создаёте новую системную переменную с именем CATALINA_HOME и указываете для неё путь куда вы распаковали tomcat(у меня c:\tomcat). Также, если у вас не было, аналогичным образом создаёте ещё одну переменную JAVA_HOME и указываете где у вас лежит JDK (например C:\ProgramFiles\Java\jdk1.8.0_05). После этого рекомендую перезагрузить систему, иначе tomcat может отказываться запускаться без каких либо видимых причин. После всех манипуляций открываете командную строку, переходите в каталог с tomcat в папку bin, там есть два файла, startup.bat и shutdown.bat. Первый включает, второй выключает наш сервер. Запускаете startup.bat, после чего в отдельном окне должен начаться запуск сервера.

пример использования tomcat (java servlet)

Теперь идём в браузер и открываем адрес localhost:8080 Если всё нормально, вы увидите страницу tomcat’а, на которой есть ссылки на примеры простых сервлетов, туториалы и т.д.

пример использования tomcat (java servlet)

Конфигурация сервера производится с помощью *.xml файлов, находящихся в папке conf в корневом каталоге tomcat. Подробная документация по каждому тэгу есть на сайте Apache. Итак, сервер работает, а что же дальше? Как ему скормить наши страницы?

В корне tomcat есть папка webapps, которая ждёт-не дождётся пока ей кто ни будь не закинет файл с расширением war. war файлы – это специальные, так называемые web archives. Архивы, которые содержат в себе определённую структуру папок и файлов, которая подходит tomcat’у для запуска. Но перед созданием первого рабочего сервлета давайте подключим к IDEA наш сервер. Для этого открываем настройки, находим ApplicationServers, нажимаем + и выбираем сервер Tomcat.

пример использования tomcat (java servlet)

Указываем директории, если IDEсама их не прописала

пример использования tomcat (java servlet)

Жмём ок, apply и создаём новый проект. Не забываем установить галочку WebApplication

пример использования tomcat (java servlet)

Далее даём имя нашему проекту, пусть это будет TestWebProject и видим что IDE уже приготовила для нас необходимую иерархию папок и даже что то набросала в файлы web.xml и index.jsp Файл web.xml является дескриптором проекта, в нём находятся инструкции для сервера о том как правильно его разворачивать. Index.jsp по умолчанию стартовая страница проекта, давайте попробуем что-нибудь написать в неё и запустить.

пример использования tomcat (java servlet)

пример использования tomcat (java servlet)

Хорошо, а теперь давайте напишем наш первый сервлет, добавляющий жизни нашей пробной страничке. Создаём jsp страницу redirect, которая направляет запрос на наш будущий сервлет

пример использования tomcat (java servlet)

Перед тегом <html> пишем <jsp:forward page=”/redirect”></jsp:forward>

Теперь нужно создать класс Redirect, который унаследовавшись от класса javax.servlet.http.HttpServlet и станет нашим сервлетом, в котором можно будет получать и отправлять HTTPзапросы

пример использования tomcat (java servlet)

В классе для демонстрации, используя метод setAttribute() класса HttpServletRequest добавляем в запрос счётчик обращений к странице(count), дату в текстовом формате и переменную size, которая при каждом обращении будет менять размер шрифта.



Следующим шагом необходимо в файле web.xml прописать так называемые servlet-mapping’и. Это необходимо для того, что бы контейнер «увидел» связь между строкой адреса браузера и страницами нашего проекта. Добавляем следующие строчки перед закрывающим тегом </web-app>

<welcome-file-list> указывает стартовую страницу. Итого мы получили то что запрос приходит на redirect.jsp, от туда перенаправляется в наш сервлет Direct, где к нему добавляются атрибуты(там же можно получить и данные о запросе, протокол, заголовок и т.д.) и перенаправляется на index.jsp



Осталось только оформить вывод отображения. В файле index.jsp видно как с помощью тега <%=%> можно получить данные из запроса и встроить их в html.

пример использования tomcat (java servlet)

Для демонстрации работы приложения осталось запустить проект и открыть localhost:8080/redirect в браузере. Мы видим что при каждом обновлении страницы информация на ней динамически обновляется.

пример использования tomcat (java servlet)

Давайте теперь соберём проект средствами IDE(согласен – не кошерно. Но Maven будет в следующей статье). В результате получим TestWebProject_war exploded.war, переименуем его в TestWebProject.war и подложим в папку webapps, которую упоминали в начале. Теперь при старте Tomcat развернёт проект и при обращении по ссылке http://localhost:8080/testwebproject/ мы увидим что сервер отлично справляется с возложенной на него задачей. Можно в рантайме подсовывать ему приложения, он примерно раз в 30 секунд проверяет, не лежит ли чего свеженького в папке webapps.

Надеюсь что вы поняли основные концепции работы Tomcatс сервлетами java. Успехов в освоении!=)