[Java] Gestion d'un verrou pour des opérations Runtime

Gestion d'un verrou pour des opérations Runtime [Java] - Java - Programmation

Marsh Posté le 08-04-2007 à 14:52:21    

Contexte :  
Pour mon boulot, j'ai besoin d'accéder à un tas de répertoire partagés dans le monde (chemin UNC classique) qui représentent des configs d'un programme.
A un moment donné je veux pouvoir monter la config d'un user.
Il est exclu de mapper tous les disques à la fois car :  
- 2 sites peuvent mapper leur config sur la même lettre
- mapper en permanence des disques réseaux avec des perfs de merde ralentit windows à mort
 
A l'heure actuelle, je passe par des petits scripts CMD pour monter un disque, mais c'est pas satisfaisant, je voudrais me faire un petit programme qui gère ça plus finement.
 
Problème :
Pour mapper les disques j'utilise les commandes CMD subst ou net use, selon que je dois mapper un disque user, ou un de mes répertoires de test en tant que disque.
J'arrive sans problème à le faire sous java, mais j'ai le soucis suivant : ces commandes mettent 1-2 sec à s'executer, ce qui suffit à créer des race conditions (genre demander à démapper un disque non fini de mapper, ou chercher à mapper successivement 2 chemins sur la même lettre)
 
A mon avis je dois synchroniser mon objet Share afin qu'il ne puisse y avoir qu'une seule opération en cours en même temps sur une share...mais visiblement, je dois synchroniser le pool de lettres disponibles, sachant que les lettres dispos dépendent un peu des opérations en cours...
 
comment vous feriez ça ?


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-04-2007 à 14:52:21   

Reply

Marsh Posté le 08-04-2007 à 16:09:31    

Beh, et si tu attends que ta commande de mapping se termine et te rende la main avant de passer à la suivante?
 
Tu veux/dois vraiment faire du multi-threading? Ca m'a l'air overkilling, ton explication. Sans doute pas bien compris. :heink:
 
Java n'est peut-être pas ce qui se fait de plus souple pour scripter, aussi... [:cupra]

Reply

Marsh Posté le 08-04-2007 à 16:17:53    

le problème c'est que le user lui même peut lancer rapidement plusieurs opérations...
 
En fait je veux faire une petit appli qui me permette de mapper/démapper des disques facilement....
Les problèmes commencent quand :  
- par exemple tu t'es gouré, tu voulais pas mapper le serveur US, et donc tu lance une commande pour démapper ce server juste après (si t pas parkinsonien, en 2 sec t'as largement le temps de lancer la commande inverse, et si la précédente commande de mapping était pas finie, ca va te péter à la gueule)
- certains répertoires sont mappés sur la même lettre (par ex le serveur américain et le serveur français sont mappés sur la même lettre) ...je dois donc pouvoir controler, qd je veux mapper un disque, que la lettre n'est pas déjà utilisée (auquel cas je veux proposer soit de démapper le disque qui utilise déjà cette lettre, soit mapper le nouveau disque sur une lettre différente), ce qui sous-entend que je dois gérer un pool de lettres disponibles, et que donc ce pool doit être synchronisé...
 
ceci dit, après 2-3 tests, ce que fournit "synchronized" semble suffisant...je n'ai pas besoin que les opérations s'effectuent en //, mais qu'elles se fassent à la suite les unes des autres, avec un statut propre après l'execution de la commande précédente
 
et puis je voudrais un truc un peu sympa, que je puisse appeler du system tray, qui propose des fonctions un peu plus évoluées que mes scripts CMD :  
- par exemple, quand je mappe un disque "user", c'est pour 2 choses : lancer l'outil CAO dont je m'occupe avec SA config (auquel cas il faut impérativement que le disque soit mappé sur la même lettre que le user), soit pour des opérations de maintenance (copier des fichiers, etc...) auquel cas le disque peut être mappé sur n'importe quel lettre je m'en fou...
 
je voudrais donc faire qu'en cas de conflit (si je veux mapper A sur le meme lettre que B)
- on me propose de démapper A
- on me propose de remapper A sur une autre lettre
- on me propose de mapper B sur une autre lettre
 
c'est l'aspect clé de mon programme, j'ai à peu près 15 sites dans le monde, plus les disques réservé au support, ce qui fait que je passe ma vie à mapper/Démapper des disques, et manuellement ou avec des scripts pourris c'est très lourd...


Message édité par Jubijub le 08-04-2007 à 16:28:11

---------------
Jubi Photos : Flickr - 500px
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed