Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2521 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  communication servlet applet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

communication servlet applet

n°878921
fredatisi
Posté le 21-10-2004 à 14:31:22  profilanswer
 

Bonjour,  
J'ai un problème de communication entre une applet et un servlet.
Mon applet discute de manière standard avec ma servlet pour reccupérer un executable qui sera ensuite utiliser par l'application.

Code :
  1. /**/
  2. public static String CONTENT_TYPE = "Content-type";
  3. public static String URL_ENCODED = "application/x-www-form-urlencoded";
  4.  /**
  5.  * récupère le launcher côté server et le recopie chez le client
  6.  *   
  7.  */
  8. public void getAndSaveLauncher() {
  9.  //throws IOException, MalformedURLException {
  10.  try {
  11.   log("On est rentré dans getAndSaveLauncher" );
  12.   byte[] launcherAsByteArray;
  13.   BufferedInputStream bufferedIn;
  14.   // on prepare la connection
  15.   URL appletUrl = this.getCodeBase();
  16.   URL url =
  17.    new URL(
  18.     appletUrl.getProtocol(),
  19.     appletUrl.getHost(),
  20.     appletUrl.getPort(),
  21.     FILE_SENDER_URL + URL_LAUNCHER);
  22.   // on se connecte
  23.   URLConnection uc = url.openConnection();
  24.   uc.setDoOutput(true);
  25.   uc.setDoInput(true);
  26.   uc.setUseCaches(false);
  27.   uc.setRequestProperty(CONTENT_TYPE, URL_ENCODED);
  28.   log("La taille contentLength : " + uc.getContentLength());
  29.   // on recupere le contenu de notre exe
  30.   launcherAsByteArray = new byte[uc.getContentLength()];
  31.   bufferedIn = new BufferedInputStream(uc.getInputStream(), 1024);
  32.   bufferedIn.read(launcherAsByteArray);
  33.   bufferedIn.close();
  34.   // on l'ecrit sur le poste client
  35.   putLocalFile(
  36.    uc.getInputStream(),
  37.    FILE_LAUNCHER,
  38.    directoryPath);
  39.   log("fin de getAndSaveLauncher" );
  40.  } catch (Exception e) {
  41.   e.printStackTrace();
  42.  }
  43. }


 
 
Se code fonctionne très bien en environement de dev (tomcat sur le poste de dev). Lors des tests d'intégration (sun one webserver 6.1), cette méthode échoue dans environ 20% des cas : la connexion avec la servlet échoue (l'adresse est pourtant correcte, tous les streams entre l'applet et la servlet sont clos).
J'ai commencé par utilisé un objet serializé pour encapsuler  un stream qui serait lié directement à l'executable, mais j'ai obtenu le même résultat.
J'ai cherché sur le forum et sur google: ce problème est déjà arrivé à différentes personnes, mais je n'ai pas trouvé de solutions.
Quelqu'un aurait il rencontré un problème similaire et, surtout, trouvé une solution? :jap:  
 

mood
Publicité
Posté le 21-10-2004 à 14:31:22  profilanswer
 

n°878930
benou
Posté le 21-10-2004 à 14:35:48  profilanswer
 

je ne sais oas pour ton problême  
mais, qu'est ce qui t'empeche de relancer le download quand tu vois que ca plante ?
c'est un peu bourrin de mettre tout le fichier en mémoire (ton tableau de byte), tu peux pas plutot copier directement sur le disque ?

n°879005
fredatisi
Posté le 21-10-2004 à 15:10:55  profilanswer
 

Le timeout necessaire pour indiquer que le download à planté est trop long. L'application se fige tant qu'on ne l'obient pas. Je pourrais relancer le download, s'il echoue, mais du moment ou la connection echoue une fois, elle echouera pour toute la durée de la session.  
Pour le timeout, j'ai trouvé des solutions à base de thread qui limite ce timeout. Je suis tout à fait d'accord pour la copie sur le disque, je mettrais cela en place dès que le bug de connection sera résolu.
 :(

n°911066
fredatisi
Posté le 30-11-2004 à 10:41:47  profilanswer
 

Lorsque j'ai posté mon message, je n'ai pas indiqué que la jvm utilisée est celle de MS (j'y peux rien, c'est le client qui impose ça). En passant par le jdk 1.4.x, le problème ne se pose plus.  
 

n°911250
LeMicky
Posté le 30-11-2004 à 14:44:03  profilanswer
 

Question bête et pas tout à fait dans le sujet, mais normalement une applet ne peut pas écrire sur le disque local du client... ton putLocalFile, il fait comment?
(bon, je ne suis pas un spécialiste des droits des applets, je crois savoir qu'y a un système de signature  d'applet qui fait qu'alors elles ont plus de droits)

n°911276
fredatisi
Posté le 30-11-2004 à 15:11:14  profilanswer
 

l'applet est en effet signée. Pour la version jvm MS, on utilisait les classes com.ms.security.  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  communication servlet applet

 

Sujets relatifs
c'est quoi un SERVLET ?Gnome2 - Applet pour le panel.
[recherche] Editeur RTF en applet java (online)Applet et getHeight
Applet et contextePb de popup contenant un form et de communication av sa fenetre parent
[Java - Servlet] Methode Init() non executee[NooB] J'arrive pas a recompiler un applet Java !
communication servlet/appletCommunication d'une exception entre une servlet et une applet
Plus de sujets relatifs à : communication servlet applet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR