Вы находитесь на странице: 1из 13

Uwe Rozanski

Enterprise JavaBeans 3.0


con Eclipse y JBoss
Libro práctico y referencias
Índice

Introducción.........................................................................................................17

1 Principios básicos de Java EE............................................................................20


1.1 Visión general.........................................................................................20
1.2 Stateless bean..........................................................................................22
1.2.1 Clase Bean.....................................................................................22
1.2.2 Interfaz remota.............................................................................23
1.2.3 Interfaz local.................................................................................25
1.3 JNDI.........................................................................................................25
1.4 Client simple...........................................................................................27
1.5 Entity Bean para la base de datos........................................................28
1.6 Otros tipos de beans..............................................................................32
1.6.1 Session beans complejos (con estado)..................................32
1.6.2 Beans dirigidos por mensajes asincrónicos.........................33
1.6.3 Timer beans controladas por el tiempo................................34
1.7 Componentes de Java EE......................................................................35
1.8 Operaciones con Beans no permitidas................................................37
1.9 Anotaciones............................................................................................39
1.9.1 Uso.............................................................................................39
1.9.2 Programación...........................................................................41
1.10 Generics...................................................................................................44

2 Entorno de desarrollo.........................................................................................46
2.1 Visión general.........................................................................................46
2.2 El lenguaje de programación Java.......................................................46
2.3 El servidor de aplicaciones JBoss........................................................47
2.3.1 Instalación desde el CD .........................................................47
2.3.2 Instalación desde Internet......................................................48
2.4 El entorno de desarrollo Eclipse..........................................................49
2.4.1 Instalación desde Image.........................................................49
2.4.2 Instalación desde Internet......................................................49
2.4.3 Configuración..........................................................................49
Índice

2.5 La IDE de JBoss Eclipse.........................................................................51


2.5.1 Instalación desde Image...........................................................51
2.5.2 Instalación desde Internet........................................................51
2.6 El primer proyecto.................................................................................52
2.7 Configuración de una Debug-Session................................................58
2.8 Configuración de una conexión a una base de datos.......................60

3 Stateless session beans.......................................................................................62


3.1 Uso...........................................................................................................62
3.2 Estructura................................................................................................62
3.2.1 Clase bean.................................................................................62
3.2.2 Interfaz remota.........................................................................63
3.2.3 Interfaz local.............................................................................64
3.2.4 Relación de interfaz alternativa.............................................64
3.2.5 Constructor estándar..............................................................65
3.2.6 General .....................................................................................65
3.3 Metodología de trabajo.........................................................................65
3.4 Acceso al Entorno..................................................................................67
3.5 EJBContext..............................................................................................69
3.6 SessionContext.......................................................................................70
3.7 Ciclos vitales de un stateless session bean.........................................73
3.7.1 Does not exist...........................................................................73
3.7.2 Método Ready Pool.................................................................74
3.8 Cambios frente a EJB 2.1.......................................................................75
3.9 XML Deployment Descriptor..............................................................76
3.10 Acceso mediante un programa Client................................................78
3.11 Ejercicio...................................................................................................81

4 Programación de Client con JSP.......................................................................86


4.1 Contenedor Web-Contenedor EJB.......................................................86
4.2 Estructura de un JSP.............................................................................87
4.2.1 Inserción de Scriptlets.............................................................88
4.2.2 La directiva Page......................................................................89
4.2.3 Objetos predefinidos...............................................................90
4.3 Administración de sesión.....................................................................92
4.4 Nociones de HTML...............................................................................93

6
Índice

4.4.1 Principios básicos....................................................................93


4.4.2 Elementos de creación............................................................94
4.5 Client JSP completo.............................................................................103
4.6 Creación de un archivo WAR.............................................................105
4.7 Ejercicio.................................................................................................106

5 Stateful Session Beans.....................................................................................112


