p. 2
sobre 10s autores subrahmanyam allamaraju subrahmanyam allamaraju es ingeniero y trabaja desde hace afios para bea systems inc trabaja en las ireas de tecnologias de empresa/distribuidas modelos de objeto basados en xml y otras ireas relacionadas si desea mis informaci6n sobre sus actividades inquietudes y otros trabajos consulte su pigina web enwww.subrahmanyarn.com subrahmanyam desearia dar las gracias a varaa por su colaboraci6n en las pruebas de c6digo enfrentindose a estrictos plazos y por compartir su frustration y su euforia cedric beust cedric beust es ingeniero de software y trabaja para el equipo de ejb en bea systems inc h a participado en la puesta en marcha de la versi6n 2.0 del contenedor weblogic ejb doctorado en informitica por la universidad de niza francia antes de doctorarse trabai6 dara sun microsvstems donde se centr6 principalmente en corba a lo largo de 10s aiios edric participado en diversas comisiones dedicadas ha sus intereses abarcan desde todo lo relacionado con la informitica por ejemplo a ejb corba y c distribuida y la ingenieria de software en general hasta aficiones como el golf el squash el tenis y el voleibol john davies john davies trabaja como director jefe de tecnologia c t o para century 24 solutions ltd c24 www.c24solutions.corn una compafiia de software con sede en londres que ofrece soluciones basadas en java y j2ee para el mercado financiero el ultimo product0 de c24 elektra disefiado para proporcionar una unica visi6n de las transacciones financieras complejas hace extensivo el uso de todas las tecnologias j2ee john esti embarcado en la actualidad en el proyecto de bnp-paribas a la cabeza del grupo technology consulting grup recornendando el uso de tecnologias para proyectos actuales y futuros de todo el mundo john comenzo en el mundo de las tecnologias de la informaci6n a finales de 10s setenta trabajando en el area de hardware mis tarde en ensambladores en c c en el afio 87 y finalmente en java desde principios del 96 trabaj6 durante catorce afios como asesor principalmente en el sector bancario diez de estos afios 10s pas6 fuera del reino unido en diversos paises incluido estados unidos asia y gran parte de europa donde aprendi6 a hablar algunos idiomas en el tiempo que le queda libre entre su trabajo y escribir john imparte clases de java y xml para learning tree y es editor ttcnico de su curso de ejb 2.0 sus aficiones incluyen viajar la fotografia la guitarra clisica pilotar avionetas el buen vino la buena cerveza la comida picante y socializar john quisiera dar las gracias a su compaiiero licenciado en astronomia steve miller por corregir sus trabajos y le gustaria saludar a su madre y pedirle perd6n por lo ma1 que se comport6 en el colegio una vez ma s nada de esto hubiera sido posible sin el carilio y el apoyo de m i fantastica esposa rachel siento mucho las noches que te ha tocado pasar sola y gracias por lucy james os quiero puede ponerse en contact0 con en john.davies@c24solutions.com tyler jewell tyler jewell trabaja corno predicador para bea systems inc donde escribe y alaba sobre las tecnologias de empresa para programadores es un experto preparador y mentor especializado en arquitecturas a gran escalade e-business tyler es el autor de 19 cursos de preparacion sobre tecnologias de e-business y ha impartido mis de 200 seminarios sobre tecnologia a clientes y public0 en general es co-autor del libro mastering enterprise
[close]
p. 3
javabeans 2.0 o reilly 2001 y en la actualidad trabaja en el proyecto java web services o reilly 2002 tyler mantiene una columna habitual sobre j2ee en www.onjava.com es miembro de la editorial o reilly s editorial masthead y es asesor de la pigina www.theserverside.com tu comunidad j2ee tyler dedica su tiempo libre a su familia y amigos su afici6n favorita es el pdquer texas hold em en el que dos cartas cualquiera pueden ganar per0 siempre que caigan en sus manos rod johnson rod johnson es arquitecto de java de empresa especializado en aplicaciones web reajustables ha pasado 10s dos dltimos arios diseriando una soluci6n j2ee para ft .corn el portal de empresa mis grande europa y en la actualidad esti escribiendo un libro para wrox press sobre diserio y desarrollo de j2ee despues de sus estudios en 10s que se especializ6 en musica e informitica rod reah 6 un doctorado en musicologia antes de volver a dedkarse a1 desarrollo de software rod ha trabajado con java tanto en ireas de cliente como en ireas de senidor desde su lanzamiento y se ha centrado en el desarrollo de internet desde 1996 su principal inter es la arquitectura jzee ejb y el desarrollo web 00 rod reparte su tiempo entre londres y sydney y le gusta el tenis el esqui la historia y tocar el piano puede ponerse en contacto con el en rod.johnson@interface21.com gracias a keriy por su amor y su apoyo ahora que comenzamos nuestra nueva aventura andy longshaw andy longshaw es asesor independiente escritor y educador especializado en jzee xml tecnologias y componentes de base web en particular en las decisiones de diserio y arquitectura necesarias para utilizar estas tecnologias satisfactoriamente andy ha estado explicando tecnologia durante la mayor parte de la ultima decada en sus funciones principales de director de tecnologia de content master ltd y q a training tambien ofrece conferencias sobre jzee xml y arquitecturas de componentes de grada media circula un rumor sin confirmar que dice que algunas personas consiguen no dormirse durante estas sesiones esti dispuesto a responder a cualquier comentario pregunta o critica sobre el capitulo de diserio que ha escrito para este libro en la pigina www.blueskyline.com a sarah adam y joshua que son la inspiracidn de todo lo que hago y a rnis padres que se aseguraron de que yo recibiera una educacidn lo suficientemente buena como poder escribir este libro ramesh nagappan ramesh nagappan es arquitecto de tecnologia especializado en java y en arquitecturas de aplicacidn de distribucidn de base corba es un predicador de java y tambien un activo contribuyente a las especificaciones e implementaciones de fuente abierta antes de enpncharse a java y a corba trabaj6 como ingeniero de investigacidn para desarrollar soluciones cad/cam y de dinimica de fluidos computational para aplicaciones aeroespaciales en su tiempo libre le gusta disfrutar de 10s deportes de agua y jugar con hijo roger puede encontrarle en su direcci6n de correo nramesh@mediaone.net ils dedicado a mi esposa joyce y a nuestro hijo roger por su carifio apoyo e inspiracidn y tambie n a rnis queridos padres por alegrar m i vida dr p g sarang como contratista de sun microsystems el dr sarang forma a 10s clientes de la compafiia con diversos cursos del programa oficial de sun tambien dirige el programa formar a formadores y las pruebas de autorizacidn de instructores en representacidn de sun.
[close]
p. 4
como director jefe ejecutivo c e o de abcom information systems pvt ltd el dr sarang esti especializado en formacidn y en el desarrollo de proyectos sobre la plataforma java/corba con casi 20 aiios de experiencia en el sector el dr sarang ha desarrollado diversos productos y ha completado con cxito varios proyectos industriales es orador habitual en muchas conferencias de lmbito nacional e internacional y contribuye regularmente con articulos tecnicos a la edicidn de revistas y diarios de tirada internacional sus intereses actuales incluyen la plataforma .net y c me gustaria dedicar este libro a m i madre por su constante apoyo y paciencia alex toussaint alex toussaint es director de ingenieria para vignette corporation en austin texas cuenta con mas de diez afios de experiencia en desarrollo de software y tiene una amplia experiencia en el manejo de java desde 1996 y de las tecnologias j2ee desde 1998 alex ha colaborado en articulos sobre aplicaciones web y comercio electrdnico para revistas on-line tales como microsoft msdn y es coautor del libro professional site server publicado por wrox alex tambiin ha sido invitado a impartir clases en la universidad de texas en austin red mccombs school of business sobre temas como comercio electrdnico y desarrollo de software de empresa alex reside en austin texas en la actualidad con su esposa danielle y su perro sasha alex estia su disposicidn en la direcci6n alex~toussaint@yahoo.com sameer tyagi sameer escribe regularmente para publicaciones on-line e impresas cuenta con mas de cuatro afios de experiencia en diseiio y desarrollo de software y esti especializado en aplicaciones distribuidas de lado del servidor de base java arquitecturas n-grada jdbc jndi ejb jms rmi jsp servlets et al es licenciado en ingenieria electrdnica y tiene una amplia formacidn sobre el tema es un adicto a java y consigue su dosis saltando de cabeza a casi cualquier cosa que se compila en c6digos de bytes y se le conoce como el culpable de esa nueva area del cerebro ilamada javaesfera por dichos estimulos cuando no estc disfrutando de un cafc puede encontrarle volando a unos 15000 pies de altura en una pequeria cessna gary watson gary watson ha estado desarrollando el uso de java durante 10s ultimos 4 arios es asesor independiente de tecnologias de la informacidn y en la actualidad trabaja como arquitecto tccnico en el financial times ft com en el desarrollo de una importante soluci6n j2ee graduado por la universidad de teeside en 1993 gary es licenciado en ciencias de la informltica siempre que le es posible gary disfruta del windsurf del esqui y de 10s aviones en miniatura n o participa en estas actividades tan a menudo como le gustaria puede encontrarle en gary@comcontracts.demon.co.uk a m i esposa angela por su amor apoyo y aliento mientras luchamos juntos en la vida diaria marc wilcox marc trabaja en el grupo de servicios profesionales de webct inc la principal compafiia del mundo de desarrollo de sistemas de gestidn/entornos de aprendizaje virtual la prdxima version de su producto cuyo nombre en clave es cobalt estari basada en un entorno de aplicaci6n j2ee me gustaria dedicar este libro a doug y a sammy 10s mejores peluqueros del mundo.
[close]
p. 5
alan williamson alan williamson es todo un veterano del mundo java con un lenguaje que todavia intenta encontrar su lugar en el mundo alan cuenta con mis de 15 ahos de experiencia en el mundo del desarrollo de software se graduo con honores en ciencias de la informitica por la universidad de paisley alan trabaj6 principalmente en tareas de investigaci6n y desarrollo hasta que establecio la primera compahia del reino unido dedicada gnicamente a1 asesoramiento en java hace 4 ahos especializandose en java en lado del servidor http www.n-ary.com alan tambih ha llegado hasta lo mis alto convirtihdose en editor jefe de la revista mis importante del mundo sobre java java developers journal y puede encontrarle dando conferencias por todas partes me gustaria dar las gracias a m i querida ceri yami nuevo hijo cormacpor guardar el fuerte mientras yo trabajaba e investigaba para escribir este capitulo buen trabajo adernas me gustaria dar lax gracias a keith y marion por realizar sus tareas de profesor y leer m i capitulo corrigiendo mis errores de gramatica finalmente me gustaria dar las gracias a wrox por hacer de este proceso de escritura algo alegre y no algo doloroso.
[close]
p. 6
introduccion 37 j2ee edici6n 1.3 37 iquk ha cambiado en esta edicion del libro 38 ?a quiin va dirigido este libro tcubles son 10s contenidos de este libro 38 39 lo necesario para utilizar este libro 39 contenedor web 39 contenedor ejb 39 bases de datos 39 software adicional 40 atenci6n a1 cliente c6mo cargar el c6digo de muestra para el libro erratas apoyo via e-mail p2p.wrox.com convenciones ipor quk esre sistema ofrece el rnejor apoyo 40 41 41 41 41 42 42 capitulo 1 plataforma jzee programac~on para empresas 45 46 la empresa actual 46 ies java la respuesta 49 independiente de la plataforma 49 objetos gestionados 49 reusabilidad 49 modularidad 50
[close]
p. 7
estilos de arquitectura de empresa 50 arquitectura de dos niveles 50 arquitectura de tres niveles 51 52 aquitectura de n niveles arquitectura de empresa 53 la plataforma jzee 55 period0 de ejecuci6n de j2ee 55 los api de j2ee 56 contenedores 58 arquitectura jzee arquitectura de contenedor 60 contratos de componentes 61 api de servicio de contenedor 62 63 servicios declarativos otros servicios de contenedor 65 tecnologias jzee 65 tecnologias de componentes 66 componentes web 66 componentes enterprise javabean 67 xml 68 69 tecnologias de servicio jdbc 69 java transaction api y servicio 69 jms 70 javamail 70 lava conector architecture 70 70 jaas 70 tecnologias de comunicaci6n 70 protocolos de internet tcpiip 71 ssl 71 71 protocolos de objeto remoto desarrollo de aplicaciones jzee 71 funciones de desarrollo e implementaci6n de apl~caclones 72 desarrollo de componentes de aplicaci6n 73 composici6n de componentes de aplicaci6n en m6dulos 73 composicibn de m6dulos en aplicaciones 73 74 implementaci6n de la aplicaci6n resumen 75 canitulo 2 servicios de directorio y jndl servicios de designaci6n y de directorio 77 servicios de designaci6n 78 servicios de directorio 79 80 ldap datos ldap 81
[close]
p. 8
las concesiones 85 85 ipor qu6 utilizar jndi cuando tenemos ldap ldap sin jndi 86 86 jndi sin ldap iy xml 86 uso de jndi 86 instalaci6n de jndi 87 proveedores de servicios jndi 87 88 c6mo obtener poveedores de semicios jndi 88 como desarrollar su propio proveedor de servicios java y ldap 89 control de acceso 89 autentificacion 89 90 autorizaci6n 90 semicios de piginas blancas 91 directorio de procesamiento distribuido configuraci6n de la aplicaci6n 91 operaciones ldap 92 92 operaciones ldap estindar 92 conexion a1 semidos ldap con jndi 93 asociacion 94 seguridad simple ssl/tls y sasl 94 simple 95 sasl 95 autentificacion en ldap v2 y ldap v3 95 busqueda en unsenidor ldap 96 filtros ldap de ejemplo 96 determinar el alcance de ldap ldap-scope-subtree 96 ldap-scope-onelevel 97 ldap-scope-base 97 ejecucion de una b6squeda jndi 98 100 cbmo funciona el programa de bhqueda restringir 10s atributos presentados i03 aiiadir entradas 105 111 modificar una entrada 113 eliminar una entrada almacenar y recuperar objetos java en ldap 114 115 ldap tradicional 116 java serializado referencias java 116 116 volver ajndi sin ldap ejemplo de aplicacidn d n s 117
[close]
p. 9
lndice resumen 119 capitulo 3 procesamiento distribuido con rmi 121 la arquitectura rmi 122 capa de stub y skeleton 123 stubs 124 skeletons 124 capa de referencia remota 125 capa de transporte 125 localizaci6n de objetos remotos 126 archivos de politica 128 excepciones rmi 129 desarrollo de aplicaciones con rmi 130 definir la interfaz remota 131 implementar la interfaz remota 131 grabar el cliente que utiliza 10s objetos remotos 133 generar stubs y skeletons 134 registrar el objeto 134 ejecutar el cliente y el servidor 135 pasar parimetros e n rmi 136 parimetros de primitivas 136 parimetros de objeto 136 parimetros remotos 137 clases de carga dinimica retrollamadas remotas activaci6n de objeto el recolector de residuos distribuidos 138 141 146 149 el grupo de activaci6n 150 activationid 151 descriptor de activacion 152 convertir objetos en activables 153 paso 1 crear la interfaz remota 154 paso 2 crear la implementacih del objeto 154 paso 3 registrar el objeto con el sistema 154 alternativa a ampliar la clase activatable 156 iniciar mgltiples jvms sin recurrir a rmid 157 desactivaci6n 159 160 rmi cortafuegos yhttp sockets de adaptaci6n y ssl 172 tunelado http 172 httpa puerto 172 httpacgi 173
[close]
p. 10
lndice el protocolo socks 173 174 factorias de sockets descargados rmi sobre iiop 174 175 interoperatividad con corba 176 escribir programas con rmi-hop 176 en el servidor 176 helloserver.java 177 en el cliente 177 helloclient.java 180 rmi-iiop y java idl 180 el archivo idl 180 la implernentacion de servidor 182 la implementacibn cliente rmi-iiop y j2ee 184 ajustar aplicaciones rmi 185 resumen 189 capitulo 4 programacion de bases de datos con jdbc drivers de bases de datos 193 puente jdbc-odbc 193 tipo 1 parte java parte driver nativo 194 tipo 2 servidor intermediario de acceso a bases de datos 195 tipo 3 drivers java puro 196 tipo 4 196 cdmo comenzar el paquete java.sq1 197 197 gesti6n de conexion 198 acceso a bases de datos 198 tipos de datos 199 metadatos de base de datos 200 excepciones y advertencias 201 cargar un driver de base de datos y abrir conexiones 201 los url de jdbc drivermanager 202 203 mitodos para gestionar drivers 203 mitodos para obtener conexiones 204 mctodos de registro 205 driver 205 establecer una conexion 208 crear y ejecutar instrucciones sql 209 u n ejemplo catdogo de peliculas 210 crear la tabla movie 210 insertar datos 211 mitodos para el manejo de excepciones 214 consultar la base de datos 214 mktodos para recuperar datos interfaz resultsetmetadata 216
[close]
p. 11
instrucciones preparadas 217 219 representar tipos s q l en java 221 apoyo a transacciones 223 puntos de salvaguardia listas de resultados desplazables y actualizables 225 225 listas de resultados desplazables metodos relacionados con la posici6n del cursor 227 227 metodos para desplazamiento 227 direcci6n y tamafio de toma listas de resultados actualizables 230 230 actualizar una fila eliminar una fila 231 231 insertar una fila actualizaciones de lotes 231 el paquete javax.sql fuentes de datos jdbc 232 234 la interfaz javax.sql.datasource 234 el mctodo getconnection 234 235 el metodo getlogintimeout 235 el metodo setlogintimeout el metodo getlogwriter 235 235 el metodo setlogwriter jndiy fuentes de datos 236 237 crear una fuente de datos recuperar un objeto datasource 238 caracteristicas clave 238 239 revisi6n del catilogo de peliculas 240 reserva de conexiones resewa de conexiones tradicional 241 243 resewa de conexiones con el paquete javax.sq1 la interfaz javax.sql.connectionpooldatasource 244 244 la interfaz javax.sql.pooledconnection 245 la interfaz javax.sql.connectioneventlistener la clase javax.sq1.connectionevent 245 245 implementaci6n de reservas de conexi6n 246 transacciones distribuidas i q d es una transacci6n 246 247 antecedentes 248 procesamiento de transacciones conceptos 248 demarcaci6n de transacciones 249 contexto de transacciones y propagaci6n 249 alistamiento de recursos aceptar en dos fases 249 construcci6n de bloques de sistemas de procesamiento de transacciones 250 250 componentes de aplicaci6n 250 gestores de recursos gestor de transacciones 251 251 transacciones distribuidas jdbc
[close]
p. 12
la interfaz javax.sq1.xadatasource 252 la interfaz javax.sql.xaconnection 252 la interfaz javax.transaction.usertransaction 252 pasos para la irnplementaci6n de transacciones distribuidas 253 configuraci6n 254 iniciar una transacci6n 254 operaciones de base de datos 254 finalizar una transaction 255 precauciones especiales 255 objetos rowset 256 la interfaz javax.sql.rowset 257 propiedades 257 eventos 258 ejecuci6n de comandos y resultados 258 tipos de objetos rowset 258 la implementacidn cachedrowset 259 la implementacidn rowset jdbc 261 la implementacidn rowset web 261 resurnen 262 capitulo 5 introduccion a 10s contenedores web el protocolo http 266 mctodos de solicitud http 266 el metodo de solicitud get 266 el mitodo de solicitud post 267 el metodo de solicitud head 267 la respuesta http 267 contenedores web y aplicaciones web 268 sewlets java 269 piginas javaserver 272 descriptores de despliegue 273 estructura de aplicaciones web 274 tipos de contenedores web 274 una sencilla aplicaci6n web 275 prepara el contenedor web 275 crear el archivo html 275 crear un servlet 276 construir la aplicacion web 277 desplegar la aplicaci6n web 281 ejecutar la aplicaci6n web 283 c6mo funciona la aplicaci6n 283 el servlet greeting 284 importar 10s paquetes de servlet 284 declaraci6n de clase 285 revisar la solicitud post http 285 extraer parametros de httpservletrequest 285 generar respuesta 285
[close]
p. 13
el descriptor de despliegue 287 288 resumen capitulo 6 programacion de servlets analisis del api java servlet implementacidn de servlet 292 296 la interfaz servlet 296 el metodo init 297 297 el metodo service el metodo destroy 297 el metodo getservletconfig 298 el metodo getservletinfo 298 la clase genericservlet la interfaz singlethreadmodel la clase httpservlet los metodos service los metodos doxxx el metodo getlastmodified configuracidn de servlets la interfaz servletconfig el metodo getinitparameter el metodo getinitparameternames el metodo getservletcontext el mitodo getservletname0 obtener una referencia a servletconfig durante la inicializaci6n del servlet utilizar el metodo getservletconfig excepciones servlet la clase servletexception la clase unavailablee~ce~tion el ciclo de vida de u n servlet freakservlet el ciclo de vida de 10s servlets instanciaci6n inicializaci6n servicio destruir solicitudes y respuestas lainterfaz servletrequest metodos para solicitar parametros el mktodo getparameter 319 319 el metodo getparametervalues el metodo getparameternames0 320 320 el mktodo getparametermap0 metodos para atributos de solicitud 320 el metodo getattribute 320
[close]
p. 14
el metodo getattributesnames 320 el metodo setattribute 320 el metodo removeattribute0 320 metodos de entrada 321 el metodo getinputstream 321 el metodo getreader 321 el metodo getcharacterencoding0 321 el metodo setcharacterencoding 321 la clase servletrequestwrapper 321 la interfaz httpservletrequest 321 metodos para solicitar ruta y url 323 el metodo getpathinfo0 323 el metodo getpathtranslatedo 323 el metodo getquerystring 324 el metodo getrequesturi0 324 el metodo getrequesturl0 324 el metodo getsewletpath 324 metodos para cabeceras http 324 el m6todogetheadero 324 el metodo getheaders 324 el metodo getheadernames0 324 el metodo getmethod 324 la~lasehtt~servletrequestwrapper 325 la interfaz servletresponse 325 metodos para tip0 de contenido y longitud 325 el metodo setcontenttype 325 el metodo setcontentlength 325 metodos de salida 326 el metodo getoutputstream 326 el metodo getwriter 326 metodos para salida en bfifer 326 el metodo setbuffersize0 326 el mktodo getbuffersize0 326 el metodo resetbuffer 326 el metodo flushbuffer 327 el metodo iscommitted 327 el metodo reset 327 la clase servletresponsewrapper 327 la interfaz httpsewletre onse 327 mctodos para el manejo de errores 328 el metodo senderror 328 el metodo senderror 328 el metodo setstatus 328 el metodo sendredirect 328 la clase httpservletresponsewrapper 328 funci6n de las clases envoltorio 328 programacidn de servlets aplicacidn de apoyo tkcnico 329 configurar la pigina html 330 preparar la base de datos 332
[close]
p. 15
escribir el servlet 333 extraer datos del formulario 334 insertar la solicitud de apoyo tecnico 334 335 generar la respuesta compilar la fuente 336 construir la aplicaci6n web 336 340 el descriptor de despliegue 340 configurar la fuente de datos desplegar la aplicaci6n web 341 apoyo tecnico en marcha 344 resumen 346 capitulo 7 sesiones de servlets context0 y colaboracion protocolo sin estado y sesiones 349 350 enfoques del registro de sesi6n 352 reescritura de url 353 campos de formulario ocultos 354 cookies 354 registro de seslon con el api java senlet 356 creaci6n y registro de sesiones 357 357 la interfaz httpsession metodos para vida de sesion 358 el metodo getcreationtime0 359 el mitodo getid 359 el mitodo getlastaccessedtime 359 el mitodo getmaxinactiveinterval 359 el metodo setmaxinactiveinterval 359 el metodo isnew 359 360 el metodo invalidate 360 demostrar el ciclo de vida de la sesion con cookies ciclo de vida de sesion sin cookies 364 365 metodos para gestionar el estado el metodo getattribute 365 el metodo getattributenames0 365 el mctodo setattribute 365 366 el metodo removeattribute demostrar la gesti6n de estado 366 manejo de eventos de ciclo de vida de sesi6n 369 369 la interfaz httpsessionlistener la interfaz httpsessionactivationlistener 370 el mitodo sessiondidactivate 370 370 el metodo sessionwillpassivate 370 la clase httpsessionevent el mctodo getsession 370 manejo de eventos de atributos de sesi6n 371 371 la interfaz httpsessionbindinglistener el metodo valuebound 371 el metodo valueunbound 371
[close]