Как запустить war файл

Обновлено: 04.07.2024

Apache Tomcat - один из самых популярных веб-серверов в сообществе Java. Он поставляется как контейнер сервлетов, способный обслуживать веб-архивы с расширением WAR.

Он предоставляет панель управления, с помощью которой вы можете развернуть новое веб-приложение или отменить развертывание существующего без перезапуска контейнера. Это особенно полезно в производственной среде.

В этой статье мы сделаем краткий обзор Tomcat, а затем рассмотрим различные подходы к развертыванию файла WAR.

2. Структура Tomcat

Прежде чем мы начнем, мы должны ознакомиться с некоторой терминологией и переменными среды.

2.1. Переменные среды

Если вы раньше работали с Tomcat, они будут вам хорошо знакомы:

$ CATALINA_HOME

Эта переменная указывает на каталог, в котором установлен наш сервер.

$ CATALINA_BASE

Эта переменная указывает на каталог конкретного экземпляра Tomcat, у вас может быть установлено несколько экземпляров. Если эта переменная не задана явно, ей будет присвоено то же значение, что и $ CATALINA_HOME .

Веб-приложения развертываются в каталоге $ CATALINA_HOME \ webapps .

2.2. Терминология

Корень документа . Относится к каталогу верхнего уровня веб-приложения, где расположены все ресурсы приложения, такие как файлы JSP, HTML-страницы, классы Java и изображения.

Контекстный путь . Ссылается на расположение относительно адреса сервера и представляет имя веб-приложения.

Например, если наше веб-приложение помещено в каталог $ CATALINA_HOME \ webapps \ myapp , доступ к нему будет осуществляться по URL-адресу // localhost / myapp , а его контекстный путь будет / myapp .

ВОЙНА . Расширение файла, который упаковывает иерархию каталогов веб-приложений в формате ZIP, сокращенно от Web Archive. Веб-приложения Java обычно упаковываются в файлы WAR для развертывания. Эти файлы могут быть созданы в командной строке или с помощью IDE, например Eclipse.

После развертывания файла WAR Tomcat распаковывает его и сохраняет все файлы проекта в каталоге webapps в новом каталоге, названном в честь проекта.

3. Настройка Tomcat

Веб-сервер Tomcat Apache - это бесплатное программное обеспечение, которое можно загрузить с их веб-сайта. Требуется, чтобы на компьютере пользователя был доступен JDK и чтобы переменная среды JAVA_HOME была установлена ​​правильно.

3.1. Запустить Tomcat

Мы можем запустить сервер Tomcat, просто запустив сценарий запуска, расположенный в $ CATALINA_HOME \ bin \ startup . В каждой установке есть файлы .bat и .sh .

Выберите подходящий вариант в зависимости от того, используете ли вы операционную систему на основе Windows или Unix.

3.2. Настроить роли

На этапе развертывания у нас будет несколько вариантов, один из которых - использовать панель управления Tomcat. Чтобы получить доступ к этой панели инструментов, у нас должен быть пользователь-администратор, настроенный с соответствующими ролями.

Чтобы иметь доступ к панели управления, пользователю-администратору требуется роль manager-gui . Позже нам нужно будет развернуть WAR-файл с помощью Maven, для этого нам также понадобится роль сценария менеджера .

Сделаем эти изменения в $ CATALINA_HOME \ conf \ tomcat-users :

Более подробную информацию о различных ролях Tomcat можно найти по этой официальной ссылке.

3.3. Установить права доступа к каталогу

Наконец, убедитесь, что в каталоге установки Tomcat есть права на чтение и запись.

3.4. Тестовая установка

Чтобы проверить правильность настройки Tomcat, запустите сценарий запуска ( startup.bat / startup.sh ), если на консоли не отображаются ошибки, мы можем дважды проверить, посетив // localhost: 8080 .

Если вы видите целевую страницу Tomcat, значит, мы правильно установили сервер.

3.5. Разрешить конфликт портов

