【问题标题】:Javalite framwork in production env生产环境中的 Javalite 框架
【发布时间】:2019-05-18 16:03:30
【问题描述】:

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

  1. 我想使用maven-assembly-plugin 将所有依赖项组装到一个jar 中,命名为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 的经验,你能分享一下吗?谢谢!

【问题讨论】:

    标签: embedded-jetty javalite activeweb


    【解决方案1】:

    您找到的示例是运行嵌入式 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 文件,其中包含所有依赖项作为 WEB_INF/lib 下的 jar 文件 - 也就是说,我们不创建具有依赖项的 jar。 一旦我们有了那个 WAR 文件,我们就将它部署在标准的生产容器上,就像任何其他 Java 应用程序(JBoss、Tomcat 等)一样。

    【讨论】:

    • 感谢 AppConfig 工具包。我已将我的application.properties 迁移到 javalite 方式。看起来太棒了! ?
    【解决方案2】:

    好像你在问两个不同的事情。

    你想要一个包含你需要的一切的自动执行 jar 吗? 如果是这样,那么您将使用 ServletContextHandler 而不是 WAR 或 WebAppContext

    见:

    示例项目位于

    如果你想使用WebAppContext 并让它自动执行,那么你基本上就会有所谓的“实战”。

    基础是您将拥有多个 maven(或 gradle)项目来管理您需要完成这种实时战设置的不同层。

    见:

    示例项目位于

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-14
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多