5.1 Uso.........................................................................................................112
5.2 Estructura..............................................................................................113
5.2.1 La clase bean..........................................................................113
5.2.2 Interfaz Remote.....................................................................114
5.2.3 Interfaz local...........................................................................114
5.2.4 Interfaz RemoteHome y LocalHome..................................115
5.2.5 Referencia a interfaz alternativa..........................................115
5.2.6 Constructor estándar............................................................115
5.2.7 Métodos de inicialización....................................................116
5.2.8 Liberar la instancia de bean.................................................116
5.3 Metodología de trabajo.......................................................................117
5.4 Llamadas de método locales o remotas........................................119
5.5 EJBContext y SessionContext.............................................................120
5.6 Ciclos vitales de un Stateful Session Bean.......................................120
5.6.1 Does not exist.........................................................................121
5.6.2 Method-Ready.......................................................................122
5.6.3 Passive.....................................................................................125
5.7 Cambios respecto EJB 2.1....................................................................127
5.8 XML Deployment Descriptor............................................................128
5.9 Acceso a través del programa Client................................................129
5.10 Ejercicio.................................................................................................135

6 Message Driven Beans.....................................................................................141


6.1 Uso.........................................................................................................141
6.2 Estructura..............................................................................................142
6.2.1 Clase bean...............................................................................142
6.2.2 Interfaz MessageListener.....................................................144
6.2.3 Constructor estándar............................................................145
6.3 Metodología de trabajo.......................................................................145
6.4 Contexto dirigido por mensajes.........................................................146

7
Índice

6.5 Ciclo vital de un Message-Driven Bean...........................................147


6.5.1 Does Not Exist.......................................................................148
6.5.2 Method-Ready Pool..............................................................148
6.6 Cambios respecto EJB 2.1....................................................................150
6.7 XML Deployment Descriptor............................................................150
6.8 Enviar mensajes desde un Client......................................................151
6.9 Recibir mensajes con un Client..........................................................153
6.10 Enviar mensajes desde un Bean........................................................154
6.11 Ejercicio.................................................................................................156

7 Timer Service.....................................................................................................164
7.1 Uso.........................................................................................................164
7.2 Estructura..............................................................................................165
7.2.1 Interfaz TimedObject............................................................165
7.2.2 TimerService Interface..........................................................166
7.2.3 Timer Interface.......................................................................167
7.3 Metodología de trabajo.......................................................................168
7.3.1 Diferentes tipos de Timers...................................................168
7.3.2 Inicio del temporizador........................................................169
7.3.3 Detener un temporizador.....................................................170
7.4 Stateless Session Bean Timer..............................................................170
7.5 Message-Driven Bean Timer..............................................................170
7.6 Temporizador automático..................................................................171
7.7 Ejercicio.................................................................................................171

8 Entity Beans........................................................................................................175
8.1 Uso.........................................................................................................175
8.2 Estructura..............................................................................................177
8.3 Metodogía de trabajo..........................................................................181
8.4 Métodos Lifecycle................................................................................185
8.5 Cambios respecto EJB 2.1....................................................................187
8.6 XML Deployment Descriptor............................................................188
8.7 Ejercicio.................................................................................................189

9 EntityManager...................................................................................................195
9.1 Panorama general................................................................................195
9.2 Persistence Unit....................................................................................195

8
Índice

9.3 Persistence Context..............................................................................197


9.3.1 Persistence Context orientados a transacciones................197
9.3.2 Persistence Context ampliado.............................................198
9.3.3 Stateful Session beans anidados..........................................200
9.4 EntityManager Factory.......................................................................200
9.5 EntityManager Interface.....................................................................202
9.5.1 persist()...................................................................................203
9.5.2 find y getReference().............................................................204
9.5.3 createQuery(), createNamedQuery() y
createNativeQuery().............................................................204
9.5.4 merge ()...................................................................................206
9.5.5 remove()..................................................................................207
9.5.6 lock()........................................................................................207
9.5.7 refresh()...................................................................................207
9.5.8 contains() y clear().................................................................207
9.5.9 flush() y setFlushMode()......................................................208
9.5.10 getDelegate()..........................................................................208
9.5.11 joinTransaction() y getTransaction()...................................208
9.5.12 close() y isOpen()...................................................................209
9.6 Managed y Unmanaged Entities.......................................................209
9.7 Ejercicio.................................................................................................209

10 Trabajar con Entity Beans................................................................................216


