Despabilando la MonoNeurona::Internet es de todos [Inicio] [Regresar]
Server Side \ Firebird y Java sobre XP
Server Side
Firebird y Java sobre XP

Este artículo ha sido consultado en 2,898 ocasiones.

Desarrollando una aplicación libre con Java sobre Windows XP

Firebird



Si, (hagas lo que hagas) ese día tan cuidadosamente evitado llegará: el día en que te ves en la repugnante situación de desarrollar tu precioso código Java en un equipo Windows XP ¡yaaaacc!, ¡que asco! ¡Pero un momento!, aún cuando estés trabajando en un equipo windows puedes desarrollar aplicaciones libres, en este tutorial se muestra como implementar una página web que muestra registros de una base de datos Firebird usando tecnología java en un sistema Windows XP.

Por supuesto necesitaremos el JDK de SUN para desarrollar en Java. Claro, si es java y es Web debemos descargar Tomcat, Websphere es desesperante en su configuración y los manuales de IBM son poco menos que ilegibles, otra opción de webserver serían Iplanet, pero está escasamente documentado y cada vez se usa menos. También necesitaremos una base de datos, me gusta PostgreSQL, desgraciadamente no hay versión para windows y eso de estarse bajando el cygwin y los dlls y bla, bla, bla... mejor ahí muere. Existe Mysql para Windows, pero no es libre cuando corre en ese sistema operativo así que había que pagar la licencia mmmmm.... no. Pero tenemos una muy buena opción, el chico nuevo del barrio Open Source se llama Firebird, es una versión libre de Interbase, la base de datos de Borland, es portable, flexible y eficiente, descargaremos la versión superserver que tiene algunas mejoras. También necesitaremos su JDBC.

¿A que engañarse?, tu y yo lo sabemos: el MS Explorer renderiza caprichosamente los javascripts, no sigue los estándares del W3C lo cual lo hace caótico y no tiene pestañas (tabs), de modo que hay que abrir una nueva ventana cada vez que quieres ver un link colateralmente. La depuración de javascripts y CSS es mucho más lograda con Mozilla, asi que descargamos e instalamos a nuestra querida super-lagartija.

Un buen editor es necesario para trabajar con java, si se tiene un equipo con buenos recursos se puede instalar Netbeans. En lo personal uso el excecelente editor Jedit, tiene un plugin manager de lo más interesante, en fin, cualquier cosa pero sobreescribe el notepad que viene con windows.

Hace dos años instalar el JDK y Tomcat era un pequeño reto, pero ahora es bastante ñoño con el JDK 1.4 y Tomcat 4.12. Tomcat deber ser instalado en directorio c:\tomcat. Ahora creamos el directorio "firebird" en c:\ y en ese directorio instalamos la base de datos. Iniciamos firebird ejecutando el archivo c:\firebird\bin\ibserver.exe. En Windows 95 y 98 era necesario modificar el archivo c:\windows\services y agregar la linea:

gds_db 3050/tcp # firebird

Esto abría el puerto 3050 para firebird, en versiones posterioes de windows esto ya no es necesario. Para que firebird trabaje bien debemos colocar dos variables de entorno isc_user y también isc_password, para ello en MiPC seleccionamos Propiedades->Avanzadas->Variables y agregamos: isc_user=sysdba isc_password = masterkey y OK. Para saber si las variables ya están en el entorno abrimos una terminal y tecleamos:

C:\>echo %isc_user%

Nos debería de pintar en pantalla sysdba. Si las variables ya están en el ambiente nos cambiamos al directotorio de firebird: C:\>cd firebird\bin . Ahora nos logeamos al programa que maneja los usuarios de firebird, es decir GSEC:

C:\firebird\bin>gsec -user sysdba -password masterkey

Si todo va saliendo bien debemos ver un puntero asi:

GSEC>

Podemos teclear "help" para conocer las opciones de este programa. Ahora creamos el usuario mmontoya:

GSEC>add mmontoya -pw mex99 -fname Manuel -lname Montoya

Donde mmontoya es el nombre del nuevo usuario y mex99 es el password del usuario, la opción -fname se refiere al nombre de pila del usuario mientras -lname es el apellido.

Con el comando "display" vemos los detalles de los usuarios

GSEC>display

Es importante modificar el password del administrador pues todo mundo conoce 'masterkey' y basta un escaneado de puertos con el programa hackeril nmap para que el puerto 3050 delate a Firebird. Asi que:

GSEC>modify sysdba -pw newpass

Y nos salimos del programa:

GSEC>quit

Aqui hay información mas extensa sobre la seguridad y los usuarios en Firebird.

Por supuesto, habrá que modificar nuestra variable de entorno isc_password para darle su nuevo valor.

Con el explorador de Windows creamos el directorio "datos" en raíz de c: Ahora iniciamos la interface SQL de Firebird:

