Wie verhindere ich, dass CFEXECUTE nach einem PrintStackTrace hängen bleibt?
Ich verwende ColdFusion MX7, um eine CFEXECUTE für Java 6-Code auszuführen.
Da CF7 unter JDK 6 leider nicht funktioniert, muss ich das so machen.
Mein Problem ist, dass, wenn eine Ausnahme im Java-Code auftritt, wenn ich a aufrufeprintStackTrace
In der Ausnahme bleibt der Befehl CFEXECUTE hängen. Bei ColdFusion tritt eine Zeitüberschreitung auf, der Java-Prozess bleibt jedoch weiterhin im Hintergrund hängen.
Ich vermute, es gibt einige Blockierungen, aber ich kann nicht herausfinden, warum.
Wenn ich nicht macheprintStackTrace
dann funktioniert alles gut.
Die Ausnahmen sind WebService-Ausnahmen, die mit JAXWS von der Oracle Information Rights Management-WSDL generiert wurden.
BEARBEITEN
Mir ist aufgefallen, dass ich die anrufen kannprintStackTrace
mit einer DateiPrintStream
als Parameter und es funktioniert gut. Es sieht also so aus, als ob der Fehlerstrom Probleme hat.
Hier ist der Java-Code:
<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>
Hier ist der ColdFusion-Aufruf:
<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>