[Error] org.hibernate.HibernateException: Wrong column type in Found: COLUM bit, expected: boolean

 Its defined as a 'BIT(1)' in the DB as well. Also worked with TINYINT. This is the easiest solution I've found since the change is super-minor and no need to touch the DB. El error se produce por que MYSQL interpreta como BOOLEAN como TINYINT por lo que debemos cambiar un poco la notación de la columna:

package cl.sernapesca.siep.entities;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;


@Entity
@Table(name = "tb_personal")
public class Persona implements Serializable{
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(name="Cd_Usuario", unique=true, nullable=false)
 private Integer codigo;
 
 @Column(name="Nm_Usuario", nullable=false, length=45)
 private String nombre;
 
 @Column(name="Nr_Rut", nullable=false)
 private Integer rut;
 
 @Column(name="Nr_Dv", nullable=false)
 private String dv;
 
 //ERROR @Column(name="Lg_EsUsuario", nullable=true)
 @Column(name = "Lg_EsUsuario", columnDefinition = "BIT", length = 1)
 private Boolean usuario;
 
 @ManyToOne(fetch = FetchType.EAGER)
 @JoinColumn(name="Cd_Region", referencedColumnName="Cd_OfiRegion")
 private Oficina oficina;
 
 public Integer getCodigo() {
  return codigo;
 }
 
 public void setCodigo(Integer codigo) {
  this.codigo = codigo;
 }
 
 public String getNombre() {
  return nombre;
 }
 
 public void setNombre(String nombre) {
  this.nombre = nombre;
 }
 
 public Integer getRut() {
  return rut;
 }
 
 public void setRut(Integer rut) {
  this.rut = rut;
 }
 
 public String getDv() {
  return dv;
 }
 
 public void setDv(String dv) {
  this.dv = dv;
 }
 
 public Boolean getUsuario() {
  return usuario;
 }
 
 public void setUsuario(Boolean usuario) {
  this.usuario = usuario;
 }

 public Oficina getOficina() {
  return oficina;
 }

 public void setOficina(Oficina oficina) {
  this.oficina = oficina;
 }


}

o implementando un nuevo método que maneje el Dialecto del MYSQL5.


public class Mysql5BitBooleanDialect extends MySQL5Dialect{     
    public Mysql5BitBooleanDialect() {
        super();
        registerColumnType( java.sql.Types.BOOLEAN, "bit" );        
    }       
}


You can then use it by setting the dialect in your hibernate properties: hibernate.dialect=your.package.Mysql5BitBooleanDialect Using: MySQL Server 5.5.13, Hibernate 4.1.1, JDK 1.6

Ejemplo Sencillo de Spring MVC+AngularJS+BOOTSTRAP+JSON data

El siguiente proyecto es un demos de como funciona una aplicación web con AngularJS, la gracia de este framework es disminuir las idas al servidor para mostrar contenido.

AngularJS es un framework de JavaScript de código abierto, mantenido por Google, que ayuda con la gestión de lo que se conoce como aplicaciones de una sola página. Su objetivo es aumentar las aplicaciones basadas en navegador con capacidad de Modelo Vista Controlador (MVC), en un esfuerzo para hacer que el desarrollo y las pruebas sean más fáciles.

El tradicional ciclo de response seria:

En cambio el ciclo con AngularJs seria:



Ahora la configuración del proyecto:



 Controlador de spring mvc:





import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;



/**
 *
 * @author luxo
 */
@Controller
public class DemoAngular  {
    
    public DemoAngular() {

    }
    
    @RequestMapping(value = "/demoangular", method = RequestMethod.GET)
    protected ModelAndView demoAngularRequest(HttpServletRequest request,
            HttpServletResponse response, Model model) throws Exception {
    ModelAndView m = new ModelAndView("/jsp/demoAngular");
    return m;
    }
   
}


configuración del despachador (dispatcher-servlet.xml):





    
        
        
        
    
    
    
     
    
        
            
            
                
                
                
                
                
                   
        
    






archivo web.xml



    demoSpringAngular
    
        dispatcher
        org.springframework.web.servlet.DispatcherServlet
        1
    
    
        ResponseOverrideFilter
        *.htm
    
    
        ResponseOverrideFilter
        *.jsp
    
    
        dispatcher
        *.htm
    
    
        contextConfigLocation
        /WEB-INF/dispatcher-servlet.xml
    
    
        
            30
        
    
    
        redirect.jsp
    



Pagina web jsp:





    
        
        
        
        
        
        
        
        
    

    
        



edad  id  Name  snippet 
{{i.age}} {{i.id}} {{i.name}} {{i.snippet}}

Bajar proyecto en netbeans

Ejemplo Sencillo de JSF 2.0 + RichFaces con Netbeans y Maven + Weblogic12C

Maven configuracion:


    4.0.0

    com.luxo
    EjemploJSF
    1.0-SNAPSHOT
    war

    EjemploJSF

    
        ${project.build.directory}/endorsed
        UTF-8
    

    
        
            org.richfaces.core
            richfaces-core-impl
            4.3.3.Final
        
        
            org.richfaces.ui
            richfaces-components-ui
            4.3.3.Final
        
        
            javax
            javaee-web-api
            6.0
            provided
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2
                
                    1.6
                    1.6
                    
                        ${endorsed.dir}
                    
                
            
            
                org.apache.maven.plugins
                maven-war-plugin
                2.1.1
                
                    false
                
            
            
                org.apache.maven.plugins
                maven-dependency-plugin
                2.1
                
                    
                        validate
                        
                            copy
                        
                        
                            ${endorsed.dir}
                            true
                            
                                
                                    javax
                                    javaee-endorsed-api
                                    6.0
                                    jar
                                
                            
                        
                    
                
            
        
    
    
        
            https://repository.jboss.org/nexus/content/groups/public-jboss/
            RichFaces-maven-lib
            default
            Repository for library RichFaces-maven-lib
        
    
 
 


