Академический Документы
Профессиональный Документы
Культура Документы
construccin de una
aplicacin Java EE6
con interfaz JavaFX2
que invoca
componentes EJB
expuestos como
servicios REST
POR:
JULIAN
CAMILO
ORTEGA
MUOZ
2013
INTRODUCCION
Este
tutorial
tiene
como
propsito
ensear
el
acoplamiento
entre
las
tecnologas
JavaFX2
y
JavaEE6
con
servicios
web
basados
en
REST.
Se
mostrara
el
proceso
de
acoplamiento
desde
la
misma
instalacin
de
programas
hasta
la
interaccin
del
usuario
con
el
programa
y
los
componentes
adicionales
que
se
necesitan
para
realizar
una
aplicacin
empresarial
en
estas
tecnologas.
Es
importante
tener
un
estndar
en
la
realizacin
de
este
tipo
de
aplicaciones
y
entender
como
funcionan
estos
protocolos
de
comunicacin
con
estas
tecnologas.
Espero
sea
de
gran
ayuda
y
funcione
para
realizar
grandes
aplicaciones
empresariales
en
estas
tecnologas.
2
TUTORIAL JAVAFX2-JAVA
EE6- REST
Tabla
de
contenido
INTRODUCCION
..............................................................................................................
2
1.
INSTALACION
Y
CONFIGURACIN
DE
HERRAMIENTAS
DE
SOFTWARE
.........................
4
1.1
NETBEANS
7.3.1
+
JDK
7u25
.............................................................................................................................
4
1.2
PostGreSQL
9.2.4
.....................................................................................................................................................
5
1.3
CONFIGURACION
PARA
WINDOWS
7
...........................................................................................................
6
1.4
JAVAFX
SCENE
BUILDER
1.1
.............................................................................................................................
7
1.5
ACOMPLAMIENTO
JAVAFX
SCENE
BUILDER
Y
NETBEANS
................................................................
8
1.6
LIBRERA
PARA
DIALOGOS
FLOTANTES
EN
JAVAFX
2
.........................................................................
9
2.
REALIZACIN
DEL
DEMO
JAVA
EE6
CON
INTERFAZ
JAVAFX2
WEB
SERVICES
CON
PROTOCOLO
DE
COMUNICACIN
REST
.........................................................................
10
2.1
CREACIN
DE
LA
BASE
DE
DATOS,
DE
SUS
TABLAS
Y
REGISTRO
DE
SU
CONEXIN
EN
NetBeans.
........................................................................................................................................................................
10
2.2
CREACION
DE
TABLAS
CON
DATOS
............................................................................................................
11
2.3
CONEXIN
CON
LA
BASE
DE
DATOS
POSTGRESQL
DESDE
NETBEANS
.....................................
12
2.
4
CREACION
DEL
PROYECTO
EN
NETBEANS
............................................................................................
14
2.5
GENERACION
DEL
DESCRIPTOR
DE
PERSISTENCIA
EN
NETBEANS
...........................................
15
2.6
CREAR
ENTIDADES
A
PARTIR
DE
LA
BASE
DE
DATOS
......................................................................
17
2.7
CREAR
EJB
A
PARTIR
DE
ENTIDADES
.......................................................................................................
19
3.
EXPONER
EL
EJB
COMO
UN
SERVICIO
WEB
REST
EN
NETBEANS
.................................
20
3.1
PROBAR
SERVICIO
WEB
REST
......................................................................................................................
23
4.
CREACIN
EN
NETBEANS
DE
UN
PROYECTO
JAVAFX
2
QUE
INVOCAR
SERVICIOS
WEB
.....................................................................................................................................
25
4.1
CREACIN
DEL
PROYECTO
.............................................................................................................................
26
5.
CONSUMIR
SERVICIO
WEB
REST
DESDE
JAVA
FX
.......................................................
27
5.1
CREAR
CLIENTE
DEL
SERVICIO
WEB
REST
DESDE
LA
APLICACIN
JAVA
FX2
......................
27
6.
CONSUMIR
SERVICIO
DESDE
INTERFAZ
GRAFICA
JAVA
FX2
.......................................
29
6.1
CREAR
ENTIDAD
TEAM
EN
LA
APLICACIN
JAVA
FX2
.....................................................................
29
6.2
VER
DATOS
JAVAFX2
UTILIZANDO
WEB
SERVICES
REST
...............................................................
30
6.3
CREAR
INSTANCIA
UTILIZANDO
SERVICIOS
WEB
REST
..................................................................
35
6.4
ACTUALIZAR
INSTANCIA
UTILIZANDO
SERVICIOS
WEB
REST
.....................................................
37
6.5
ELIMINAR
INSTANCIA
UTILIZANDO
SERVICIOS
WEB
REST
...........................................................
39
7.
METODOS
DE
NEGOCIO
JAVAFX2
Y
JAVAEE6
CON
SERVICIOS
REST
...........................
41
8.
NAVEGACIN
ENTRE
ESCENAS
JAVAFX2
...................................................................
43
9.
INVOCACIN
DE
LA
APLICACIN
JAVAFX
2
A
TRAVS
DEL
NAVEGADOR
WEB
............
43
10.
CALENDARIO,
SELECCIONADOR
DE
ARCHIVOS
CON
JAVAFX2
Y
MANEJO
DE
IMGENES
Y
DOCUMENTOS.
........................................................................................
45
CALENDARIO
................................................................................................................................................................
45
SELECCIONADOR
DE
ARCHIVOS
(FILE
CHOOSER)
......................................................................................
47
MANEJO
DE
DOCUMENTOS
E
IMGENES
........................................................................................................
48
4
TUTORIAL JAVAFX2-JAVA
EE6- REST
Descargar
el
kit
para
el
tipo
de
sistema
operativo
en
el
que
se
este
trabajando
(Windows,
Mac
OS,
Linux).
La
versin
del
JDK
en
el
momento
de
escribir
este
tutorial
es
la
7u25
y
el
NetBeans
es
7.3.1.
NetBeans
incluye:
Driver
actualizado
para
PostgreSQL
9.
Servidor
de
aplicaciones
Glassfish
4.
Soporte
para
trabajar
con
JavaFX
2.
Luego
de
estos
pasos
instalar
los
programas
con
los
instaladores
que
se
descargaron
siguiendo
los
pasos
que
se
indiquen.
5
Descargar
la
versin
9.2.4
del
sistema
operativo
que
se
este
utilizando
actualmente
(Windows,
Mac
OS,
Linux).
Ejecute
el
instalador
y
siga
los
pasos
del
Wizard
para
completar
la
instalacin.
Recuerde
proporcionar
una
contrasea
para
el
superusuario
de
Postgres.
Recomendacin:
Usuario:
postgres
Contrasean:
postgres
Al
finalizar
el
asistente
le
pregunta
si
desea
lanzar
Stack
Builder,
diga
que
no
y
haga
Click
en
terminar.
6
TUTORIAL JAVAFX2-JAVA
EE6- REST
7
Descargar
el
programa
para
el
sistema
operativo
con
el
cual
se
este
trabajando
(Windows,
Mac
OS,
Linux).
8
TUTORIAL JAVAFX2-JAVA
EE6- REST
Luego
se
verifica
si
esta
instalado
el
plugin
de
la
herramienta
JavaFX
Scene
Builder,
si
no
se
encuentra
instalado
revisar
en
los
plugins
disponibles
(Available
Plugins),
buscarlo
e
instalarlo.
9
2.
REALIZACIN
DEL
DEMO
JAVA
EE6
CON
INTERFAZ
JAVAFX2
WEB
SERVICES
CON
PROTOCOLO
DE
COMUNICACIN
REST
Copie
y
pegue
el
siguiente
Script
para
crear
el
usuario
"usuariodemo":
CREATE
USER
usuariodemo
LOGIN
NOSUPERUSER
INHERIT
CREATEDB
NOCREATEROLE
ENCRYPTED
PASSWORD
'usuariodemo';
Ejecute
el
Script
haciendo
Click
en
Ejecutar
consulta.
10
TUTORIAL JAVAFX2-JAVA
EE6- REST
Nota:
En
el
script
reemplace
usuariodemo
por
el
nombre
de
usuario
que
usted
desee
crear.
Para
crear
la
base
de
datos
vaya
a
Ejecutar
consultas
SQL
arbitrarias
y
copie
y
pegue
el
siguiente
script.
Con
el
va
crear
una
base
de
datos
"demo"
cuyo
usuario
dueo
ser
"usuariodemo":
CREATE
DATABASE
demo
WITH
OWNER
=
usuariodemo
ENCODING
=
'UTF8';
Ejecute
el
Script
haciendo
Click
en
Ejecutar
consulta.
Compruebe
que
la
base
de
datos
que
acabo
de
crear
salga
listada
como
existente.
En
algunos
casos
pgAdmin
III
se
demora
en
listar
una
base
de
datos
recin
creada.
Espere
un
momento,
haga
Click
en
Bases
de
Datos
y
ejecute
la
opcin
refrescar
hasta
que
salga
listada
la
base
de
datos.
11
Luego
debe
usar
ese
nuevo
server
para
conectarse
a
la
base
de
datos
demo
y
luego
abrir
el
editor
de
consultas
SQL.
De
esta
manera
las
tablas
que
se
creen
quedarn
a
nombre
del
usuario
dueo
de
la
base
de
datos
demo.
Ejecutar
el
siguiente
Script
en
la
base
de
datos
demo
para
crear
la
tabla
TEAM
CREATE
TABLE
TEAM(
TEAM_ID
INTEGER
NOT
NULL,
TEAMNAME
VARCHAR(15),
COUNTRY
VARCHAR(15),
PRIMARY
KEY
(TEAM_ID)
);
Ejecutar
el
siguiente
Script
en
la
base
de
datos
demo
para
insertar
valores
a
la
tabla
TEAM.
INSERT
INTO
TEAM
VALUES
(1,
'Barcelona',
'Espana');
INSERT
INTO
TEAM
VALUES
(2,'Real
Madrid',
'Espana');
INSERT
INTO
TEAM
VALUES
(3,'Milan',
'Italia');
12
TUTORIAL JAVAFX2-JAVA
EE6- REST
Haga
Click
derecho
sobre
PostgreSQL
y
seleccione
Connect
Using...
y
aparecer
una
ventana
en
la
cual
tiene
que
llenar
todos
los
datos
requeridos.
Debe
quedar
algo
como
lo
siguiente:
13
En
el
campo
Database
coloque
el
nombre
de
la
base
de
datos
que
cre
en
PostgreSQL.
Luego
haga
Click
en
Test
Connection
y
si
la
conexin
se
realiz
exitosamente
le
debe
salir
un
aviso
dicindole
Connection
Succeeded.
Despus
haga
Click
en
Next.
En
el
campo
Select
schema:
elija
public.
Haga
Click
en
Finish.
Aqu
puede
comprobar
que
desde
NetBeans
puede
ver
la
tabla
TEAM
de
la
base
de
datos
demo
y
tambin
puede
ver
su
contenido.
14
TUTORIAL JAVAFX2-JAVA
EE6- REST
15
Seleccione
Eclipselink
como
proveedor
de
persistencia.
Puede
dejar
el
nombre
por
defecto
para
la
unidad
de
persistencia
o
colocar
el
que
usted
dese.
En
el
campo
Data
Source
seleccione
New
Data
Source.
En
Database
Connection
seleccione
la
conexin
PostgreSQL
a
la
base
de
datos
que
usted
cre.
En
JNDI
Name
coloque
el
nombre
que
desee.
Haga
Click
en
OK.
Debe
quedarle
algo
como
en
la
siguiente
ilustracin:
Debe
complementar
el
archivo
persistence.xml
que
fue
generado
por
Netbeans.
Vaya
al
mdulo
web
de
la
aplicacin
>>
Configuration
Files
>>
persistence.xml
Haga
Click
en
Source.
Despus
de
la
lnea:
<property
name="eclipselink.ddl-generation"
value="create-tables"/>
Agregue
el
siguiente
cdigo,
editando
los
datos
segn
el
nombre
de
su
base
de
datos,
usuario
y
contrasea:
<property
name="eclipselink.target-database"
value="PostgreSQL"/>
<property
name="javax.persistence.jdbc.driver"
value="org.postgresql.Driver"/>
<property
name="javax.persistence.jdbc.url"
value="jdbc:postgresql://localhost:5432/demo"/>
<property
name="javax.persistence.jdbc.user"
value="usuariodemo"/>
<property
name="javax.persistence.jdbc.password"
value="usuariodemo"/>
<property
name="eclipselink.logging.level"
value="INFO"/>
16
TUTORIAL JAVAFX2-JAVA
EE6- REST
17
Luego
seleccionar
la
base
de
datos
del
proyecto
y
elegir
la
tabla
Team
para
generar
la
entidad
a
partir
de
la
tabla.
18
TUTORIAL JAVAFX2-JAVA
EE6- REST
NOTA:
En
la
siguiente
ventana
es
recomendable
cambiar
el
tipo
de
coleccin
por
List,
ya
que
es
mas
fcil
manejar
informacin
en
listas.
Tambin
es
importante
trabajar
con
paquetes
estndares,
por
ejemplo:
co.edu.javeriana.miproyecto.entities.
Luego
adicione
las
entidades
para
crear
los
EJB
a
partir
de
ellas
19
Active
las
interfaces
que
necesite
para
su
proyecto
(local,
remota).
Finalmente,
dele
un
nombre
al
package
donde
quiere
que
se
almacenen
los
EJB
y
de
Click
en
Finish.
Se
generan
dos
archivos,
un
AbstractFacade.java
y
un
TeamFacade.java.
En
RolFacade
es
donde
usted
implementar
los
mtodos
de
negocio
para
la
entidad
Rol.
AbstractFacade
es
una
clase
abstracta
que
tiene
mtodos
genricos
para
soportar
operaciones
CRUD
(crear,
eliminar,
buscar,
etc.)
para
cualquier
entidad.
20
TUTORIAL JAVAFX2-JAVA
EE6- REST
El
servicio
Rest
servir
para
invocar
operaciones
CRUD
sobre
una
entitad,
para
lo
cual
generar
un
EJB
con
anotaciones
REST
con
mtodos
para
operar
sobre
la
entidad.
Para
exponer
el
EJB
como
un
servicio
web
REST
haremos
los
siguiente:
Hacer
Click
derecho
sobre
el
modulo
web
de
su
proyecto
>>
New
>>
Other
>>
Web
Services
>>
RESTful
Web
Services
from
Entity
Classes.
Luego
seleccionar
la
entidad
Team
para
generar
un
servicio
REST
a
partir
de
esta.
21
Finalmente
darle
un
nombre
al
paquete
de
los
Web
Services
para
guardar
las
clases
que
va
a
generar
el
servicio
dar
Finish.
22
TUTORIAL JAVAFX2-JAVA
EE6- REST
El
archivo
genera
el
Servicio
Web
con
todos
sus
http
methods.
Tambin
genera
3
archivos
Java
dentro
del
paquete
que
se
indic
para
los
servicios
que
son
los
siguientes:
AbstractFacade:
Sirve
como
una
clase
padre
para
todos
los
dems
Facade
Clases.
TeamFacadeREST:
Es
una
clase
Facade
que
extiende
de
la
clase
AbstractFacade
y
los
mtodos
que
esta
implementa
de
crear,
borrar,
actualizar,
contar,
etc.
Esta
clase
tiene
las
anotaciones
http
de
los
mtodos
que
se
utilizan
para
estos
llamados
a
mtodos
http
y
reciben
los
formatos
XML
Y
JSON.
GET:
Peticiones
de
lectura
(Read)
POST:
Crea
un
nuevo
recurso
(Create)
PUT:
Actualiza
el
estado
de
un
recurso
(Update)
DELETE:
Elimina
el
recurso.
ApplicationConfig:
Esta
clase
es
generada
por
el
IDE
Netbeans,
y
registra
todos
los
recursos
fundamentales
REST
creados
en
el
proyecto.
Por
favor,
NO
EDITAR
esta
clase
a
menos
que
usted
realmente
necesita
entender
los
resultados
de
los
cambios.
23
En
modulo
web
del
proyecto
buscar
el
folder
RESTful
Web
Services
y
hacer
Click
derecho
en
el.
Luego
hacer
Click
en
Test
RESTful
Web
Services,
tal
como
muestra
la
imagen.
En
la
configuracin
de
la
prueba
elegir
que
sea
local
y
luego
dar
ok.
Luego
la
aplicacin
va
a
abrir
un
browser
para
realizar
las
pruebas
del
Servicio
Web.
Elegir
el
servicio
web
elegido,
en
este
caso
entities.team
y
probar
los
mtodos
http
mencionados
anteriormente
en
el
formato
elegido
(XML,
JSON)
para
probar
que
efectivamente
funciona
con
la
base
de
datos.
En
la
siguiente
ventana
se
muestra
un
ejemplo
de
la
prueba
al
Servicio
Web
24
TUTORIAL JAVAFX2-JAVA
EE6- REST
Para
probar
un
mtodo
PUT
para
editar
o
POST
para
crear
alguna
instancia,
seleccionar
el
mtodo
de
la
lista
y
en
el
campo
para
ingresar
la
informacin
copiar
una
instancia
obtenido
con
un
mtodo
GET
y
editarla
en
el
formato
XML
o
JSON
para
crear
o
editar.
25
4.1
CREACIN
DEL
PROYECTO
Ahora
debe
crear
un
proyecto
JavaFX
2
para
que
consuma
el
Servicio
Web
que
construyo.
Para
ello
vaya
a:
File
>>
New
>>
JavaFX
>>
JavaFX
FXML
Application.
Elija
el
nombre
de
proyecto
que
desee.
En
el
campo
FXML
Name
coloque
el
nombre
que
quiere
colocarle
a
la
pantalla
principal
de
su
aplicacin
JavaFX2.
Haga
Click
en
Finish.
Netbeans
genera
tres
archivos
en
su
proyecto.
26
TUTORIAL JAVAFX2-JAVA
EE6- REST
JavaFXApplication9.java
(vara
segn
el
nombre
que
le
haya
dado
al
proyecto):
Esta
clase
es
la
encargada
de
ejecutar
la
aplicacin.
Carga
el
archivo
PantallaInicial.fxml.
PantallaInicial.fxml:
Archivo
en
lenguaje
XML
que
contiene
la
descripcin
de
todo
diseo
grfico
de
la
pantalla
inicial.
Este
archivo
al
hacer
doble
Click
automticamente
abrir
el
programa
de
edicin
instalado
previamente
JavaFX
Scene
Builder
para
editar
la
parte
grafica
con
facilidad.
PantallaInicialController.java:
Clase
que
controla
los
elementos
grficos
descritos
en
el
archivo
PantallaInicial.fxml.
Ac
tambin
se
implementan
los
mtodos
de
negocio
necesarios
para
la
pantalla
inicial.
5.1
CREAR
CLIENTE
DEL
SERVICIO
WEB
REST
DESDE
LA
APLICACIN
JAVA
FX2
Para
consumir
el
servicio
web
creado
previamente
debemos
crear
un
cliente
de
ese
servicio
en
la
aplicacin
JavaFX2.
Hacer
Click
derecho
en
el
proyecto
JavaFX2
>>
New
>>
Other
>>
Web
Services
>>
RESTful
Java
Client.
27
Dele
un
nombre
a
la
clase
y
al
paquete
donde
se
va
a
encontrar
la
clase.
Luego
buscar
el
servicio
web
creado
en
el
modulo
web
de
la
aplicacin
tal
como
muestra
la
siguiente
imagen
y
dar
Finish.
Tambin
es
importante
trabajar
con
paquetes
estndares,
por
ejemplo:
co.edu.javeriana.miproyecto.webservices.
28
TUTORIAL JAVAFX2-JAVA
EE6- REST
Se
genera
una
clase
ClienteRest.java
con
los
mtodos
que
presta
el
servicio
web
REST
creado.
Para
hacer
uso
de
la
clase
en
nuestra
aplicacin
JavaFX2,
es
necesario
nicamente
crear
una
instancia
de
esta
clase
y
llamar
a
los
mtodos
que
necesitemos.
29
Luego
seguimos
los
pasos
anteriormente
descritos
(Ver
seccin:
Crear
entidades
a
partir
de
la
base
de
datos)
y
creamos
la
entidad
Team.
NOTA:
Recuerde
quitar
la
opcin
de
Create
Persistance
Unit
al
crear
la
entidad.
Tal
como
muestra
la
imagen.
Esto
debido
a
que
la
unidad
de
persistencia
ser
creada
y
configurada
en
el
modulo
web
de
la
aplicacin.
6.2
VER
DATOS
JAVAFX2
UTILIZANDO
WEB
SERVICES
REST
En
la
aplicacin
JavaFX2
creada,
en
la
carpeta
javafxapplication3,
buscamos
el
archivo
PantallaInicial.fxml.
Esta
ser
nuestra
pantalla
inicial
y
vamos
a
hacer
doble
Click
en
ella.
Esta
pantalla
nos
abrir
automticamente
el
programa
JavaFX
Scene
Builder
para
poder
editarla.
30
TUTORIAL JAVAFX2-JAVA
EE6- REST
Vamos
a
eliminar
el
botn
que
se
encuentra
actualmente
en
la
pantalla
y
haciendo
uso
de
la
paleta
de
componentes
al
lado
izquierdo,
vamos
a
arrastrar
a
la
pantalla
3
botones
(Button)
para
hacer
las
acciones
de
crear,
actualizar
y
borrar
team.
Tambien
vamos
a
arrastrar
el
componente
Table
View
para
mostrar
en
pantalla
los
datos
de
los
teams.
En
este
caso,
la
tabla
team
tiene
3
atributos,
por
lo
cual
si
hace
falta
alguna
columna
en
la
tabla,
arrastrar
el
componente
Table
Column
y
soltarla
sobre
la
tabla
previamente
creada.
Finalmente
se
guardara
en
File
>>
Save.
La
pantalla
quedara
de
este
modo.
Luego
de
este
proceso
vamos
a
mostrar
los
datos
de
la
tabla
nicamente.
Nos
dirigimos
al
controlador
de
la
pantalla
PantallaInicialController.java
y
vamos
a
declarar
los
componentes
creados
en
el
editor
visual.
Copiamos
y
pegamos
el
siguiente
cdigo.
@FXML
private
TableView<
Team
>
tablaTeams;
@FXML
private
TableColumn
columnaId;
@FXML
31
private
TableColumn
columnaNombre;
@FXML
private
TableColumn
columnaPais;
public
static
ObservableList<
Team>
teams;
//Guarda
los
teams
Los
nombres
de
los
atributos
salen
de
los
atributos
de
la
entidad
TEAM
que
vamos
a
mostrar
en
la
tabla.
ES
IMPORTANTE
QUE
LOS
COMPONENTES
EN
EL
EDITOR
VISUAL
TENGAN
EL
MISMO
ID
QUE
EN
EL
CONTROLADOR.
DE
OTRO
MODO
EL
CONTROLADOR
NO
RECONOCERIA
LOS
COMPONENTES.
ES
RECOMENDABLE
DECLARAR
LAS
VARIABLES
EN
EL
CONTROLADOR
PRIMERO
Y
GUARDAR,
LUEGO
EL
EDITOR
VISUAL
RECONOCERA
LAS
VARIABLES
Y
SE
LE
PUEDE
ASIGNAR
AL
COMPONENTE.
32
TUTORIAL JAVAFX2-JAVA
EE6- REST
Eliminar
elementos
que
no
se
van
a
usar
como
el
label
y
el
mtodo
handleButtonAction.
Luego
en
la
clase
PantallaInicialController.java
existe
el
mtodo
initialize
que
va
a
realizar
la
accin
que
se
quiere
al
iniciar
la
pantalla,
en
este
mtodo
vamos
a
realizar
el
llamado
al
web
service
para
que
cargue
los
datos
al
iniciar.
33
En
ese
mtodo
copiar
y
pegar
el
siguiente
cdigo:
this.columnaId.setCellValueFactory(
new
PropertyValueFactory<
Team,
Integer
>(
"teamId"
)
);
this.columnaNombre.setCellValueFactory(
new
PropertyValueFactory<
Team,
String
>(
"teamname"
)
);
this.columnaPais.setCellValueFactory(
new
PropertyValueFactory<
Team,
String
>(
"country"
)
);
ClienteRest
teamClient
=
new
ClienteRest();
ClientResponse
response
=
teamClient.findAll_XML(ClientResponse.class);
GenericType<List<Team>>
genericType
=
new
GenericType<List<Team>>()
{};
//
Returns
an
ArrayList
of
Players
from
the
web
service
List<Team>
data
=
new
ArrayList<Team>();
data
=
(response.getEntity(genericType));
teams
=
FXCollections.observableArrayList(
);
teams.addAll(data);
System.out.println("TEAMS
:
"+teams.size());
tablaTeams.setItems(teams);
Este
cdigo
declara
las
columnas
de
la
tabla
y
crea
una
instancia
del
cliente
REST
a
travs
del
cual
se
llama
al
mtodo
findAll_XML.
Este
retorna
la
informacin
en
un
XML
de
los
Teams
y
se
transforma
en
una
lista
de
Team
para
hacer
mas
fcil
la
manipulacin
de
la
informacin.
Finalmente
se
agregan
los
datos
a
la
tablaTeams.
Para
comprobar
el
cdigo
se
Invocan
las
tareas
(ANT)
Clean
and
Build
en
la
aplicacin
JavaFX2
y
se
selecciona
Run
posteriormente
y
veremos
la
siguiente
pantalla.
34
TUTORIAL JAVAFX2-JAVA
EE6- REST
35
Ahora
en
el
editor
PantallaInicial.fxml
hay
que
decirle
al
botn
crear
que
ejecute
ese
mtodo
cuando
se
ejecute
la
accin
de
presionar
el
botn.
Esto
se
hace
de
la
siguiente
forma.
Se
da
doble
Click
en
PantallaInicial.fxml
y
se
abre
el
editor
Scene
Builder
Se
hace
Click
en
el
botn
Agregar
y
se
le
adiciona
el
mtodo
crearTeam
tal
como
muestra
la
imagen.
Finalmente
se
da
guarda
el
archivo,
se
ejecuta
el
proyecto
y
se
da
la
opcin
de
agregar
en
la
pantalla.
El
resultado
ser
el
siguiente.
36
TUTORIAL JAVAFX2-JAVA
EE6- REST
NOTA:
Para
refrescar
los
datos
de
la
pantalla
se
realiza
con
la
navegacin
de
las
pantallas
(Ver
seccin
Navegacin
de
Pantallas
JavaFX2
mas
adelante).
6.4
ACTUALIZAR
INSTANCIA
UTILIZANDO
SERVICIOS
WEB
REST
Copiar
y
pegar
el
siguiente
cdigo
en
la
clase
controladora.
@FXML
private
void
editarTeam(ActionEvent
event)
{
ClienteRest
teamClient
=
new
ClienteRest();
ClientResponse
response
=
teamClient.find_XML(ClientResponse.class,
"2");
GenericType<Team>
genericType
=
new
GenericType<Team>()
{};
Team
team
=
response.getEntity(genericType);
team.setTeamname("Valencia");
teamClient.edit_XML(team);
System.out.println("Se
ha
editado
el
TEAM
Satisfactoriamente);
}
37
Este
mtodo
actualizara
la
instancia
con
el
Id
=
2
y
actualizara
en
la
base
de
datos
el
valor
del
nombre
del
equipo
por
Valencia.
Realizar
los
pasos
anteriores
(Vistos
en
la
seccin
de
Crear
instancia)
para
adicionar
este
mtodo
a
la
accin
del
botn
Editar
para
que
se
ejecute
cuando
se
haga
Click
en
el
botn.
Haga
Clean
and
Build
en
el
proyecto
y
ejectelo,
accione
el
botn
editar
y
verifique
en
la
base
de
datos
el
cambio
O
volviendo
a
ejecutar
la
aplicacin
para
ver
el
cambio.
El
resultado
ser
el
siguiente:
38
TUTORIAL JAVAFX2-JAVA
EE6- REST
39
Este
mtodo
eliminara
el
team
con
el
ID
=
1.
Recuerde
adicionar
el
mtodo
al
botn
que
hace
la
accin
en
el
editor
visual.
Limpie
y
ejecute
la
aplicacin
y
dele
la
accin
Eliminar.
El
resultado
ser
el
siguiente:
40
TUTORIAL JAVAFX2-JAVA
EE6- REST
41
@POST:
Para
crear
instancias
@PUT:
Para
editar
instancias
@GET:
Para
obtener
instancias
@DELETE:
Para
borrar
instancias
Tomando
como
ejemplo
los
servicios
REST
creados
a
partir
de
las
entidades,
vamos
a
crear
un
mtodo
para
obtener
los
equipos
a
partir
del
pais
de
acuerdo
a
nuestra
tabla
de
ejemplo.
En
nuestra
clase
ServicioRestNegocio
vamos
a
pegar
el
siguiente
cdigo
e
importar
las
respectivas
libreras
REST:
@GET
@Path("{country}")
@Produces("application/xml")
public
List<Team>
getTeamsCountry(@PathParam("country
")
String
country)
{
Query
query
=
em.createNamedQuery("Team.findByCountry");
query.setParameter("country
",
country);
List
resultList
=
query.getResultList();
return
resultList;
}
Este
mtodo
recibe
por
parmetro
el
nombre
del
pas
y
produce
un
XML
con
la
lista
de
TEAMS
que
pertenecen
a
este
nombre
de
pas.
El
Query
que
se
llama
esta
en
la
entidad
TEAM
contiene
la
siguiente
informacin:
@NamedQuery(name
=
"Team.findByCountry
",
query
=
"SELECT
t
FROM
Team
t
WHERE
t.
country
=
:country")})
Este
Query
va
a
traer
los
TEAM
que
tengan
el
country
igual
al
parmetro
que
entra.
Con
este
mtodo
ya
se
ha
creado
nuestro
mtodo
de
negocio
REST.
La
anotacin
@Path
en
el
mtodo
significa
el
parmetro
que
entra
por
la
URI
cuando
se
realiza
la
peticin
de
ese
mtodo.
La
anotacin
@Produces
significa
que
ese
mtodo
producir
un
resultado
en
el
formato
XML,
existe
la
anotacin
@Consumes
donde
es
lo
contrario,
consume
una
informacin
en
el
formato
XML
o
JSON
que
son
los
formatos
que
utilizan
estos
servicios
REST.
Posterior
a
esto
el
uso
de
estos
mtodos
de
negocios
se
consumen
de
igual
forma
que
los
generados
a
partir
de
las
entidades.
Solo
es
necesario
crear
los
clientes
REST
a
partir
de
los
nuevos
EJB
e
invocar
los
42
TUTORIAL JAVAFX2-JAVA
EE6- REST
servicios
que
nos
presta.
(Ver
Seccin:
CONSUMIR
SERVICIO
WEB
REST
DESDE
JAVA
FX).
Funciona
con
una
estructura
MAP
donde
almacena
un
ndice
para
la
pagina
y
el
archivo
.fxml.
En
el
caso
particular
de
la
imagen,
se
quite
del
escenario
la
escena
Sample
(UNLOADSCREEN),
se
vuelve
a
cargar
nuevamente
asignando
un
ndice
para
la
pagina
(LOADSCREEN)
y
finalmente
la
pone
en
el
escenario
(SETSCREEN).
Este
procedimiento
se
utiliza
para
refrescar
la
pagina
o
poder
navegar
a
otras
paginas.
En
el
siguiente
link
explican
la
mejor
forma
de
realizar
la
navegacin
entre
escenas
en
JavaFX2
y
como
funciona
teniendo
en
cuenta
esta
idea.
https://blogs.oracle.com/acaicedo/entry/manejando_multiples_pantallas_en_javafx
Este
blog
contiene
la
explicacin
detallada
de
la
navegacin,
como
se
pueden
refrescar
los
datos
de
una
escena
y
el
cdigo
fuente
de
cada
cdigo
que
se
necesita.
Tambin
se
encuentra
el
tutorial
en
video
y
el
cdigo
fuente
de
la
informacin.
43
Para
que
la
aplicacin
JavaFX
2
construida
pueda
ser
ejecutada
en
el
navegador
web
debe
realizar
los
siguientes
pasos:
Vaya
a
la
carpeta
de
su
proyecto
JavaFX
2,
dentro
de
ella
hay
una
carpeta
llamada
dist.
Cpiela.
Vaya
a
la
carpeta
de
su
proyecto
empresarial
Java
EE
y
luego
a
la
carpeta
del
mdulo
web
de
su
proyecto.
Dentro
de
esta
ltima
hay
una
carpeta
llamada
web.
brala.
Pegue
la
carpeta
dist
en
la
carpeta
web.
Abra
la
carpeta
dist
que
acab
de
copiar
en
la
carpeta
web.
All
encontrar
un
nico
archivo
html.
A
ese
archivo
debe
cambiarle
el
nombre
a
index.html.
Click
derecho
sobre
su
proyecto
empresarial
Java
EE
>>
Clean
and
Build
Click
derecho
sobre
su
proyecto
empresarial
Java
EE
>>
Deploy
Click
derecho
sobre
su
proyecto
empresarial
Java
EE
>>
Run
Se
le
abre
el
navegador
web
con
una
pgina
que
dice
Hello
World!
Esa
pgina
web
corresponde
al
index.jsp
que
se
encuentra
en
la
carpeta
web
del
mdulo
web
de
su
proyecto.
En
la
barra
de
direcciones,
conserve
la
direccin
que
se
encuentra
y
adale
la
palabra
dist.
Se
le
debe
abrir
una
pgina
web
en
donde
sale
cargndose
una
aplicacin
javaFX.
Diga
que
acepta
los
riesgos
y
que
desea
ejecutar
la
aplicacin.
Pruebe
la
aplicacin
con
diversos
datos.
Si
no
se
muestra
la
interfaz
grfica
por
problemas
de
firmas
de
las
libreras,
pruebe
a
despublicar
la
aplicacin
Java
EE
(con
undeploy
en
services/Glassfish/applications),
y
luego
reinicie
el
servidor
Glassfish,
y
vuelva
a
construir
el
dist
de
la
aplicacin
Java
FX
2
(con
Clean
&
Build)
y
repetir
los
pasos
aqu
descritos.
NOTA:
index.jsp
debe
redirigir
el
control
al
dist/index.html
o
sea
que
su
contenido
debe
ser
el
siguiente:
44
TUTORIAL JAVAFX2-JAVA
EE6- REST
<html>
<head>
<meta
http-equiv="Refresh"
content="0;
URL=dist/index.html"
/>
</head>
</html>
CALENDARIO
Descargar
la
librera
que
contiene
la
informacin
del
calendario
y
la
hoja
de
estilos
del
calendario
para
que
tenga
la
siguiente
apariencia.
45
Sitio
Descarga:
http://edu.makery.ch/blog/2013/01/07/javafx-date-picker/
Archivos:
schudt-javafx-datepicker-0.0.2.jar
DatePicker.css
Luego
agregar
la
librera
(.jar)
al
proyecto
y
adicionar
en
nuestra
carpeta
de
proyecto
nuestra
hoja
de
estilos.
En
nuestro
archivo
.FXML
donde
se
quiera
agregar
un
calendario,
seleccionamos
de
la
paleta
de
componentes
el
componente
GRIDPANE
y
lo
arrastramos
hasta
nuestra
pantalla.
Como
vimos
anteriormente
se
le
da
un
ID
al
componente
y
se
crea
el
mismo
componente
en
nuestro
controlador.
@FXML
private
GridPane
gridPane;
Luego
en
nuestro
controlador
creamos
una
instancia
del
DatePicker
que
referencia
a
la
lireria
que
agregamos
anteriormente
private
DatePicker
fechaDatePicker;
En
el
mtodo
initialize
de
nuestro
controlador
copiar
y
pegar
el
siguiente
cdigo:
46
TUTORIAL JAVAFX2-JAVA
EE6- REST
//CALENDARIO
fechaDatePicker
=
new
DatePicker(Locale.ENGLISH);
fechaDatePicker.setDateFormat(new
SimpleDateFormat("yyyy-MM-dd"));
fechaDatePicker.getCalendarView().todayButtonTextProperty().set("Today");
fechaDatePicker.getCalendarView().setShowWeeks(false);
fechaDatePicker.getStylesheets().add("rutaHojaEstilos/DatePicker.css");
gridPane.add(fechaDatePicker,
1,
5);
Ten
en
cuenta
la
ruta
donde
agregaste
la
hoja
de
estilos
.
Cuando
corras
tu
programa
al
inicializar
esa
escena
tu
GRIDPANE
ser
un
calendario
donde
podrs
elegir
la
fecha.
47
48
TUTORIAL JAVAFX2-JAVA
EE6- REST
String
myImage
=
hostServices.resolveURI(hostServices.getDocumentBase(),"HV.pdf");
ClubmatCliente.hostServices.showDocument(myImage);
NOTA:
Por
cuestiones
de
seguridad
es
mejor
manejar
un
directorio
web
de
documentos
e
imgenes
y
solo
utilizar
la
URL
para
referenciar.
49