Payara para principiantes: Integrando Payara Server con Oracle 11g XE

Photo of Matthew Gill by Matthew Gill

La mayoría de las aplicaciones web modernas necesitan alguna manera de almacenar datos en una base de datos. Generalmente, Oracle proporciona la mejor solución de RDBMS en lo que respecta a seguridad, soporte y escalabilidad. Oracle XE es la versión más adecuada para desarrolladores para proyectos pequeños o personales, y además debería ser compatible con la versión completa de la base de datos Oracle. Esta guía te adyudará a configurar tanto Oracle XE y Payara Server.

 

 You can also read this blog in English here. 

 

En esta guía voy a asumir que estás utilizando Ubuntu. Ubuntu no es un sistema operativo soportado por Oracle, por lo que es más difícil de instalar y no obtendrás soporte para él por parte de Oracle. Esto no debería ser un problema ya que esta instalación de Oracle será utilizada con el proposito de hacer pruebas, y Ubuntu es un entorno de desarrollo muy popular. En un entorno de producción recomiendo firmemente que utilices uno de los sistemas operativos soportados en la lista ofrecida en la documentación de Oracle.

 

Instalar Oracle XE está fuera del propósito de este blog, pero de ninguna manera es un proceso fácil. Si tienes problemas instalando Oracle XE, sería recomendable leer uno o ambos de los siguientes tutoriales:

Creando un usuario en Oracle XE

Deberías tener Oracle instalado correctamente si eres capaz de ejecutar (como el usuario Oracle):

 

sqlplus / as sysdb

 

Si aún no lo has hecho, crea un usuario para acceder a la base de datos. Esto se debe a que permitir que cualquier persona, exceptuando al administrador, use dicho usuario que posee todos los privilegios de acceso es considerado como una mala practica. Crea un usuario desde sqlplus de la siguiente manera:

 

CREATE USER username IDENTIFIED BY password;

GRANT connect,resource TO username;
 

Por supuesto, en tu entorno, necesitarás reemplazar "username" y "password" con las credenciales que desees utilizar para tu usuario. Es posible que en este punto te encuentres con errores, asi que si lo haces, es recomendable que elimines la instalacion de Oracle como se describe en el primer articulo enlazado y procedas a reinstalar usando alguna de las otras guias recomendadas. Si todo ha sido ejecutado correctamente, deberías ser capaz de utilizar sqlplus para iniciar sesión en tu base de datos utilizando uno de los siguientes formatos:

 

sqlplus #Escribir usuario y contraseña cuando sean requeridos

sqlplus username/password@localhost
 

Configurando Payara Server para conectar con Oracle XE

 

1. Añadir el JAR del controlador JDBC a Payara Server

Ahora que Oracle XE está apropiadamente configurado, es necesario configurar como acceder a la base de datos en Payara Server. JDBC es la API de Java para acceder a bases de datos, y requiere un controlador específico del proveedor para acceder a a base de datos correctamente. Descarga el controlador JDBC específico de Oracle aquí; El JAR que utilizaremos es ojdbc6.jar. Una vez descargado, este JAR debe ser copiado en el fichero 'payara41/glassfish/domains/domain1/lib/ext'. En caso de que el servidor ya se encuentre en ejecución, puedes reiniciarlo con 'bin/asadmin restart-domain'.

 

2. Crear el pool de conexiones

Ahora necesitas crear un "pool" de conexiones. Tanto la creación como destrucción de conexiones JDBC son procesos costosos, por lo que queremos hacerlo lo menos posible. Payara Server utiliza "piscinas" o "pools" de conexiones que permiten su reuso. Crea un nuevo pool de conexiones bajo ResourcesJDBCJDBC Connection PoolsNew.

 

Oracle XE Blog 1.png

 

Completa el formulario como se muestra arriba. Para el propósito de esta guía he nombrado a este pool OraclePool. Haz click en el botón Next.

 

Oracle XE Blog 2.png

 

 

3. Verificar que la clase de la fuente de datos (DataSource) es 'oracle.jdbc.pool.OracleDataSource'

 

Si no se muestra como en la imgen, es posible que el controlador haya sido copiado en la carpeta errónea, o que olvidaras reiniciar el dominio. Si es así, no te preocupes, puedes crear el pool de conexiones de todas maneras, y reiniciar el servidor antes de probar la conexión.

 

Oracle XE Blog 3.png

 

Al final de la página, rellena los siguientes campos:

  • username - el que hayas utilizado para crear el usuario de la base de datos (no el usuario GNU/Linux que lo utiliza)
  • password - como con el nombre de usuario
  • url - jdbc:oracle:thin:@localhost:1521:xe
    Si configuras otro puerto para ser utilizado por la base de datos, deberás reemplazar "1521" con ese puerto.

Una vez que hayas terminado y hecho click en el botón Finish, selecciona el pool de conexiones recien creado y haz clic en el botón Ping. Si todo ha sido configurado correctamente, deberías obtener un mensaje de éxito como se muestra a continuación.

 

Oracle XE Blog 4.png

 

4. Creando el recurso JDBC

Ya que tienes un pool de conexiones configurado, asi que para empezar a utilizarlo en tu código, necesitas crear un recurso JDBC para acceder a el con la anotación @Resource.

 

a. En la consola de administración, ir a ResourcesJDBCJDBC ResourcesNew.

b. Selecciona un nombre JNDI, y asignale el tipo del pool de conexiones que acabas de crear (OraclePool para nuestro ejemplo). El nombre JNDI es el nombre que vas a utilizar cuando haces referencia al recurso en tu código. El formato estándar es  'jdbc/<NOMBRE>'. Yo he elegido el nombre jdbc/oracledb.

 

Ahora has enlazado correctamente a Payara Server y Oracle! Tu código JDBC debe funcionar ahora con tu instalación Oracle.

 

5. Utilizar el recurso en el código!

Aquí puedes ver un ejemplo sencillo de como acceder directamente al recurso que hemos creado:

  • @Resource(lookup = "jdbc/oracledb")
    DataSource ds;
     
    protected void testConnection(){
            try (Connection conn = ds.getConnection();
                  PreparedStatement stmt = conn.prepareStatement("Select 1 from dual"); ) {
                out.println("Executed test Oracle DB statement and got: " + stmt.execute());
            }
        }   catch (SQLException ex) {
                Logger.getLogger(SelectServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

 

Un ejemplo más completo que utiliza una fuente de datos está disponible en nuestro repositorio de Ejemplos de Payara, bajo Payara-Micro/datasource-example, aunque este ejemplo es algo diferente: utiliza una base de datos MySQL y configura el recurso JDBC en el momento del despliegue.

 

 

Payara Server Basics  Articles Series

 

 

 

Comments