Как сохранить CFEXECUTE от зависания после PrintStackTrace
Я использую ColdFusion MX7 для выполнения CFEXECUTE в некотором коде Java 6.
К сожалению, поскольку CF7 не работает под JDK 6, я должен сделать это таким образом.
Моя проблема в том, что когда в коде Java происходит исключение, если я вызываюprintStackTrace
в исключении зависает команда CFEXECUTE. Время ожидания ColdFusion истекло, но процесс Java продолжает зависать в фоновом режиме.
Я предполагаю, что происходит какое-то блокирование, но я не могу понять, почему.
Если я не сделаюprintStackTrace
тогда все работает нормально.
Исключениями являются исключения WebService, сгенерированные с помощью JAXWS из Oracle Information Rights Management wsdl.
EDIT
Я заметил, что могу позвонитьprintStackTrace
с файломPrintStream
как параметр и все работает нормально. Итак, похоже, что поток ошибок имеет проблемы.
Вот код Java:
<code>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(); } } </code>
Вот вызов ColdFusion:
<code><!--- 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> </code>