Instalacion de JBOSS 7.0 con Eclipse Parte 3 (Maven + hibernate + JPA+ Spring )

Ahora tenemos configurado el jboss para trabajar con conexiones jta de oracle, ahora creare un proyecto Maven, la gracia de trabajar con maven es agregar las dependencias y librerias de forma semi automatica editando un archivo pom.xml este archivo tiene una estructura que definiendo unos arquetipos maven es capaz de obtener de sus repositorios todas las dependencias de librerias necesaria para formar un proyecto java para utilizando varias tecnologias.

La diferencia de una aplicacion J2EE estandar es que no utiliza Ant para construir el classpath y poder compliar las clases java, por lo que en algunos estandares o empresas no esta bien aceptado este metodo, por lo que eh tenido problemas para armar aplicaciones con Maven, lo cual tuve que volver a armar un proyecto web dinamico y agregando manualmente todos los jar al proyecto.


En la imagen siguiente agregaremos el nombre base de los artefactos a construir:


La estructura inicial del archivo pom.xml sera:

  4.0.0
  Ejemplo
  Ejemplo
  0.0.1-SNAPSHOT
  Ejemplo
  Ejemplo


Agregaremos los tag properties que se utlizan para agregar variables comunes para todos los artefactos que agregaremos:

  4.0.0
  Ejemplo
  Ejemplo
  0.0.1-SNAPSHOT
  Ejemplo
  Ejemplo
   
  
  
  UTF-8
  
  1.0.0.Final
  
  
  4.2.2.Final
  3.0.5.RELEASE
 

Como se ve estamos agregando al repositorio las versiones de Spring y richfaces que utilizaremos al hacer referencia al tag "version" se llamara al properties que contiene este valor. Ahora empezaremos agregar dependencias al archivo:

  
   
   
    org.jboss.bom
    jboss-javaee-6.0-with-tools
    ${javaee6.with.tools.version}
    pom
    import
   
   
   
    org.richfaces
    richfaces-bom
    ${org.richfaces.bom.version}
    pom
    import
   
  
 
Ahora agregaremos las siguiente dependencias: hibernate, junit, spring core, spring data, spring security, etc.
 


  
  
   javax.enterprise
   cdi-api
   provided
  

  
  
   org.jboss.spec.javax.annotation
   jboss-annotations-api_1.1_spec
   provided
  

  
  
   org.jboss.spec.javax.ws.rs
   jboss-jaxrs-api_1.1_spec
   provided
  

  
  
   org.hibernate.javax.persistence
   hibernate-jpa-2.0-api
   provided
  

  
  
   org.jboss.spec.javax.ejb
   jboss-ejb-api_3.1_spec
   provided
  

  
  
  
  
   org.hibernate
   hibernate-validator
   4.2.0.Final
   provided
   
    
     org.slf4j
     slf4j-api
    
   
  

  
  
   org.jboss.spec.javax.faces
   jboss-jsf-api_2.1_spec
   provided
  

  
  
   org.jboss.spec.javax.servlet
   jboss-servlet-api_3.0_spec
   provided
  

  
  
   org.richfaces.core
   richfaces-core-impl
   
    
     guava
     com.google.guava
    
   
  
  
  
   org.richfaces.ui
   richfaces-components-ui
  

  
  
   org.atmosphere
   atmosphere-runtime
   
    
     org.slf4j
     slf4j-api
    
   
  

  

  
  
   org.hibernate
   hibernate-jpamodelgen
   1.2.0.Final
   provided
  

  
  
   org.ocpsoft.rewrite
   rewrite-servlet
  

  
  
   org.ocpsoft.rewrite
   rewrite-integration-cdi
  

  
  
   junit
   junit
   test
  

  
  
  
   org.jboss.arquillian.junit
   arquillian-junit-container
   test
  

  
   org.jboss.arquillian.protocol
   arquillian-protocol-servlet
   test
  

  
   org.springframework
   spring-core
   ${org.springframework.version}
  

  
   org.springframework
   spring-orm
   ${org.springframework.version}
  

  
   org.springframework
   spring-web
   ${org.springframework.version}
  

  
   org.springframework
   spring-expression
   ${org.springframework.version}
  

  
   org.springframework.security
   spring-security-core
   3.1.2.RELEASE
  

  
   org.springframework.security
   spring-security-web
   3.1.2.RELEASE
  

  
   org.springframework.security
   spring-security-config
   3.1.2.RELEASE
  

  
   org.springframework.security
   spring-security-ldap
   3.1.2.RELEASE
  

  
   org.springframework.ldap
   spring-ldap-core
   1.3.1.RELEASE
  

  
   org.springframework.ldap
   spring-ldap-core-tiger
   1.3.1.RELEASE
  

  
   org.springframework.ldap
   spring-ldap-odm
   1.3.1.RELEASE
  

  
   org.springframework.ldap
   spring-ldap-ldif-core
   1.3.1.RELEASE
  

  
   org.springframework.ldap
   spring-ldap-ldif-batch
   1.3.1.RELEASE
  

 

