2015-04-04 42 views
3

我想在spring-boot应用程序中向弹簧执行器的ssh远程shell添加一个java命令。春季启动版本是1.2.3.RELEASE。在java中为actuatorshell添加自定义命令的弹簧引导

我的示例命令是刚刚命名为'kafka',我试图将它放在classpath中的/ crash /命令以及/命令中。它从来没有被发现 - 它没有出现在帮助或实际工作中。

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

我试过的东西包括specfically覆盖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"; 
    } 
} 

回答

4

调试一小时后,我发现,坠机远程shell查找具有扩展包内.groovy.javacommands和文件crash.commands。找到的文件被编译为字节码,编译器错误被忽略。

我认为你使用的东西就像Maven。当你把你的命令放到src/main/java中时,Maven会将它编译为.class文件,而CRaSH不会找到它。当你把你的命令放入src/main/resources时,Maven将而不是编译并保存为.java文件。

解决方案(这是很奇怪的我)是把你的java命令文件到的src/main /资源(包commandscrash.commands),所以你必须在你的目标目录或JAR一个.java源文件。我使用spring-boot 1.2.1.RELEASE(crash.shell:1.3.0)测试了它,它应该和1.2.3.RELEASE(crash.shell:1.3.1)差不多。

+0

对我来说,只有在设置'shell.command-path-patterns = classpath *:/ src/main/resources/crash/commands/**'时才可以工作(除了默认配置以外, – geld0r 2016-06-22 21:06:59

相关问题