El ejemplo esta hecho en Netbeans y utilizando el servidor de aplicaciones Weblogic este servidor ya trae soporte para JSF en su version 12C, en la configuracion del proyecto utilizamos la libreria  que viene en el servidor:  

 Ahora el código del controlador del BEAN:como se esta usando JSF 2.0 no es necesario declaral el bean en el face-config.xml ni crearlo siquiera, ya que la referencia se maneja con nocaciones, solo debemos decirle en el web.xml que lea todos los BEAN con extencion .faces .


/
*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.luxo.ejemplojsf.common;

/**
 *
 * @author luxo
 */
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.io.Serializable;
 
@ManagedBean
@SessionScoped
public class HelloBean implements Serializable {
 
 private static final long serialVersionUID = 1L;
 
 private String name;
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
}


Variables de Session:




Paginas hello.xhtml:


 
    
        JSF 2.0 Hello World
    
    
     

JSF 2.0 Hello World Example - hello.xhtml






pagina welcome.xhtml:



 
    
     JSF 2.0 Hello World
    
    
        
     

JSF 2.0 Hello World Example - welcome.xhtml

Welcome #{helloBean.name}




Ejemplo de salida:





Viendo un poco los servelet que se declaran como se uso Rich-faces este también registra un servelet propio, además de los auto registrados con JSF 2.0:



Viendo el web.xml:



    EjemploSencilloJSF
    
 
  javax.faces.PROJECT_STAGE
  Development
 
    
        Faces Servlet
        javax.faces.webapp.FacesServlet
        1
    
    
        Faces Servlet
        /faces/*
    
    
  Faces Servlet
  *.jsf
 
 
  Faces Servlet
  *.faces
 
 
  Faces Servlet
  *.xhtml
 
    
        
            30
        
    
    
        faces/hello.xhtml
    



Bajar proyecto en netbeans:BAJAR

Struts 2 ejemplo sencillo con MAVEN, JAVA 1.7

Struts es una herramienta de soporte para el desarrollo de aplicaciones Web bajo el patrón MVC bajo la plataforma Java EE (Java Enterprise Edition). Struts se desarrollaba como parte del proyecto Jakarta de la Apache Software Foundation, pero actualmente es un proyecto conocido como Apache Struts.
Struts permite reducir el tiempo de desarrollo. Su carácter de "software libre" y su compatibilidad con todas las plataformas en las que Java Entreprise esté disponible lo convierten en una herramienta altamente disponible.
El 5 de marzo de 2013, Struts 1 llegó al final de su vida y dejó de estar oficialmente soportado.1
Struts 2 es un nuevo framework (anteriormente conocido como WebWork 2)2 que introdujo algunas mejoras sobre Struts 1, de cara a simplificar las tareas más comunes en el desarrollo de aplicaciones web, así como mejorar su integración con AJAX, etc.

  1. pom.xml

  4.0.0
  Struts2Annotation
  Struts2Annotation
  
  com.luxo.common
  war
  
  
   junit
   junit
   3.8.1
   test
  
  
   org.apache.struts
   struts2-core
   2.3.1.2
  
   
          org.apache.struts
   struts2-convention-plugin
   2.3.1.2
    
 
  
    src
    
      
        maven-war-plugin
        2.3
        
          WebContent
          false
        
      
      
        maven-compiler-plugin
        3.1
        
          1.7
          1.7
        
      
    
  



 

Login Action


package com.luxo.user.action;

import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;
 
import com.opensymphony.xwork2.ActionSupport;
 
@Namespace("/User")
@ResultPath(value="/")
@Result(name="success",location="pages/login.jsp")
public class LoginAction extends ActionSupport{
 
}



welcome action



 
package com.luxo.user.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;
 
import com.opensymphony.xwork2.ActionSupport;
 
@Namespace("/User")
@ResultPath(value="/")
public class WelcomeUserAction extends ActionSupport{
 
 private String username;
 
 public String getUsername() {
  return username;
 }
 
 public void setUsername(String username) {
  this.username = username;
 }
 
 @Action(value="Welcome", results={
  @Result(name="success",location="pages/welcome_user.jsp")
 })
 public String execute() {
 
  return SUCCESS;
 
 }
}


Estructura de paginas:





 

  Struts2Annotation
  
 struts2
 org.apache.struts2.dispatcher.FilterDispatcher
 
  
  
 struts2
 /*
  




Capa Vista

  login.jsp


<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>



Struts 2 Hello World Annotation Example

 
    welcome_user.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>



Struts 2 Hello World Annotation Example

Hello

 


  PROYECTOECLIPSE.zip

Soporte cache Oracle Service Bus Project

Para el siguiente WSDL se consulta el campo tmcode, con el cache por cada tmcode distinto le dará un cache de 24 horas.

Activating Cache for Business Service

 

To enable result caching for our Business Service follow these steps:
  1. Click Create at Change Center to create a new change session in Oracle Service Bus console.
  2. Navigate to Customer project and click CustomerBS Business Service.
  3. Click Edit under Message Handling Configuration section.




   
   
      
         
         1700
      
   
 

  1. Expand Advanced Settings and in Result Caching select Supported.
  2. Set the Cache Token Expression: Para este caso usare la KEY tmcode para guardar el cache, cuando se consulte la primera vez por la clave esta ira al servicios ruteado en la capa proxy y consultara los datos y los entregara en el request del servicios , pero si se vuelve a consultar dentro del tiempo configurado para esa key quedara guardado  24 hrs en cache y no ira al route a buscar la data entregara directamente el response que esta en cache.




Comienzo de Planificacion de proyectos Enfoque EML

Enfoque del Marco Lógico.


El enfoque de marco lógico (EML) es una herramienta analítica, desarrollada en 1969, para la planificación de la gestión de proyectos orientados a procesos. Es utilizado con frecuencia por organismos de cooperación internacional.
 
 
La Matriz del Marco Lógico es un instrumento metodológico que tiene las siguientes ventajas:

  • Claro análisis de la relación medios/fines de las actividades que conducen a un resultado requerido para lograr un propósito establecido para contribuir al logro de un fin.
  • Ayuda a especificar de manera precisa las actividades de un proyecto y de sus costos.
  • Describe los indicadores de desempeño y las fuentes de verificación.
  • Especifica los supuestos (o riesgos) principales que podría condicionar el éxito del proyecto.
  • Es un marco de referencia para identificar las experiencias e incorporarlas en otros proyectos.

En el siguiente cuadro podemos observar la Matriz cuatro por cuatro del Marco Lógico:
estructura MML 

La construcción de la Matriz del Marco Lógico, en su columna de Objetivos debe responde a una lógica jerarquizada de objetivos comenzando por el Fin, a quien le corresponde un Propósito; de este se pueden desprender varios Resultados que sean necesarios al proyecto; finalmente, cada Resultado debe tener más de una Actividad que permita viabilizar el logro de un Resultado.

jerarquia MML

El Marco Lógico es un instrumento que ayuda a los proyectistas a entender mejor la naturaleza de los problemas que están tratando de resolver. La Matriz de Marco Lógico está basada en dos principios básicos: a) Lógica Vertical y, b) Lógica Horizontal.
LÓGICA VERTICAL
La relación de la lógica vertical es de causa-efecto entre las diferentes partes de un problema, que corresponden a cuatro niveles de la Matriz de Marco Lógico, en la columna Objetivos, que relaciona las Actividades, los Resultados, el Propósito y el Fin como conjunto de objetivos jerarquizados del proyecto.
verificacion correspondencia MML

La primera tarea que se debe realizar en el llenado de la Matriz del Marco Lógico es vaciar el Árbol de Objetivos en la primera columna de la Matriz, comenzando por el Fin, luego el Propósito, los Resultados y las Actividades. En la revisión de coherencia, se debe verificar la correspondencia comprobando si las Actividades corresponden a los Resultados, si estos (los Resultados) corresponden al Propósito y, finalmente, si éste ayuda al cumplimiento del Fin.
Las preguntas que ayudan a verificar la correspondencia entre niveles son:

  • ¿Si cumplo con las Actividades, entonces alcanzo los Resultados?
  • ¿Si cumplo con los Resultados, entonces alcanzo el Propósito?
  • ¿Si cumplo con el Propósito entonces he logrado el Fin?
La segunda tarea es identificar los Supuestos (o riesgos) que tiene el proyecto como condiciones, acontecimientos o decisiones que tienen que suceder para que el proyecto pueda cumplir con sus cometidos. A cada uno de los Objetivos se les debe añadir un supuesto para que suceda el objetivo del nivel superior. El proceso que se debe seguir es el siguiente:
logica vertical MML

En el llenado de la columna de Supuestos, se debe considerar las siguientes proposiciones de verificación:

  • Se contribuyen Actividades para realizar ciertos Resultados, siempre y cuando se confirmen los siguientes Supuestos identificados.
  • En el siguiente nivel, si el proyecto produce estos Resultados y los Supuestos de este nivel son ratificados, se logrará el Propósito.
  • En el otro nivel, si se logra el Propósito, y se confirma los Supuestos de este nivel, se alcanzará el Fin.
  • Los supuestos en el nivel del Fin, por lo general, son considerados supuestos de sostenibilidad del proyecto y que tiene que ver con la continuidad del mismo.


LÓGICA HORIZONTAL

El principio de correspondencia o lógica horizontal, que vincula cada nivel de objetivos a la medición del logro (Indicadores y Medios de Verificación), es el siguiente paso en la construcción del Marco Lógico, por lo que se debe considerar el orden propuesto en el siguiente cuadro:
logica horizontal MML

La segunda columna describe los Indicadores. Estos son determinados en la etapa de diseño, y son los medidos cuantitativamente y cualitativamente para comprobar el estado de ejecución de las Actividades, del logro del Propósito o la magnitud de la contribución hacia el logro del Fin. La tercera columna, anota los Medios de Verificación de los Indicadores; es decir, son las fuentes de información, los planes particulares, métodos y metodologías que han sido utilizados para cada Indicador.

[WebService SOAP]JAX-WS : wsgen tool example

Cuando queremos enviar un wsdl a un cliente y no tenemos construido y publicado el webservice en un servidor de aplicaciones, la opción que nos queda es construir un proyecto web dummy para crear el wsdl, pero esto tiene una serie de inconvenientes ya que el XSD queda autogerenado al IDE que estemos usando, por ejemplo el IDE NetBeans 8.0.1 este ide utiliza la opción en de generar el wsdl con  la librería jaxws-ri ej:



    
    
        
        
        
        
        
            
        
    
    
        
            
        
        
            
        
    
    





Bajar libreria:

https://jaxb.java.net/2.2.11/


Para ejecutar el comando en linux:

JAXWS_HOME/bin/wsgen.sh -help


Syntax

wsgen [options] 
 
The following table lists the wsgen options:
OptionDescription
-classpath Specify where to find input class files.
-cp Same as -classpath .
-d Specify where to place generated output files.
-extensionAllow vendor extensions (functionality not specified by the specification). Use of extensions may result in applications that are not portable or may not interoperate with other implementations.
-helpDisplay help.
-JPass this option to Javac compiler. Note: use '=' instead of space as a delimiter between option name and its value.
-keepKeep generated files.
-r Used only in conjunction with the -wsdl option. Specify where to place generated resource files such as WSDLs.
-s Specify where to place generated source files.
-encoding Set the encoding name for generated sources, such as EUC-JP or UTF-8. If -encoding is not specified, the platform default encoding is used.
-verboseOutput messages about what the compiler is doing.
-versionPrint version information. Use of this option will ONLY print version information. Normal processing will not occur.
-fullversionPrint full version information. Use of this option will ONLY print version information. Normal processing will not occur.
-wsdl[:protocol]By default wsgen does not generate a WSDL file. This flag is optional and will cause wsgen to generate a WSDL file and is usually only used so that the developer can look at the WSDL before the endpoint is deploy. The protocol is optional and is used to specify what protocol should be used in the wsdl:binding. Valid protocols include: soap1.1 and Xsoap1.2. The default is soap1.1. Xsoap1.2 is not standard and can only be used in conjunction with the -extension option.
-servicename Used only in conjunction with the -wsdl option. Used to specify a particular wsdl:service name to be generated in the WSDL. Example:
-servicename "{http://mynamespace/}MyService"
-portname Used only in conjunction with the -wsdl option. Used to specify a particular wsdl:port name to be generated in the WSDL. Example:
-portname "{http://mynamespace/}MyPort"
-inlineSchemasUsed to inline schemas in a generated wsdl. Must be used in conjunction with the -wsdl option.
-x Used to specify External Web Service Metadata xml descriptor to be used. If there are more such files, the option must be used before each of those.
-XnocompileDo not compile generated Java files.
 

Example

wsgen -d stock -cp myclasspath stock.StockService 
This will generate the wrapper classes needed for StockService annotated with @WebService annotation inside stockdirectory.
wsgen -wsdl -d stock -cp myclasspath stock.StockService 
This will generate a SOAP 1.1 WSDL and schema for your Java class stock.StockService annotated with @WebService annotation.
wsgen -wsdl:Xsoap1.2 -d stock -cp myclasspath stock.StockService 
Will generate a SOAP 1.2 WSDL.

Como usarlo en un proyecto ya contruido?

Primero que nada debemos encontrar el classpath en donde estan todas los .Class :



 Ahora se ejecuta el comando en el wsgen:

sh /home/luxo/Descargas/WSDL/jaxws-ri/bin/wsgen.sh -verbose -keep -d /home/luxo/Descargas/WSDL/ -cp /home/luxo/WSQPS_MM/build/web/WEB-INF/classes/ cl.entel.wsautogestionmm.services.WSMMAutoGestionImpl -wsdl -inlineSchemas


Nota: debemos asegurarnos que tenemos todos los .Class que necesitamos en la ruta "/home/luxo/WSQPS_MM/build/web/WEB-INF/classes/" ya que si tenemos otros target Name Space le faltaran deficiones de objetos y dara un error como este:


luxo@luxo-Vostro-3460:~/WSQPS_MM/src/java$ sh /home/luxo/Descargas/WSDL/jaxws-ri/bin/wsgen.sh -verbose -keep -d /home/luxo/Descargas/WSDL/ -cp /home/luxo/WSQPS_MM/build/web/WEB-INF/classes/ cl.entel.wsautogestionmm.services.WSMMAutoGestionImpl -wsdl -inlineSchemas
Exception in thread "main" java.lang.NoClassDefFoundError: cl/allware/qps/service/pcrf/unified/types/SubscriberType
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)



Ubuntu Cambio de Hora [Chile]




El Ministerio de Energía anunció oficialmente cuándo debemos cambiarnos a la hora de invierno este 2014, fijando la fecha para el 26 de abril.
Ese día, debemos cambiar nuestro reloj a UTC-4, o en otras palabras, pasar de las 0:00 a las 23:00 del sábado. Por otro lado el horario de verano volverá el 7 de septiembre, día en el que habrá que operar a la inversa y correr el reloj a UTC-3.


Si tienes Ubuntu solo vasta con:


sudo apt-get upgrade
[sudo] password for XXXXX
 
 
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Calculando la actualización... Listo
Los siguientes paquetes se han retenido:
  linux-generic linux-headers-generic linux-image-generic python-cupshelpers
  system-config-printer-gnome
Se actualizarán los siguientes paquetes:
  tzdata tzdata-java unzip
3 actualizados, 0 se instalarán, 0 para eliminar y 5 no actualizados.
Necesito descargar 398 kB de archivos.
Se liberarán 11.3 kB después de esta operación.
¿Desea continuar? [S/n] s
Des:1 http://cl.archive.ubuntu.com/ubuntu/ trusty-updates/main tzdata-java all 2015a-0ubuntu0.14.04 [69.7 kB]
Des:2 http://cl.archive.ubuntu.com/ubuntu/ trusty-updates/main tzdata all 2015a-0ubuntu0.14.04 [171 kB]
Des:3 http://cl.archive.ubuntu.com/ubuntu/ trusty-updates/main unzip amd64 6.0-9ubuntu1.2 [157 kB]
Descargados 398 kB en 2seg. (198 kB/s)
Preconfigurando paquetes ...
(Leyendo la base de datos ... 322135 ficheros o directorios instalados actualmente.)
Preparing to unpack .../tzdata-java_2015a-0ubuntu0.14.04_all.deb ...
Unpacking tzdata-java (2015a-0ubuntu0.14.04) over (2014i-0ubuntu0.14.04) ...
Preparing to unpack .../tzdata_2015a-0ubuntu0.14.04_all.deb ...
Unpacking tzdata (2015a-0ubuntu0.14.04) over (2014i-0ubuntu0.14.04) ...
Configurando tzdata (2015a-0ubuntu0.14.04) ...

Current default time zone: 'America/Santiago'
Local time is now:      mié feb  4 15:24:55 CLST 2015.
Universal Time is now:  Wed Feb  4 18:24:55 UTC 2015.
Run 'dpkg-reconfigure tzdata' if you wish to change it.

(Leyendo la base de datos ... 322122 ficheros o directorios instalados actualmente.)
Preparing to unpack .../unzip_6.0-9ubuntu1.2_amd64.deb ...
Unpacking unzip (6.0-9ubuntu1.2) over (6.0-9ubuntu1.1) ...
Processing triggers for mime-support (3.54ubuntu1.1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Configurando tzdata-java (2015a-0ubuntu0.14.04) ...
Configurando unzip (6.0-9ubuntu1.2) ...
luxo@luxo-Vostro-3460:~$ sudo apt-get upgrade
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Calculando la actualización... Listo
Los siguientes paquetes se han retenido:
  linux-generic linux-headers-generic linux-image-generic python-cupshelpers
  system-config-printer-gnome
0 actualizados, 0 se instalarán, 0 para eliminar y 5 no actualizados.

Pruebas de Stress Con herramientas OpenSource[AB-GNUPLOT]

ab - Apache HTTP server benchmarking tool ejemplo del AB con una peticion GET: ab: The Apache Bench benchmarking utility -n 400: The number of requests for your benchmark (yes, this one is crazy small; it’s so people don’t hammer example.com by copy pasting) -c 10: Number of concurrent requests -g apache-1.tsv: This tells ab to write a “gnuplot-file” (that’s right from the man page) "http://example.com": The URL you want to benchmark against
ab -k -n50000 -c100 "172.29.151.82:17503/v1/pcrf/provisioning/subscriber/56911111112?platform=SCOB"
respuesta tipo:
Server Software:        Apache
Server Hostname:        
Server Port:            80

Document Path:          /
Document Length:        162809 bytes

Concurrency Level:      50
Time taken for tests:   12.664 seconds
Complete requests:      500
Failed requests:        377
   (Connect: 0, Receive: 0, Length: 377, Exceptions: 0)
Write errors:           0
Non-2xx responses:      377
Total transferred:      20291876 bytes
HTML transferred:       20147278 bytes
Requests per second:    39.48 [#/sec] (mean)
Time per request:       1266.372 [ms] (mean)
Time per request:       25.327 [ms] (mean, across all concurrent requests)
Transfer rate:          1564.81 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.4      0       2
Processing:   194 1190 1617.0    248    6060
Waiting:      194  965 1263.9    248    5190
Total:        194 1190 1617.0    248    6060

Percentage of the requests served within a certain time (ms)
  50%    248
  66%    359
  75%   1555
  80%   2787
  90%   3979
  95%   4709
  98%   5427
  99%   5967
 100%   6060 (longest request)
ej: del AB para una petición POST:
ab -g resultcreatePD.plot -k -T "content-type: text/xml" -H "SOAPAction: createPD" -p POST_crearpasediario.txt -n 10000 -c 400 http://localhost:17506/v1/WSPASEDIARIO
Ahora la opción -g nos entrega una salida un archivo de texto plano con los valores. EJ:
1 15:03:27.290 1 15:03:27.294 1 15:03:27.322 1 15:03:27.323 1 15:03:27.325 1 15:03:27.331 1 15:03:27.332 1 15:03:27.335 2 15:03:27.354 1 15:03:27.355 1 15:03:27.358 1 15:03:27.360 1 15:03:27.361 1 15:03:27.363 1 15:03:27.365 3 15:03:27.366 1 15:03:27.367 1 15:03:27.397 2 15:03:27.400 1 15:03:27.402 1 15:03:27.404 2 15:03:27.405 1 15:03:27.406 2 15:03:27.415
Esos valores se pueden graficar para crear un gráfico de dispersión: gnuplot es un programa muy flexible para generar gráficas de funciones y datos. Este programa es compatible con los sistemas operativos más populares (Linux, UNIX, Windows, Mac OS X...). El origen de gnuplot data de 1986. gnuplot puede producir sus resultados directamente en pantalla, así como en multitud de formatos de imagen, como PNG, EPS, SVG, JPEG, etc. Se puede usar interactivamente o en modo por lotes (batch), usando scripts.
# Let's output to a jpeg file
set terminal jpeg size 500,500
# This sets the aspect ratio of the graph
set size 1, 1
# The file we'll write to
set output "graphs/timeseries.jpg"
# The graph title
set title "Benchmark testing"
# Where to place the legend/key
set key left top
# Draw gridlines oriented on the y axis
set grid y
# Specify that the x-series data is time data
set xdata time
# Specify the *input* format of the time data
set timefmt "%s"
# Specify the *output* format for the x-axis tick labels
set format x "%S"
# Label the x-axis
set xlabel 'seconds'
# Label the y-axis
set ylabel "response time (ms)"
# Tell gnuplot to use tabs as the delimiter instead of spaces (default)
set datafile separator '\t'
# Plot the data
plot "data/testing.tsv" every ::2 using 2:5 title 'response time' with points
exit

Generate Large XLSX USING Spring Framework & Apache POI

Para este ejemplo use la librería Apache POI que permite generar documentos de Office, el problema principal de la solución fue bajar los datos de una consulta a una BD que podia regresar muchos registros, por lo que no podíamos dejar esperando al usuario a que se generara completo el archivo Excel para que pudiera ser descargado.
 La solución fue generar un archivo excel vacío con la cabecera necesaria para enviar el setContentType y el navegador queda esperando a que el ServletOutputStream termine de enviar datos Bytes x Bytes.


mvc-dispatcher-servlet.xml


    
        
        
        
    
    
    
    
    
    
    
    

    
    
    

    
    
        
    


    
    
    
    
        
        
        
        
        
        
        
        
            
                unchecked
            
        
    

    
    
        
        
            
                classpath:message
            
        
        
    

    
        
    

    
        
    
    

    
  
    
        
            
            
                
                
                
                
                
     
            
            
        
    
     



Encabezado de archivos XLSX, como se puede ver en la imagen todo archivo XLS tiene como Header los Byte: {0x50, 0x4b, 0x03, 0x04, 0x14, 0x00}; 



Metodo que Baja el archivo Bytes x Bytes
 
 private void doDownload(String accion, String fecha, String fechainicio, String fechafinal, String compania, HttpServletRequest request, HttpServletResponse response) throws IOException {
        String ftemporal = fecha;
        //XLS
        SXSSFWorkbook wb = new SXSSFWorkbook(100); // keep 100 rows in memory, exceeding rows will be flushed to disk
        String mensaje = accion.equals("B") == true ? "Bloqueo" : "Desbloqueo";
        String[] ftempo = ftemporal.split("/"); //{DD,MM,YYYY}

        Sheet sheet = wb.createSheet("ReporteMora_" + mensaje + "_" + ftempo[2] + ftempo[1] + ftempo[0]);
        OutputStream out = response.getOutputStream();
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf8");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=\"" + sheet.getSheetName() + ".xlsx\"");
        final byte headerBytes[] = new byte[]{0x50, 0x4b, 0x03, 0x04, 0x14, 0x00};
        out.write(headerBytes);
        response.flushBuffer();
        //encabezado
        //data
        Row encabezado = sheet.createRow(0);
        sheet.autoSizeColumn(0);
        Cell cell = encabezado.createCell(0);
        cell.setCellValue((String) "IMEI");
        cell = encabezado.createCell(1);
        cell.setCellValue((String) "MARCA");
        cell = encabezado.createCell(2);
        cell.setCellValue((String) "MODELO");
        cell = encabezado.createCell(3);
        cell.setCellValue((String) "FECHA_INGRESO");
        cell = encabezado.createCell(4);
        cell.setCellValue((String) "ACCION");
        cell = encabezado.createCell(5);
        cell.setCellValue((String) "TIPO_TECNOLOGIA");
        cell = encabezado.createCell(6);
        cell.setCellValue((String) "USUARIO");

        ReportesDelegate reporteEstados = new ReportesDelegate();
        int rownum = 1;
        out.flush();
        try {
            /*
             Metodo que recibe la fecha en formato dd/mm/YYYY
             finicio en formato dd/mm/yy hh24:mi:ss
             ffin en fomrato dd/mm/yy hh24:mi:ss
             accion B o D //bloqueo desbloqueo
             compania en codigo_compania x ej 219 claro
             retorna una lista del reporte cobranza en detalle.
             */
           
            List resultadoEstado = reporteEstados.getDetalleCobranza(fecha, fechainicio + " 00:00:00", fechafinal + "23:59:59", accion, compania);
            int tamaniolista=resultadoEstado.size();
            for (ReporteCobranza r : resultadoEstado) {
 
                Row row = sheet.createRow(rownum++);

                Cell cellda = row.createCell(0);
                cellda.setCellValue(r.getImei().toString());
                cellda = row.createCell(1);
                cellda.setCellValue((String) r.getMarca());
                cellda = row.createCell(2);
                cellda.setCellValue((String) r.getModelo());
                cellda = row.createCell(3);
                cellda.setCellValue((String) r.getFechaIngreso());
                cellda = row.createCell(4);
                cellda.setCellValue((String) r.getAccion());
                cellda = row.createCell(5);
                cellda.setCellValue((String) r.getTipoTecnologia());
                cellda = row.createCell(6);
                cellda.setCellValue((String) r.getUsuario());

            }
            for (int i = 0; i < tamaniolista; i++) {
                sheet.autoSizeColumn(i);
            }
        } catch (Exception e) {
            System.out.println("Error reporte:" + e);
        }

        CustomOutputStream out2 = new CustomOutputStream(out, headerBytes.length);
        wb.write(out2);
        out.flush();
        out.close();
        wb.dispose();
    }