Ahora agregaremos el BUILD eb este iran el compilador de maven y la ruta del JBOSS HOME:
 
  
  ${project.artifactId}
  
   
   
    maven-compiler-plugin
    2.3.2
    
     1.6
     1.6
    
   
   
    maven-war-plugin
    2.1.1
    
     
     false
     
      
       com.google.guava,org.slf4j
      
     
    
   
   
   
   
    org.jboss.as.plugins
    jboss-as-maven-plugin
    7.1.1.Final
   
   
   
    org.codehaus.mojo
    jboss-maven-plugin
    1.5.0
    
     
     C:\JBOSS\jboss-as-7.0.1.Final
     
     default
    
   
  

 
 
  
   
   
   default
   
    true
   
   
    
     
      maven-surefire-plugin
      2.10
      
       true
      
     
    
   
  

  
   
   
   
   arq-jbossas-managed
   
    
     org.jboss.as
     jboss-as-arquillian-container-managed
     test
    
   
  

  
   
   
   arq-jbossas-remote
   
    
     org.jboss.as
     jboss-as-arquillian-container-remote
     test
    
   
  

  
   
   
   
   
   openshift
   
    
     
      maven-war-plugin
      
       deployments
       ROOT
      
     
    
   
  

 

Ahora actualizaremos la configuracion de maven inicial de la siguiente forma:

Ahora revisaremos el buildpath del proyecto maven y deberias aparecer todas las librerias configuradas anteriormente:



Ahora crearemos la siguiente estructura de directorios:











 

Instalacion de JBOSS 7.0 con Eclipse Parte 2 (JTA BD Oracle)

Antes de comenzar la guia repasare la estrucutrua del servidor, lo que queremos hacer es agregar un nuevo modulos al Jboss que se capaz de comunicarnos con una Base de datos Oracle 11G. El servidor cuenta con varios modulos ya integrados como x ej , hibernate , richfaces, etc.
Estos modulos forman parte de una estructura de directorios y librerias que vienen alojados en el servidor con un archivo de configuracion "module.xml" que describe de donde tiene que obtener las librerias para cargar el modulo en el servidor.




Ahora un ejemplo del modulo de hibernate seria el siguiente:

El modulo primero esta unicado en:

C:\JBOSS\jboss-as-7.0.1.Final\modules\org\hibernate\main

Si queremos agregar un nuevo modulo debemos agregarlo en un classpath definido en "modules".

Un el archivo de configuracion del modulo tiene este contenido:

    
        
        
        
        
        
    

    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    



Cabe destacar que el jboss viene preparado para soportar hibernate por lo que si queremos usarlo solo debemos crear el JNDI en la consola de admisntracion o directamente en el archivo standalone.xml.

Ahora procederemos a crear un modulo para conectarnos a una BD Oracle 11G:

Primero crear la sigueinte ruta dentro del jboss:

C:\JBOSS\jboss-as-7.0.1.Final\modules\com\oracle\main

en ella copiar el jar del ODBC :

El archivo .index se crea cuando se carga el modulo con el jboss al primer reinicio.
El archivo Module.xml tiene este contenido:


 
    
        
    
    
        
        
    



Ahora configuraremos el driver con una conexion JTA en el servidor jboss, para ello debemos editar el archivo standalone.xml: Dentro del TAG "data-sources" agregaremos lo siguiente:
                    
                    jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=off)(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)(SERVER=DEDICATED)))
                    ojdbc6.jar
                    
                        3
                        5
                    
                    
                        allware
                        allware
                    
                    
                        5000
                        5
                    
                
                
            
              
     
                    oracle.jdbc.xa.client.OracleXADataSource
     
  
                


Ahora tenemos configurado la conexion JTA, guardamos los cambios, reiniciamos el jboss y verificamos en la consola de administracion:






Instalacion de JBOSS 7.0 con Eclipse Parte 1

En realidad es la: Spring Tool Suite Version: 3.3.0.RELEASE Build Id: 201307092139 pasos a seguir:

En el eclipse marketplace buscar y instalar la herramienta JBOSS TOOLS que trae la suit completa de administracion del servidor de aplicaciones de redhat, ahora cabe destacar que deben elegir bien la version de eclipse que tiene instalada.



Luego de instalarla ir a: el menu windows -> preferencias:


En la pestaña runtime environments , elegimos un nuevo servidor:


elegir el servidor Jboss 7.0:


Descargar el jboss:



Ahora cabe destacar que la version certificada para Java EE6 es la 6 Final. Desde la version 7.X no estan certificadas por lo que no respeta el standart, ya que estas traen muchas librerias incluidas en jaboss que no forman parte del standart de J2EE6.



Despues de descargar aparece en la lista de servidores :


Ahora como accedo a la consola de administracion?



Ahora todas estas configuracion son editables via consola de administracion, (que a decir verdad es bien rustica en comparacion con la de WEBLOGIC solucion privativa de Oracle), esta condiguracion esta disponible en un archivo de configuracion .XML en mi caso ubicado en:

 C:\JBOSS\jboss-as-7.0.1.Final\standalone\configuration

Ahora una muestra del archivo XML:




    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
        
            
                
                    
                
            
            
                
                    
                
            
        
        
            
                
            
            
                
            
        
    

    
        
            
                
                
                    
                
            
            
                
                    
                
                
                
                
            
            
                
            
   
   
   
            
                
            
            
                
            
            
                
            
            
                
            
            
                
                
                    
                    
                
            
        
        
        
            
     
                
                    jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=off)(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)(SERVER=DEDICATED)))
                    ojdbc6.jar
                    
                        3
                        5
                    
                    
                        allware
                        allware
                    
                    
                        5000
                        5
                    
                
                
            
              
     
                    oracle.jdbc.xa.client.OracleXADataSource
     
  
                
            
        
        
            
        
  

        
  
        
            
                
                    
                
                
                
            
            
                
                    
                    
                
            
            
                
                
            
            
                
            
            
            
                
            
            
            
                
                    
                    
                
            
        
        
            
                
                    
                    
                    
                
                
                    
                    
                    
                
                
                    
                    
                
            
        
        
        
            
            
            
                
                    
                    
                    
                    
                
                
                    
                    
                    
                    
                
            
            
        
        
        
            
            
        
        
            
        
        
        
        
            
                
                    1
                
            
            
                
                
                
                
                
                
            
        
        
        
            
        
        
        
        
            
                
                    
                        
                            
                        
                        
                            
                            
                            
                            
                        
                    
                
                
                    
                        
                    
                
                
                    
                        
                    
                
            
        
        
        
            
                
                    
                
            
            
            
        
        
            
            
                
                
            
        
        
            true
            ${jboss.bind.address:127.0.0.1}
            
            
                
                    
                
            
        
        
    

    
        
            
        
        
            
        
        
            
        
    

    
        
        
        
        
        
        
        
        
        
        
        
            
        
    







Ahora que se tiene instalador como se puede configurar una conexion JTA con Oracle o Sql server?, utilizar hibernate, Spring , Maven, etc en el proximo post Parte 2.








Tratamiento de Señales en C

Unix Signals

