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 :
- /**/
- public static String CONTENT_TYPE = "Content-type";
- public static String URL_ENCODED = "application/x-www-form-urlencoded";
- /**
- * récupère le launcher côté server et le recopie chez le client
- *
- */
- public void getAndSaveLauncher() {
- //throws IOException, MalformedURLException {
- try {
- log("On est rentré dans getAndSaveLauncher" );
- byte[] launcherAsByteArray;
- BufferedInputStream bufferedIn;
- // on prepare la connection
- URL appletUrl = this.getCodeBase();
- URL url =
- new URL(
- appletUrl.getProtocol(),
- appletUrl.getHost(),
- appletUrl.getPort(),
- FILE_SENDER_URL + URL_LAUNCHER);
- // on se connecte
- URLConnection uc = url.openConnection();
- uc.setDoOutput(true);
- uc.setDoInput(true);
- uc.setUseCaches(false);
- uc.setRequestProperty(CONTENT_TYPE, URL_ENCODED);
- log("La taille contentLength : " + uc.getContentLength());
- // on recupere le contenu de notre exe
- launcherAsByteArray = new byte[uc.getContentLength()];
- bufferedIn = new BufferedInputStream(uc.getInputStream(), 1024);
- bufferedIn.read(launcherAsByteArray);
- bufferedIn.close();
- // on l'ecrit sur le poste client
- putLocalFile(
- uc.getInputStream(),
- FILE_LAUNCHER,
- directoryPath);
- log("fin de getAndSaveLauncher" );
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
|
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?