Javalite Framwork в производственной среде - PullRequest
0 голосов
/ 18 мая 2019

Я собираюсь отправить первую версию базы веб-приложений на платформе Javalite. Спасибо за рамки, это делает разработку быстро :). Вот несколько целей в моей постановке.

  1. Я хотел бы использовать maven-assembly-plugin, чтобы собрать все зависимости в один jar, названный как myapp-with-dependencies.jar
  2. Я бы хотел запустить веб-приложение с помощью командной строки: java -jar myapp-with-dependencies.jar, чтобы я мог создать службу демона для myapp

Я проверил все примеры приложений репозитория Javalite на github. Ниже приведена запись Main.java в разработке env

public class Main {

  public static void main(String[] args) throws Exception {
    Server server = new Server(8080);
    WebAppContext webapp = new WebAppContext("src/main/webapp", "/"); // <- should package as war in production?
    webapp.addAliasCheck(new AllowSymLinkAliasChecker());
    server.setHandler(webapp);
    server.start();
    server.dumpStdErr();
    server.join();
  }
}

new WebAppContext("src/main/webapp", "/"); работает только в режиме разработки? и как перевести его в производственный режим?

Вопрос может быть связан со встроенным причалом. Если у вас есть опыт доставки Javalite в производственную среду, не могли бы вы поделиться им? Спасибо!

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Пример, который вы нашли, представляет собой очень простой способ запуска встроенной Jetty. Другой вопрос, который вы задали, касается проектов ActiveWeb, работающих в другой среде.

Пожалуйста, смотрите http://javalite.io/app-config. Мы всегда используем AppConfig для загрузки свойств из файлов свойств, которые соответствуют текущей среде. Эта страница содержит всю информацию, необходимую для настройки вашей системы в различных средах

Шаг 1:

/app_config
        |
        +--global.properties
        |
        +--development.properties
        |
        +--staging.properties
        |
        +--production.properties

Шаг 2

Добавьте свойства в файл свойств, например development.properties:

first.name=John
phrase= And the name is ${first.name}

Шаг 3

Свойства извлечения по методу p():

import static org.javalite.app_config.AppConfig.p;
...
System.out.println(p("phrase"));

Когда вы запускаете локально, он будет читать файл development.properties по умолчанию.

Если вы установите переменную окружения ACTIVE_ENV=production, то ваш код будет читать из файла production.properties.

Как мы запускаем приложения JavaLite в производственной среде.

Как правило, мы разрабатываем с помощью плагина Jetty Maven - есть много примеров этого: https://github.com/javalite

Наша стандартная сборка Maven создает WAR-файл, который включает все зависимости в виде jar-файлов в WEB_INF / lib, то есть мы не создаем jar с зависимостями. Получив этот WAR-файл, мы развернем его в стандартном рабочем контейнере, как и любое другое приложение Java (JBoss, Tomcat и т. Д.).

0 голосов
/ 19 мая 2019

Похоже, вы спрашиваете 2 разные вещи.

Хотите ли вы самореализующуюся банку со всем необходимым? Если это так, то вы бы использовали ServletContextHandler не WAR или WebAppContext.

См .:

И пример проекта на

Если вы хотите использовать WebAppContext, и он будет самореализуемым, то у вас в основном будет так называемая «Живая война».

Основой является то, что у вас будет несколько проектов maven (или gradle), которые управляют различными слоями, которые вам понадобятся, чтобы осуществить этот вид настройки живой войны.

См:

И пример проекта на

...