Withdrawn: 8275259: Add support for Java level DCmd
Denghui Dong
ddong at openjdk.java.net
Wed Nov 10 02:25:42 UTC 2021
On Thu, 14 Oct 2021 05:42:09 GMT, Denghui Dong <ddong at openjdk.org> wrote:
> (RFC: https://mail.openjdk.java.net/pipermail/serviceability-dev/2021-October/039796.html)
>
> 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
This pull request has been closed without being integrated.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5938
More information about the serviceability-dev
mailing list