Considere el uso de la versión Streaming de POI. Esto cargará un subconjunto del archivo en la memoria según sea necesario. Es el método recomendado cuando se trata de archivos de gran tamaño:
SXSSFWorkbook wb = new SXSSFWorkbook(100); // keep 100 rows in memory, exceeding rows will be flushed to disk




Al ecribir el encabezado uso el "sheet.autoSizeColumn", pero solo lo hago en el encabezado, ya que si se integra en el ciclo de creacion este reduce considerablemente la rapidez con que se genera el archivo EXCEL. Consultar Documentacion relacionada del metodo
En las siguientes lineas creo un OutputStream que ocupare para enviar solo el encabezado del archivo y despues cuando empieze a llegar las ROW las enviare al navegador, la velocidad de descarga dependera de la conexion entre el servidor de Aplicaciones y la aplicacion y el tiempo de la Base de datos, considerando la cantidad de informacion que manejaba se pueden estimar en archivos de 150 MB promedio. Generar un archivo asi en una aplicaciones WEB es un tiempo considerable que se le debe hacer esperar al usuario, la mejor solucion fue el CustomOutputStream.
Por ultimo el " response.flushBuffer" con esto se vacia el buffer y se envia al response la informacion. En la primera vuelco de buffer es solo el HEADER generico de un archivo EXCEL XLSX.

        OutputStream out = response.getOutputStream();
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf8");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=\"" + sheet.getSheetName() + ".xlsx\"");
        final byte headerBytes[] = new byte[]{0x50, 0x4b, 0x03, 0x04, 0x14, 0x00};
        out.write(headerBytes);
        response.flushBuffer();

Controlador de SPRING que activa la Descarga

import cl.claro.aplicaciones.webberr.modelo.CobranzaModel;
import cl.clarochile.aplicaciones.berr.configuracion.dao.entities.Compania;
import cl.clarochile.aplicaciones.berr.configuracion.dao.entities.Estado;
import cl.clarochile.aplicaciones.berr.configuracion.delegate.ConfiguracionDelegate;
import cl.clarochile.aplicaciones.berr.consultas.to.HistoricoVistaTO;
import cl.clarochile.aplicaciones.berr.reportes.to.CobranzaResumen;
import cl.clarochile.aplicaciones.berr.reportes.to.DatoBitacoraProceso;
import cl.clarochile.aplicaciones.berr.reportes.to.ReporteCobranza;
import cl.clarochile.aplicaciones.berr.service.delegate.ReportesDelegate;
import cl.clarochile.infraestructura.exceptions.BussinesFault;
import cl.clarochile.infraestructura.exceptions.TechnicalFault;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

     @RequestMapping(value = "/descargaDetalleCobranza")
    public void descargaDetalleCobranza(@RequestParam(value = "compania") String compania,
            @RequestParam(value = "fecha") String fecha,
            @RequestParam(value = "fechainicio") String fechainicio,
            @RequestParam(value = "fechafinal") String fechafinal,
            @RequestParam(value = "accion") String accion,
            HttpServletRequest request, HttpServletResponse response) throws Exception {

        doDownload(accion, fecha, fechainicio, fechafinal, compania, request, response);

    }


