Web Service y Web Service Client en NetBeans 6.0

domingo, 14 de octubre de 2007
Siguiendo con el tutorial, ahora toca hacer un Web service para proporcionar servicios asociados al ingreso sobre la base de datos que ya creamos con anterioridad y crear un Web service client para consumir dichos servicios.

Sin mas preámbulo crearemos un web service, para ésto haremos click derecho sobre el proyecto -> new -> web service ...


ingresamos un nombre, en este caso MisWebServices y nos fijamos que el package sea org.servidor ...


luego veremos lo siguiente ...


pinchamos add operation para crear un servicio, en Name colocamos el nombre del servicio que corresponde a un web method, que en éste caso retornará un dato de tipo String y recibirá un parámetro que corresponde al rut del usuario y es de tipo String ...


luego agregamos otro servicio y lo nombramos pagarDeuda el cual retorna un objeto de tipo String y recibe dos parámetros de tipo String, rut y monto ...


luego creamos un tercer servicio y lo nombraremos obtenerUsuario el cual retornará un objeto de tipo UsuarioBean y recibe como parámetro el rut del usuario de tipo String ...


Ya tenemos declarados los web services, pero aún no están implementados. Si se fijan en la pantalla donde agregaron las operaciones o servicios hay dos opciones, una es Design y la otra es Source, si pinchan Source verán el editor de la clase con los métodos creados anteriormente pero sin implementación, es ahí donde ustedes pueden llamar a la clase ConexionBDDataSource que habiamos creado anteriormente y agregar la lógica que corresponda para manejar los datos ingresados por el usuario y consultar a la base de datos y responderle al usuario. Lo que yo recomiendo es crear una capa de lógica intemedia que se encargue de hacer las validaciones correspondientes (que el usuario exista, que tenga deuda, que no pague cero pesos, etc.) y de esa forma el diseño queda en multicapas y es mas facil después para cambiar alguna cosa y que su sistema sea adaptable a dicho cambio (flexible, escalable, etc.). Por ahora no voy a entrar en detalles sobre eso ...


Ahora toca crear un web client y para éste ejemplo usaremos el mismo proyecto, haremos click derecho sobre el proyecto -> new -> web service client ...


luego seleccionamos la primera opcion (project), pinchamos browse y seleccionamos el web service que ya habiamos creado antes ...


ahora solo resta comenzar a llamar a los servicios expuestos a través del web service usando el web service client, esto se puede hacer en una aplicación web tanto como en una aplicación de escritorio, no entraré en detalles de como crear una página web en java (jsp) pero diré que en tanto tengan una simplemente hacen click derecho sobre ésta y verán la opción Web service client resource -> call web service operation ...


ahí podrán ver los servicios expuestos en el web service ...


al seleccionar un servicio, automáticamente se les creará un pedazo de código que se encargará de obtener el servicio por ustedes y solo necesitarán implementar lo que corresponda al resultado de obtener algo del servicio según corresponda, en éste caso llamamos al servicio obtenerUsuario ya que estamos en la página que valida al usuario (para iniciar sesión) ...


y con eso ya tenemos cubierto el tema de web service y web service client, como ven con NetBeans es simplemente hacer un par de clicks y ya está, sin necesidad de registrar lineas en archivos XML ni nada, lo hace por nosotros y solo nos preocupamos por la implementación, que es lo mas importante al momento de desarrollar. A continuación les dejo unas capturas del sistema completo y corriendo (con la implementación de los web service, una capa extra de lógica en el servidor y con todas las páginas web hechas) ...







Este sistema es multicapas, 3 capas y cada una subdividida en algunas capas mas, de esa manera obtenemos un mejor diseño y un sistema que es capaz de adaptarse a cambios sin necesidad de rehacer todo el sistema. Si bien es solo un ejemplo pequeño el cual no amerita tantas capas, quize hacerlo así para mostrarles como se hace y compartirlo. Espero les haya sido de utilidad.

