0

我将发布基于 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 的经验,你能分享一下吗?谢谢!

4

2 回答 2

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 等)一样。

于 2019-05-20T01:06:30.680 回答
0

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

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

看:

示例项目位于

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

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

看:

示例项目位于

于 2019-05-19T16:43:29.900 回答