On Fri, 15 Oct 2021 10:58:29 GMT, Denghui Dong <dd...@openjdk.org> wrote:
>> I proposed to extend DCmd to allow Java developers to customize their own >> diagnostic commands last week. >> >> At present, I have implemented a preliminary version. >> >> In the current implementation, I provided some simple APIs in the Java layer >> (under sun.management.cmd) for defining and registering commands. >> >> - Executable interface >> Java diagnostic commands need to implement this interface, the interface >> only contains a simple method: >> >> /** >> * @param output the output when this executable is running >> */ >> void execute(PrintWriter output); >> >> >> - Add two annotations (@Command and @Parameter) to describe the command meta >> info >> >> - Use Factory API to register command, the following forms are supported >> >> @Command(name = "My.Echo", description = "Echo description") >> class Echo implements Executable { >> >> @Parameter(name = "text", ordinal=0, isMandatory = true) >> String text; >> >> @Parameter(name = "repeat", isMandatory = true, defaultValue = "1") >> int repeat; >> >> @Override >> public void execute(PrintWriter out) { >> for (int i = 0 ; i < repeat; i++) { >> out.println(text); >> } >> } >> } >> >> Factory.register(Echo.class); >> >> >> >> Factory.register("My.Date", output -> { >> output.println(new Date()); >> }); >> >> >> - When the command is running, the VM will call `Executor.executeCommand` to >> execute the command. In the implementation of Executor, I introduced a >> simple timeout mechanism to prevent the command channel from being blocked. >> >> At the VM layer, I extended the existing DCmd framework(implemented JavaDCmd >> and JavaDCmdFactoryImpl) to be compatible with existing functions (jmx, >> help, etc.). >> >> In terms of security, considering that the SecurityManager will be >> deprecated, there are not too many considerations for the time being. >> >> Any input is appreciated. >> >> Thanks, >> Denghui > > Denghui Dong has updated the pull request incrementally with one additional > commit since the last revision: > > print argument key if not found Hi Denghui, as I wrote before, I am neutral on this. But I agree with @egahlin that this seems to be more on JEP level. A PR is not the right first step for this, and I am afraid you won't build much consensus here. Maybe discuss this first on the serviceability ML? Or on hotspot-dev? Kind Regards, Thomas ------------- PR: https://git.openjdk.java.net/jdk/pull/5938