我正在使用 ColdFusion MX7 对一些 Java 6 代码执行 CFEXECUTE。
不幸的是,由于 CF7 在 JDK 6 下不起作用,我必须这样做。
我的问题是,当 Java 代码中发生异常时,如果我printStackTrace
在异常上调用 a,CFEXECUTE 命令会挂起。ColdFusion 最终超时,但 Java 进程继续在后台挂起。
我猜有一些阻塞正在发生,但我似乎无法弄清楚为什么。
如果我不这样做,printStackTrace
那么一切正常。
这些异常是使用来自 Oracle Information Rights Management wsdl 的 JAXWS 生成的 WebService 异常。
编辑
我注意到我可以printStackTrace
用文件PrintStream
作为参数调用它,它工作正常。所以,看起来错误流有问题。
这是Java代码:
public void Execute(){
AdminUtils AU = AdminUtils.GetInstance();
AccountServicesPort AA = AU.GetAccountServicesPort();
LicenseServerRef LicSerRef = AU.GetLicenseServerRef();
User UserToSave = new User();
UserToSave.setUserName(UserName);
UserToSave.setFirstName(FirstName);
UserToSave.setLastName(LastName);
UserToSave.setEmailAddress(EmailAddress);
UserToSave.setServer(LicSerRef);
try{
AU.LogMessage("Change User: " + UserName + " " + FirstName + " " + LastName + " " + EmailAddress);
AA.saveChangesToUser(UserToSave);
}catch(Exception e){
e.printStackTrace();
}
}
这是 ColdFusion 调用:
<!--- Update the IRM User. --->
<CFEXECUTE name="c:\Program Files\Java\jdk1.6.0_14\bin\javaw.exe"
arguments="-cp C:\CFusionMX7\Externals\IRM.jar;C:\CFusionMX7\Externals\Config IRMWebServices.UpdateUser #LoginID# #NewFname# #NewLname#"
timeout="15"
variable="OUTPUT">
</CFEXECUTE>