11.13.2013

WebService Java y JPA

Para todos no es una novedad que netbeans nos provea de herramientas para automatizacion de tareas tan tediosas como el mapedo de datos desde una Base de Datos, para eso se creo JPA con las muy conocidas EntityClasses, las cuales permiten tener un objeto de JAVA que representa una tabla, es decir:


create table sampe (
   idTabla int not null,
   someText varhcar(50),
   someDate timestamp
);

lo que en JAVA representaria, esto aun no es JPA:

public class Sample{

private int idTabla;
private String someText;
private Date someDate;

}

Para que la clase sea totalmente compatible con JPA se utiliza la notacion JAXB, pero bueno para eso no es la entrada si quieren leer un poco mas de JPA pueden echarle una revisada a este documento de oracle:
http://docs.oracle.com/javaee/6/tutorial/doc/bnbpz.html


Bueno, lo cierto es que para trabajar con WebServices es necesario tambien tener una notacion para que el contenedor de aplicaciones o servidor o como lo quieran llamar pueda interpretar lo que tiene este, algo como:


@WebService(serviceName = "GestorSample")
public class GestorSample {

/***El metodo del webservices***/
@WebMethod(operationName = "impSample")
    public String impLicencia(@WebParam(name = "sampleOBJ") Sample sample) throws Exception {
        System.out.println(sample);
}
}
Listo, ese seria el mejor ejemplo con el WebService, pero si nos damos cuenta esa seria la clase que se crearia apartir de JPA, la cual ya tendra una notacion JABX por lo cual al momento de generar el descriptor XML del WebServices generara un error y lo mas probable es, que el objeto llamando sample no llegue, llegara un null lo cual pondra en tela de juicio nuestra creacion del webServices. Dado esto no lei mucho, pero supuse lo siguiente si el objeto que esta como parametro del webservices tiene ya una notacion JABX sera que tiene problema con la notacion de JABX del webservices y si que realmente tienen un conflicto puesto que las notaciones llegan a confundir la generacion del WebServices y genera inconsistencias imperceptibles, pero bueno eso me paso y lo unico para hacer es crear una clase con los atributos iguales a los del JPA y para que sea de reconocimiento ponerle algo como ClassNoJPA para no confundirse con las clases reales de persistencia.


Listo, los dejo con eso que les rinda!!