Clase que extiende ServletOutputStream para evitar volver a enviar el Header del archivo XLSX
class CustomOutputStream extends ServletOutputStream {

        OutputStream os;
        int skip = 0;
        int n = 0;

        public CustomOutputStream(OutputStream out, int skip) {
            this.os = out;
            this.skip = skip;
        }

        @Override
        public void write(int b) throws IOException {
            if (n < skip) {
                n++;
                return;
            }

            os.write(b);
        }
    }


ReporteCobranza.jsp

 Excel
                                                                            

Resumen de lo aprendido en la ONT Day 2014

Bruno Borjes – Building Java EE 7 Applications with WebLogic 12c


Optimizer Master Class with Tom Kyte

Turbo Mobile Development with Oracle …presentin David Peake BLOG David Peake

Dana Singleterry – HOL – Developing a Web Dashboard & ADF WEB Y MOVILE

Blog Dana Singleterry

[BASH] ERROR line 1: #!/bin/bash: No existe el fichero o el directorio

Este error aparece cuando se editar el archivo agregando el extra fin de carro es decir "\r\n" o el byte (BOM) en la primera linea del archivo, para descubrir que pasa debemos ejecutar el siguiente comando:
$ head -1 yourscript | od -c

and see how it ends: This is wrong

0000000   ï   »   ¿   #   !   /   b   i   n   /   b   a   s   h  \n
0000017