10.1 Panorama general................................................................................216
10.2 Los Entities utilizados.........................................................................216
10.2.1 La tabla SOCIO .....................................................................216
10.2.2 La tabla DIRECCIÓN............................................................218
10.2.3 La tabla CUENTA BANCARIA...........................................219
10.2.4 La tabla TARJETA DE CRÉDITO........................................221
10.3 Clases para el transporte de datos....................................................222
10.3.1 General....................................................................................222
10.3.2 La clase Grupodedatos.........................................................223
10.3.3 La clase DatosElement..........................................................225
10.4 Stateful Session Beans.........................................................................227
10.4.1 La interfaz AdministracionSociosRemote.........................227
10.4.2 La clase SocioException........................................................228
10.4.3 La clase SocioAdministracionBean.....................................228

9
Índice

10.5 Páginas JSP genéricas..........................................................................240


10.5.1 La página JSP AdministracionSocio...................................240
10.5.2 La clase Util............................................................................242
10.5.3 La página JSP CrearNuevoSocio.........................................245
10.5.4 La página JSP EditarSocio....................................................247
10.6 Ejercicio.................................................................................................248

11 Anotaciones para Entity Beans.......................................................................250


11.1 Panorama general................................................................................250
11.2 @Entity...................................................................................................250
11.3 @NamedQuery.....................................................................................251
11.4 @NamedQueries..................................................................................252
11.5 @NameNativeQuery...........................................................................252
11.6 @NamedNativeQueries......................................................................253
11.7 @SqlResultSetMapping.......................................................................253
11.8 @SqlResultSetMappings.....................................................................256
11.9 Métodos callback generales...............................................................257
11.10 @Table....................................................................................................258
11.11 @Column...............................................................................................259
11.12 @Id..........................................................................................................260
11.13 @EmbeddedId......................................................................................261
11.14 @IdClass................................................................................................263
11.5 @GeneratedValue.................................................................................264
11.16 @SequenceGenerator...........................................................................267
11.17 @TableGenerator..................................................................................268
11.18 @Transient............................................................................................270
11.19 @Version................................................................................................270
11.20 @Basic....................................................................................................271
11.21 @Lob.......................................................................................................272
11.22 @Temporal............................................................................................273
11.23 @Enumerated.......................................................................................274
11.24 Ejercicio.................................................................................................274

12 Relaciones entre Entity Beans.........................................................................292


12.1 Panorama general................................................................................292
12.2 @OneToOne..........................................................................................293

10
Índice

12.3 @JoinColumn........................................................................................298
12.4 @JoinColumns.....................................................................................300
12.5 @PrimaryKeyJoinColumn..................................................................300
12.6 @PrimaryKeyJoinColumns.................................................................301
12.7 @OneToMany......................................................................................302
12.8 @ManyToOne......................................................................................304
12.9 @ManyToMany...................................................................................306
12.10 @JoinTable............................................................................................308
12.11 @OrderBy.............................................................................................310
12.12 @MapKey.............................................................................................310
12.13 CascadeType........................................................................................311
12.14 FetchType..............................................................................................312
12.15 Ejercicio................................................................................................313

13 Estructuras de tablas y herencias...................................................................322


13.1 Panorama general................................................................................322
13.2 @SecondaryTable................................................................................323
13.3 @SecondaryTables...............................................................................325
13.4 @Embedded.........................................................................................327
13.5 @Embeddable......................................................................................330
13.6 @Inheritance.........................................................................................331
13.6.1 SINGLE_TABLE....................................................................331
13.6.2 TABLE_PER_CLASS.............................................................335
13.6.3 JOINED...................................................................................337
13.7 @MappedSuperclass............................................................................339
13.8 @DiscriminatorColumn......................................................................340
13.9 @DiscriminatorValue...........................................................................341
13.10 @AttributeOverride.............................................................................341
13.11 @AttributeOverrides............................................................................342
13.12 @AssociationOverride.........................................................................342
13.13 @AssociationOverrides.......................................................................344

14 Consultas y EJB QL.........................................................................................345


14.1 Panorama general................................................................................345
14.2 La interfaz Query.................................................................................346

11
Índice