SIGHUP 1 Exit Hangup
SIGINT 2 Exit Interrupt
SIGQUIT 3 Core Quit
SIGILL 4 Core Illegal Instruction
SIGTRAP 5 Core Trace/Breakpoint Trap
SIGABRT 6 Core Abort
SIGEMT 7 Core Emulation Trap
SIGFPE 8 Core Arithmetic Exception
SIGKILL 9 Exit Killed
SIGBUS 10 Core Bus Error
SIGSEGV 11 Core Segmentation Fault
SIGSYS 12 Core Bad System Call
SIGPIPE 13 Exit Broken Pipe
SIGALRM 14 Exit Alarm Clock
SIGTERM 15 Exit Terminated
SIGUSR1 16 Exit User Signal 1
SIGUSR2 17 Exit User Signal 2
SIGCHLD 18 Ignore Child Status
SIGPWR 19 Ignore Power Fail/Restart
SIGWINCH 20 Ignore Window Size Change
SIGURG 21 Ignore Urgent Socket Condition
SIGPOLL 22 Ignore Socket I/O Possible
SIGSTOP 23 Stop Stopped (signal)
SIGTSTP 24 Stop Stopped (user)
SIGCONT 25 Ignore Continued
SIGTTIN 26 Stop Stopped (tty input)
SIGTTOU 27 Stop Stopped (tty output)
SIGVTALRM 28 Exit Virtual Timer Expired
SIGPROF 29 Exit Profiling Timer Expired
SIGXCPU 30 Core CPU time limit exceeded
SIGXFSZ 31 Core File size limit exceeded
SIGWAITING 32 Ignore All LWPs blocked
SIGLWP 33 Ignore Virtual Interprocessor Interrupt for Threads Library
SIGAIO 34 Ignore Asynchronous I/O



Importante es identificar el tipo de señal a programar, aveces no son las mismas que Linux, si la excepcion no esta programada, da una salida por defecto, ej:

Si la rutina no esta programa este proceso da un core al finalizar el proceso. Ej señal tratamiento de señales.



Ej en codigo C:
// envio de señal kill -31 PID
 act.sa_handler = apps_parametros;
 sigemptyset(&act.sa_mask);
 act.sa_flags = 0;
 sigaction(SIGXFSZ, &act, &oact);


Ahora la funcion que captura la señal y realiza la accion al caputar la señal 31 es:

/*funcion que cambia el valor de la configuracion de parametros adicionales*/
void apps_parametros(int v)
{
  int cola_WRITE;
  char temp[256];
  int f=0;
 //struct sigaction act, oact;
 //act.sa_handler = SIG_IGN;
 //sigemptyset(&act.sa_mask);
 //act.sa_flags = 0;
 //sigaction(SIGXFSZ, &act, &oact);
 if (transaccion == 1) {
  interpretaREQ(texto_resp);
  sprintf(temp, "%s", mensajeOUT);
  cola_WRITE = creacola(COLA_ESCRITURA);
  if (strcmp(InMsg.szTipoIPC, "IPC_Input") != 0)
   insertacola(cola_WRITE, temp, tipo);
 }
 
 
  if(strcmp(DatosAdicionales,"off")==0 && f==0){
  //agregar el cambio del FLAG al LOG
  syslog(LOG_DEBUG,"Cambio el valor de DATOS_ADICIONALES=ON.");
   strcpy(DatosAdicionales,"on");
   f=1;
  }else if(strcmp(DatosAdicionales,"on")==0 && f==0){
  //agregar el cambio del FLAG al LOG
  syslog(LOG_DEBUG,"Cambio el valor de DATOS_ADICIONALES=OFF.");
   strcpy(DatosAdicionales,"off");
   f=1;
  }
  
}




Señales Estándar
       Linux soporta las señales  estándar  listadas  a  continuación.  Muchos
       números  de  señales dependen de la arquitectura, tal como se indica en
       la columna "Valor".  (Donde aparezcan tres valores, el primero de ellos
       es  válido  normalmente para alpha y sparc, el segundo para i386, ppc y
       sh, y el último para mips.  Un - indica que una señal no está  presente
       en la arquitectura correspondiente.)

       Las  entradas  en la columna "Acción" de la tabla especifican la acción
       por defecto para la señal de la siguiente manera:

       Term   La acción por defecto es terminar el proceso.

       Ign    La acción por defecto es ignorar la señal.

       Core   La acción por defecto es  terminar  el  proceso  y  realizar  un
              volcado de memoria.

       Stop   La acción por defecto es detener el proceso.

       En  primer lugar se listan las señales descritas en el estándar POSIX.1
       original.

       Señal      Valor     Acción   Comentario
       ----------------------------------------------------------------------
       SIGHUP        1       Term    Cuelgue detectado en la terminal de
                                     control o muerte del proceso de control
       SIGINT        2       Term    Interrupción procedente del teclado
       SIGQUIT       3       Core    Terminación procedente del teclado
       SIGILL        4       Core    Instrucción ilegal
       SIGABRT       6       Core    Señal de aborto procedente de abort(3)
       SIGFPE        8       Core    Excepción de coma flotante
       SIGKILL       9       Term    Señal de matar
       SIGSEGV      11       Core    Referencia inválida a memoria
       SIGPIPE      13       Term    Tubería rota: escritura sin lectores
       SIGALRM      14       Term    Señal de alarma de alarm(2)
       SIGTERM      15       Term    Señal de terminación
       SIGUSR1   30,10,16    Term    Señal definida por usuario 1
       SIGUSR2   31,12,17    Term    Señal definida por usuario 2
       SIGCHLD   20,17,18    Ign     Proceso hijo terminado o parado
       SIGCONT   19,18,25            Continuar si estaba parado
       SIGSTOP   17,19,23    Stop    Parar proceso
       SIGTSTP   18,20,24    Stop    Parada escrita en la tty
       SIGTTIN   21,21,26    Stop    E. de la tty para un proc. de fondo
       SIGTTOU   22,22,27    Stop    S. a la tty para un proc. de fondo

       Las señales SIGKILL y SIGSTOP no pueden ser  capturadas,  bloqueadas  o
       ignoradas.

       A  continuación  se  listan  las señales que no aparecen en el estándar
       POSIX.1 pero que son descritas en SUSv2 y SUSv3 / POSIX 1003.1-2001.

       Señal        Valor     Acción   Comentario
       -------------------------------------------------------------------------
       SIGBUS      10,7,10     Core    Error de bus (acceso a memoria inválido)
       SIGPOLL                 Term    Evento que se puede consultar (Sys V).
                                       Sinónimo de SIGIO
       SIGPROF     27,27,29     A      Ha expirado el reloj de perfilado
                                       (profiling)
       SIGSYS      12,-,12      C      Argumento de rutina inválido (SVID)
       SIGTRAP        5        Core    Trampa de traza/punto de ruptura
       SIGURG      16,23,21     B      Condición urgente en conector (4.2 BSD)
       SIGVTALRM   26,26,28     A      Alarma virtual (4.2 BSD)
       SIGXCPU     24,24,30     C      Límite de tiempo de CPU excedido
                                       (4.2 BSD)
       SIGXFSZ     25,25,31     C      Límite de tamaño de fichero excedido
                                       (4.2 BSD)

       En las versiones de Linux  anteriores  a  la  2.2  (incluida  ésta)  el
       comportamiento  por  defecto para SIGSYS, SIGXCPU, SIGXFSZ, y (en otras
       arquitecturas distintas a SPARC y MIPS) SIGBUS era terminar el  proceso
       (sin  realizar  un volcado de memoria).  (En otros Unix’s la acción por
       defecto para SIGXCPU y SIGXFSZ es terminar el proceso sin  realizar  un
       volcado  de  memoria.)   Linux  2.4  cumple los requisitos del estándar
       POSIX 1003.1-2001 con respecto a estas señales, terminando  el  proceso
       con un volcado de memoria.

       A continuación otras señales.

       Señal          Valor      Acción   Comentario
       ------------------------------------------------------------------------------------
       SIGIOT           6         Core    Trampa IOT. Un sinónimo de SIGABRT
       SIGEMT      7,-,7  Term
       SIGSTKFLT     -,16,-       Term    Fallo de la pila en el coprocesador (no usada)
       SIGIO        23,29,22      Term    E/S permitida ya (4.2 BSD)
       SIGCLD        -,-,18       Ign     Un sinónimo de SIGCHLD
       SIGPWR       29,30,19      Term    Fallo de corriente eléctrica (System V)
       SIGINFO       29,-,-               Un sinónimo para SIGPWR
       SIGLOST        -,-,-       Term    Bloqueo de fichero perdido.
       SIGWINCH     28,28,20      Ign     Señal de reescalado de la ventana (4.3 BSD, Sun)
       SIGUNUSED     -,31,-       Term    Señal no usada.

       (La  señal 29 es SIGINFO / SIGPWR en la arquitectura alpha pero SIGLOST
       en sparc.)

       La señal SIGEMT no está especificada en el estándar POSIX  1003.1-2001,
       pero   sin   embargo   aparece  en  la  mayoría  de  Unix’s,  donde  su
       comportamiento por defecto es habitualmente  terminar  el  proceso  sin
       realizar un volcado de memoria.

       La  señal  SIGPWR  (que  no  está  especificada  en  el  estándar POSIX
       1003.1-2001) es ignorada habitualmente por defecto en  aquellos  Unix’s
       donde aparece.

       La  señal  SIGIO  (que  no  está  especificada  en  el  estándar  POSIX
       1003.1-2001) es ignorada por defecto en muchos Unix’s.

BUG UBUNTU 13.04 UPGRADE GNOME3.0

Este error da al actualizaar Ubuntu instalando la ultima version de Gnome Mate 1.6, estas librerias son dependencias de GTK3.0 por lo que no dejan instalar aplicaciones con este requisito y tampoco hacer upgrade.
sudo apt-get -f install
[sudo] password for lucho: 
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Corrigiendo dependencias... Listo
Se instalarán los siguientes paquetes extras:
  libwayland-client0 libwayland-cursor0
Se instalarán los siguientes paquetes NUEVOS:
  libwayland-client0 libwayland-cursor0
0 actualizados, 2 se instalarán, 0 para eliminar y 2 no actualizados.
31 no instalados del todo o eliminados.
Se necesita descargar 0 B/36,7 kB de archivos.
Se utilizarán 155 kB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? s
(Leyendo la base de datos ... 272362 ficheros o directorios instalados actualmente.)
Desempaquetando libwayland-client0:amd64 (de .../libwayland-client0_1.2.0-0ubuntu1~13.04~ricotz0_amd64.deb) ...
dpkg: error al procesar /var/cache/apt/archives/libwayland-client0_1.2.0-0ubuntu1~13.04~ricotz0_amd64.deb (--unpack):
 intentando sobreescribir `/usr/lib/x86_64-linux-gnu/libwayland-client.so.0.1.0', que está también en el paquete libwayland0:amd64 1.0.5-0ubuntu1
Desempaquetando libwayland-cursor0:amd64 (de .../libwayland-cursor0_1.2.0-0ubuntu1~13.04~ricotz0_amd64.deb) ...
dpkg: error al procesar /var/cache/apt/archives/libwayland-cursor0_1.2.0-0ubuntu1~13.04~ricotz0_amd64.deb (--unpack):
 intentando sobreescribir `/usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0.0.0', que está también en el paquete libwayland0:amd64 1.0.5-0ubuntu1
Se encontraron errores al procesar:
 /var/cache/apt/archives/libwayland-client0_1.2.0-0ubuntu1~13.04~ricotz0_amd64.deb
 /var/cache/apt/archives/libwayland-cursor0_1.2.0-0ubuntu1~13.04~ricotz0_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)


Solucion: Como el .deb lo deja en el cache del repositorio solo hay que forzar la instalacion.
sudo dpkg -i --force-overwrite /var/cache/apt/archives/libwayland-*

respuesta:
(Leyendo la base de datos ... 272362 ficheros o directorios instalados actualmente.)
Desempaquetando libwayland-client0:amd64 (de .../libwayland-client0_1.2.0-0ubuntu1~13.04~ricotz0_amd64.deb) ...
dpkg: aviso: sobreseyendo el problema porque está activa la opción --force:
 
 intentando sobreescribir `/usr/lib/x86_64-linux-gnu/libwayland-client.so.0.1.0', que está también en el paquete libwayland0:amd64 1.0.5-0ubuntu1
dpkg: aviso: sobreseyendo el problema porque está activa la opción --force:
 
 intentando sobreescribir `/usr/lib/x86_64-linux-gnu/libwayland-client.so.0', que está también en el paquete libwayland0:amd64 1.0.5-0ubuntu1
Desempaquetando libwayland-cursor0:amd64 (de .../libwayland-cursor0_1.2.0-0ubuntu1~13.04~ricotz0_amd64.deb) ...
dpkg: aviso: sobreseyendo el problema porque está activa la opción --force:
 
 intentando sobreescribir `/usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0.0.0', que está también en el paquete libwayland0:amd64 1.0.5-0ubuntu1
dpkg: aviso: sobreseyendo el problema porque está activa la opción --force:
 
 intentando sobreescribir `/usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0', que está también en el paquete libwayland0:amd64 1.0.5-0ubuntu1
Configurando libwayland-client0:amd64 (1.2.0-0ubuntu1~13.04~ricotz0) ...
Configurando libwayland-cursor0:amd64 (1.2.0-0ubuntu1~13.04~ricotz0) ...
Procesando disparadores para libc-bin ...
ldconfig deferred processing now taking place

How To getRoles in Spring Security

Hi i am building an application some kind of hr portal, here i need to login three types of users 'hr, employee and admin', i am planning to use spring security , i want these three to be logged in in a single loginpage Now the question is 1 - How to design a login form telling the user to select a user type(hr or emp or admin) 2 - When a user is logged in and control goes to a targeted controlled , how to identify which type of user has logged it (identify logged in user role basically) If any other best practice of getting three type of users logged in with a single login form and identify the login role ..plesae suggest Thanks
Example: JSF2.0+ Spring Security

import java.io.IOException;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.Size;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.savedrequest.HttpSessionRequestCache;
import org.springframework.security.web.savedrequest.SavedRequest;
import org.springframework.stereotype.Component;
import java.security.Principal;
import javax.security.auth.Subject;

import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.ArrayList;

@ManagedBean(name = "authenticationBean")
@RequestScoped
@Component
public class AuthenticationBean {
 public Principal principals ;
  public Set allPrincipals=null;
  public Subject subject=null;
  public ArrayList roles = new ArrayList();
  public String user = "";

 @Autowired
 @Qualifier("authenticationManager")
 protected AuthenticationManager authenticationManager;

 @Size(min = 1, message = "Username cannot be empty")
 private String username;

 @Size(min = 1, message = "Password cannot be empty")
 private String password;

 public AuthenticationBean() {

 }

 public void setUsername(String username) {
  this.username = username;
 }

 public String getUsername() {
  return username;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public String getPassword() {
  return password;
 }

 /**
  * @return
  * @throws IOException
  * @throws ServletException
  */
 public String login() throws IOException, ServletException {
  
  

  try {

   Authentication request = new UsernamePasswordAuthenticationToken(this.username, this.password);
 
   Collection authority = request.getAuthorities();
   
          for (GrantedAuthority granted : authority) {
           
           roles.add(granted.getAuthority());
           
                  
          }
          
          Authentication auth = SecurityContextHolder.getContext().getAuthentication();
          String name = auth.getName(); //get logged in username
          
   Authentication result = authenticationManager.authenticate(request);

   SecurityContextHolder.getContext().setAuthentication(result);
   
   ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
   
   HttpServletResponse responseHTTP = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
   
   HttpServletRequest requestHTTP = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();

   SavedRequest defaultSavedRequest = new HttpSessionRequestCache().getRequest(requestHTTP, responseHTTP);
   
   context.redirect(defaultSavedRequest.getRedirectUrl());

   FacesContext.getCurrentInstance().responseComplete();

   return null;

  } catch (AuthenticationException e) {

   FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage()));
   return null;
  }



 }

 public String logout() throws IOException {
  this.username = "";
  this.password = "";
  ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
  context.redirect(context.getRequestContextPath() + "/j_spring_security_logout");
  FacesContext.getCurrentInstance().responseComplete();
  return null;
 }

}

& LOGIN.xhtml

 

  

  
   

Problemas de activación WIFI6 en LG_OLED55CXPSA

  Mi experiencia con este TV  ah sido impecable hasta ahora, llevaba un uso normal y no tenia que usar la conexión por wifi ya que tengo una...