Hola,
Estoy desarrollando una aplicación que está compuesta por un applet y un servlet.
El applet ya lo tengo codificado y probado, y (a excepción de la parte de comunicaciones) funcionando.
El applet tiene que ir recogiendo datos que le proporciona el cliente, y formando una lista y enviándolas por una conexión URL, y después recoge el resultado que va a ser un string.
El código que utiliza el applet para conectarse al servidor es:
Código:
private String conectarServidor () {
String respuesta = "";
try {
//Creacion del la URL
URL pagina = this.getCodeBase();
String protocolo = pagina.getProtocol();
String servidor = pagina.getHost();
int puerto = pagina.getPort();
String servlet = "/simulador";
URL direccion = new URL (protocolo,servidor,puerto,servlet);
//Apertura de la conexion
URLConnection conexion = direccion.openConnection();
conexion.setDoInput(true);
conexion.setDoOutput(true);
conexion.setUseCaches(false);
ObjectOutputStream oos = new ObjectOutputStream (conexion.getOutputStream());
oos.writeInt(numQubits);
lista_puertas.guardarLista(oos); //Método probado
oos.flush();
ObjectInputStream ois = new ObjectInputStream(conexion.getInputStream());
respuesta = (String) ois.readObject();
oos.close();
ois.close();
} catch (MalformedURLException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
return respuesta;
}
} //Fin del método conectarServidor
Por otra parte, el servlet tiene que recoger la lista que le ha enviado el applet, hacer una serie de cálculos y devolver el string resultado.
Código:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ObjectInputStream ois = new ObjectInputStream(request.getInputStream());
int numQubits = ois.readInt
lista_puertas.recuperarLista(ois); //Método probado
output.recuperarLista(ois); //Método probado
response.setContentType("application/x-java-serialized-object");
ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream());
oos.writeObject(this.ejecutarAlgoritmo()); //Método ejecutarAlgoritmo() probado, devuelve un string
ois.close();
oos.close();
}
El caso es que al una vez creado el .war y con la aplicación desplegada en el servidor (utilizo tomcat), al ejecutarla salta la siguiente excepción:
Código:
----------------------------------------------------
Detected from bootclasspath: C:\\PROGRA~2\\Java\\jre7\\lib\\deploy.jar
java.io.StreamCorruptedException: invalid stream header: 3C212D2D
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at cliente.PruebasApplet.conectarServidor(PruebasApplet.java:1427)
at cliente.PruebasApplet.boton_EjecutarActionPerformed(PruebasApplet.java:1387)
at cliente.PruebasApplet.access$1700(PruebasApplet.java:26)
at cliente.PruebasApplet$35.actionPerformed(PruebasApplet.java:817)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
Me he vuelto loca intentando solucionarlo yo sola pero no lo consigo, por lo que agradecería enormemente alguna ayudita.
Gracias y un saludo
Silvia.