我将发布基于Javalite框架的webapp的第一个版本。多亏了这一框架,它使发展迅速:)。以下是我的生产环境中的一些目标。
maven-assembly-plugin将所有依赖项组装到一个jar中,名为myapp-with-dependencies.jarjava -jar myapp-with-dependencies.jar运行这个webapp,这样我就可以为myapp创建守护进程服务。我在github上检查了Javalite的所有示例应用程序,下面列出了开发env中的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", "/");只在开发模式下工作?以及如何将其转变为生产模式?
这个问题可能与嵌入式码头有关。如果您有在生产env上传送Javalite的经验,您愿意分享吗?谢谢!
发布于 2019-05-20 01:06:30
您发现的示例是运行的一种非常简单的方法。您提出的另一个问题是关于在不同环境中运行的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插件进行开发--有很多这样的例子:https://github.com/javalite
我们的标准Maven构建创建了一个WAR文件,它将所有依赖项都包含在WEB_INF/lib下的jar文件中-也就是说,我们不创建带有依赖项的jar。一旦我们有了这个WAR文件,我们就会将它部署到一个标准的生产容器上,就像任何其他Java (JBoss、Tomcat等)一样。
发布于 2019-05-19 16:43:29
好像你在问两件不同的事情。
你想要一个自动执行的罐子,里面有你需要的所有东西吗?如果是这样的话,那么您将使用ServletContextHandler而不是WAR或WebAppContext。
请参见:
和示例项目在
如果您想使用WebAppContext并让它自动执行,那么基本上就会有一种被称为“现场战争”的东西。
最基本的是,您将有多个maven (或gradle)项目来管理您需要的不同层,以完成这种实战设置。
请参见:
和示例项目在
https://stackoverflow.com/questions/56200663
复制相似问题