Нужна ли функция public static void main(String[] args){...} ?
На первый взгляд может показаться, что приложение без функции
И тем не менее, многие Java-разработчики регулярно пишут такие приложения. И запаковывают их не в jar-файлы, а в war-файлы. Давайте сегодня с этими war-файлами и разберёмся.
Продолжая открытый вопрос про запуск приложения, нужно отметить, что его код нельзя исполнить в его собственном потоке main. Но мы можем исполнить его в других потоках. По аналогии с библиотеками: библиотека не запускает себя сама, вы запускаете библиотеку в собственных потоках.
Ваше приложение может быть «библиотекой» для другого приложения. И в этом случае, другое приложение называют application server. AS запускает ваше приложение в собственных потоках. Для него ваш код как актёры для Голливуда. Не актёры звонят в Голливуд. Голливуд звонит актёрам. Таким образом, вы пишите приложения не с использованием библиотек, а для application server-а.
В общем случае application server должен быть написан по спецификации Java EE. Но есть частные случаи, которые поддерживают только работу веб-сервера и сервлетов. Их называют веб-серверы и сервлет-контейнеры. Вот для них как раз Java -разработчики и создают war-файлы.
Итак, war или WebARchive – это jar. Но в отличие от обычного в нём: — нет мета-информации о методе main, с выполнения которого должно начинаться выполнение приложения; — есть директория WEB-INF и в ней web.xml -- файл с инструкциями для сервлет-контейнера; — есть сервлеты (без них war-файл практически бесполезен); — могут быть файлы статических страниц (да-да jar, в котором в корне лежат index.html, index.js и index.css)
Приготовить такой war-файл можно при помощи плагина maven-war-plugin к Maven. А запускать в любом удобном вам сервлет-контейнере, например в Tomcat или Jetty, просто копированием war-файла в директорию webapps.
Только при копировании не забудьте переименовать его в root.war. Интересно зачем? Присоединяйтесь к ближайшей группе курса «Разработчик Java»: расскажем, покажем, научим!
Есть вопрос? Напишите в комментариях!