По умолчанию Tomcat настроен на прослушивание подключений через порт 8080 . Если к этому порту уже привязано другое приложение, консоль запуска сообщит нам об этом.

Чтобы изменить порт, мы можем отредактировать файл конфигурации сервера server.xml, расположенный в $ CATALINA_HOME \ conf \ server.xml. По умолчанию конфигурация коннектора следующая:

Например, если мы хотим изменить наш порт на 8081 , нам придется изменить атрибут порта коннектора следующим образом:

Иногда выбранный нами порт не открыт по умолчанию, в этом случае нам нужно будет открыть этот порт с помощью соответствующих команд в ядре Unix или создать соответствующие правила брандмауэра в Windows, как это делается, выходит за рамки Эта статья.

4. Развертывание из Maven

Если мы хотим использовать Maven для развертывания наших веб-архивов, мы должны настроить Tomcat как сервер в файле Maven settings.xml .

Есть два места, где можно найти файл settings.xml :

  • Установка Maven: $ /conf/settings.xml
  • Установка пользователя: $ /. M2 / settings.xml

Как только вы его найдете, добавьте Tomcat следующим образом:

We will now need to create a basic web application from Maven to test the deployment. Let's navigate to where we would like to create the application.

Run this command on the console to create a new Java web application:

This will create a complete web application in the directory tomcat-war-deployment which, if we deploy now and access via the browser, prints hello world!.

But before we do that we need to make one change to enable Maven deployment. So head over to the pom.xml and add this plugin:

Note that we are using the Tomcat 7 plugin because it works for both versions 7 and 8 without any special changes.

The configuration url is the url to which we are sending our deployment, Tomcat will know what to do with it. The server element is the name of the server instance that Maven recognizes. Finally, the path element defines the context path of our deployment.

This means that if our deployment succeeds, we will access the web application by hitting //localhost:8080/myapp.

Now we can run the following commands from Maven.

To deploy the web app:

To redeploy after making changes:

5. Deploy With Cargo Plugin

Cargo is a versatile library that allows us to manipulate the various type of application containers in a standard way.

5.1. Cargo Deployment Setup

In this section, we will look at how to use Cargo's Maven plugin to deploy a WAR to Tomcat, in this case, we will deploy it to a version 7 instance.

To get a firm grip on the whole process, we will start from scratch by creating a new Java web application from the command line:

This will create a complete Java web application in the cargo-deploy directory. If we build, deploy and load this application as is, it will print Hello World! in the browser.

Unlike the Tomcat7 Maven plugin, the Cargo Maven plugin requires that this file is present.

Since our web application does not contain any servlets, our web.xml file will be very basic. So navigate to the WEB-INF folder of our newly created project and create a web.xml file with the following content:

To enable Maven to recognize Cargo's commands without typing the fully qualified name, we need to add the Cargo Maven plugin to a plugin group in Maven's settings.xml.

As an immediate child of the root element, add this:

5.2. Local Deploy

In this subsection, we will edit our pom.xml to suit our new deployment requirements.

Add the plugin as follows:

The latest version, at the time of writing, is 1.5.0. However, the latest version can always be found here.

Notice that we explicitly define the packaging as a WAR, without this, our build will fail. In the plugins section, we then add the cargo maven2 plugin. Additionally, we add a configuration section where we tell Maven that we are using a Tomcat container and also an existing installation.

By setting the container type to installed, we tell Maven that we have an instance installed on the machine and we provide the absolute URL to this installation.

By setting the configuration type to existing, we tell Tomcat that we have an existing setup that we are using and no further configuration is required.

The alternative would be to tell cargo to download and setup the version specified by providing a URL. However, our focus is on WAR deployment.

It's worth noting that whether we are using Maven 2.x or Maven 3.x, the cargo maven2 plugin works for both.

We can now install our application by executing:

and deploying it by doing:

If all goes well we should be able to run our web application by loading //localhost:8080/cargo-deploy.