C:\firebird\bin>isql

Nos conectamos la base de datos de ejemplo:

SQL>CONNECT "C:\Program Files\Firebird\examples\Employee.gdb" user 'mmontoya' password 'mex99';

Creamos la base de datos ventas: 

SQL>CREATE DATABASE 'c:\datos\Ventas.gdb';

Ahora creo la tabla usuarios: 

SQL>CREATE TABLE usuarios
SQL>(
SQL>ID integer NOT NULL,
SQL>Nombre VARCHAR(30) NOT NULL,
SQL>Apellido VARCHAR(100) NOT NULL,
SQL>PRIMARY KEY (ID)
SQL>);

Doy permisos al usuario mmontoya  sobre esa tabla:

SQL>GRANT SELECT,DELETE,INSERT,UPDATE ON usuarios TO mmontoya;

Firebird no tiene ese maravilloso tipo serial de PostgreSQL que genera un autoincremento para el index de las tablas, en vez de eso debemos crear un generator que indique a Firebird que se debe agregar un consecutivo al campo ID de la reciém creada tabla usuarios:

SQL>CREATE GENERATOR usuarios_gen;

Coloco el generador usuarios_gen en 1:

SQL>SET GENERATOR usuarios_gen TO 1;

Creo el trigger para el autoincrement con el método GEN_ID( )  de Firebird:

SQL>CREATE TRIGGER usuarios_autoinc FOR usuarios
SQL>BEFORE INSERT AS
SQL>BEGIN
SQL> IF (NEW.ID is NULL) THEN
SQL> NEW.ID = GEN_ID(usuarios_gen, 1); END;
SQL>commit;

Inserto tres registros a mano para comprobar que todo funciona: 

SQL>INSERT INTO usuarios (Nombre, Apellidos) VALUES ('Miguel de Icaza', 'Cerrada del Mono No.128');
SQL>INSERT INTO usuarios (Nombre, Apellidos) VALUES ('Linus Torvald', 'Santo Barbara No. 90');
SQL>INSERT INTO usuarios (Nombre, Apellidos) VALUES ('George W Bush', 'Jerk Park No. 908');

SQL>commit;

También puedo poner todos los comandos SQL en un archivo datos.sql e importarlo desde el prompt asi:

SQL>IN c:\datos\datos.sql;

Si deseamos renombrar una columna la sintaxis es:
ALTER TABLE <tabla> ALTER COLUMN <nombre> TO <nuevo_nombre>;

Bien, ahora descomprimimos el jdbc y colocamos los archivos .jar en C:\tomcat\common\lib, no debemos colocar el directorio lib que se crea al momento de descomprimir el JDBC en C:\tomcat\common\lib, sólo los *.jar. De modo que el directorio queda asi:

Verificamos que Tomcat está activo colocando mozilla en http://localhost:8080/

Colocamos el archivo firebird.jsp en el directorio C:\tomcat\webapps\ROOT:

<%
// Inicio de firebird.jsp
%>
<%@ page import="java.sql.*" %>
<%
out.println("Aqui ya estoy en el JSP!!");

try{
out.println("Entre al try!!");

//Levanto el JDBC
Class.forName("org.firebirdsql.jdbc.FBDriver");

Connection con = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:c:\\datos\\Ventas.gdb", "mmontoya", "mex99");

String Query = "SELECT * FROM usuarios";

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(Query);

//Variables del query
int ID = 0;
String NOMBRE = new String();
String APELLIDO = new String();

while (rs.next()) {
ID = rs.getInt(1);
NOMBRE = rs.getString(2);
APELLIDO = rs.getString(3);
%>

<table align="center" border="1" >
<tbody >
<tr bgcolor="#c0c0c0">
<td align="center" bgcolor="#c0c0c0"> <b> ID </b> </td>
<td align="center" bgcolor="#c0c0c0"> <b> Nombre </b> </td>
<td align="center" bgcolor="#c0c0c0"> <b> Apellido </b> </td>
</tr>
<tr>
<td > <%=ID%> </td>
<td > <%=NOMBRE%> </td>
<td > <%=APELLIDO %> < /td >
</tr>  

<%
}// fin del rs.next

out.println("</tbody> </table>");

// Libero memoria
rs.close();
stmt.close();
con.close();

} //Fin del try

catch(Exception e) {
out.println("El error fue:"+ e +"<br>");
}
out.println("Acabe!!");
//Fin de firebird.jsp
%>

Apuntamos mozilla a http://localhost:8080/firebird.jsp y ya debemos ver nuestra tabla.

El sitio Firebird.com.mx es un buen lugar para conocer más sobre esta excelente base de datos.


Última actualización: 2007-04-29 10:56:59-05



ir arriba
The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework CSS GNU Hacker