miércoles, 6 de noviembre de 2013

Publicar web service en Eclipse con conexion a Oracle

Requisitos:
-Eclipse
-JDBC
-Apache Tomcat

Hay dos formas de realizar un webservice: Top down y Bottom up. En este post les daré un ejemplo utilizando la forma Bottom up, que significa que generaremos el WSDL a partir de un método en Java. Para ello abrimos Eclipse y seleccionamos la opción File->New->Other->Web->Dynamic Web Project.



  
Escribimos un nombre para nuestro proyecto, en este caso Ejemplo_webService. Seleccionamos Apache Tomcat en Target runtime y damos click en Finalizar.


Para que nuestro webservice pueda conectarse a oracle, es necesario agregar el jdbc a nuestro classpath. Puedes descargar la versión adecuada del jdbc según tu base de datos aqui, o si ya tienes instalado el cliente de oracle, simplemente lo ubicas en la carpeta jdbc de tu instalación.
Para asignar el jdbc al classpath debes dar click derecho sobre el proyecto->Properties, Seleccionar la pestaña Java Build Path, Selecciona Libraries y Add External JARs.



Lo siguiente que debemos hacer es crear un paquete, para ello, damos click derecho en el proyecto->New->Package. Escribimos un nombre para nuestro paquete, en este caso  com.oraclecon

 

 
Una vez creado nuestro paquete java, solo nos falta crear nuestra clase en java que contendrá el código que generará el webservice, para ello damos click derecho sobre nuestro paquete->New->Class. Asignamos un nombre para nuestra clase, en este caso Oracle_conexion

 

Pega el siguiente código en el archivo generado:


package com.oraclecon; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @WebService() public class Oracle_conexion { private static final String driver = "oracle.jdbc.driver.OracleDriver"; private static final String database = "jdbc:oracle:thin:@//localhost:1521/SID"; private static final String usuario = "usuario"; private static final String password = "password"; private static String resultado; /** * Web service operation */ @WebMethod(operationName = "obtieneDepto") public static String obtieneDepto(@WebParam(name = "empleado") String empleado) throws SQLException { Connection conn = null; PreparedStatement preparedStatement = null; String query = "SELECT DEPARTAMENTO_ID FROM DEPARTAMENTO WHERE EMPLEADO ='" + empleado + "'"; try { conn = conexionbd(); preparedStatement = conn.prepareStatement(query); ResultSet rs = preparedStatement.executeQuery(); resultado = rs.getString(1); } catch (SQLException e) { System.out.println(e.getMessage()); } finally { if (preparedStatement != null) preparedStatement.close(); if (conn != null) conn.close(); } return resultado; } private static Connection conexionbd() { Connection conexionbd = null; try { Class.forName(driver); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } try { conexionbd = DriverManager.getConnection(database, usuario, password); return conexionbd; } catch (SQLException e) { System.out.println(e.getMessage()); } return conexionbd; } }


El código nos indica que nuestro webservice se conectará a una base de datos oracle (debes cambiar los campos de SID, usuario y password por los tuyos propios), recibirá un string como parámetro que contendrá el nombre del empleado y retornará el nombre del departamento a donde pertenece.

Para generar el webservice damos click derecho sobre nuestro java class->Web Services->Create Web Service.
En la opción Web Service Type seleccionamos Bottom up Java Bean Web Service, subimos las dos barras hasta la opción Test Service y Test Client respectivamente y chequeamos la opción Publish the Web Service. Clickeamos en Finalizar para que Eclipse genere el webservice.



Se abrirá la pestaña Web Services Test Client, con la URL del webservice generado donde podrás ejecutar los métodos públicos de tu web service, en este caso, el método obtieneDepto()



Más adelante postearé cómo consumir un webservice en Java.
Puedes descargar este proyecto en github.