J'utilise ColdFusion MX7 pour exécuter un CFEXECUTE sur du code Java 6.Comment empêcher CFEXECUTE de se bloquer après un PrintStackTrace?
Malheureusement, comme CF7 ne fonctionne pas sous JDK 6, je dois le faire de cette façon.
Mon problème est que lorsqu'une exception se produit dans le code Java si j'appelle un printStackTrace
sur l'exception la commande CFEXECUTE se bloque. ColdFusion expire mais le processus Java continue de se bloquer en arrière-plan.
Je suppose qu'il y a du blocage mais je n'arrive pas à comprendre pourquoi. Si je ne fais pas un printStackTrace
, alors tout fonctionne bien.
Les exceptions sont les exceptions WebService générées avec JAXWS à partir d'Oracle Information Rights Management wsdl.
EDIT
J'ai remarqué que je suis en mesure d'appeler le printStackTrace
avec un fichier PrintStream
en tant que paramètre et il fonctionne très bien. Donc, il semble que le flux d'erreurs a des problèmes.
Voici le code 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();
}
}
Voici l'appel 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>
Pouvez-vous coller un code? –