Bonjour,
[Platform]
Status=OK
Version=4.0.P24
BuiltOn=2020-10-14 23:22 (revision 3c63448f648587d9a89ec04d597946d26e4f7937)
Encoding=UTF-8
EndpointIP=172.17.0.4
EndpointURL=http://244663a571d9:8080
TimeZone=Europe/Paris
SystemDate=2020-11-05 10:19:04
[Application]
ApplicationVersion=0.16 dev
ContextPath=
ContextURL=https://ope.rfs.ope.aws.renault.com
ActiveSessions=1
TotalUsers=18
EnabledUsers=10
LastLoginDate=
[Server]
ServerInfo=Apache Tomcat/9.0.39
ServerType=WEB
User=root
[OS]
Name=Linux
Architecture=amd64
Version=4.14.186-110.268.amzn1.x86_64
SystemEncoding=UTF-8
J’ai un cron job:
Ce job devrait être lancé en automatique tous les jours à 18h pour générer des fichiers, en faisant appel à des méthodes de génération de fichiers.
Voici un exemple d’une méthode de génération du fichier:
public String generateInfoService() {
Grant g = getGrant();
ByteArrayOutputStream baos = null;
SitesGenerateInfoServiceTCENL adf = (SitesGenerateInfoServiceTCENL) g.getTmpObject("SitesGenerateInfoServiceTCENL");
BusinessObjectTool adfTool = new BusinessObjectTool(adf);
acp = (SitesAccessPoint)getGrant().getTmpObject("SitesAccessPoint");
acpTool = new BusinessObjectTool(acp);
apa = (SitesAccessPointAttachment)getGrant().getTmpObject("SitesAccessPointAttachment");
apaTool = new BusinessObjectTool(apa);
aaa = (SitesAccessPointAttachmentAttribute)getGrant().getTmpObject("SitesAccessPointAttachmentAttribute");
aaaTool = new BusinessObjectTool(aaa);
api = (SitesAccessPointIdentifierValue) getGrant().getTmpObject("SitesAccessPointIdentifierValue");
apiTool = new BusinessObjectTool(api);
idt = (SitesIdentifierType) getGrant().getTmpObject("SitesIdentifierType");
idtTool = new BusinessObjectTool(idt);
try {
baos = new ByteArrayOutputStream();
StringBuilder content = new StringBuilder();
idt.resetFilters();
String idtId = idtTool.search(new JSONObject().put("sitesIdtName", "RAFT_CODE")).get(0)[0];
apa.resetFilters();
List<String[]> rowsApaIds = apaTool.search(new JSONObject().put("sitesApaType", "RAFT_EXCEPTION"));
for (String[] rowsApaId: rowsApaIds) {
String apaId = rowsApaId[0];
apa.select(apaId);
String acpId1 = apa.getFieldValue("sitesApaAcp1Id");
String acpId2 = apa.getFieldValue("sitesApaAcp2Id");
String apaEndDate = apa.getFieldValue("sitesApaEndDate");
String raftCodeAcp1 = retrieveApiId(acpId1, idtId);
String raftCodeAcp2 = retrieveApiId(acpId2, idtId);
String factoryCode = "";
aaa.resetFilters();
List<String[]> rowsAaaIds = aaaTool.search(new JSONObject().put("sitesAaaApaId", apaId).put("sitesAaaType", "FACTORY_CODE"));
if (rowsAaaIds.size() > 0) {
String aaaId = rowsAaaIds.get(0)[0];
aaa.select(aaaId);
factoryCode = aaa.getFieldValue("sitesAaaValue");
}
if (!factoryCode.isEmpty() && "".equals(apaEndDate)) {
charactersNumberControl(content, 10, "00" + raftCodeAcp1);
String effectiveDate = apa.getFieldValue("sitesApaEffectiveDate");
String enDate = "";
if (effectiveDate.length() == 10) {
String DD = effectiveDate.substring(8);
String MM = effectiveDate.substring(5, 7);
String YYYY = effectiveDate.substring(0, 4);
enDate = DD + "." + MM + "." + YYYY;
}
charactersNumberControl(content, 10, enDate);
charactersNumberControl(content, 8, factoryCode);
charactersNumberControl(content, 10, "00" + raftCodeAcp2);
String incoterm = "";
aaa.resetFilters();
rowsAaaIds = aaaTool.search(new JSONObject().put("sitesAaaApaId", apaId).put("sitesAaaType", "INCOTERM"));
if (rowsAaaIds.size() > 0) {
String aaaId = rowsAaaIds.get(0)[0];
aaa.select(aaaId);
incoterm = aaa.getFieldValue("sitesAaaValue");
}
charactersNumberControl(content, 3, incoterm);
content.append(newLine);
}
}
String contentString = content.toString();
baos.write(contentString.getBytes());
adfTool.getForCreate();
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
AppLog.info(getClass(), "generateInfoService", "creation date = " + sdf.format(cal.getTime()), g);
adf.setFieldValue("sitesGeneralDate", sdf.format(cal.getTime()));
adf.getField("sitesGFile").setDocument(adf, "InfoServiceTCFile.txt", baos.toByteArray());
adfTool.validateAndCreate();
return contentString;
}
catch(Exception e) {
AppLog.error(getClass(), "generateInfoService", "error...", e, g);
return Message.formatSimpleError("Error...");
}
}
Cependant, à l’heure d’exécution de ce cron et en suivant les logs (car j’ai remarqué que les fichiers ne sont parfois pas générés), j’ai vu des messages d’erreur apparaitre. Sans aucune autre modification et quand je relance quelques secondes après ce même Cron en manuel (Force immediate execution of the task) le job est lancé et les fichiers sont bien générés.
Mais je vois aussi qu’à la fin de l’exécution que le status est “Exception”
Pour info, j’ai vu aussi un autre message, qui semble en info lors du déroulement de la génération des fichiers :
Je souhaiterai savoir pourquoi le cron est lancé en erreur à l’heure de l’exécution et si vous avez une idée du message d’erreur/info que je vois passer, même si les fichiers sont à la fin bien générés et au bon format.
Merci d’avance