Estoy utilizando Netbeans para hacer un servlet. El problema lo tengo en que al crear la aplicación web, el propio Netbeans te crea una página "index.jsp" que es una página html.
Aunque añado el applet a dicha página, necesito crear un servlet que reciba datos (con un ObjectInputStream), y envíe una respuesta (con un ObjectOutputStream) para que el applet la muestre en uno de sus paneles. Lo he intentado de mil maneras posibles, y siempre me da el mismo error. "java.io.StreamCorruptedException: invalid stream header"
Lo que intuyo que pasa es que el stream de salida y el de entrada no se corresponden, pero no sé como arreglarlo. También pienso que puede ser que utiliza el jsp y el servlet, pero no sé cómo no utilizar el jsp, sino únicamente el servlet, que puede ser que por ahí venga el problema.
Bueno, para que entendais mejor os pongo los códigos.
Applet: Manda un entero al servidor, y luego recibe una lista como respuesta
Código:
Donde imprimirElementos muestra los elementos en un jTextArea (está probado que funciona).private void conectarServidor () { try { //Creacion del la URL URL pagina = this.getCodeBase(); String protocolo = pagina.getProtocol(); String servidor = pagina.getHost(); int puerto = pagina.getPort(); String servlet = "/ServletListas"; 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); try (ObjectOutputStream oos = new ObjectOutputStream (conexion.getOutputStream())) { int num = 10; oos.writeInt(num); oos.flush(); } try (ObjectInputStream ois = new ObjectInputStream(conexion.getInputStream())) { Lista l = (Lista) ois.readObject(); imprimirElementos(l.obtenerElementos()); } } catch (MalformedURLException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } }
Servlet: Recoge el número que le ha mandado el cliente, crea una lista con ese número de elementos y se la envía al cliente.
Código:
Bueno, creo que no me dejo nada. No sé si me habré explicado bien, pero agradecería una respuesta, porque ya no sé qué más hacer.protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ObjectInputStream ois = new ObjectInputStream(request.getInputStream()); int num = ois.readInt(); OutputStream a = (OutputStream) response.getOutputStream(); response.setContentType("application/x-java-serialized-object"); Lista lista = new Lista(num); try (ObjectOutputStream oos = new ObjectOutputStream(a)) { ois.writeObject(lista); } }
Un saludo.