我将基于Javalite框架发布webapp的第一个版本。感谢框架,它使发展迅速:)。这是我的制作环境中的一些目标。
maven-assembly-plugin
将所有依赖项组合到一个罐中,命名为myapp-with-dependencies.jar
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的经验,是否可以分享?谢谢!
答案 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)项目管理不同的层,您将需要进行这种实时的设置。
请参阅:
示例项目位于