生产环境中的Javalite框架

时间:2019-05-18 16:03:30

标签: embedded-jetty javalite activeweb

我将基于Javalite框架发布webapp的第一个版本。感谢框架,它使发展迅速:)。这是我的制作环境中的一些目标。

  1. 我想使用maven-assembly-plugin将所有依赖项组合到一个罐中,命名为myapp-with-dependencies.jar
  2. 我想使用以下命令行运行Webapp:java -jar myapp-with-dependencies.jar,以便为myapp创建守护程序

我已经在github上检查了Javalite repo的所有示例应用程序,下面列出了开发环境中的条目Main.java

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 个答案:

答案 0 :(得分:1)

您发现的示例是运行Jetty嵌入式的非常简单的方法。您询问的另一个问题是有关在不同环境中运行的ActiveWeb项目的信息。

请参阅http://javalite.io/app-config。我们始终使用AppConfig从对应于当前环境的属性文件中加载属性。该页面包含为不同环境设置系统所需的所有信息

第1步:

app.get('/', function (req, res) {
    /***
    'template.html' - the filename of the template
    {} - the context - fill this with all the variables you 
                       want to use in your template
    ***/
    res.render('template.html', {title: 'My New Title'});
});

第2步

将属性添加到属性文件中,例如/app_config | +--global.properties | +--development.properties | +--staging.properties | +--production.properties

development.properties

第3步

使用first.name=John phrase= And the name is ${first.name} 方法拉动属性:

p()

在本地运行时,默认情况下它将读取import static org.javalite.app_config.AppConfig.p; ... System.out.println(p("phrase")); 文件。

如果您设置环境变量development.properties,那么您的代码将从ACTIVE_ENV=production文件中读取。

我们如何在生产环境中运行JavaLite应用。

通常,我们使用Jetty Maven插件进行开发-有很多示例:https://github.com/javalite

我们的标准Maven构建会创建一个WAR文件,其中会将所有依赖项作为jar文件包含在WEB_INF / lib下-也就是说,我们不会创建具有依赖项的jar。 一旦有了该WAR文件,便将其部署在标准生产容器上,就像其他任何Java应用程序(JBoss,Tomcat等)一样。

答案 1 :(得分:0)

好像您在问两个不同的问题。

您是否需要一个自执行的jar,其中包含您需要的所有内容? 如果是这样,那么您将使用ServletContextHandler而不是WAR或WebAppContext

请参阅:

示例项目位于

如果您想使用WebAppContext并且可以自我执行,那么基本上您将拥有所谓的“实战”。

基本原理是,您将有多个Maven(或Gradle)项目管理不同的层,您将需要进行这种实时的设置。

请参阅:

示例项目位于