5.3. Remote Deploy

To do a remote deploy, we only need to change the configuration section of our pom.xml. Remote deploy means that we do not have a local installation of Tomcat but have access to the manager dashboard on a remote server.

So let's change the pom.xml so that the configuration section looks like this:

This time, we change the container type from installed to remote and the configuration type from existing to runtime. Finally, we add authentication and remote URL properties to the configuration.

Ensure that the roles and users are already present in $CATALINA_HOME/conf/tomcat-users.xml just as before.

If you are editing the same project for remote deployment, first un-deploy the existing WAR:

clean the project:

finally, deploy it:

6. Deploy From Eclipse

Eclipse allows us to embed servers to add web project deployment in the normal workflow without navigating away from the IDE.

6.1. Embed Tomcat in Eclipse

We can embed an installation into eclipse by selecting the window menu item from taskbar and then preferences from the drop down.

We will find a tree grid of preference items on the left panel of the window that appears. We can then navigate to eclipse -> servers or just type servers in the search bar.

We then select the installation directory, if not already open for us, and choose the Tomcat version we downloaded.

On the right-hand-side of the panel, a configuration page will appear where we select the Enable option to activate this server version and browse to the installation folder.


We apply changes, and the next time we open the servers view from Eclipse's windows -> show view submenu, the newly configured server will be present and we can start, stop and deploy applications to it.

6.2. Deploy Web Application in Embedded Tomcat

To deploy a web application to Tomcat, it must exist in our workspace.

Open the servers view from window -> show view and look for servers. When open, we can just right click on the server we configured and select add deployment from the context menu that appears.


From the New Deployment dialog box that appears, open the project drop down and select the web project.

There is a Deploy Type section beneath the Project combo box when we select Exploded Archive(development mode), our changes in the application will be synced live without having to redeploy, this is the best option during development as it is very efficient.


Selecting Packaged Archive(production mode) will require us to redeploy every time we make changes and see them in the browser. This is best only for production, but still, Eclipse makes it equally easy.

6.3. Deploy Web Application in External Location

We usually choose to deploy a WAR through Eclipse to make debugging easier. There may come a time when we want it deployed to a location other than those used by Eclipse's embedded servers. The most common instance is where our production server is online, and we want to update the web application.

We can bypass this procedure by deploying in production mode and noting the Deploy Location in the New Deployment dialog box and picking the WAR from there.

During deployment, instead of selecting an embedded server, we can select the option from the servers view alongside the list of embedded servers. We navigate to the webapps directory of an external Tomcat installation.

7. Deploy From IntelliJ IDEA

To deploy a web application to Tomcat, it must exist and have already been downloaded and installed.

7.1. Local Configuration

Open the Run menu and click the Edit Configurations options.


In the panel on the left search for Tomcat Server, if it is not there click the + sign in the menu, search for Tomcat and select Local. In the name field put Tomcat 7/8 (depending on your version).


Click the Configure… button and in Tomcat Home field navigate to the home location of your installation and select it.


Go to the Deployment tab and click on the + symbol, select artifact you want to add to the server and click OK


7.2. Remote Configuration

Follow the same instructions as for local Tomcat configurations, but in the server tab, you must enter the remote location of the installation.

8. Deploy by Copying Archive

We have seen how to export a WAR from Eclipse. One of the things we can do is to deploy it by simply dropping it into the $CATALINA_HOME\webapps directory of any Tomcat instance. If the instance is running, the deployment will start instantly as Tomcat unpacks the archive and configures its context path.

If the instance is not running, then the server will deploy the project the next time it is started.

9. Deploy From Tomcat Manager

Assuming we already have our WAR file to hand and would like to deploy it using the management dashboard. You can access the manager dashboard by visiting: //localhost:8080/manager.

The dashboard has five different sections: Manager, Applications, Deploy, Diagnostics, and Server Information. If you go to the Deploy section, you will find two subsections.

