< prev index next >

src/jdk.jcmd/share/classes/sun/tools/jcmd/JCmd.java

Print this page
rev 55749 : 8227868: jinfo and jstack can fail converting UTF8 output to strings
Reviewed-by:

*** 23,49 **** * questions. */ package sun.tools.jcmd; - import java.io.InputStream; - import java.io.InputStreamReader; import java.io.IOException; import java.io.UnsupportedEncodingException; - import java.util.List; import java.util.Collection; - import java.util.Collections; import java.util.Comparator; import java.net.URISyntaxException; import com.sun.tools.attach.AttachOperationFailedException; import com.sun.tools.attach.VirtualMachine; import com.sun.tools.attach.VirtualMachineDescriptor; import com.sun.tools.attach.AttachNotSupportedException; import sun.tools.attach.HotSpotVirtualMachine; import sun.tools.common.ProcessArgumentMatcher; import sun.tools.jstat.JStatLogger; import sun.jvmstat.monitor.Monitor; import sun.jvmstat.monitor.MonitoredHost; import sun.jvmstat.monitor.MonitoredVm; import sun.jvmstat.monitor.MonitorException; --- 23,47 ---- * questions. */ package sun.tools.jcmd; import java.io.IOException; + import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.Collection; import java.util.Comparator; import java.net.URISyntaxException; import com.sun.tools.attach.AttachOperationFailedException; import com.sun.tools.attach.VirtualMachine; import com.sun.tools.attach.VirtualMachineDescriptor; import com.sun.tools.attach.AttachNotSupportedException; import sun.tools.attach.HotSpotVirtualMachine; import sun.tools.common.ProcessArgumentMatcher; + import sun.tools.common.PrintStreamPrinter; import sun.tools.jstat.JStatLogger; import sun.jvmstat.monitor.Monitor; import sun.jvmstat.monitor.MonitoredHost; import sun.jvmstat.monitor.MonitoredVm; import sun.jvmstat.monitor.MonitorException;
*** 120,148 **** String lines[] = command.split("\\n"); for (String line : lines) { if (line.trim().equals("stop")) { break; } ! try (InputStream in = hvm.executeJCmd(line); ! InputStreamReader isr = new InputStreamReader(in, "UTF-8")) { ! // read to EOF and just print output ! char c[] = new char[256]; ! int n; ! boolean messagePrinted = false; ! do { ! n = isr.read(c); ! if (n > 0) { ! String s = new String(c, 0, n); ! System.out.print(s); ! messagePrinted = true; ! } ! } while (n > 0); ! if (!messagePrinted) { System.out.println("Command executed successfully"); } } - } vm.detach(); } private static void listCounters(String pid) { // Code from JStat (can't call it directly since it does System.exit) --- 118,134 ---- String lines[] = command.split("\\n"); for (String line : lines) { if (line.trim().equals("stop")) { break; } ! ! InputStream is = hvm.executeJCmd(line); ! ! if (PrintStreamPrinter.drainUTF8(is, System.out) == 0) { System.out.println("Command executed successfully"); } } vm.detach(); } private static void listCounters(String pid) { // Code from JStat (can't call it directly since it does System.exit)
< prev index next >