GNT sans publicité, site mobile, fonctionnalitées exclusives...

Serialiser une Applet et d'en ecrire le Contenu sur le disque d' un serveur Web distant

Le
pcouas
Bonsoir,

Je tente de Serialiser une Applet et d'en ecrire le Contenu via le
disque d'un serveur Web distant.
Si mon applet le fait en local en tant qu'application cela fonctionne,
si je le fait avec la servlet, j'ai une erreur de Serialisation
Ou est mon erreur !!

Merci d'avance
Philippe


Message d'erreur
’^@^E{sr^@
java.io.NotSerializableException(Vx^@ç~F^V5^B^@^@xr^@^]java.io.Objec
tStreamExceptiondÃäk~M9ûß^B^@^@xr^@^Sjava.io.IOExceptionl~@sde%ð=
«^B^@^@xr^@^Sjav
a.lang.ExceptionÐý^_>^Z;^\Ä^B^@^@xr^@^Sjava.lang.ThrowableÕÆ5'9=
w¸Ë^C^@^CL^@^Ecau
set^@^ULjava/lang/Throwable;L^@^MdetailMessaget^@^RLjava/lang/String;[^@

stackTracet^@^^[Ljava/lang/StackTraceElement;xpq^@~^@^Ht^@^Yjava.io.ObjectI=
nputS
treamur^@^^[Ljava.lang.StackTraceElement;^BF*<<ý"9^B^@^@xp^@^@^@!sr^@^[ja=
va.lang
.StackTraceElementa Å~Z&6Ý~E^B^@^DI^@

lineNumberL^@^NdeclaringClassq^@~^@^FL^@^HfileNameq^@~^@^FL^@

methodNameq^@~^@^Fxpÿÿÿýt^@^Zjava.io.ObjectOutputStreamt^@^WObjectO=
utputStream.j
avat^@^LwriteObject0sq^@~^@^L^@^@^A3t^@^Zjava.io.ObjectOutputStreamt^@^WObj=
ectOu
tputStream.javat^@^KwriteObjectsq^@~^@^L^@^@^A8t^@^Xservletgraph.FileServle=
tt^@^
PFileServlet.javat^@^FdoPostsq^@~^@^L^@^@^Bøt^@^^javax.servlet.http.HttpS=
ervlett
^@^PHttpServlet.javat^@^Gservicesq^@~^@^L^@^@^CUt^@^^javax.servlet.http.Htt=
pServ
lett^@^PHttpServlet.javat^@^Gservicesq^@~^@^L^@^@^@÷t^@/org.apache.catali=
na.core
.ApplicationFilterChaint^@^[ApplicationFilterChain.javat^@^PinternalDoFilte=
rsq^@
~^@^L^@^@^@Át^@/org.apache.catalina.core.ApplicationFilterChaint^@^[Appli=
cationF
ilterChain.javat^@^HdoFiltersq^@~^@^L^@^@^A^@t^@-org.apache.catalina.core.S=
tanda
rdWrapperValvet^@^YStandardWrapperValve.javat^@^Finvokesq^@~^@^L^@^@^B~Ct^@=
Forg.
apache.catalina.core.StandardPipeline$StandardPipelineValveContextt^@^UStan=
dardP
ipeline.javat^@



Cote Applet

package applet8;
import java.applet.Applet;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Button;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.io.*;
import java.net.*;


public class Applet4 extends Applet
{
private Button button1 = new Button();

public Applet4()
{
}


/**
/**
* @param args
*/
public static void main(String[] args)
{
Applet4 applet = new Applet4();
Frame frame = new Frame();
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame.add(applet, BorderLayout.CENTER);
frame.setTitle("Applet Frame");
applet.init();
applet.start();
frame.setSize(300, 300);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
frame.setLocation((d.width - frameSize.width) / 2, (d.height -
frameSize.height) / 2);
frame.setVisible(true);
}

public void init()
{
this.setLayout(null);
button1.setLabel("button1");
button1.setBounds(new Rectangle(150, 65, 73, 23));
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
button1_actionPerformed(e);
}
});
this.add(button1, null);
}


private void button1_actionPerformed(ActionEvent e)
{
ObjectOutputStream out;
try
{
String m_URL=new
String("http://172.14.1.141/servlet/servletgraph.FileServlet");
String string4=m_URL;

if(string4.indexOf("?")<0)
string4 += "?";
else
string4 += "&";

string4+="debug=true&";
string4+="servletname=write&type=object&";
string4+="cfile=toto.txt";
URL u=new URL(string4);

HttpURLConnection urlc = (java.net.HttpURLConnection)
u.openConnection();
// Set the Post (true) or Get (false) method.
urlc.setDoOutput(true);
urlc.setDoInput(true);
urlc.setUseCaches(false);
urlc.setAllowUserInteraction(false);

urlc.setRequestProperty("Content-type",
"application/octet-stream");
// urlc.setRequestProperty("Content-Type", "java-internal/" +
this.getClass().getName());

out = new ObjectOutputStream(urlc.getOutputStream());
out.writeObject(this);

if (urlc.getResponseCode() != HttpURLConnection.HTTP_OK) {
System.out.println("Error");
// throw new Exception("Access error. ");
} else {
System.out.println("I have now access to the stream");
// blaha balaaha blaahahaha
}
out.flush();
out.close();

}
catch (IOException ioe) {
System.err.println(ioe);
ioe.printStackTrace();
}
}
}


Coté Servlet

package servletgraph


public class FileServlet extends HttpServlet
{


public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
ObjectInputStream in = new ObjectInputStream(req.getInputStream() );
FileOutputStream file = new
FileOutputStream(req.getRealPath("/")+czPath);
ObjectOutputStream out = new ObjectOutputStream(file);
out.writeObject(in);
out.flush();
out.close();
}
}
Lire les 7 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
pcouas
Le #207782
Bonsoir,

Je crois avoir compris mon erreur.
En fait le Jar coté serveur, ne connais pas les Package
java.awt.Applet.
Donc il n'arrive pas à Serialiser (Hypothèse à verifer)
pcouas
Le #207781
Bonsoir,

Mon pb est plus grave, J'arrive par le reseau à Serialiser une String,
mais pas une Applet toute simple.
Alors que sur le disque local, cela est bon ???

Cordialement
Ph Couas
ownowl
Le #207780
Bonsoir,

Mon pb est plus grave, J'arrive par le reseau à Serialiser une String,
mais pas une Applet toute simple.
Alors que sur le disque local, cela est bon ???

Cordialement
Ph Couas

String implemente Serializable, pas ton applet.


pourquoi ne pas passer le jar comme un objet en byte[] par exemple?

Olivier

pcouas
Le #207732
Peut tu préciser un peu ?
Merci

Philippe
pcouas
Le #207725
Bonjour

J'essaye de Lire le contenu depuis la Servlet en tant que ByteArray,
mais j'ai le message d'erreur suivant
java.io.StreamCorruptedException: invalid stream header

Pourtant je suis en resp.setContentType("application/octet-stream");
coté servlet

Cordialement
Philippe
Publicité
Suivre les réponses
Poster une réponse
Anonyme