9.1. Deploy Directory or WAR File Located on Server

If the WAR file is located on the server where the Tomcat instance is running, then we can fill the required Context Path field preceded by a forward slash “/”.

Let's say we would like our web application to be accessed from the browser with the URL //localhost:8080/myapp, then our context path field will have /myapp.

We skip the XML Configuration file URL field and head over to the WAR or Directory URL field. Here we enter the absolute URL to the Web ARchive file as it appears on our server. Let's say our file's location is C:/apps/myapp.war, then we enter this location. Don't forget the WAR extension.

After that, we can click deploy button. The page will reload, and we should see the message:

at the top of the page.

Additionally, our application should also appear in the Applications section of the page.

9.2. WAR File to Deploy

Just click the choose file button, navigate to the location of the WAR file and select it, then click the deploy button.

В этом уроке освещается процесс конвертации исполяемого JAR приложения, которое было собрано с Spring Boot, в WAR файл, который вы можете запустить на любом стандартном контейнере сервлетов.

Что вы создадите

Вы возьмете простое Spring MVC приложение и соберете WAR файл, используя Spring Boot.

Что вам потребуется

  • Примерно 15 минут свободного времени
  • Любимый текстовый редактор или IDE и выше
  • Gradle 1.11+ или Maven 3.0+
  • Вы также можете импортировать код этого урока, а также просматривать web-страницы прямо из Spring Tool Suite (STS), собственно как и работать дальше из него.

Как проходить этот урок

Как и большинство уроков по Spring, вы можете начать с нуля и выполнять каждый шаг, либо пропустить базовые шаги, которые вам уже знакомы. В любом случае, вы в конечном итоге получите рабочий код.

Чтобы начать с нуля, перейдите в Настройка проекта.

Когда вы закончите, можете сравнить получившийся результат с образцом в gs-convert-jar-to-war-maven/complete .

Настройка проекта

Для начала вам необходимо настроить базовый скрипт сборки. Вы можете использовать любую систему сборки, которая вам нравится для сборки проетов Spring, но в этом уроке рассмотрим код для работы с Maven. Если вы не знакомы с Maven, ознакомьтесь с соответсвующим уроком Сборка Java-проекта с использованием Maven.

Создание структуры каталогов

В выбранном вами каталоге проекта создайте следующую структуру каталогов; к примеру, командой mkdir -p src/main/java/hello для *nix систем:

Spring Boot Maven plugin предоставляет множество удобных возможностей:

  • Он собирает все jar'ы в classpath и собирает единое, исполняемое "über-jar", что делает более удобным выполнение и доставку вашего сервиса
  • Он ищет public static void main() метод, как признак исполняемого класса
  • Он предоставляет встроенное разрешение зависимостей, с определенными номерами версий для соответсвующих Spring Boot зависимостей. Вы можете переопределить на любые версии, какие захотите, но он будет по умолчанию для Boot выбранным набором версий

Создание базового web-приложения

Теперь, когда вы настроили проект, вы можете создать Spring MVC приложение. Вам оно необходимо для запуска встроенного в Spring Boot контейнера сервлетов. Затем измените его немного, чтобы собрать WAR файл, который вы сможете запустить на любом контейнере сервлетов 3.0.

Spring MVC позволяет вам быстро создавать контроллеры для вашего web-сайта.

Контроллер лаконичен и прост, но в нем происходит много чего интересного. Давайте подробнее его рассмотрим шаг за шагом.

Аннотация @Controller сигнализирует о том, что этот класс содержит web-адреса приложения.

Реализация метода возвращает строку index , название представления, которое необходимо отрендерить.

Web контроллер возвращает строку index когда кто-то делает GET / к вашему сайту. Spring Boot автоматически добавляет Thymeleaf бины в контекст приложения для конвертации в запрос шаблона Thymeleaf, расположенного в src/main/resources/templates/index.html .

Этот шаблон имеет несколько очень простых HTML элементов и не имеет Thymeleaf кода. Вы можете расширить его по мере необходимости.

