Tuesday, March 20, 2018

Generic method Marshalling and Unmarshalling JAXB

I share example JAXB.

public static  <T> String convertObjectToXML(T object) 
{
        try {

            StringWriter stringWriter = new StringWriter();
            JAXBContext context = JAXBContext.newInstance(object.getClass());
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            marshaller.marshal(object, stringWriter);
            return stringWriter.toString();
        } 
        catch (JAXBException e){
         throw new RuntimeException(String.format("Exception while marshalling: %s", e.getMessage()));
        }
   }
 
    @SuppressWarnings("unchecked")
  public static <T> T convertXMLToObject(Class<T> clazz, String xml) 
    {
        try {

            JAXBContext context = JAXBContext.newInstance(clazz);
            Unmarshaller um = context.createUnmarshaller();
            return (T) um.unmarshal(new StringReader(xml));
        } 
        catch (JAXBException je){
            throw new RuntimeException(String.format("Exception while Unmarshaller: %s", je.getMessage()));
        }
    }

@SuppressWarnings("unchecked")
public static <T> T convertXMLToObject(Class<T> clazz, InputStream file) {
   
   
    try {
    JAXBContext jaxbContext = JAXBContext.newInstance(clazz);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
T obj = (T) jaxbUnmarshaller.unmarshal(file);
return obj;

} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(String.format("Exception while Unmarshaller: %s", e.getMessage()));
}
    }

Friday, March 16, 2018

Habilitar conexion remota en MySQL (Linux Ubuntu)

A continuacion les dejo unos sencillos pasos para habilitar conexion remota en MySQL en Linux Ubuntu espero que les sea de mucha utilidad.

Editar el archivo my.cnf

sudo gedit /etc/mysql/my.cnf
OR
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

Buscar la sección: [mysqld]

y buscamos la siguiente linea:

bind-address = 127.0.0.1

Y lo comentamos poniendo un '#' al principio de esta, quedando de la siguiente forma:

#bind-address = 127.0.0.1

Guardamos los cambios y reiniciamos el servidor:

sudo service mysql restart

Accedemos a la terminar y ejecutamos mysql

mysql -u root -p

Dentro de mysql ejecutamos los siguientes comandos

1) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

y en password seteamos el password que va tener la cuenta root que va el usuario

que se va a loguear remotamente

2) FLUSH PRIVILEGES;

3) exit

Luego realizar prueba correspondiente, para ello les recomiendo utilizar MySQL Workbench IDE, sencillo de utilizar. :)

Saludos

Spring portlet MVC - WebSphere 8.0

Les comento que cuando instale un portlet basado en Spring Portlet MVC en ambien de IBM especificamente en Portal Server, tuve excepciones de mapeo y por mas que visite e investigue en varias paginas no me dieron ninguna solucion,  a continuacion le comparto una solucion que realize, esperando que le sea de mucha utilidad.

Estas son las excepciones que se tenia en el portal server:

javax.portlet.UnavailableException: No matching handler method found for portlet request: mode 'view', phase 'RESOURCE_PHASE', parameters map[[empty]]

-ACTION_PHASE
-RENDER_PHASE

cuando ocurria estas expciones, el portlet se detenia por ende la aplicacion.

SOLUCION:

La solucion que encontre es colocarle uno por default. es decir coloque una anotacion vacia que realizara ciertas funcionalidades.

- Si venia una exception render_phase --> se va  mi index. (Lo acoplas a tus necesidades)
@RequestMapping
public String index(RenderRequest request, RenderResponse response, Map<String, Object> model) throws IOException
{
return "index"; //Mi jsp
}

-Si venia una excepcion action_phase --> lo dirigia a mi pagina url(Lo acoplas a tus necesidades)

@ActionMapping
public void redirect(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException
 {
  actionResponse.sendRedirect(MIURL);
 }


-Si venia una excepcion resource_phase --> resource lo utilizas en tus ajax por lo tanto en todos mis funciones donde realiza una peticion ajax recibia un valor que recibia y lo regresa al home de la pagina.
Ejemplo:

@ResourceMapping 
public void fakeServerSource(ResourceRequest request, ResourceResponse response) throws IOException
{
JSONObject envio = new JSONObject();
envio.put("respuesta", "redirect");
response.getWriter().println(envio);
}

Saludos.

Conectar DB2 desde consola Ubuntu

Les comparto los comandos necesarios para conectarse desde consola a una db2 para ellos deberán tener instalado ssh. tambien otros comandos necesarios como por ejemplo crear base de datos, connectarse a la base de datos y setencias sql. todo desde consola :).

Paso 1 :conectar a la DB2 por ssh

ssh usuario_db2@tu_ip (Ejemplo ssh user@127.0.0.1)

Paso 2: te solicitara tu contraseña ingresalo

Paso 3: Crear bases de datos

db2 create database exa (exa = el nombre de tu db)

Paso 4: Connectarse a la base datos

db2 CONNECT TO exa USER usuario_db2 USING tu_contraseña 

Paso 5: Ejecutar Sentencias Sql DB2.

db2 "select * from tu_tabla"  (Puedes crear o ejecutar cual sentencia Sql dentro " ") 

Paso 6: Si quieres ejecutar un archivo.sql 

Primero escribe tu archivo si no lo tienes con el siguiente comando

nano archivo.sql (Escribir tu archivo con las sentencias sql)

Segundo ejecutar el archivo que creaste o el que ya tienes con el siguiente comando.



db2 -tvf archivo.sql (Se ejecutara el archivo)

Multiple Data Sources in Spring Boot 3 with Java 21

  In this blog post, we'll explore the configuration and setup for a Spring Boot 3 application with Java 21 that uses multiple data sour...