第一次申请
Swing 客户端:此客户端将 A URI 作为输入。提供的 URI 是 Web 服务的 URL。提交时,客户端以 URI 作为参数执行 WebService 客户端。
为了执行 web 服务客户端,
String command = "java -jar EncryptToken.jar " + requestURI;
Runtime.getRuntime().exec(command);
由于 jar 是由客户端提供的,并且除了接受 requestURI 的 main 方法之外没有公共方法。
第二次申请
WebService 客户端:这是用于调用托管在服务器中的 Web 服务的 Web 服务客户端。
在反编译的代码中,我找到了以下用于将控制台输出记录到记录器文件中的代码。
OutputStream outStream = System.out;
try{
OutputStream os = new FileOutputStream("EncryptToken.log", false); // only the file output stream
TeeOutputStream tos = new TeeOutputStream(outStream, os); // create a TeeOutputStream that duplicates data to outStream and os
PrintStream fileStream = new PrintStream(tos);
System.setErr(fileStream);
System.setOut(fileStream);
}catch(FileNotFoundException ex){
out.println("[Golden Client] Log file create Exception = " + ex.toString());
return false;
}
问题
当我通过终端或 Windows 命令行执行命令 java -jar EncryptToken.jar http://example.org/GCWS/YesWS时。
命令执行成功,控制台输出写入文件,文件大小在 70-90 KB 之间变化。
但是,当我尝试使用 Swing Client 执行相同的操作时,会执行命令,但日志文件首先初始化为 1KB,然后变为 5KB,然后冻结。5 KB 日志包含未终止的 xml。当我关闭 Swing 客户端时,控制台输出的其余部分将附加到日志文件中。
我没有在 Swing Client 中读取或写入文件。Swing Client 中没有 System.out 或 System.err 语句。
我无法找出确切的根本原因。请帮忙。