14.2.1 getResultList()........................................................................346
14.2.2 getSingleResult()....................................................................350
14.2.3 executeUpdate().....................................................................350
14.2.4 setMaxResults() y setFirstResult().......................................350
14.2.5 setHint()..................................................................................350
14.2.6 setParameter(...).....................................................................351
14.2.7 setFlushMode()......................................................................353
14.3 Problemas con CHAR(20)...................................................................353
14.4 EJB QL...................................................................................................354
14.4.1 Sintaxis BNF...........................................................................356
14.4.2 Tipos de instrucciones..........................................................357
14.4.3 FROM......................................................................................357
14.4.4 WHERE...................................................................................360
14.4.5 GROUP BY.............................................................................370
14.4.6 HAVING.................................................................................372
14.4.7 SELECT...................................................................................373
14.4.8 ORDER BY..............................................................................375
14.4.9 UPDATE.................................................................................376
14.4.10 DELETE..................................................................................378
14.5 Ejercicio.................................................................................................378

15 Transacciones.....................................................................................................385
15.1 Panorama general................................................................................385
15.2 Container Managed Transaction.......................................................386
15.2.1 @TransactionAttribute..........................................................386
15.2.2 NOT_SUPPORTED...............................................................389
15.2.3 SUPPORTS.............................................................................389
15.2.4 REQUIRED.............................................................................390
15.2.5 REQUIRES NEW...................................................................390
15.2.6 MANDATORY.......................................................................390
15.2.7 NEVER ...................................................................................390
15.3 Bean Managed Transaction................................................................391
15.4 EJBs sin transacción.............................................................................393
15.5 Accesos competitivos..........................................................................393
15.5.1 Trabajar sin bloqueo de conjuntos......................................396
15.5.2 Versionar automáticamente.................................................398
15.5.3 Trabajar con bloqueo de conjuntos.....................................401

12
Índice

15.6 Rollback en EJBContext......................................................................403


15.7 Transacciones y excepciones..............................................................403
15.8 Session Beans transaccionales............................................................412
15.9 Ejercicio.................................................................................................413

16 Mapeo XML para Entities................................................................................422


16.1 El archivo mapping orm.xml.............................................................422
16.2 <entity-mappings>...............................................................................422
16.3 <description>........................................................................................423
16.4 <persistence-unit-metadata>.............................................................423
16.5 <xml-mapping-metadata-complete>................................................424
16.6 <persistence-unit-defaults>................................................................424
16.7 <schema>..............................................................................................424
16.8 <catalog>..............................................................................................425
16.9 <access>................................................................................................425
16.10 <cascade-persist>.................................................................................425
16.11 <entity-listeners>..................................................................................426
16.12 <entity-listener>...................................................................................426
16.13 <pre-persist>.........................................................................................426
16.14 <post-persist>.......................................................................................427
16.15 <pre-remove>........................................................................................427
16.16 <post-remove>......................................................................................427
16.17 <pre-update>........................................................................................428
16.18 <post-update>.......................................................................................428
16.19 <post-load>...........................................................................................428
16.20 <package>..............................................................................................429
16.21 <sequence-generator>..........................................................................429
16.22 <table-generator>.................................................................................430
16.23 <unique-constraint>.............................................................................431
16.24 <column-name>....................................................................................431
16.25 <named-query> ...................................................................................431
16.26 <query>..................................................................................................432
16.27 <hint>.....................................................................................................432
16.28 <named-native-query>........................................................................433
16.29 <sql-result-set-mapping>....................................................................434

13
Índice

16.30 <entity-result>......................................................................................434
16.31 <field-result>.........................................................................................435
16.32 <column-result>...................................................................................435
16.33 <mapped-superclass>..........................................................................436
16.34 <id-class>...............................................................................................437
16.35 <exclude-default-listeners>................................................................438
16.36 <exclude-superclass-listeners>...........................................................438
16.37 <attributes>...........................................................................................439
16.38 <id>........................................................................................................440
16.39 <column>...............................................................................................440
16.40 <generated-value>................................................................................441
16.41 <temporal>............................................................................................442
16.42 <embedded-id> ...................................................................................443
16.43 <attribute-override>.............................................................................444
16.44 <basic>...................................................................................................445
16.45 <lob>.......................................................................................................446
16.46 <enumerated>.......................................................................................446
16.47 <version>...............................................................................................447
16.48 <many-to-one>.....................................................................................448
16.49 <join-column>.......................................................................................449
16.50 <join-table>............................................................................................450
16.51 <inverse-join-column>.........................................................................451
16.52 <cascade>...............................................................................................451
16.53 <one-to-many>.....................................................................................452
15.54 <order-by>.............................................................................................453
16.55 <map-key>.............................................................................................454
16.56 <one-to-one>.........................................................................................454
16.57 <primary-key-join-column>...............................................................455
16.58 <many-to-many>..................................................................................456
16.59 <embedded>.........................................................................................457
16.60 <transient>............................................................................................458
16.61 <entity> ..................................................................................................459
16.62 <table>....................................................................................................460
16.63 <secondary-table>................................................................................461
16.64 <inheritance>........................................................................................462
16.65 <discriminator-value>.........................................................................462