This is correct:
0000000   #   !   /   b   i   n   /   b   a   s   h  \n

Use dos2unix to fix your script if this is the issue. Esto ocurre por editar los archivos con un editor de texto gráfico como el Kate con la opción activa de Herramientas-> "Añadir marca de orden de byte(BOM)"

[SOA] Oracle JDeveloper install soporte para OSB

Instalando soporte para SOA al Jdeveloper:

Primero descargar la version 11g de :


chmod 775 jdevstudio11116install.bin 
luxo@luxo-Vostro-3460:~/Descargas$ ./jdevstudio11116install.bin 
Extracting 0%....................................................................................................100%

Jdeveloper Downloads

Ir a HELP-> Check for Updates-> next->  next-> Instalar las siguientes versiones extensiones:

  • Oracle SOA Composite Editor
  • Oracle BPM Studio
  • Spring & Oracle Weblogic SCA 


Reiniciar IDE,luego:

Steps in JDeveloper 1. Create DB Connection in JDeveloper. 2. Create a Generic Project. 3. Create Project as SOA project and use Empty Composite.

Steps to create DB Adaptor

Go to Composite Palette and choose AD Adaptor. Drag and drop the DB Adaptor in the External Reference section (right side of Composite view). It will open a wizard for selecting the connection and Other DB related process. Give name to service that you want to create Choose the DB Connection you have created already. Move one with selecting your desired choice of Stored Procedure or Table (insert/Select) functionality that you want your web service to perform. If you choose Table insert/Select then you can also choose the relation between tables as optional step. Try to keep all steps default if you do not want any special features. Once you finish all steps in wizard, then it will generate whole lot of files under your Project. Look for 4 main files .jca, xsd/.xsd, *.mapping.xml, *.wsdl If you see all these files generated well in your project then you are all set and we can move ahead. If not then look for the issue.

Steps in WLS Console Create Data Source

1.Go to Left panel and choose Data Source. 2. Select New -- Generic Data Source 3. Give Name as you wish but for JNDI Name you have to use the connection name from the *.JCA file that you already have. Open the jca file and search for the ‘UIConnectionName’. This value will be used as JNDI name in data source creation. 4. Choose Driver as oracle.jdbc.xa.client.OracleXADataSource 5. Use the host and Port and other details that you had selected during DB Connection (in JDeveloper). This is obvious step. 6. Choose target AdminServer. 7. If you finish everything correctly. You are all set here and you can choose to test the connection and should be Test Success.

Configure the DB Adaptor

Go to Deployment on left hand panel. In Deployed services. Search for DbAdaptor. Click on the name DbAdaptor. Select Configuration tab. And under it choose Outbound Connection Pool. Here you will see (javax.resource.cci.ConnectionFactory) Click on new.

Choose javax.resource.cci.ConnectionFactory Next page will ask for JNDI Name. For this, you have to go to your *.jca file and choose the value which is already there for Connection-factory as Location (like connection-factory location=?). Use the value of Location as JNDI Name. Transaction will be No Transaction. Choose this for now. This is need basis selection. Leave other selection as is and then Finish.

Note : Once you finish. Go to Properties Tab again and look for a property name : xADataSourceName. Its value should be the same as UIConnectionName that you have in *.jca file. It should be populated. If not then you can set now as well. You have to double click on the value section and then write the name and press enter. Then Save it. With above all steps we have set the DbAdaptor to point to same DB where we have our table/store procedure.

[XML]Apache Commons XMLConfiguration fetch Object list?

Como se puede cargar un archivo de texto plano a XML, la libreria org.apache.commons.configuration, pero que pasa con los XML que tienen varios niveles dentro del Tag raíz?
EJ:
  
      
 VOZ
 servicio de voz
 OBO,4:OBI,2:OICK,0:OBSSM,0:OSB1,0
 OBO,1:OBI,2:OICK,0:OBSSM,1:OSB1,1
 1
      
      
 Llamadas a Moviles
 Servicio de llamadas a móviles
 OBO,0
 OBO,2
 1
      
      
 700
 Servicio de llamada a 700
 OBOPRE,0
 OBOPRE,1
 1
      
      
   LDI
   Larga distancia Internacional
   OBOPRI,0
   OBOPRI,1
   1
      
      
   300
   Servicio llamadas a 300
   OSB3,0
   OSB3,1
   1
      
  

Para recórrelas solo vasta:

List listaServicios = arch.config.getList("servicios.servicio.codigo");

int nunRowPcsFile = listaServicios.size();
        log.info("Cantidad de servicios Leidos del archivo de configuracion:"+nunRowPcsFile);
        int i = 0;

        registrosTbl = new RequestConsulta[nunRowPcsFile];

        if (nunRowPcsFile != 0) {

            for (String rs : listaServicios) {

                RequestConsulta datosObj = new RequestConsulta();
                String codigo=arch.config.getString("servicios.servicio(" + i + ").codigo");
                datosObj.setCodigo(codigo);
                String on=arch.config.getString("servicios.servicio(" + i + ").servicio_on");
                datosObj.setActivacion(on);
                String off=arch.config.getString("servicios.servicio(" + i + ").servicio_off");
                datosObj.setDesactivacion(off);               
                registrosTbl[i] = datosObj;
                i++;

            }

        }

PD: código funciona para java >= 1.6

INFO:INFO API

Instalar Decompiler Java Ubuntu 14.10


Al ejecutar el decompiler de java JD-GUI da este error:
./jd-gui: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory

Solucion instalar las liberias X11 del GTK:
sudo apt-get install libgtk2.0-0:i386 libxxf86vm1:i386 libsm6:i386 lib32stdc++6

[Weblogic] Respaldar un dominio weblogic

$MW_HOME/wlserver_[version]/common/bin pack -domain =path_of_domain -template=path_of_jara_file_to_create -template_name=”template_name” [-template_author="author"][-template_desc="description"] [-managed=true|false][-log=log_file] [-log_priority=log_priority]






Syntax of the Pack Command
Default value for -managed is false
En el caso de claro estan usando un dominio con un manager de nodos por lo que la opcion managed debe ser true.

Bug Disable Menu Compile en NETBEANS 8.0 en LInux


Product Version: NetBeans IDE 8.0 (Build 201403101706)
Updates: NetBeans IDE is updated to version NetBeans 8.0 Patch 1.1
Java: 1.7.0_51; OpenJDK 64-Bit Server VM 24.45-b08
Runtime: OpenJDK Runtime Environment 1.7.0_51-b00
System: Linux version 3.11.0-19-generic running on amd64; UTF-8; es_CL (nb)
User directory: /home/luxo/.netbeans/8.0
Cache directory: /home/luxo/.cache/netbeans/8.0



The cache is located in /home/luxo/.cache/netbeans/8.0/var/cache. Deleting this directory should clear the cache for you.

how to reset weblogic password

http://www.oracle-base.com/articles/11g/reset-the-adminserver-password-in-weblogic-11g-and-12c.php
En mi caso:
export MW_HOME=/home/luxo/Oracle/Middleware

export DOMAIN_HOME=$MW_HOME/user_projects/domains/berr

$DOMAIN_HOME/bin/stopWebLogic.sh

mv $DOMAIN_HOME/servers/AdminServer/data $DOMAIN_HOME/servers/AdminServer/data-old .

$DOMAIN_HOME/bin/setDomainEnv.sh

cd $DOMAIN_HOME/security

java weblogic.security.utils.AdminAccount weblogic allware123 .

ERROR Readline Java File UTF8

Este error ocurre cuando se lee un archivo de texto guardado en sistemas operativos UNIX/LINUX en donde se guardan ciertos byte que le dan la codificación UTF-8, lo cual entorpece la comparación del método a byte[] incluya estos caracteres haciendo que una simple comparación de String sea distinta a lo esperado.

    /**
 * 
 * 
 * @param s string a remover caracter UTF8
 * @return 
 */
    private static String removeUTF8BOM(String s) {
        if (s.startsWith("\uFEFF")) {
            s = s.substring(1);
        }
        return s;
    } 

por ejemplo una aplicacion seria:
BufferedReader reader = new BufferedReader(new FileReader(files[i]));
                String header = readLine(reader);
                reader.close();

                String fileRegistroDebloqueo;
                String fileDesbloqueoDebloqueo;
                header = removeUTF8BOM(header);
                header = header.toUpperCase();
                if (header.equals("CUENTA")) {
                    compania = "CLARO";
                } else {
                    compania = extractCompany(files[i]);
                }
 


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...