Создание приложения исполняемым

Метод main() передает управление вспомогательному классу SpringApplication , предоставляя Application.class как аргумент его run() методу. Это говорит Spring о том, чтобы прочитать аннотацию метаданных из Application и управлять им как компонентом в Spring Application Context.

Аннотация @ComponentScan сообщает Spring о запуске рекурсивного поиска в пакете hello и потомках классов, отмеченных прямо или косвенно Spring аннотацией @Component . При этом гарантируется, что Spring найдет и зарегистрирует HelloController , потому что он отмечен @Controller , что в свою очередь является своего рода @Component аннотацией.

Теперь, чтобы ваш класс Application стал готовым, просто следуйте инструкциям системы сборки для создания единого и исполняемого jar файла. Это делает его легким в загрузке, версионировании и развертывании сервиса как приложения на всем протяжении цикла разработки в различных средах окружения.

Запуск сервиса

Запустите ваш сервис из командной строки:

Выходные данные отображены. Сервис должен быть поднят и запущен через несколько секунд. В вашем браузере перейдите по адресу http://localhost:8080. Вы должны увидеть текст "Hello, world!", отрендеренный шаблоном.

Создание WAR файла

Приложение, собранное вами на данном этапе настроено на генерацию JAR артефакта. Для переключения на WAR файл, вам необходимо добавить другой плагин в ваш pom.xml :

Если вы хотите разворачивать WAR файл внешнего контейнера, добавьте зависимость встроеннного контейнера как "provided":

Ниже представлена новая версия pom.xml , которая включает эти изменения:

Теперь, когда вы запустите mvn clean package , WAR файл будет создан.

Инициализация сервлета

Ранее приложение содержало метод public static void main() , который запускался плагином spring-boot-maven-plugin, когда использовалась команда java -jar .

Используя конвертацию в WAR файл без XMl файлов, вам необходим другой сигнал сервлет контейнеру о том, как запускать приложение.

WebInitializer является чистым Java классом, который предоставляет альтернативу созданию web.xml . Он расширяет класс SpringServletInitializer . Это расширение предлагает множество конфигурируемых настроек путем переопределения методов. И только один метод configure() обязателен для переопределения.

configure() предоставляет средства для регистрации классов, которые необходимы для запуска приложения. Это то место, где вы передаете для обработки вашу Application конфигурацию. Запомните: Application содержит @ComponentScan , поэтому он будет находить web контроллеры автоматически.

Даже если public static void main() больше не нужен, вы можете оставить его код на месте.

Если вы не используете @ComponentScan , то вы должно быть добавляете все остальные компоненты вручную как @Bean`s or include the other components inside `configure() .

Запуск WAR файла

Как только Application загрузится, он инициализирует Spring Boot для автоматического конфигурирования других бинов. в этом примере он добавляет Spring MVC и Thymeleaf бины. Но Spring Boot добавляет и другие бины, исходя из совокупности факторов, таких как ваш classpath и других настроек контекста приложения.

На данном этапе вы готовы к сборке WAR файла:

Эта команда создает развертываемый артефакт target/gs-convert-jar-to-war-maven-0.1.0.war.

Вы можете загрузить Tomcat, Jetty или любой другой контейнер, который поддерживает сервлеты 3.0 версии. Распакуйте его и поместите WAR файл в правильную директорию. Затем запустите сервер.

В вашем браузере перейдите по адресу http://localhost:8080/gs-convert-jar-to-war-maven-0.1.0/. Вы должны увидеть текст "Hello, world!", отрендеренный шаблоном.

Поздравляем! Вы только что конвертировали исполняемый JAR в WAR файл приложения, который можно будет запустить на любом сервлет 3.0+ контейнере.

встроенные Java-сервер-300x229-

