JavaFX y JSON

Hola solo escribo este pequeño ejemplo, por que un amigo me pidió que lo posteara en algún blog para futuras consultas..
es de como mandar un objeto Json desde una aplicacion JavaFx a un Servidor, yo uso GlassFish para mis Servlets :)
tiene unos defectillos que leyendo la documentación de la API se corrigen fácil como el caso de la persistencia de la conección y eso pero es solo un ejemplo:

import javafx.io.http.HttpRequest;
import javafx.stage.Alert;
import cliente.util.Global;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.Exception;
import org.codehaus.jettison.json.JSONObject;

/**
 * @author Rodrigo Salado Anaya <xxxxxx.xx@xxxxx.com>
 */

public class Coneccion {

    public function servidorAcceso(usuario: UsuarioBean): Void {
       
        /*atributos*/
        def json = "json=\{id:'{usuario.getId()}', clave:'{usuario.getClave()}'\}";
        def location = "http://{Global.servidor}:{Global.puerto}/servidor/acceso";
        /*coneccion*/
        def request: HttpRequest = HttpRequest {
                    location: location
                    method: HttpRequest.POST
                    /*recibe la informacion*/
                    onInput: function (is: InputStream) {
                        var br: BufferedReader = new BufferedReader(new InputStreamReader(is));
                        var valueJson = br.readLine();
                        br.close();
                        is.close();
                        try {
                            usuario.setId(new JSONObject(valueJson).getInt("id"));
                            usuario.setClave(new JSONObject(valueJson).getString("clave"));
                            usuario.setNombre(new JSONObject(valueJson).getString("nombre"));
                            usuario.setEstado(new JSONObject(valueJson).getBoolean("estado"));
                            usuario.setMensaje(new JSONObject(valueJson).getString("mensaje"));
                            if (not usuario.getEstado()) {
                                Alert.inform("Alerta", "{usuario.getMensaje()}");
                            } else {
                                //Alert.inform("Ok", "{usuario.getMensaje()}");
                                Global.usuario.setId(usuario.getId());
                                Global.usuario.setClave(usuario.getClave());
                                Global.usuario.setNombre(usuario.getNombre());
                                Global.usuario.setEstado(usuario.getEstado());
                                Global.usuario.setMensaje(usuario.getMensaje());
                                /**/
                                var contenidoPersonal = cliente.util.Logica { };
                                contenidoPersonal.obtieneModulos();

                            }
                        } catch (ex: org.codehaus.jettison.json.JSONException) {
                            Alert.inform("ERROR_cliente.ri.acceso_1", "{ex.getMessage()}");
                        }
                    }
                    /*manda la informacion*/
                    onOutput: function (os: java.io.OutputStream) {
                        try {
                            os.write(json.getBytes());
                        } finally {
                            os.close();
                        }
                    }
                    /*al recibir una excepcion*/
                    onException: function (ex: Exception) {
                        Alert.inform("ERROR_cliente.ri.acceso_2", "{ex.getMessage()}");
                    }
                }
        /*inicia el servicio*/
        request.start();
    }

}

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de benek

Cool

Wow! Que bien, creo que este es el primer aporte en forma de JavaFX en la comunidad, ha habido preguntas y discusiones en el foro pero no aportes, que bueno que nos lo compartes. Estaría bien que te aventaras algún artículo introductorio a la tecnología.

Entre los que visitamos la comunidad somos pocos los que tenemos contacto con JavaFX.

¡Saludos!

Javier Ramírez Jr.
http://twitter.com/xbenek

Imagen de Shadonwk

apoyo la idea del tutorial

Hola que tal gracias rodrigo por compartir el ejemplo, la verdad esque yo tambien he estudiado mucho o poco sobre JavaFX sin embargo me desanime mucho por dos razones.

1.- Cuando quise exportar mis ejemplos para que alguien mas los viera simplemente no funcionaba en uno que otro equipo funcionaba en la mayoria no o simplemente no inciaba, comprobe versiones de la maquina virtual y comprobe el jar pero no funciono

2.- Conoci la competencia de JavaFX me refiero a FLEX , aqui pude hacer aplicaciones muy buenas en muy poco tiempo. de echo soy uno de los dos creadores de AprendiendoFlex

Sin embargo si pudieras compartir un tuto de como crear una aplicacion JavaFX y como distribuirla retomo JavaFX ya que en lo personal me encanta java y es una de mis pasiones..

Saludos y vamos a darle duro a Java, JavaFX y sus correspondientes herramientas.

Imagen de rodrigo salado anaya

hombre pues..

pues muchas gracias... de echo si quieren pongo un pequeñisisismo ejemplo de como hacer un ambiente en JavaFx (como crear una aplicación, como usarla(me refiero a las clases creadas), como validarla(a firmarla y bajarla), y como alojarlo en un servido(porsupuesto que jboss o glasfish).. etc), con muchisimos comentarios y me comprometo a responder todas las dudas o agrandarlas jajajaja.... que chido se siente aportar algo bonito para la comunidad.

Shadonwk: creo que el problema de que no puedas usarlo en otras máquinas venga, de que no as firmado el aplet... la verdad tendrías que pasarme bien el código y pues echarle un ojito y ver que tranza con ello... pero bueno si quieres puedes probar esto......... ten cuidado con esto y lee la documentación de esta herramienta... a otra cosa supongo que que en windows a de ser lo mismo... pero en unix/linux tienes que hacer un flush a las firmas anteriores una cosa horrenda, pero no me creas...

rodrigo@xxxx-server-1:~/xx$ keytool -genkey -alias gladisKey -validity 365 -v
rodrigo@xxxx-server-1:~/xx$ jarsigner gladis.jar gladisKey -verbose

gladisKey es la llave.. pon el nombre que mas te guste.., y el *.jar es la aplicación... prueba lo o dime y haber que le hacemos, pero no te desanimes, me atrevo a decir que Javafx va con todo, además e visto por mas de un año que aquí en esta comunidad hay mucho chavo muy listo, así que no les costara nada de trabajo aprenderlo de echo con el tiempo hasta se reían de por que no lo aprendieron antes... jajajaja segun yo no :P.. yo solo se lo poquito que se por el señor Menon, http://blogs.sun.com/rakeshmenonp/ me bajo todos los código y los estudio como zombi, jajaja..

jajajaj ya edite este comentario varias veces pero sabes Shadonwk, también debes de editar los archivos XML y HTML,(*.jnlp, *.jnlp_browser..etc) y colocar la ubicación donde se aloja tu *.jar...
creo y solo eso que en windows es file://C:\xxx\xxx\

<jnlp spec="1.0+" codebase="file:/home/rodrigo/NetBeansProjects/sistema/dist/" href="sistema.jnlp">
Imagen de ecamacho

Gracias! muy buen post +1 a

Gracias! muy buen post +1 a la idea del tutorial. Hace falta mucha doc sobre JavaFX