PD: SORPRESA !!, si, les tengo el codigo fuente, así pueden ver lo que no se dijo (capa lógica, paginas jsp e implementación de los web services).

saludos !!!


EDITADO!!!

Subí el código a un servidor para que puedan hacer la descarga sin necesidad de enviarme sus correos (así no tienen que esperar a que yo lea el correo para rebotarlo a ustedes), si tienen problemas para la descarga seguimos con el método tradicional del correo electrónico.

Descarga

saludos !!!

Acceso a Derby BD usando DataSource en NetBeans 6.0

Siguiendo con el tutorial llegamos al paso 3, ahora toca generar unas clases para acceder a la base de datos usando un datasource en NetBeans 6.0.

Comenzaremos por crear una Interface java, en la cual declararemos unos métodos que se implementarán luego en una clase java, la idea de usar una Interfaz es mantener un buen diseño del sistema, ya que podríamos querer conectarnos a distintas bases de datos y usar los mismos métodos pero implementarlos de distinta forma, luego desde algun cliente llamar a los mismos métodos sin importar la implementación de éstos. También podríamos conectarnos a la misma base de datos de distinta forma, por ejemplo sin usar un datasource y conectarnos directamente.

Bueno, manos a la obra. Lo primero es crear una java interface, para esto hacemos click derecho sobre el proyecto -> new -> java interface ...


le ponemos un nombre como el que sale en la imagen (InterfaceConexionBD) y nos aseguramos que quede en el package correspondiente (org.servidor) ...


luego definimos los metodos que implementaremos en una clase java, fijense que estamos importando una clase que aún no hemos definido, no se preocupen por eso aún, luego lo haremos. Esa clase la usaremos para manejar la sesión del usuario ...


ahora toca crear la clase UsuarioBean, la cual usaremos para manejar la sesión de usuario, para eso hacemos click derecho sobre el proyecto -> new -> java class, le ponemos como nombre UsuarioBean y nos aseguramos que quede en el package org.cliente ...


luego creamos los atributos rut, nombre, apellidoPaterno, apellidoMaterno, todos de tipo String, creamos los métodos get y set e implementamos Serializable para poder aplanar el objeto UsuarioBean para su envio por la red. Para crear los metodos set y get basta con hacer click derecho sobre el editor de la clase -> insert code -> getter and setter, seleccionan todas las opciones y listo ! ...


ahora crearemos una clase para acceder a la base de datos usando el data source, hacemos click derecho sobre el package org.servidor -> new -> java class y ponemos de nombre ConexionBDDataSource ...


luego en el editor de la clase implementamos de la interfaz InterfaceConexionBD e implementamos todos los métodos, luego hacemos click derecho sobre el editor -> Enterprise resources -> Use database ...


ahora en reference pinchamos add y seleccionamos el datasource que ya habiamos creado anteriormente ...


y con eso verán que se ha agregado un método que devuelve un objeto de tipo DataSource ...


ahora agregamos un método para conectarnos usando el DataSource devuelto por el método anterior y un objeto de tipo Connection ...


ya con eso estamos listos para implementar los demas métodos y obtener lo que necesitamos desde la base de datos Derby ...






y con eso ya estamos listos, tenemos la conexión a la base de datos derby hecha y sin problemas, muy fácil usando NetBeans 6.0. Ahora solo falta ver como usar web services para terminar con el tutorial.

saludos !!!

Connection pool y DataSource en NetBeans 6.0

sábado, 13 de octubre de 2007
Siguiendo el tutorial comenzamos con el paso 2 del mismo, ya tenemos la conexión a la base de datos desde NetBeans 6.0 y ahora crearemos un connection pool y un data source para acceder a la misma. Si estás perdido y no entiendes de que estoy hablando puedes ver la siguiente entrada donde explico las razones de usar un connection pool y un data source.

Para comenzar debemos crear una web application ...


Le ponemos de nombre SistemaSII y dejamos las demas opciones por default ...


luego hacemos click derecho sobre nuestro proyecto -> new -> other ...


luego marcamos "Glassfish" y a su derecha "JDBC Connection Pool" ...


luego colocamos un nombre en la entrada "JDBC Connection Pool Name" como ven en la imagen ...


y ya está, ahora crearemos un data source, para eso vamos donde mismo elegimos el anterior pero esta vez elegimos "JDBC Resource" ...


luego seleccionamos el connection pool que creamos anteriormente y le damos un nombre a nuestro data source como ven en la imagen ...


Unav vez listo eso, vamos a la carpeta WEB-INF de nuestro proyecto y abrimos el archivo web.xml, pinchamos references y luego add ...


Aqui deben ingresar el MISMO nombre del datasource que habian creado anteriormente ...


luego pinchen XML y verifiquen que la referencia se hay escrito como corresponde, de no ser así lo ingresan a mano como se ve en la imagen ...


luego abran el archivo sun-web.xml, pinchen Enviroment y fijense que la entrada JNDI Name sea la misma que la entrada que esta sobre ésta ...


luego ejecuten el servidor de aplicaciones glassfish desde Services y hagan click derecho sobre su proyecto y pinchen Undeploy and Deploy, eso registrará el connection pool y el datasource en el servidor de aplicaciones ...


Ya terminamos la segunda parte del tutorial, tenemos una base de datos y una conexión a través de un data source ... ahora falta crear las clases java necesarias que referencian al data source y los web services.

saludos !!!

Conexion Derby DB en NetBeans 6.0

He decidido hacer un tutorial de un ejemplo de una pequeña aplicación que permitirá a un usuario pagar una deuda al Servicio de Impuestos Internos (SII) a través de un portal, dicho portal permitirá consultar la deuda y pagarla, asi como manejar sesiones. Esto es solo un ejemplo ficticio para mostrar algunas tecnologías que rodean a java, para ello usaremos como base de datos a derby, para conectarnos usaremos un connection pool y un datasource, como cliente usaremos una aplicación web y para acceder a la base de datos desde el cliente usaremos web services. Este tutorial estará dividido en 4 partes, las mencionadas anteriormente, e irán cada una en una entrada diferente para no hacer taaan extensa una sola entrada.

Requisitos:

Dicho y hecho nos vamos por la primera parte, la conexion a la base de datos derby.

Lo primero es ejecutar Netbeans 6.


luego ejecutamos derby db ...


luego creamos una base de datos ...


luego ingresamos un nombre a la base de datos, en este caso SistemaSII, un usuario y una contraseña ...


Ahora debemos conectar netbeans a nuestra base de datos, para esto simplemente hacer click en la pestaña services -> databases, ahi hacer click derecho en la conexion que acabamos de crear y pinchamos connect ...


se nos pedirá el nombre de usuario y contraseña, simplemente los ingresamos ...


Ahora crearemos una tabla, para esto pinchamos la conexion, y veremos una carpeta que dice "Tables", hacemos click derecho -> create table ...


Ahora ingresamos el nombre e la tabla y los atributos como se especifica en la imagen a continuación ...


Ahora que tenemos la tabla creada podemos ingresar datos a ella, para esto hacemos click derecho sobre la tabla y pinchamos "execute command"...


con lo anterior se nos mostrará un editor en el cual podemos insertar codigo SQL, insertamos un par de filas y ya estamos listos con la base de datos ...


Como pudimos ver, crear una conexión con Derby DB es muy simple de hacer con NetBeans 6.0, en los siguientes capítulos veremos como usar un connection pool y un data source para acceder a la base de datos desde nuestra aplicación, como acceder desde nuestras clases java mediante el data source, exponer servicios con web service y consumir desde un cliente web service, todo en una aplicación ...

saludos !!!