14
Índice

16.66 <discriminator-column> .....................................................................463


16.67 <association-override>........................................................................464
16.68 <embeddable>......................................................................................465

17 Interceptores y Entity Listener.......................................................................466


17.1 Panorama general................................................................................466
17.2 Interceptor............................................................................................467
17.2.1 Anotaciones............................................................................467
17.2.2 Deployment Descriptor........................................................469
17.3 Entity Listener......................................................................................472
17.3.1 Anotaciones............................................................................472
17.3.2 Deployment Descriptor........................................................474
17.4 Ejercicio.................................................................................................476

18 Security...............................................................................................................480
18.1 Panorama general................................................................................480
18.2 Asegurar llamadas de métodos.........................................................481
18.2.1 @RolesAllowed......................................................................481
18.2.2 @PermitAll..............................................................................483
18.2.3 @DenyAll................................................................................484
18.2.4 @RunAs...................................................................................486
18.3 Comprobación técnica de derechos..................................................488
18.3.1 @DeclareRoles........................................................................489
18.4 Activación del Security en JBoss........................................................490
18.5 Ejercicio.................................................................................................492

19 Web Services......................................................................................................503
19.1 Panorama general................................................................................503
19.2 SOAP.....................................................................................................504
19.3 WSDL....................................................................................................505
19.4 @WebService.........................................................................................507
19.5 @WebMethod........................................................................................508
19.6 @SOAPBinding.....................................................................................509
19.7 @WebParam..........................................................................................509
19.8 @WebResult..........................................................................................510
19.9 @Oneway...............................................................................................511
19.10 Web Service Client...............................................................................511
19.11 Ejercicio.................................................................................................512

15
Índice

20 Ejemplo de Web Shop......................................................................................515


20.1 Panorama general................................................................................515
20.2 Bases de datos......................................................................................515
20.3 Desarrollo de las pantallas.................................................................516
20.4 Control central.....................................................................................521
20.4.1 index.jsp..................................................................................521
20.4.2 WebShopRemote...................................................................528
20.4.3 WebShopBean........................................................................529
20.4.4 @EJB para referencias locales...............................................532
20.4.5 style.css...................................................................................533
20.5 ANT-Script............................................................................................534
20.6 Archivo EAR.........................................................................................536

21 EJB en la práctica...............................................................................................538
21.1 Distribución de roles...........................................................................538
21.1.1 Generalidades........................................................................538
21.1.2 Enterprise Bean Provider.....................................................538
21.1.3 El Application Assembler.....................................................539
21.1.4 El Deployer.............................................................................540
21.1.5 EJB Server Provider...............................................................541
21.1.6 EJB Container Provider........................................................541
21.1.7 Persistence Provider..............................................................541
21.1.8 System Administrator...........................................................541
21.2 De EJB 2.1 a EJB 3.0.............................................................................542
21.2.1 Generalidades.......................................................................542
21.2.2 Client.......................................................................................542
21.2.3 Stateless Session Beans.........................................................543
21.2.4 Stateful Session Beans...........................................................544
21.2.5 Message-driven beans...........................................................545
21.2.6 CMP Entity Beans..................................................................545
21.2.7 BMP Entity Beans..................................................................547
21.2.8 BMT.........................................................................................547
21.3 Uso de un Profiler................................................................................547

A Contenido del CD.............................................................................................550


A.1 Cap02.....................................................................................................550
A.2 workspace.............................................................................................551

Glosario...............................................................................................................552

16

Вам также может понравиться