Construyendo Una Aplicación Con JavaFX y Java EE 7
Construyendo Una Aplicación Con JavaFX y Java EE 7
Construyendo Una Aplicación Con JavaFX y Java EE 7
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/javafx...
Propsito
Este tutorial abarca el construir una aplicacin de escritorio con JavaFX 2.0 y Scene Builder. Adems de cmo construir un servicio web RESTful que provea la informacin a la aplicacin de escritorio.
Introduccin
JavaFX es una herramienta que permite a los desarrolladores crear aplicaciones de las llamadas rich internet applications (RIAs). JavaFX est diseada para proveer una plataforma ligera y acelerada de grficos para aplicaciones de negocio empresariales, al mismo tiempo que permite a los desarrolladores crear sus aplicaciones completamente en el lenguaje de programacin Java. En este tutorial hars y aprenders lo siguiente: Del lado del servidor: 1. Crear un servicio web RESTful que se conecta a una BD para extraer la informacin que publicar como servicio web. Para esto crears adems del servicio web una entidad Customer y un EJB CustomerFacade para obtener los datos de la base de datos. 2. Correr el servicio web localmente Del lado del cliente: 1. Crear la UI usando Scene Builder de la aplicacin 2. Crear la lgica de la aplicacin al crear varias clases de ayuda como la clase Customer, la clase CustomerMessageBodyReader que har el parsing de la informacin JSON (utilizando la nueva API en Java EE7) recibida del servicio web. Adems de la clase SampleController , clase que concentra la lgica de la aplicacin y que utiliza el nuevo cliente de REST de Java EE7 para comunicarse con el servicio web.
Prerrequisitos
Antes de iniciar este tutorial, tu deberas: Tener JDK 7 instalado. Tener JavaFX Scene Builder instalado. Haber instalado NetBeans 7.3 con Java EE 7 incluyendo GlassFish 4.0 y asegurarse que est abierto y corriendo.
En esta seccin crears un servicio RESTful que provea la informacin a la aplicacin de escritorio.
Creando el Proyecto
1. En NetBeans, selecciona File > New Project.
2. En la ventana New Project, realiza los siguientes pasos: a. Selecciona Java Web en Categories. b. Selecciona Web Application en Projects. c. Haz click en Next.
1 de 8
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/javafx...
3. En la ventana New Web Application, introduce ServerSide como el nombre del proyecto y haz click en Next.
2 de 8
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/javafx...
2. En la ventana New File, realiza los siguientes pasos: a. Selecciona Persistence en Categories. b. Selecciona Entity Classes from Database en File Types. c. Haz click en Next.
3 de 8
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/javafx...
3. En la ventana New Entity Classes from Database, realiza los siguientes pasos: a. Selecciona jdbc/sample en Data Source. Esta es la BD de ejemplo que ya viene en NetBeans por default. b. Selecciona la tabla CUSTOMER en Selected Tables. Esta es la nica tabla de la BD que se usar. c. Asegrate que la casilla Include Related Tables no est seleccionada. CUSTOMER inicialmente est ligada con otras dos tablas: DISCOUNT_CODE y MICRO_MARKET, pero no las usaremos en este caso. d. Haz click en Next.
4. En la ventana New Entity Classes from Database, realiza los siguientes pasos: a. Introduce com.samples.entity en Package. b. Asegrate que las primeras dos casillas no esten seleccionadas. No se usarn ni Named Queries ni JAXB en este caso. d. Haz click en Finish.
4 de 8
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/javafx...
Despus de este paso NetBeans crea la clase entity Customer.java dentro de la carpeta com.samples.entity:
3. En la ventana New RESTful Web Services from Patterns, haz click en Next.Vamos a utilizar la opcin por default: Simple Root Resource. 4. En la ventana New RESTful Web Services from Patterns, realiza los siguientes pasos: a. Introduce com.samples.rest en el campo Resource Package. b. Introduce customer en el campo Path. c. Introduce CustomerREST en el campo Class Name. d. Selecciona application/json en MIME Type. e. Haz click en Finish.
5 de 8
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/javafx...
Despus de este paso NetBeans crea la clase CustomerREST.java dentro de la carpeta com.samples.rest. Adems crea la clase ApplicationConfig.java, dentro de la misma carpeta. 5. En la clase CustomerREST introduce el siguiente cdigo: @Inject private CustomerFacade customerFacade;
Presiona Ctrl+Shift+I para resolver los imports que se necesitan. Sin embargo en este punto la clase CustomerFacade an no se puede resolver, ya que se crear en un paso mas adelante. 6. En la misma clase CustomerREST, realiza lo siguientes cambios al mtodo getJson, adems de agregar un nuevo mtodo llamado findByName: @GET @Produces({"application/json"}) public List<Customer> getJson() { return customerFacade.findAll(); } @GET @Path("/search/{name}") @Produces({"application/json"}) public List<Customer> findByName(@PathParam("name") String name) { return customerFacade.findByName(name); }
Presiona Ctrl+Shift+I para resolver los imports que se necesitan. 7. Haz clic derecho en la carpeta com.samples.rest y selecciona New > Other... 8. En la ventana New File, realiza los siguientes pasos:
6 de 8
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/javafx...
9. En la ventana New Session Bean, introduce CustomerFacade en el campo EJB Name y haz click en Finish.
NetBeans crea un bean Stateless en el proyecto, es decir, un bean que no mantiene un estado. Este bean ser la interfaz con la base de datos y sus operaciones. 10. Agrega el siguiente cdigo a CustomerFacade: @PersistenceContext(unitName = "ServerSidePU") private EntityManager em; public List<Customer> findAll() { return em.createQuery("select c from Customer c").getResultList(); } public List<Customer> findByName(String name) { return em.createQuery("select c from Customer c where UPPER(c.name) LIKE :custName"). setParameter("custName", "%" + name.toUpperCase() + "%").getResultList(); }
7 de 8
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/javafx...
En este archivo, se crea un EntityManager que se asocia con un Persistence Context y un Persistence Unit (PU) denominado ServerSidePU. El PU est definido en el archivo persistence.xml. Se crean adems dos mtodos: findAll y findByName. El primer mtodo regresa todos los datos de la tabla Customer y el segundo regresa solo los nombres que coincidan con el parmetro enviado. 11. Es momento de ejecutar el servicio web. Haz clic derecho en el proyecto y selecciona Run.
GlassFish empieza a correr y el proyecto es instalado en GlassFish. Una ventana del explorador se abre. con la direccin http://localhost:8080/ServerSide. 12. Escribe la siguiente direccin en el explorador que se abri al correr en proyecto en el paso anterior: http://localhost:8080/ServerSide/webresources/customer.
Al introducir esta URL en el explorador se invoca el mtodo getJson() de CustomerREST. 13. Escribe la siguiente direccin en el explorador: http://localhost:8080/ServerSide/webresources/customer/search/John.
Al introducir esta URL en el explorador se invoca el mtodo findByName() de CustomerREST, envindole como parmetro el nombre de John para su bsqueda.
8 de 8