ColdFusion MX7 を使用して、Java 6 コードで CFEXECUTE を実行しています。
残念ながら、CF7 は JDK 6 では動作しないため、この方法で行う必要があります。
私の問題は、例外で a を呼び出すと Java コードで例外が発生するとprintStackTrace
、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>