[JAVA] Compatibilité JVM SUN/Microsoft

Compatibilité JVM SUN/Microsoft [JAVA] - Java - Programmation

Marsh Posté le 13-07-2005 à 10:13:09    

hi,  
question qui a deja du etre posée en apparence  donc faites attention lisez bien   ;)
 
Voila j'ai une applet deployée sur un serveur. Elle a pour but de compresser un fichier que l'utilisateur va nous uploader ensuite.
Cette applet ne marchait pas avec la "JVM" de microsoft. J'ai donc modifié le code et ajouter  

Code :
  1. if (System.getProperty ("java.vendor" ).startsWith ("Microsoft" )) {
  2. System.out.println("On est sur une jvm Microsoft" );
  3. // verification poussée : on a bien les classes qu'il faut ?       
  4. try
  5. if (Class.forName("com.ms.security.PermissionID" )==null) return null ;
  6. com.ms.security.PolicyEngine.assertPermission(PermissionID.SYSTEM);
  7. com.ms.security.PolicyEngine.checkPermission(PermissionID.SYSTEM);
  8.              } catch(Exception ex) {
  9.                System.err.println(ex); 
  10.              }
  11.    }


 
J'ai ajouté également des cerficats  (et oui ! il faut ) j'ai copié le contenu de mon *.jar dans un *.cab  (seul format certifié lu par MJVM)
et ca marche..........presque .
En fait, mon appli se lance mais des qu'il y a utilisation de la MJVM  il y a un plantage aléatoire ....  En gros, j'arrive  a "zipper" le fichier mais je recupere pas la main apres  ( et tout plante , y compris la console qui refuse de s'afficher )  
et plus drole encore !!! j'arrive des fois a le zipper normalement pas de bugs etc et je peux en rezipper un autre et ainsi de suite et d'un coup ca plante  ( original quand meme non ?)  
 
Donc je pencherais pour un coup des threads mais  je vois pas en quoi la gestion selon sun ou microsoft est differente ...  
 
Voila je sais pas si c'est clair comme message , sinon n'hesitez a demander des precisions ...
 
( je mets pas le code de l'applet car il y a + de 10 classes et elles sont assez longues )


Message édité par miloux32 le 13-07-2005 à 10:26:14
Reply

Marsh Posté le 13-07-2005 à 10:13:09   

Reply

Marsh Posté le 13-07-2005 à 17:15:34    

Bon ben apparemment j'ai trouvé tout seul ...  
 
 Donc mon probleme venait du temps d'acces aux fichiers.. Visiblement microsoft et Sun ne gere pas les trheads de la meme facon donc j'avais droit a un bug dans l'acces aux fichiers ...
En gros quand on faisait l'operation plusieurs fois d'affilée, Sun a le temps de fermer le fichier et pas Microsoft donc plantage (tellement beau que meme pas d'erreur affiché et la console est morte ) il suffit d'ajouter donc  
try{Thread.sleep((long) 10);}catch(Exception e) {}  
pour ralentir un peu le programme et pour que ca marche ....

Reply

Marsh Posté le 13-07-2005 à 17:22:07    

Si ca marche c'est cool.
Mais je trouve la solution bancale.
 
Utilise plutot "synchronize" pour declarer tes methodes d'acces au fichier...ca sera beaucoup plus propre...


Message édité par bartleby le 13-07-2005 à 17:22:45
Reply

Marsh Posté le 15-07-2005 à 14:33:37    

arf mes methodes etaient deja synchronisées (ben pas a la base mais c'est la 1ere chose que j'ai rajouté ...) et ca empechait pas le bug ...

Reply

Sujets relatifs:

Leave a Replay

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