Однако есть еще одна школа мысли, которая полностью переворачивает эту модель с ног на голову. При таком подходе приложения Java упаковываются для выполнения из командной строки, как любое обычное приложение. Вместо того, чтобы развертываться в контейнере, встроенный контейнер развертывается внутри самого приложения!

Это паритет для курса со многими языками. Среда Django для Python включает в себя встроенный сервер для разработки и тестирования, а Ruby on Rails поставляется со встроенным сервером, который также используется в производстве. Эта концепция уже давно существует в Java, и Jetty специализируется на встраиваемой нише. Однако это далеко от нормы, и стандарт де-факто по-прежнему является файлом WAR, который можно развернуть в Tomcat .

Его сессия была посвящена платформе Play для Java и Scala, которая встраивает Netty аналогично серверу Rails. В отличие от Grails , в котором для разработки используется сервер в стиле Django, а затем он поставляется в виде файла WAR, Play предназначен для использования своего собственного сервера вплоть до производства. Джеймс защищал этот подход во всех приложениях Java.

Встроенное приключение


Я сделал хотя бы глоток Kool-Aid. Когда я начал писать свою книгу, Hibernate Search by Example , я хотел сосредоточиться на Hibernate Search, а не на каких-либо других фреймворках или проблемах с сервером. Поэтому я отказался от Spring и написал пример приложения для книги, используя подход Vanilla Servlet 3.0.

Использование встроенного сервера с Maven

Однако вам нужно взломать файл Jetty JAR, чтобы получить правильную копию этого файла конфигурации. Во-первых, вам нужно покопаться в вашем локальном репозитории Maven и выяснить, какой JAR-файл взломать (оказывается, это jetty-webapp, а не jetty-server). После того, как вы получите копию файла webdefault.xml и переключите параметр useFileMappedBuffer, вам нужно сохранить свою копию где-нибудь в вашем проекте и обновить POM Maven, чтобы он смотрел там, а не внутри Jetty JAR:

< defaultsDescriptor >$/src/main/webapp/WEB-INF/webdefault.xml</ defaultsDescriptor >

Использование встроенного сервера с другими системами сборки

Я знаю, что многие Java-разработчики ненавидят Maven. Поэтому я хотел предоставить версию примера приложения моей книги, созданного с использованием Ant, чтобы проиллюстрировать, как можно адаптировать концепции по умолчанию. Итак, какую строку мне добавить в build.xml, чтобы Ant использовал Jetty?

муравей

Эх, не так быстро. Есть интеграция с Ant для Jetty , но она еще более громоздка, чем Maven. Даже если вы используете систему управления зависимостями, такую ​​как Ivy, ваш Ant-скрипт не сможет загрузить и управлять встроенным сервером за вас. Вместо этого вы должны загрузить полностью автономный сервер Jetty и вручную скопировать его в свой проект. Кто не хочет, чтобы 6 мегабайт исполняемых файлов были переданы в систему контроля версий?

JAR-файлы Jetty-сервера, вам нужно вручную добавить еще один JAR-файл для интеграции с Ant. К моему удивлению, я обнаружил, что самой последней поддерживаемой версией была Jetty 7, реализующая спецификацию Servlet 2.5, которой почти восемь лет .

Я вижу, что они наконец добавили Jetty 8 в прошлом месяце, но это не помогло мне, когда я писал книгу прошлой осенью. Мне пришлось переписать эту версию моего примера приложения для Servlet 2.5 вместо 3.0, и я начал задаваться вопросом, действительно ли это того стоило.

Использование встроенного сервера из кода

В последней главе моей книги рассказывается о приложениях Hibernate Search, работающих в среде кластерного сервера. Плагин Maven предназначен только для одного экземпляра, поэтому я решил написать небольшой класс начальной загрузки, который бы программно запускал два экземпляра Jetty на разных портах. Структурируя этот класс как тест JUnit, я мог бы заставить Maven запускать его автоматически следующим образом:

Эх, не так быстро. Сервлеты, слушатели и службы RESTful моего приложения не регистрировались при запуске. После гораздо больше времени, потраченного на исследования, я обнаружил, что в Jetty доступны разные «разновидности» , с функциями Servlet 3.0 (такими как аннотации), включенными или отключенными по умолчанию.

Честно говоря, я до сих пор не совсем понимаю, как определить разницу между «высоким» и «не высоким». Все, что я могу вам сказать, это то, что мне пришлось добавить этот кусок кода в мой класс начальной загрузки, чтобы аннотации работали:

Намного проще и понятнее, чем сбросить файл WAR в папку Tomcat / webapps, верно?

Использование встроенного сервера из консоли и облака

Закончив книгу, я хотел, чтобы демо-версия примера кода была отправлена ​​на GitHub и развернута на Heroku . Теоретически, Heroku может запустить любое приложение, которое вы можете запустить локально из командной строки. Если Heroku обнаружит POM Maven, он запустит пакет mvn clean и выполнит любую команду запуска, которую вы поместили в скрипт с именем Procfile.

Мой программный лаунчер Jetty работал нормально в контексте запуска Maven. Однако Maven управлял моими зависимостями classpath во время тестирования, и теперь мне нужна Jetty без этой помощи. Рекомендуемый подход Heroku, используемый в их демонстрационных Java-приложениях , заключается в комплектации вашего приложения версией Tomcat с одним файлом. Круто, я все равно больше знаком с Tomcat!


Не беспокойтесь, потому что есть похожий однофайловый Jetty Runner , и он позволяет передавать параметры JNDI в качестве параметров командной строки. Кроме того, мы потратили много времени на решение всех проблем со встроенной Jetty!

  1. JAR-файл Jetty Runner
  2. Файл WAR вашего веб-приложения (*)
  3. Разобранная версия вашего WAR-файла, созданного во время сборки Maven

(*) Вы правильно прочитали. После всего этого встроенного кошмара Heroku все еще использует файл WAR .

Мой профиль Heroku в итоге выглядел так:

