部署jetty应用程序的最佳方式 - 选择太多?

时间:2011-10-29 05:32:12

标签: jetty embedded-jetty

我需要部署Web应用程序的生产版本。到目前为止,我一直在用mvn jetty:run进行测试。我之前使用过实际的jetty安装,但是当你想在同一个Web服务器上进行多次战争时,它们似乎是必要的。在某些方面,这是最明确的(mvn package并将其复制)。

我的其他选择是创建一个启动服务器的可运行jar(mvn assembly:single),但我需要调整配置,以便提供静态内容src/main/webappweb.xml可以找到。

我也读到了关于“可运行的战争”的消息。这可能会避免src/main/webapp问题,因为这些文件已在warfile中布局。但是,我不知道该怎么做。

我也可以坚持使用mvn jetty:run,但这似乎不是最佳选择,因为生产部署与代码相关联,而不是独立的jar。

对这些不同方法的最佳方式或利弊有何看法?我错过了一些选择吗?

2 个答案:

答案 0 :(得分:2)

简单易用的jetty-console-maven-plugin使用简单,效果很好。当你运行mvn package时,你会得到两场战争 - 一场可执行的战争。 java -jar mywar.war --help提供了一些用法,它允许一些配置(端口等)。

答案 1 :(得分:1)

我对maven并不熟悉,但这就是我们使用嵌入式Jetty进行部署的方式:

我们使用嵌入式jetty应用程序创建一个单文件JAR,并打包必要的lib jar。

我们将静态内容部署在WAR文件中(您也可以将其打包到JAR中)。一切都是由ANT文件生成的:

1)构建静态文件WAR(这也创建了web.xml) 2)将WAR复制到应用程序资源中 3)编译可执行的JAR

要让嵌入式Jetty“查找并提供”您的静态文件,请使用WebAppContext将war添加到Jetty处理程序:

Server jetty = new Server(port);
HandlerList handlers = new HandlerList();
WebAppContext staticContentAsWar = new WebAppContext();
staticContentAsWar.setContextPath("/static/");
staticContentAsWar.setWar(resource_Path_to_WAR);
handlers.addHandler(set);
jetty.setHandlers(handlers);
jetty.start();

HTH