1 Parte – Hessian: Un ejemplo de creación de un Web Services con Hessian en Java ejecutándolo con GlassFish

Java, Programación, Web Services 24 de enero del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

Hace mucho tiempo que había trabajado con Hessian, y la verdad es que me había gustado mucho:

The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments.

Y recordando un poco por que se me olvida aquí les dejo un ejemplo de un Web Services con Hessian, es una de las maneras más fáciles de implementar un Web Services ya que es:

  • Se puede implementar en  muchisimos lenguajes como:
    • Java
    • Ruby
    • Python
    • PHP
    • .NET C#
    • y muchos más
  • Nos olvidamos de definición de esquemas, SOAP, WSDL, CORBA IDL, etc
  • Soporta cifrado, compresión (es indispensable para no saturar el Ancho de Banda), autenticación, etc.
  • Es muy sencillo de implementarlo, y más

Este es un ejemplo muy pero muy básico, así que lo que quisimos hacer es obtener la lista de usuarios x.
Para crear el Servidor lo primero que hay que hacer es:

1.- Necesitamos crear un Proyecto Web, el cual sera el servidor que va estar escuchando todas las peticiones. (en mi caso utilice NetBeans)
2.- Después creamos nuestras clases (yo quiero regresar una lista con usuarios de tipo User que tiene como atributo userId, name, lasname, email)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
package com.serunix.bean;
 
/**
 *
 * @author serunix.com
 */
public class User  implements java.io.Serializable {
 
    private int userId;
    private String name;
    private String lasName;
    private String email;
 
    /**
     * @return the userId
     */
    public int getUserId() {
        return userId;
    }
 
    /**
     * @param userId the userId to set
     */
    public void setUserId(int userId) {
        this.userId = userId;
    }
 
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
 
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
 
    /**
     * @return the lasName
     */
    public String getLasName() {
        return lasName;
    }
 
    /**
     * @param lasName the lasName to set
     */
    public void setLasName(String lasName) {
        this.lasName = lasName;
    }
 
    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }
 
    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }
}

3.- Creamos nuestros métodos disponibles

1
2
3
4
5
6
7
8
9
10
11
12
13
 
package com.serunix.services;
 
import java.util.List;
 
/**
 *
 * @author serunix.com
 */
public interface UserServices {
 
    List ObtainListUsers();
}

4.- Creamos la implementación, la cual tendrá toda la lógica

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
package com.serunix.services.impl;
 
import com.caucho.hessian.server.HessianServlet;
import com.serunix.bean.User;
import com.serunix.services.UserServices;
import java.util.ArrayList;
import java.util.List;
 
/**
 *
 * @author serunix.com
 */
public class UserServicesImpl extends HessianServlet implements UserServices {
 
    public List ObtainListUsers() {
     List list = new ArrayList();
 
        User users = new User();
        users.setUserId(1);
        users.setName("sergio");
        users.setLasName("Salazar");
        users.setEmail("admin@serunix.com");
        list.add(users);
        users = new User();
        users.setUserId(1);
        users.setName("sergio2");
        users.setLasName("López2");
        users.setEmail("admin@serunix.com");
        list.add(users);
 
        return list;
    }
 
}

5.- Y por último modificamos nuestro web.xml y levantamos el server que en este caso estoy utilizando GlassFish

1
2
3
4
5
6
7
8
<servlet>
        <servlet-name>UserServicesImpl</servlet-name>
        <servlet-class>com.serunix.services.impl.UserServicesImpl</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UserServicesImpl</servlet-name>
        <url-pattern>/UserServicesImpl</url-pattern>
    </servlet-mapping>

6.- Y creamos nuestro cliente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package test.serunix;
 
import com.caucho.hessian.client.HessianProxyFactory;
import com.serunix.bean.User;
import com.serunix.services.UserServices;
import java.net.MalformedURLException;
import java.util.Iterator;
import java.util.List;
/**
 *
 * @author sergio
 */
public class testHessian {
 
    public static void main(String[] args) throws MalformedURLException, ClassNotFoundException {
 
        String url = "http://localhost:8080/EJEMPLOHESSIAN/UserServicesImpl";
 
        HessianProxyFactory factory = new HessianProxyFactory();
        UserServices userservices = (UserServices) factory.create(url);
        List users = userservices.ObtainListUsers();
 
        Iterator ite = users.iterator();
        while (ite.hasNext()) {
            User user = (User) ite.next();
            System.out.print("*******************  \n");
            System.out.print("Name: " + user.getName() + "  \n");
            System.out.print("LasName: " + user.getLasName() + "  \n");
            System.out.print("Email: " + user.getEmail() + "  \n");
        }
    }
}

7.- Y listo!!!!

La verdad es que es muy fácil, aquí les dejo el proyecto entero. Si me quieren dejar un feedback no duden en hacerlo.

Microsoft confirma que el bug de Internet Explorer que utilizaron los chinos, tiene 17 años

Google, Internet, Seguridad 21 de enero del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...
IE

IE

Leo en Networkworld que el bug que encontraron los chinos en Internet Explorer, para realizar el ataque a Google tiene 17 años  y que no se habían percatado de eso, ahí esta otra característica más para utilizar esta navegador super seguro. Lo bueno es que hay otras opciones en el marcado pero lamentablemente la mayoría de los internautas lo sigue usando. Una de las opciones es Maxthon (aunque use el mismo motor que IE), pero esperemos que revise el bug.

La nota completa aquí

Java: ¿Al iterar los elementos de un objeto List, tenemos que validar que sea distinto de null?

Java, Programación 19 de enero del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

Se que es algo super básico, pero la verdad es que nunca esta de más saberlo… o recordarlo jajajaj la situación es la siguiente: cuando obtenemos una lista de un objeto cualquiera y no sabemos si tiene datos, lo mejor es validar la lista, pero si no quieres hacerlo y hacer un Iterator, púes no es necesario que valides que sea null, ya que aunque la lista no tenga elementos se crea un objeto tipo iterador  por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
 * 
 */
package com.test.serunix;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
/**
 * @author serunix.com
 *
 */
public class TestList {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// creamos un tipo lista vació
		List<String> list = new ArrayList<String>();
		// creamos el itelador (se que se puede iterar de otra manera a partir de java 1.5)
		Iterator<String> ite = list.iterator();
		// no validamos el iterador
		while(ite.hasNext()) // así que el iterador revisa si hay elementos, de lo contrario no sigue el bucle.
		{
			String value = (String) ite.next();
		}
 
	}
}

En otras palabras, siempre se crea un tipo lista así que no daría un java.lang.NullPointerException sólo ocurría esta excepción si la lista fuera inicializada como un null o que el método regrese un null por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * 
 */
package com.test.serunix;
 
import java.util.Iterator;
import java.util.List;
 
/**
 * @author serunix.com
 *
 */
public class TestList {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<String> list = obtainListElement();
 
		Iterator<String> ite = list.iterator();
 
		while(ite.hasNext())
		{
			String value = (String) ite.next();
		}
	}
 
	public static List<String> obtainListElement() {
 
		List<String> list = null;
		return list;
 
	}
 
}

Así que cada quien sabe que hace en cada caso.

¿Esta es una tienda de “LACOSTE” o no?

Humor, Personal 16 de enero del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Saliendome un poco de contexto del tema principal de este blog, he tenido la oportunidad de ir a china, y bueno la verdad es que me encanto es un lugar que todo mundo debería ir, y en uno de los lugares que visite estaba esta tienda, así  que la pregunta que me paso por la cabeza en ese momento fue: ¿Esta es una tienda de “LACOSTE” o no?… así que les dejo la imagen para que juzguen por ustedes mismos.

¿Esta es una tienda de lacoste?

¿Esta es una tienda de "lacoste"?

Regalo tres licencias, una para “Thoughts”, “Yum” y de “FAMILY” que son aplicaciones para mac…

Mac, Personal, Software 14 de enero del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

Como ayude en la traducción al español de este software (así que el que tenga un queja conmigo jajajajaj),  por mi trabajo me regalaron las licencias de todo el paquete que ofrecen en su Web, el paquete  incluye:

* Yum : Yum is your ultimate recipe and cook book manager. Add your favorite recipes, organize them into categories, assign them ratings, print them with custom layouts, create shopping lists from the ingredients, and many more features.

* FAMILY – FAMILY TREES ON YOUR MAC: Family is a genealogy application for Mac OS X that allows you to map out your family tree visually, associating images and files with each person and telling each person’s story.

* Thoughts: Thoughts is a completely new way of managing your thoughts, ideas, notes and much much more. If you ever searched for the perfect way of joting down notes, writing your journal or anything like that you are right with Thoughts.

así que las voy a regalar, a las primeras personas que hagan un post de mi blog en el suyo y me dejen en un comentario el link  y me diga cual quiere,  soy Internauta de palabra jajajajaja… claro, sólo tengo una  licencia de cada aplicación,  aquí el link del software http://thoughts.monitzer.com/

Maxthon: Es un browser que esta basado en Internet Explorer…

Internet, Software, Windows 10 de enero del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...
maxthon

maxthon

Buscando cosas por ahí me encontré con este navegador web para Windows que se llama Maxthon y que esta basado en el Internet Explorer  ya que usa el mismo motor renderizado (esto quiere decir que funciona bien), además que tiene muchas características buenas (bueno más o menos)  como son:

  • Un alto  nivel de personalización de su interface (mover, quitar, modificar prácticamente todo)
  • Soporte para viarios lenguajes
  • Según que esta libre al 100% de todo virus, spyware, etc (esto no lo creo jajajaj)
  • Tiene un modo que es pantalla dividida (puedes ver tu página actual y en la otra tus favoritos)
  • Es estos inicios lo se puede descargar de forma libre (creo que eso no pasará por siempre)
  • Sus principales programadores son chinos
  • Y bueno se espera que se al sustituto del IE
  • y mucho más…

Así que hay que probarlo.

Un buen libro que habla acerca de SEO(Search engine optimization/Posicionamiento en buscadores)…

Ebooks, Google, Internet 9 de enero del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

SEO es un termino que cada día esta sonando mucho, ya nada más y nada menos, nos ayuda al posicionamiento de nuestro sitio en los buscadores, por lo cual hoy en día hay miles de consejos, herramientas, mejores practicas, etc. etc para mejorar nuestro posicionamiento.

Buscando en Internet me encontré con este libro que habla acerca de como mejorar el SEO en nuestro sitio Web, así que les recomiendo que le echen una hojeada por que la verdad esta muy interesante, por lo menos a mí me esta gustando mucho. Lo mejor de todo es que se puede download gratis.

Aquí el link

seo

seo

Solución del problema: problemas con la PlayStation3: Mi Play Station 3 no enciende???? sólo aparece una luz amarilla, verde y un parpadeo de luz roja???

PlayStation3, Youtube 6 de enero del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

He recibido muchos comentarios buenos y malos, acerca de como solucione el problema de la luz roja (“luz amarilla de la muerte”, etc.)  de la Play Station 3, y bueno la verdad es que no hice un video para demostrarlo ya que lo escribí en este post “problemas con la PlayStation3: Mi Play Station 3 no enciende???? sólo aparece una luz amarilla, verde y un parpadeo de luz roja???” ya tiene tiempo,  afortunadamente hay un video que demuestra que la solución que escribí  es una de las posibilidades,  aquí se los dejo  (esta en inglés pero se entiende lo que se tiene que hacer).

Imagen de previsualización de YouTube

Ammyy es una aplicación que permite conectar dos computadoras por medio de un acceso remoto…

Mac, Seguridad, Software, Windows 3 de enero del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

Hay muchas opciones para hacer esto, pero aquí hay otra y se llama “Ammny“,   es un software que nos permite conectar una computadora con  otra a través de un acceso remoto. Tiene muchas ventajas y una de ellas son:

a) No requiere instalación
b) Es prácticamente compatible con todos los Windows
c) Es gratis, siempre que no se comercialice
d) Máxima seguridad (todas las conexiones van cifradas)
e) etc.

Además de muchas desventajas (a mí punto particular de visto)
a) Conectarse a un servidor externo y que este maneje la conexión, la trasferencia de datos, información, etc. mmm no sé
b) Dice que la seguridad es máxima, mmmm la seguridad no puede garantizar de ninguna forma…

Creo que estas dos son más que suficientes, al menos yo no utilizo este tipo de programas… pero siempre hay necesidad como Windows jajaja.  He probado la aplicación y funciona muy bien, yo seguí estos pasos, en mi caso como no tengo dos computadoras, utilice parallels para correr dos máquinas virtuales de Windows (Windows XP y XP pro)  al mismo tiempo.

1.- Descargas la aplicación de aquí tanto en el cliente como en el servidor (en este caso operador).
2.- Ejecutas el .exe

ammy

ammy

3.- La computadora que va a ser tu “cliente” la conectas al servidor (el servidor de Ammyy) y tomas su userID,  vas al a la computadora que va hacer en este caso el “operador”  e introduces el userID (del cliente) dentro de la aplicación en la pestaña de operador  y la conectas al servidor ( Ammyy)
4.- El servidor (Ammyy)  se encargará de buscar el userID con el cual quieres conectarte, para poder realizar la conexión remota.
5.- Una vez realizada la solicitud de conexión, el cliente recibirá un aviso de que un operador se quiere conectar, y bueno ofrece tres opciones en caso de ser aceptada la conexión.

ammyy

ammyy

6.- Una vez aceptada, se nos abrirá una ventana con la conexión de la computadora cliente.

ammyy

ammyy

7.- Listo!!

Serunix.com les desea FELIZ AÑO 2010!!

Personal 1 de enero del 2010

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

FELIZ AÑO 2010!!!

Bueno, nunca queda de más agradecer a todas aquellas personas que leen este blog y que alguna forma les ayude un poco. Tengo muchos planes, uno de ellos es:

* Hacer un nuevo diseño para el blog
* Queremos llegar a las 1000 visitas
* Espero escribir más post por mes
* y muchas cosas más.

Les deseo un feliz año, les recomiendo que se planteen metas y objetivos, ya que por lo menos para mí son importantes para saber hacía donde vamos.
Yo ya hice mi lista de deseos, así que me voy a preparar para las uvas, cha… che.. etc. jajajaja

GRACIAS POR LAS VISITAS Y LOS COMENTARIOS!!!!

SALUDDDDDDDDD!!!!!

http://www.wikio.es BlogESfera - Directorio de Blogs Hispanos blogarama - the blog directory Mi Ping en TotalPing.com
Internet blogs Programming Blogs - Blog Catalog Blog Directory Internet blogs Buzzear (ES) Publicidad por tu blog con Boosterblog directorio de blogs
Agregar Web - Directorio de webs Directorio webs Directorio Web
Anuncios Gratis Blog Directory Technology Blogs - Blog Rankings

Switch to our mobile site