【问题标题】:Tapestry webapp with embedded Jetty带有嵌入式 Jetty 的 Tapestry webapp
【发布时间】:2011-06-27 12:23:28
【问题描述】:

如何配置 Tapestry5 项目以使用嵌入式 Jetty 独立运行(通过 java -jar)?

我正在寻找关于 Tapestry5、Jetty、servlet/处理程序的配置/连接点所需的任何内容的简短“食谱”...

我看到了几个点:How to Create an Executable WarConfiguring Tapestry (ref Tapestry as servlet filter)

编辑:由于服务器情况,我正在考虑一个独立运行的 webapp。它不一定要嵌入 Jetty,但我不能依赖稳定的应用服务器。不过,我仍在寻找食谱,所以我不会花太多时间在死胡同上……

另外,我希望 Jenkins (Hudson) 能够在部署更新时自动停止和启动服务器 - 我不知道这是否会影响我对 Jetty 的使用,f.ex。

【问题讨论】:

  • 您可以更具体地说明您想要实现的目标。您不必使用嵌入式 Jetty。您可以简单地将整个 Jetty 与您的应用程序一起打包到适当的目录中,然后使用安装程序将一些脚本放在正确的位置。
  • 谢谢 - 修改了问题。
  • 感谢您的意见 - 我在下面发布的配方似乎是启动和运行独立服务器的最简单方法,Jenkins 能够重新启动它。
  • 关于标签,似乎去掉tapestry和embedded-jetty标签并添加jenkins标签会更合适。

标签: jetty tapestry embedded-jetty


【解决方案1】:

好吧,我相信这是一个笼统的“如何进行战争问题”。假设您确实有一场战争,您可以使用 jetty 或 winstone 来“运行”它 - 请参阅:

http://winstone.sourceforge.net

http://www.enavigo.com/2008/08/29/deploying-a-web-application-to-jetty/

第一种情况,可以直接做

java -jar winstone.jar --warfile=<warfile>

【讨论】:

  • 谢谢 - 可能是使用 T5 或让 Jenkins 停止/启动不会使任何事情复杂化。我会在我的项目中尝试一下。
  • 你是对的 - 挂毯位是巧合。 (但 Jenkins 能够自动停止和启动是我问题的核心。)
【解决方案2】:
【解决方案3】:

我做了一些挖掘,这是我基本上最终遵循的简短食谱:

  1. Tapestry 5 archetype 的 pom.xml 中配置的 Maven Jetty 插件开始
  2. 在 Maven Jetty 插件配置中添加 stopKeystopPort 属性
  3. Jenkins CI 运行maven 目标jetty:stop 然后clean install
  4. 让Jenkins运行shell脚本mvn jetty:run &amp;

瞧——我的 Java 应用程序已启动并运行,代码自动更新,无需任何应用程序服务器。

【讨论】:

  • 这不是太优雅或健壮,所以如果有人有更好但仍然简单的方法来启动和运行独立的 Java 应用程序,使用 Jenkins,我将切换接受的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
  • 2011-12-30
  • 2012-02-11
  • 2020-01-24
  • 2012-12-06
  • 2015-09-26
相关资源
最近更新 更多