Bonjour,
Je dois faire un programme qui verifie la disponibilité et le bon fonctionnement d'un outil :
Soit TraitementLong la classe qui fait tous les tests.
L'un des problème que je dois gérer est la mauvaises prise en compte de TraitementLong des TimeOut.
Pour cela je crée un Thread qui lance un TimeOut en même qu'un thread qui qui lance TraitementLong.
Voila le code :
Code :
- package ppaceMaker;
- import org.apache.log4j.Logger;
- import org.apache.log4j.PropertyConfigurator;
- import utilities.Mailing;
- import utilities.PPlus;
- import utilities.Utils;
- import utilities.Timer;
- import com.sciforma.psnext.api.PSException;
- public class ConnectionDiagnosis_V5 extends Timer {
- static final long start = System.currentTimeMillis();
- static long now = start;
- final boolean OK = true;
- private static int TIME_OUT = 5;
- private static final Logger logger = Logger.getLogger("PACEMAKER" );
- static boolean timeOut = false;
- static boolean success = false;
- public ConnectionDiagnosis_V5(int arg0) {
- super(arg0);
- // TODO Auto-generated constructor stub
- }
- private synchronized static void lanchtest() throws PSException {
- PPlus mytest = new PPlus(true, true);
- mytest.closeSession();
- }
- static Thread tpplus = new Thread(new Runnable() {
- public void run() {
- // le code qui te prend du temps
- try {
- lanchtest();
- success = true;
- tcounter.interrupt();
- } catch (Exception e) {
- e.printStackTrace(); // eventuelle
- }
- }
- });
- static Thread tcounter = new ConnectionDiagnosis_V5(TIME_OUT * 1000);
- synchronized public void timeout() {
- System.err.println("ICI?" );
- // Erreur de TO
- logger.error("PPlus Timeout occurred.... terminating" );
- /*
- * Utils.timeIt(now); // this.stop();
- * Mailing.sendMail("xxxxx@sgcib.com",
- * "xxxxx@sgcib.com", "Time Out Problem!!!", "Attention avec
- * la copyProd" ); try { Thread.sleep(1000); } catch
- * (InterruptedException e) { // TODO Auto-generated catch block
- * logger.error(e); } this.stop();
- */
- tpplus.interrupt();
- timeOut = true;
- this.stop();
- }
- public static void checkJobDate() {
- }
- public static void main(java.lang.String[] args) {
- PropertyConfigurator.configure(ConnectionDiagnosis.class
- .getClassLoader().getResource("conf/log4j.properties" ));
- logger.info("Starting Diagnosis" );
- tcounter.start();
- tpplus.start();
- while (!timeOut) {
- }
- logger.info("Ending Diagnosis" );
- Utils.timeIt(start);
- }
- }
|
Message édité par PETOZAK le 01-10-2007 à 11:31:08