Hola a todos, esta es mi primera vez que pido ayuda en este foro y espero que puedan ayudarme a la brevedad posible porque tengo gran urgencia...
Les explico: Estoy desarrollando un sistema servidor con soporte a multiples clientes en java. Hasta ahora apenas vy por el desarrollo del servidor y mi dificultad en cocreto es mantener los datos de logueo (o sessión) en memoria con los cambios que las clases hijas puedan hacer, es decir, especificamente tengo una super clase denominada "Servidor" y una que hereda de ella denominada "Personas". Colocare las secciones del código que mestran la dificultad:
Código
class Servidor { /* Declaración de variables */ private Escritorio escritorio; private Escritorio vstEscritorio; private Validador validacion; public Icono ico; public boolean estadoSesion, foco; //private String pantallaActiva; //Variables de Sesion public boolean autenticado; public int idSesionServidor; //public String ultimaSesionUsuarioServidor; //Constructores ........................................................... public Servidor(){ } vstEscritorio = new Escritorio(); mostrarVista(vstEscritorio); iniciarVariables(); escritorio.txtABitacora.setText( escritorio.txtABitacora.getText() + Bitacora.get( ">> Hola!, el servidor 'nombre del servidor' " + "está activo.\n>> Por ahora sus " + "servicios se encuentran apagados.", this.nombreUsuarioServidor ) ); if ( idSesionServidor != 0 ){ iniciarConectividad(); }else{ escritorio.txtABitacora.setText( escritorio.txtABitacora.getText() + Bitacora.get( ">> Se requiere Autenticación de Usuario", this.nombreUsuarioServidor ) ); autenticarUsuario(); System.out.println(this.nombreUsuarioServidor); // ---> AQUI NO MUESTRA EL NOMBRE DE USUARIO ACTUALIZADO. (E S T A E S L A D I F I C U L T A D ) if ( autenticado == true ) { escritorio.txtABitacora.setText( escritorio.txtABitacora.getText() + Bitacora.get( ">> Ya pueden iniciarse los servicios", this.nombreUsuarioServidor //--->OBVIAMENTE AQUI TAMPOCO MUESTRA EL DATO ACTUALIZADO ) ); } } } private void iniciarVariables(){ //Variables de sesion autenticado = false; idSesionServidor = 0; //Variable con el id de la sesion..... idUsuarioServidor = "svr"; privilegioUsuarioServidor = "boot"; nombreUsuarioServidor = "Servidor"; } private void autenticarUsuario() { CtrlPersonas vstLogin = new CtrlPersonas(); escritorio.txtABitacora.setText( escritorio.txtABitacora.getText() + Bitacora.get( ">> Abriendo el formulario de " + "Autenticación de Usuario", this.nombreUsuarioServidor ) ); vstLogin.mostrarVistaLogin(escritorio); } }
Este es el constructor y el metodo del problema de la clase Persona que extiende a Servidor
Código
//Constructor public CtrlPersonas(){ super(); // ---->> COLOCANDO ESTA LÍNEA O SIN ELLA IGUAL MENTE PEDO acceder A LAS VARIABLES... modPersonas = new ModeloPersonas(); } //Asi se modifican las variables, mismas que al intentar acceder al valor (que ahora deberia ser el colocado en este método) no lo mantiene y se obtiene es el valor original de la super clase this.idUsuarioServidor = resultadoUsuario.getString("rif_personas"); this.nombreUsuarioServidor = resultadoUsuario.getString("pnombre_personas") + " " + resultadoUsuario.getString("papellido_personas") ; this.privilegioUsuarioServidor = resultadoUsuario.getString("privilegio_personas"); this.fechaSesionServidor = Calendario.get("fecha", null); this.horaSesionServidor = Calendario.get("hora", null);
Reitero, leer las variables desde la clase personas si se ve el cambio registrado pero, al regresar a la clase Servidor no... y creo que ya deberia hacerlo puesto que la clase servidor se mantiene activa en todo momento, de tal forma que las variables estan en memoria susceptibles a las modificaciones...
Pido, con humildad, su ayuda con urgeeeeeeeeeeeencia... porque de los expertos se aprende a serlo también... gracias de ante mano...