Comunidad de diseño web y desarrollo en internet

Conectar Flex 3 a Java y MySQL con WebORB

Hola a todos nuevamente, anteriormente hice un tutorial para conectar Flex 3, Visual Basic .NET y SQL Server con WebORB, pero teniendo en cuenta la posibilidad de abrir nuestras mentes y conocer las múltiples alternativas que existen a la hora de hacer una RIA, quise escribir otro tutorial, pero esta vez, conectaremos Flex 3, Java y MySql con WebORB. A continuación detallaré los requerimientos y luego los pasos para que todo salga bien.

Requerimientos:

  • Tener instalado Apache, MySql y php en su computador, recomiendo WAMP server (el cual uso), pero si gustan pueden usar cualquier servidor de su preferencia siempre y cuando cumpla con tener instalado lo que dije.
  • Descargar el Weborb para Java.
  • Descargar e instalar el JDK 1.6 de Java.
  • Instalar el JCreator o cualquier otro IDE para Java, en este caso utilizo el JCreator debido a que es liviano y muy fácil para crear los archivos .jar que necesitaremos.
  • Descargar el Mysql Connector Java, el cual usaremos a la hora de conectar nuestro archivo de Java con la BD de MySql.
  • Tener instalado Adobe Flex obviamente (para que luego no digan que no les avisé).

Procedimiento:

Paso 1: Vamos a crear una Base de datos "prueba" en mysql, la cual tendra 1 tabla con 3 campos: id, nombre y comentarios. Además vamos a insertar 3 registros. A continuación el Script:

CREATE TABLE `prueba` (
 `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
 `nombre` TEXT,
 `comentarios` TEXT,
 PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

INSERT INTO `prueba` (`id`, `nombre`, `comentarios`) VALUES 
(1, 'Jorge', 'no te acerques'),
(2, 'Juan', ':D'),
(3, 'Julio', 'hola :D');

Paso 2: Vamos a crear nuestro archivo .jar el cual usaremos con weborb para la conexión con flex. Para eso abrimos el JCreator que previamente habíamos instalado:


Creamos un Basic Java Application:


Le asignamos un nombre y la ruta a la carpeta donde queremos guardarlo:


Seleccionamos la ruta donde hemos instalado el JDK 1.6, si es que no lo toma por defecto:


En la pestaña de Required Libraries agregamos un elemento nuevo, luego añadimos el archivo mysql-connector-java-5.0.8-bin.jar que descargamos anteriormente. Marcan la casilla del nuevo elemento añadido:


Luego Finish > Finish y se ha creado su proyecto:


A continuación el código que irá en la clase javaclientes:

package flex.javac;

import java.sql.*;

/* Clase para conectarnos a la BD
*/
public class javaclientes {
 static String bd = "prueba";
 static String login = "tuUsuariodeBD";
 static String password = "tuPassword";
 static String url = "jdbc:mysql://localhost/"+bd;

 Connection conn = null;

 /* DbConnection */
 public javaclientes() {
   try{
    //obtenemos el driver para mysql
    Class.forName("com.mysql.jdbc.Driver");
    //obtenemos la conexión
    conn = DriverManager.getConnection(url,login,password);
    if (conn!=null){
      System.out.println("Conección a base de datos "+bd+" OK");
    }
   }catch(SQLException e){
    System.out.println(e);
   }catch(ClassNotFoundException e){
    System.out.println(e);
   }
 }
 /**Permite retornar la conexión*/
 public Connection getConnection(){
   return conn;
 }

 public void desconectar(){
   conn = null;
 }

}

Luego creamos otra clase llamada select:


Aquí el código:

package flex.javac;
import java.sql.*;

public class select {



 flex.javac.javaclientes cn;
 
 public select() {
   cn = new flex.javac.javaclientes();
 }
 
 public Object[][] getClientes(){
   int registros = 0;
   try{
    Statement stm = cn.getConnection().createStatement();
    PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT count(1) as cont" +
      " FROM prueba ");

    ResultSet res = pstm.executeQuery();
    res.next();
    registros = res.getInt("cont");
    res.close();
   }catch(SQLException e){
    System.out.println(e);
   }

   Object [][] data = new Object[registros][2];
   try{
    Statement stm = cn.getConnection().createStatement();
    PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT nombre, " +
      " comentarios " +
      " FROM prueba " +
      " ORDER BY id ");


    ResultSet res = pstm.executeQuery();
    int i = 0;
    while(res.next()){
      String estCodigo = res.getString("nombre");
      String estNombre = res.getString("comentarios");

      data[i][0] = estCodigo;
      data[i][1] = estNombre;
      i++;
    }
    res.close();
   }catch(SQLException e){
    System.out.println(e);
   }
   return data;
 }
}

Ahora creamos el archivo .jar

Vamos al menú Configure>>Options>>Tools y agregamos Create Jar File


Ahora sí podemos crear nuestros archivos .jar fácilmente desde el menú Tools>>Create Jar File o presionando ctrl+1, los archivos se guardan en la carpeta classes ubicada en la carpeta del proyecto.

Paso 3: Luego de descomprimir el Weborb for Java, coloquen la carpeta en la raíz de su partición principal, en este caso yo la tengo en el disco C, de preferencia allí para que sea más fácil acceder a ella.


Luego vamos a editar el archivo weborb.bat que se encuentra en la carpeta bin del weborb, sólo den click derecho Editar, y verificamos que este igual al siguiente:


Luego de editar el archivo weborb.bat, lo ejecutamos y dejamos la ventana del bat abierta, ya que si la cerramos se perderá la conexión con el servidor de java. Ahora ya podemos acceder a la consola del weborb con nuestro navegador tipeando lo siguiente: http://localhost:8070/


Una vez que estamos en la consola de weborb, accedemos a la pestaña de Management y Subimos nuestro jar creado con el botón upload, luego podemos invocar la función getClientes que está dentro de nuestro paquete flex.javac.select y vemos que nos devuelve los valores de nuestra BD:


Paso 4: Ahora les dejo el código de flex con el cual mediante un RemoteObject acceden a la función getClientes, agradezcan porque he sufrido, hay unas diferencias bien duras entre el de .Net y Java, yo pensé que la conexión era igual pero no, así que aquí tienen el código funcionando:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #FFFFFF]" creationComplete="carga();">
 <mx:Label text="Porque nunca me gustaron los ejemplos del tipo HolaMundo!!" horizontalCenter="0" verticalCenter="-141" fontWeight="bold" fontSize="15" color="#3B8603"/>
 <mx:DataGrid horizontalCenter="0" verticalCenter="17" width="234" height="236" id="mydg">
   <mx:columns>
    <mx:DataGridColumn headerText="Nombre" dataField="0"/>
    <mx:DataGridColumn headerText="Comentarios" dataField="1"/>
   </mx:columns>
 </mx:DataGrid>
 
 <mx:RemoteObject id="remoteObject"
        destination="GenericDestination"
        source="flex.javac.select"
        showBusyCursor="true"
        fault="onFault(event)">
        <mx:method name="getClientes" result="getClientes_Result(event)"/>
        </mx:RemoteObject>
 <mx:Script>

   <![CDATA[
    

    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import mx.rpc.*;
    import mx.collections.ArrayCollection;
    import mx.controls.Alert;
    public var cadena:Array;
    
    public function carga():void{
      remoteObject.getClientes();
    }
    public function getClientes_Result(event:ResultEvent):void{
      cadena= event.result as Array;
      mydg.dataProvider=cadena;
    }
    public function onFault(event:FaultEvent):void{
      Alert.show(event.fault.faultString,"error");
    }
 


   ]]>
 </mx:Script>
</mx:Application>

Ahora en el navegador:


Y eso es todo.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate