[Débutant]Utilisation des Threads
Bonjour à tous, voila je suis actuellement en stage dans une boite pour laquelle j'essaye de réaliser une petite appli qui fait des requêtes sur des serveurs.
J'ai fait un fichier xml dans lequel on retourouve pour chaque élément serveur, une liste d'url et les paramètres de connexion à une base de donnée ainsi qu'une requêtes sql.
Lorsque j'exécute mon appli, je teste les urls ( et la base correspondante si une des url renvoit une erreur de type 40x ou 50x)
Mon problème est que j'aimerais pouvoir mettre en pause les requêtes sur un serveur et continuer à tester les autres. J'ai regardé beaucoup de doc sur les Thread, je pense avoir compris le fonctionnement mais je n'arrive pas à les utiliser correctement pour mon appli. Voila cela fait deux semaine que j'essaye sans succès :cry: voici ma classe principale si vous pouvez m'aider...
Citation:
public class Main{
static ServerParameters srvParam = null;
String nomServer = null;
String nomDataBase = null;
String reponseResultUrl = null;
String reponseResultDb = null;
ResultParameters resultUrl = null;
ResultParameters resultDb = null;
ArrayList listUrl = null;
ServerListXml svrXml = new ServerListXml();
Timer t = null;
ArrayList listeSrvParameter = svrXml.getListeServerXml();
Calendar calender = null;
ArrayList reponseKo = null;
ReponseKoParameter reponseKoParam = null;
String repDb = null;
public Main(ServerParameters srvParam) {
Main.srvParam = srvParam;
t=new Timer();
t.schedule(new Repet(), 0, 600);
}
class Repet extends TimerTask {
public void run() {
calender= Calendar.getInstance();
reponseKo = new ArrayList();
for (int i = 0; i < listeSrvParameter.size(); i++)
{
srvParam = (ServerParameters)listeSrvParameter.get(i);
listUrl = srvParam.getListeUrl();
nomServer= srvParam.getServerName();
nomDataBase = srvParam.getDbParameters().getDbType();
System.out.println("Test du serveur " + nomServer);
for (int j = 0; j < listUrl.size(); j++ )
{
resultUrl = CheckUrl.checkUrl((UrlParameters)listUrl.get(j));
reponseResultUrl = resultUrl.getCodeReponse();
String logResultUrl = "Connexion à l'Url " + resultUrl.getNomDuTest();
String logReponseUrl = "resultUrl : " + reponseResultUrl + "\n";
System.out.println(logResultUrl);
System.out.println(logReponseUrl);
if(!(reponseResultUrl.equals("OK")))
{
String repServerName = "\r\n" + "============== " +" alerte "+ ", serveur " + nomServer +" =============="+ "\r\n";
String repUrl = calender.getTime() +"\t"+ logResultUrl +"\t"+ logReponseUrl;
try {
resultDb =
CheckDataBase.checkData(srvParam.getDbParameters());
} catch (SQLException e) {
e.printStackTrace();
}
reponseResultDb = resultDb.getCodeReponse();
String logResultDb = "Test de la Base " +nomDataBase+ " " +
resultDb.getNomDuTest();
String logReponseDb = "resultDB : " + reponseResultDb + "\n";
System.out.println(logResultDb);
System.out.println(logReponseDb);
if(!(reponseResultDb.equals("OK")))
{
repDb = calender.getTime()+"\t"+ logResultDb +"\t"+
logReponseDb;
}
reponseKoParam = new ReponseKoParameter(repServerName,repUrl,repDb);
reponseKo.add(reponseKoParam);
}
}
for(int m = 0; m < reponseKo.size(); m ++)
{
reponseKoParam = (ReponseKoParameter)reponseKo.get(m);
LogSentinelle.ecrire(reponseKoParam.getServerNameKo());
LogSentinelle.ecrire(reponseKoParam.getUrlReponseKo());
LogSentinelle.ecrire(reponseKoParam.getDbReponseKo());
}
}
}
}
public static void main(String[] args)throws Exception{
Main repet = new Main(srvParam);
}
}