gpt4 book ai didi

shell - spring-boot 在 java 中向 actuatorshell 添加自定义命令

转载 作者:行者123 更新时间:2023-12-01 12:36:18 25 4
gpt4 key购买 nike

我正在尝试在 spring-boot 应用程序中向 spring-actuator 的 ssh 远程 shell 添加 java 命令。 spring-boot 版本为 1.2.3.RELEASE。

我的示例命令刚刚命名为“kafka”,我尝试将它放在/crash/commands 和/commands 的类路径中。它从未被发现 - 它没有出现在帮助中或实际工作。

有什么方法可以让远程 shell 告诉我它在启动时扫描/查找的内容吗?

我尝试过的事情包括特别覆盖 shell.commandPathPatterns,尽管默认值似乎应该覆盖它。

我的命令 - 用于测试 - 非常简单:

package commands;
@Usage("Kafka utility commands")
public class kafka extends BaseCommand {

@Command
public Object main(InvocationContext<ObjectName> context) {
return "it's all good";
}
}

最佳答案

经过一小时的调试,我发现 CRaSH 远程 shell 在包中查找扩展名为 .groovy.java 的文件是 commands crash.commands。找到的文件被编译为字节码,忽略编译器错误。

我假设您使用 Maven 之类的工具。当您将命令放入 src/main/java 时,Maven 会将其编译为 .class 文件,而 CRaSH 将找不到它。当您将命令放入 src/main/resources 时,Maven 不会编译它,而是将其保存为 .java 文件。

解决方案(这对我来说很奇怪)是将您的 java 命令文件放入 src/main/resources(package commandscrash.commands),这样您在目标目录或 JAR 中有一个 .java 源文件。

我用 spring-boot 1.2.1.RELEASE (crash.shell: 1.3.0) 测试了它,它应该与 1.2.3.RELEASE (crash.shell: 1.3.1) 没有太大区别。

关于shell - spring-boot 在 java 中向 actuatorshell 添加自定义命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29442874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com