web: java $JAVA_OPTS -jar target /dependency/jetty-runner-8 .1.7.v20120910.jar --lib target /hibernate-search-demo-0 .0.1-SNAPSHOT /WEB-INF/lib --port $PORT --jdbc org.apache.commons.dbcp.BasicDataSource "url=jdbc:h2:mem:vaporware;DB_CLOSE_DELAY=-1" "jdbc/vaporwareDB" target/*.war

Здесь работает более одного загрузчика классов, и это позволяет Jetty Runner загружать материал JSTL / taglib из его пути к классам, а не к пути к классам веб-приложения.

Вывод

Нет ничего плохого в концепции встроенного сервера, когда он изначально встроен в среду. Написание приложений Play доставляет удовольствие, и их развертывание на Heroku практически тривиально. На своей повседневной работе я использую коммерческий пакет на основе Spring под названием hybris , чья обширная система сборки включает сервер Tomcat в ваше приложение. Пока вам не нужно слишком сильно настраивать сценарии сборки, это прекрасно работает.

  1. Загрузите Tomcat и разархивируйте его куда-нибудь
  2. Перенесите файл WAR в подкаталог Tomcat / webapps
  3. Запустить Tomcat

Единственным реальным преимуществом, которое я получил, была возможность запустить демонстрацию на Heroku. Однако поддержка Java от облачных провайдеров улучшается с каждым днем. Jelastic позволяет вам развернуть обычные WAR-файлы в Tomcat 7 или GlassFish 3 прямо сейчас. AppFog поддерживает развертывание в Tomcat 6 , а поддержка Tomcat 7 появится в ближайшее время. Я подозреваю, что в недалеком будущем идея модификации ваших приложений для облачного развертывания будет воспринята как анахронизм.

Таким образом, в двух словах, это зависит от используемой вами платформы. Если встроенные серверы запекаются, они могут быть очень крутыми. Если они приклеены к воздуховоду, они могут быть ужасными. Если бы сегодня я писал Hibernate Search by Example , сценарии построения примера приложения производили бы две вещи: файл WAR и ссылку для загрузки Tomcat.

Программы, которые поддерживают WAR расширение файла

Ниже вы найдете указатель программ, которые можно использовать для открытия файлов WAR, разделенных на категории 3 в соответствии с поддерживаемой системной платформой. Файлы с расширением WAR, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.

Программы, обслуживающие файл WAR

Как открыть файл WAR?

Отсутствие возможности открывать файлы с расширением WAR может иметь различное происхождение. К счастью, наиболее распространенные проблемы с файлами WAR могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.

Шаг 1. Скачайте и установите WinRAR

Install software to open WAR file

Проблемы с открытием и работой с файлами WAR, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами WAR на вашем компьютере. Этот легкий. Выберите WinRAR или одну из рекомендованных программ (например, ALZip, IZArc, WinZip) и загрузите ее из соответствующего источника и установите в своей системе. Выше вы найдете полный список программ, которые поддерживают WAR файлы, классифицированные в соответствии с системными платформами, для которых они доступны. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт WinRAR и загрузите установщик.

Шаг 2. Проверьте версию WinRAR и обновите при необходимости

Update software that support file extension WAR

Вы по-прежнему не можете получить доступ к файлам WAR, хотя WinRAR установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Иногда разработчики программного обеспечения вводят новые форматы вместо уже поддерживаемых вместе с новыми версиями своих приложений. Это может быть одной из причин, по которой WAR файлы не совместимы с WinRAR. Самая последняя версия WinRAR обратно совместима и может работать с форматами файлов, поддерживаемыми более старыми версиями программного обеспечения.

Шаг 3. Настройте приложение по умолчанию для открытия WAR файлов на WinRAR

Если проблема не была решена на предыдущем шаге, вам следует связать WAR файлы с последней версией WinRAR, установленной на вашем устройстве. Следующий шаг не должен создавать проблем. Процедура проста и в значительной степени не зависит от системы

Associate software with WAR file on Windows

Выбор приложения первого выбора в Windows

  • Выберите пункт Открыть с помощью в меню «Файл», к которому можно щелкнуть правой кнопкой мыши файл WAR.
  • Далее выберите опцию Выбрать другое приложение а затем с помощью Еще приложения откройте список доступных приложений.
  • Наконец, выберите Найти другое приложение на этом. , укажите папку, в которой установлен WinRAR, установите флажок Всегда использовать это приложение для открытия WAR файлы свой выбор, нажав кнопку ОК

Выбор приложения первого выбора в Mac OS

Шаг 4. Убедитесь, что WAR не неисправен

Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл WAR действительным. Проблемы с открытием файла могут возникнуть по разным причинам.

Check WAR file for viruses

1. Проверьте WAR файл на наличие вирусов или вредоносных программ.

Если WAR действительно заражен, возможно, вредоносное ПО блокирует его открытие. Сканируйте файл WAR и ваш компьютер на наличие вредоносных программ или вирусов. Если сканер обнаружил, что файл WAR небезопасен, действуйте в соответствии с инструкциями антивирусной программы для нейтрализации угрозы.

2. Убедитесь, что структура файла WAR не повреждена
3. Убедитесь, что у вас есть соответствующие права доступа

Некоторые файлы требуют повышенных прав доступа для их открытия. Войдите в систему, используя учетную запись администратора, и посмотрите, решит ли это проблему.

4. Убедитесь, что ваше устройство соответствует требованиям для возможности открытия WinRAR

Если в системе недостаточно ресурсов для открытия файлов WAR, попробуйте закрыть все запущенные в данный момент приложения и повторите попытку.

5. Проверьте, есть ли у вас последние обновления операционной системы и драйверов

Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом Java Web Archive. Устаревшие драйверы или программное обеспечение могли привести к невозможности использования периферийного устройства, необходимого для обработки файлов WAR.

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла WAR мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле WAR.

Читайте также: