Objetivo: guardar un registro en base de datos desde un Stateless Session Bean utilizando JDBC.
Este es el código al que se quiere llegar:
package com.andres.beans;
import java.sql.Connection;
import java.sql.Statement;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.sql.DataSource;
/**
* Session Bean implementation class BidManagerBean
*/
@Stateless
@LocalBean
public class BidManagerBean implements BidManager {
@Resource(name = "jdbc/pruebasmysql")
private DataSource datasource;
private Connection connection;
@PostConstruct
public void initialize() {
System.out.println("inicializando recursos de db");
try {
connection = datasource.getConnection();
if (connection == null) {
System.out.println("no se obtuvo la conexion");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Default constructor.
*/
public BidManagerBean() {
// TODO Auto-generated constructor stub
}
public void addBid() {
System.out.println("agregando bid");
try {
Statement statement = connection.createStatement();
statement.execute("insert into bids values (null, 34)");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Para utilizar el datasource de conexiones es necesario configurar el servidor glassfish.
1. Agregar driver de conexión a mysql
2. Configurar datasource.
1. Agregar driver de conexión a mysql
Antes de agregar el driver, el servidor debe ser detenido.
En algunos sitios he visto que agregar el driver de conexión de mysql en la carpeta lib del directorio de instalación de glassfish. Sin embargo, o por lo menos en mi caso, esto es incorrecto. El driver de conexion debe agregarse a la carpeta ext del dominio. La ruta sería similar a esta:
[directorioInstalacionGlassfish]/domains/domain1/lib/ext
Luego de copiar el jar en esta ruta, se inicia el servidor.
2. Configurar datasource.
La configuración del datasource se hace desde la consola de administración de Glassfish, que por defecto está en el puerto 4848 (
http://localhost:4848/common/index.jsf). Allí se selecciona la opción Resources - JDBC.
Luego, seleccionar JDBC Connection Pools y la opción para crear un nuevo pool de conexiones.
Para este ejemplo el pool queda configurado con los siguientes datos:
Pool Name: pruebasmysql
Resource Type: javax.sql.ConnectionPoolDataSource
Database Driver Vendor: MySql
En la siguiente pantalla solo es necesario configurar algunos parámetros:
User: root
Port: 3306
Password: [password]
URL: jdbc:mysql://localhost:3306/pruebas
Guardar el datasource y hacer ping para verificar que la configuración fue exitosa.
Luego de esta configuración, se puede probar el código presentado.