【发布时间】:2012-06-07 14:15:34
【问题描述】:
在花了几个小时试图了解如何使 持续部署 在 基于 OSGi 的应用程序 的情况下工作之后,我终于提出了我的第一个问题stackoverflow,希望对我可能做错或错过的事情有一些迹象 - 不知何故我觉得自己走错了路......
这就是我想要实现的目标:
构建一些包并将它们安装到 maven 存储库(这里没问题,使用 bnd)
现在有了构成我的应用程序的所有包(通过所有测试等),我想部署并运行应用程序,即使用这些包启动一些 OSGi 框架.
开始 不是问题 - “mvn pax:provision -Dframework=equinox” 可以解决问题。我的应用程序启动了 jetty,因此很容易通过浏览器进行验证以查看一切是否正常(除了所有测试)
但是,现在,尝试“连续”,下次我想应用此过程时,我真的应该确保关闭正在运行的实例 首先是我的应用程序(至少释放正在使用的端口)。所以,要重新运行一切,我必须先关闭旧的安装。
这就是我的问题开始的地方:有什么可以帮助我解决这个问题吗?我知道有 maven-deploy-plugin,但这似乎只在将一些 WAR/EAR 文件部署到一些标准应用程序容器中时有用(似乎不需要重新启动它)。
我真的只需要运行一些脚本来启动 OSGi 环境——然后,下一次,在我再次启动它之前优雅地关闭它。用tomcat、jetty、jboss之类的,有一些shutdown.sh脚本或者mvn jetty:stop指令,但是真的要自己写那种脚本吗?这是我认为我开始走错路的地方,我猜肯定有人在我之前遇到过这些问题并解决了它们;)
我知道我可以以某种方式尝试使用 JMX 或使用 telnet 控制台 来访问正在运行的实例以发出“stop 0”命令,但是这个 感觉不对。
从 jenkins 启动的进程应该编译/构建/部署项目,但我猜不会启动长时间运行的线程,所以我必须以某种方式启动一些“外部”进程,我想在下次再次尝试时首先杀死它。
有什么想法吗?也许我错过了什么?提前感谢您对此的任何意见!
【问题讨论】:
标签: jenkins osgi continuous-deployment bnd pax-runner