Vous êtes sur la page 1sur 3

Parte del applet:

public ListasComponentesSeleccionables cargarListasComponentes( ) throws IOException, ClassNotFoundException { String serv = "/Desaladora/cargarListasComponentesApplet.do"; String host = Principal.documentBase.getHost( ); URL direccion = new URL( "http", host, 8080, serv ); // Creamos la conexion con el servidor. URLConnection connection = direccion.openConnection( ); connection.setDoInput( true ); // Permitimos datos de respuesta connection.setDoOutput( true ); // Vamos a enviar datos de salida connection.setUseCaches( false ); // Desactivamos cache por si realizamos varias comunicaciones /** * Ahora indicamos en la cabecera de la peticion POST que tipos de datos viajan. * Vamos a enviar un objeto al servidor asi que enviamos el nombre de su clase. * Para poder enviar objetos, estos tienen que ser serializables, es decir, * implementar la interfaz Serializable. */ connection.setRequestProperty( "Content-Type", "application/x-java-serialized-object" ); /*Enviamos la peticion al servidor. Para eso hay que meter el objeto en el flujo de salida de la conexion */ ObjectOutputStream output; output = new ObjectOutputStream( connection.getOutputStream( ) ); output.writeObject( new Boolean(true) ); output.flush( ); output.close( ); // En la siguiente linea es donde salta la excepcion ObjectInputStream input = new ObjectInputStream( connection.getInputStream( ) ); ListasComponentesSeleccionables response = new ListasComponentesSeleccionables( ); response = ( ListasComponentesSeleccionables ) input.readObject( ); return response; }

Parte del servlet:

public class CargarListasComponentesAppletAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException, Exception { InitialContext context = new InitialContext(); SensorManagerService sensor_service; ActuatorManagerService actuator_service; Globals.LOGGER_SECURITY.debug( "Entering ACTION 'CargarListasComponentesAppletAction'" ); // establecemos el formato de la respuesta response.setContentType("application/x-java-serializedobject"); try { // recuperamos el stream de entrada ObjectInputStream bufferentrada = new ObjectInputStream(request.getInputStream()); // leemos el objeto enviado Boolean peticionOK = (Boolean)bufferentrada.readObject(); // Configurarmos un Stream de Salida ObjectOutputStream buffersalida = new ObjectOutputStream(response.getOutputStream()); // construimos el objeto a retornar sensor_service = ( SensorManagerService ) context.lookup( "desaladora/SensorManagerServiceBean/local" ); ArrayList<AlarmConnectedSensorDTO> sensorList = sensor_service.findAllSensorsToAlarms(); actuator_service = ( ActuatorManagerService ) context.lookup( "desaladora/ActuatorManagerServiceBean/local" ); ArrayList<AlarmConnectedActuatorDTO> actuatorList = actuator_service.findAllActuatorsToAlarms(); // escribimos los datos buffersalida.writeObject( crearListasSeleccionables(sensorList, actuatorList) );

// y los enviamos buffersalida.flush(); } catch(Exception e) { System.out.println("Error en la trasmision de datos"); } return null; } private ListasComponentesSeleccionables crearListasSeleccionables(ArrayList<AlarmConnectedSensorDTO> sensorList, ArrayList<AlarmConnectedActuatorDTO> actuatorList) { Vector<Integer> vectorSensores = new Vector<Integer>(); Vector<Integer> vectorActuadores = new Vector<Integer>(); for(AlarmConnectedSensorDTO sensor : sensorList) { vectorSensores.add(sensor.getIdSensor( )); } for(AlarmConnectedActuatorDTO actuator : actuatorList) { vectorActuadores.add(actuator.getIdActuator( )); } ListasComponentesSeleccionables listasComponentesSeleccionables = new ListasComponentesSeleccionables(vectorSensores, vectorActuadores); return listasComponentesSeleccionables; } }

Vous aimerez peut-être aussi