尝试从剧本中执行java命令时可能出现问题



我正在自动化虚拟机中的一些进程,我们目前正在使用java 17,并已将jettys更新为jetty-11。由于在jetty-11中,home和base都是独立的,因此初始化jetty-base文件夹很重要。我需要从ansible开始我在本地shell中找到了一个解决方案,但在ansible中尝试它不起作用

- name: "Run initialization command" 
shell: "nohup java -jar '{{ jetty_home }}'/start.jar jetty.base='{{ jetty_install_dir }}' --add-module=server,http,deploy,annotations,logging-jetty,jsp &"

当我运行剧本时没有明显的错误,只有

TASK [jetty-distribution : initialize jetty-base] **************************************************************************************************************************
changed: [****************************] (cutting the vm name off)

这个问题有什么解决办法吗?提前感谢

您应该使用两个独立的目录。

(对于未来看到这个问题的其他人,在此重复(

  1. jetty.home目录
    这适用于码头配送(或更现代的jetty-hometarball/zip(
    jetty.home目录是神圣的,不要编辑/更改/删除/添加/修改该目录中的任何内容。你不需要,对于你能想到的任何可能的配置(相信我(。

  2. jetty.base目录
    这是您的配置或Jetty实例的目录
    请确保此目录不会嵌套在jetty.home目录的内部/外部,在升级(甚至降级(Jetty版本时,您只会使您的生活变得不必要的复杂。

接下来,在初始化时,关闭nuhup,它只会隐藏初始化过程中可能出现的任何错误。--add-module命令无论如何都是终端,它将执行它需要的操作,然后退出,它不是守护进程,并保持运行。如果你不想看到输出,至少可以将其重定向到一个输出文件,如果有问题,可以询问。

也不要把它放在后台(末尾的&(,如果发生错误,退出代码将对您有用。

又名

java -jar /path/to/jetty-home/start.jar 
jetty.home=/path/to/jetty-home 
jetty.base=/path/to/my-jetty-base 
--add-module=http,deploy,annotations,logging-jetty,jsp 
2>&1 > /path/to/my-jetty-base/jetty-init.log

请记住,添加某些模块时,需要用户交互(以接受许可证(。这可以在脚本中通过使用start.jar上的--approve-all-licenses选项来处理。

最后,你确定ansible支持";雅加达大爆炸;Jetty 11实现的命名空间更改?

查看过去对此的回答:https://stackoverflow.com/a/66368511/775715

如果ansible已经更新到Jakarta EE 9,那么继续使用Jetty 11,如果他们没有,那么坚持使用Jetty 10(位于Jakarta EE 8上(,直到ansible赶上世界其他地方。

相关内容

  • 没有找到相关文章

最新更新