Professional Documents
Culture Documents
Legal Notice
Co pyright 20 14 Red Hat, Inc..
This do cument is licensed by Red Hat under the Creative Co mmo ns Attributio n-ShareAlike 3.0
Unpo rted License. If yo u distribute this do cument, o r a mo dified versio n o f it, yo u must pro vide
attributio n to Red Hat, Inc. and pro vide a link to the o riginal. If the do cument is mo dified, all Red
Hat trademarks must be remo ved.
Red Hat, as the licenso r o f this do cument, waives the right to enfo rce, and agrees no t to assert,
Sectio n 4 d o f CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shado wman lo go , JBo ss, MetaMatrix, Fedo ra, the Infinity
Lo go , and RHCE are trademarks o f Red Hat, Inc., registered in the United States and o ther
co untries.
Linux is the registered trademark o f Linus To rvalds in the United States and o ther co untries.
Java is a registered trademark o f Oracle and/o r its affiliates.
XFS is a trademark o f Silico n Graphics Internatio nal Co rp. o r its subsidiaries in the United
States and/o r o ther co untries.
MySQL is a registered trademark o f MySQL AB in the United States, the Euro pean Unio n and
o ther co untries.
No de.js is an o fficial trademark o f Jo yent. Red Hat So ftware Co llectio ns is no t fo rmally
related to o r endo rsed by the o fficial Jo yent No de.js o pen so urce o r co mmercial pro ject.
The OpenStack Wo rd Mark and OpenStack Lo go are either registered trademarks/service
marks o r trademarks/service marks o f the OpenStack Fo undatio n, in the United States and o ther
co untries and are used with the OpenStack Fo undatio n's permissio n. We are no t affiliated with,
endo rsed o r spo nso red by the OpenStack Fo undatio n, o r the OpenStack co mmunity.
All o ther trademarks are the pro perty o f their respective o wners.
Abstract
Este libro es una gua para migrar su aplicaci n de versio nes previas de la platafo rma de
aplicacio nes empresariales JBo ss de Red Hat.
T able of Contents
.Prefacio
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. . . . . . . . . .
1. Co nvenc io nes d el Do c umento
4
1.1. Co nvenc io nes tip o g rfic as
4
1.2. Co nvenc io nes d el d o c umento
5
1.3. No tas y Ad vertenc ias
6
2 . C mo o b tener ayud a y hac er s us c o mentario s
6
2 .1. Nec es ita ayud a?
6
2 .2. Nec es itamo s s us c o mentario s !
7
. .apt
C
. . . ulo
...1
. .. .Int
. . roduccin
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. . . . . . . . . .
1.1. Platafo rma d e ap lic ac io nes emp res ariales JBo s s 6 d e Red Hat
8
1.2. So b re la g ua d e mig rac i n
8
. .apt
C
. . . ulo
...2
. .. .Preparacin
. . . . . . . . . . .para
. . . .la
. .migracin
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9. . . . . . . . . .
2 .1. Prep arac i n p ara la mig rac i n
2 .2. Revis i n d e lo nuevo y d iferente en JBo s s EAP 6
2 .3. Revis i n d e la lis ta d e func io nalid ad es no s o p o rtad as y ya no utiliz ad as
9
10
11
. .apt
C
. . . ulo
. . . 3.
. . Migre
. . . . . .su
. . aplicacin
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. 2. . . . . . . . . .
3 .1. Camb io s req uerid o s p o r la mayo ra d e las ap lic ac io nes
12
3 .1.1. Revis i n d e lo s c amb io s req uerid o s p o r la mayo ra d e las ap lic ac io nes
12
3 .1.2. Camb io s en la c arg a d e c las es
12
3 .1.2.1. Ac tualiz ac i n d e la ap lic ac i n d eb id o a c amb io s en la c arg a d e c las es
12
3 .1.2.2. Dep end enc ias d e m d ulo s
12
3 .1.2.3. Ac tualiz ar las d ep end enc ias d e la ap lic ac i n d eb id o a lo s c amb io s en la c arg a d e
c las es
13
3 .1.3. Camb io s d el arc hivo d e c o nfig urac i n
14
3 .1.3.1. Crear o mo d ific ar arc hivo s q ue c o ntro lan la c arg a d e c las es en JBo s s EAP 6
14
3 .1.3.2. jb o s s -d ep lo yment-s truc ture.xml
18
3 .1.3.3. Emp ac ar rec urs o s p ara el nuevo s is tema mo d ular d e c arg a d e c las es
18
3 .1.3.4. Camb iar la ub ic ac i n d e las p ro p ied ad es Res o urc eBund le
18
3 .1.3.5. Crear un m d ulo p ers o naliz ad o
19
3 .1.4. Camb io s d e inic io d e s es i n
20
3 .1.4.1. Mo d ific ar las d ep end enc ias d e reg is tro s
20
3 .1.4.2. Ac tualiz ac i n d el c d ig o d e ap lic ac i n p ara marc o s d e trab ajo d e reg is tro s d e
terc ero s
21
3 .1.4.3. Mo d ific ar el c d ig o p ara utiliz ar el nuevo marc o d e trab ajo d e inic io d e s es i n JBo s s
23
3 .1.5. Camb io s en el emp aq ue d e ap lic ac io nes
24
3 .1.5.1. Mo d ific ac i n d el emp aq ue d e EARs y WARs
24
3 .1.6 . Camb io s d e c o nfig urac i n d el ad ap tad o r d e rec urs o s y fuentes d e d ato s
25
3 .1.6 .1. Ac tualiz ac i n d e la ap lic ac i n d eb id o a c amb io s en la c o nfig urac i n
25
3 .1.6 .2. Ac tualiz ac i n d e la c o nfig urac i n d e la fuente d e d ato s
25
3 .1.6 .3. Ins talac i n y c o nfig urac i n d el c o ntro lad o r JDBC
26
3 .1.6 .4. Co nfig urac i n d e la fuente d e d ato s p ara Hib ernate o JPA
31
3 .1.6 .5. Ac tualiz ac i n d e la c o nfig urac i n d el ad ap tad o r d e rec urs o s
31
3 .1.7. Camb io s d e s eg urid ad
33
3 .1.7.1. Co nfig urac i n d e lo s c amb io s d e s eg urid ad d e la ap lic ac i n
33
3 .1.7.2. Ac tualiz ac i n d e ap lic ac io nes q ue us an Pic ketLink STS y Web Servic es
34
3 .1.8 . Camb io s d e JNDI
35
3 .1.8 .1. Ac tualiz ac i n d e lo s no mb res d e es p ac io s d e no mb res JNDI d e la ap lic ac i n
35
3 .1.8 .2. No mb res JNDI EJB p o rttiles
35
3 .1.8 .3. Revis i n d e las reg las d el es p ac io d e no mb res d e JNDI
36
36
3 .1.8 .4. Mo d ifiq ue la ap lic ac i n a s eg uir las nuevas reg las d e lo s es p ac io s d e no mb re JNDI
3 .1.8 .5. Ejemp lo s d e es p ac io s d e no mb res JNDI en lanz amiento s anterio res y la manera en
q ue s e es p ec ific an en JBo s s EAP 6
3 .2. Camb io s d ep end ientes d e la arq uitec tura d e s u ap lic ac i n y c o mp o nentes
37
38
38
3 .2.1. Revis i n d e lo s c amb io s d ep end iend o d e la arq uitec tura y c o mp o nentes d e s u ap lic ac i n
3 .2.2. Camb io s d e JPA y Hib ernate
40 39
3 .2.2.1. Ac tualiz ar ap lic ac io nes q ue utiliz an Hib ernate y/o JPA
3 .2.2.2. Co nfig urac i n d e c amb io s p ara las ap lic ac io nes q ue us an Hib ernate y JPA
3 .2.2.3. Pro p ied ad es d e la unid ad d e p ers is tenc ia
3 .2.2.4. Ac tualiz ac i n d e s u ap lic ac i n Hib ernate 3 p ara utiliz ar Hib ernate 4
3 .2.2.5. Pres ervar el c o mp o rtamiento exis tente d el valo r auto g enerad o d e la id entid ad d e
Hib ernate
3 .2.2.6 . Mig rac i n d e s u ap lic ac i n Hib ernate 3.3.x a Hib ernate 4.x
3 .2.2.7. Mig rac i n d e s u ap lic ac i n Hib ernate 3.5.x a Hib ernate 4.x
3 .2.2.8 . Mo d ific ac i n d e las p ro p ied ad es d e p ers is tenc ia p ara las ap lic ac io nes Hib ernate y
Seam mig rad as q ue ejec utan en un ento rno c o n c ls ters
3 .2.2.9 . Ac tualiz ac i n d e s u ap lic ac i n p ara q ue c ump la c o n lo s req uerimiento s d e la
es p ec ific ac i n JPA 2.0
40
40
41
43
47
49
44
44
45
46
47
50
51
51
52
52
55
55
56
56
63
64
64
64
70
82
82
89
89
90
90
94
97
97
97
97
97
97
97
. .apt
C
. . . ulo
...4
. .. .Herramient
. . . . . . . . . as
. . .y. consejos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9. 8. . . . . . . . . .
4 .1. Rec urs o s d e ayud a c o n la mig rac i n
98
4 .1.1. Rec urs o s p ara ayud arle en s u mig rac i n
4 .1.2. Familiariz ac i n c o n las herramientas q ue le ayud an c o n la mig rac i n
4 .1.3. Us o d e Tattletale p ara enc o ntrar d ep end enc ias d e ap lic ac io nes
98
98
98
99
99
4 .1.6 . Us o d e la herramienta Iro nJac amar p ara mig rar c o nfig urac io nes d el ad ap atad o r d e
rec urs o s y la fuente d e d ato s
10 0
4 .1.7. Des c arg a e ins talac i n d e la herramienta d e mig rac i n Iro nJac amar
10 0
4 .1.8 . Us e la herramienta d e mig rac i n Iro nJac amar p ara c o nvertir un arc hivo d e c o nfig urac i n d e
la fuente d e d ato s
10 1
4 .1.9 . Us o d e la herramienta d e mig rac i n Iro nJac amar p ara c o nvertir un arc hivo d e c o nfig urac i n
d el ad ap tad o r d e rec urs o s
10 3
4 .2. Pro b lemas d e mig rac i n d e d ep urac i n
10 8
4 .2.1. Dep urar y res o lver p ro b lemas d e mig rac i n
4 .2.2. Dep urar y res o lver Clas s No tFo und Exc ep tio ns y No Clas s DefFo und Erro rs
10 8
10 8
10 8
10 9
110
111
4 .2.7. Dep urar y res o lver erro res d e la p g ina d e d ep urac i n d e JBo s s Seam
4 .3. Revis e la mig rac i n d e las ap lic ac io nes d e ejemp lo
4 .3.1. Revis e la mig rac i n d e las ap lic ac io nes d e ejemp lo
4 .3.2. Mig rac i n d el ejemp lo Seam 2.2 JPA a JBo s s EAP 6
4 .3.3. Mig rac i n d el ejemp lo d e res ervas Seam 2.2 a JBo s s EAP 6
111
113
113
113
115
4 .3.4. Mig rac i n d el arc hivad o r d e res ervas d e Seam 2.2 a JBo s s EAP 6 : ins truc c io nes p as o p o r
p as o
118
4 .3.5. Co ns truc c i n e imp lementac i n d e JBo s s EAP vers i n 5.X d e la ap lic ac i n d e res ervas
Seam 2.2
119
4 .3.6 . Dep urac i n y res o luc i n d e erro res y exc ep c io nes d e imp lementac i n d el arc hivad o r d e
res ervas Seam 2.2
120
4 .3.7. Dep urac i n y res o luc i n d e erro res y exc ep c io nes en tiemp o d e ejec uc i n d el arc hivad o r
d e res ervas Seam 2.2
129
4 .3.8 . Revis i n d e un res umen d e lo s c amb io s realiz ad o s al mig rar la ap lic ac i n d e res ervas
Seam 2.2
133
. . . . orial
Hist
. . . . de
. . . revisiones
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. 36
...........
Prefacio
1. Convenciones del Document o
Este manual utiliza varias convenciones para resaltar algunas palabras y frases y llamar la
atencin sobre ciertas partes especficas de informacin.
Prefacio
Desktop
Desktop1
photos
scripts
stuff
svgs
svn
int r = 0;
mutex_lock(& kvm->lock);
before, "
kvm_deassign_device(kvm, match);
kvm_free_assigned_device(kvm, match);
o ut:
mutex_unlock(& kvm->lock);
return r;
Nota
Una nota es una sugerencia, atajo o enfoque alternativo para una tarea determinada. Ignorar
una nota no debera tener consecuencias negativas, pero podra perderse de algunos trucos
que pueden facilitarle las cosas.
Importante
Los cuadros con el ttulo de importante dan detalles de cosas que se pueden pasar por alto
fcilmente: cambios de configuracin nicamente aplicables a la sesin actual, o servicios
que necesitan reiniciarse antes de que se aplique una actualizacin. Ignorar estos cuadros
no ocasionar prdida de datos, pero puede causar enfado y frustracin.
Aviso
Las advertencias no deben ignorarse. Ignorarlas muy probablemente ocasionar prdida de
datos.
Prefacio
Si encuentra dificultades con alguno de los procedimientos descritos en este documento, visite el
Portal del cliente de Red Hat en http://access.redhat.com. A travs del portal del cliente, usted podr:
buscar o navegar a travs de la base de artculos de soporte tcnico sobre productos de Red
Hat.
enviar un caso de soporte a Servicios de Soporte Global de Red Hat (GSS)
acceder a otra documentacin del producto.
Red Hat alberga una lista grande de correos electrnicos para discutir sobre software de Red Hat y
tecnologa. Encontrar un listado de las listas de correo disponibles al pblico en
https://www.redhat.com/mailman/listinfo. Haga clic en el nombre de la lista a la que quiera
suscribirse o para acceder a los archivos de listados.
Captulo 1. Introduccin
1.1. Plat aforma de aplicaciones empresariales JBoss 6 de Red Hat
Red Hat JBoss Enterprise Application Platform 6 (JBoss EAP 6) es una plataforma middleware
construida con base en estndares libres y cumple con los requerimientos de la especificacin Java
empresarial edicin 6. Integra JBoss Application Server 7 con clsters de alta disponibilidad,
mensajera, cach distribuido y otras tecnologas.
JBoss EAP 6 incluye una nueva estructura modular que permite la habilitacin de servicio solo
cuando se requiere, mejorando la velocidad de arranque.
La consola de administracin y la interfaz de lnea de comandos de administracin hacen
innecesario la modificacin de archivos de configuracin XML y agregan la habilidad para utilizar
scripts y automatizar tareas.
Adems, JBoss EAP 6 incluye APIs y marcos de trabajo de desarrollo para desarrollar rpidamente
aplicaciones Java EE seguras y escalables.
Reportar un error
Importante
Antes de realizar modificaciones a su aplicacin asegrese de crear una copia de seguridad.
Reportar un error
10
11
12
3.1 .2 .3. Act ualizar las de pe nde ncias de la aplicaci n de bido a lo s cam bio s e n la
carga de clase s
R esu men
La carga de clases en JBoss EAP 6 es bastante diferente de las versiones anteriores de JBoss EAP.
La carga de clases ahora se basa en el proyecto JBoss Modules. En lugar de un solo cargador de
clases jerrquico que carga todas las JARs en una ruta de clases plana, cada biblioteca se
convierte en un mdulo que slo enlaza con los mdulos exactos de los que depende. Las
implementaciones en JBoss EAP 6 tambin son mdulos y no tienen acceso a las clases definidas
en JARs en el servidor de aplicaciones a menos de que se defina una dependencia explcita en esas
clases. Algunas dependencias de mdulos definidas por el servidor de aplicaciones se configuran
de manera automtica. Por ejemplo, si est implementando una aplicacin Java EE, se agrega una
dependencia en la API Java EE a su mdulo de manera automtica o implcita. Para ver una lista
completa de las dependencias que se agregan automticamente por parte del servidor consulte la
seccin Implicit Module Dependencies en el captulo titulado Carga de clases y mdulos en la Gua de
desarrollo para JBoss EAP 6 en
https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.
T areas
Cuando migre su aplicacin a JBoss EAP 6, es posible que necesite realizar una o ms de las
siguientes tareas debido a los cambios en la carga modular de clases:
Seccin 3.1.2.2, D ependencias de mdulos
Seccin 4.1.3, Uso de Tattletale para encontrar dependencias de aplicaciones
Seccin 3.1.3.1, Crear o modificar archivos que controlan la carga de clases en JBoss EAP 6
Seccin 3.1.3.3, Empacar recursos para el nuevo sistema modular de carga de clases
Reportar un error
13
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
< jboss-web>
< !-
<class-loading java2ClassLoadingCompliance="false">
<loader-repository>
seam.jboss.org:loader=MyApplication
<loader-repositoryconfig>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</class-loading>
-->
</jboss-web>
MAN IFEST .MF
Man u almen t e mo d if icad o
D ependiendo de los componentes o mdulos que su aplicacin utilice es posible
que necesite agregar una o ms dependencias a este archivo. Las puede agregar
como entradas D epend enci es o C l ass-P ath.
El siguiente es un ejemplo de MANIFEST . MF modificado por un desarrollador:
M anifest-Version: 1.0
D ependencies: org.jboss.logmanager
C lass-Path: OrderManagerEJB.jar
14
< plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<configuration>
<ejbVersion>3.0</ejbVersion>
</configuration>
< /plugin>
Si el cdigo EJB 3.0 usa o rg . apache. co mmo ns. l o g necesita esa
dependencia en el archivo MANIFEST . MF. Para generar esa dependencia
agregue el elemento <pl ug i n> al archivo po m. xml as:
< plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<configuration>
<ejbVersion>3.0</ejbVersion>
<archive>
<manifestFile>src/main/resources/METAINF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
< /plugin>
En el ejemplo anterior el archivo src/mai n/reso urces/MET AINF/MANIFEST . MF solo necesita contener la entrada de la dependencia:
D ependencies: org.apache.commons.logging
Maven generar el archivo MANIFEST . MF completo:
M anifest-Version: 1.0
D ependencies: org.apache.commons.logging
jb o ss- d ep lo ymen t - st ru ct u re.xml
Este archivo es un descriptor de implementacin especfico de JBoss que se puede utilizar
para controlar la carga de clases de una manera detallada. Como el MANIFEST . MF, este
archivo se puede utilizar para agregar dependencias. Tambin puede prevenir el agregar
dependencias automticas, definir mdulos adicionales, cambiar el comportamiento de
cargas de clases aisladas de una implementacin EAR y agregar races de recursos
adicionales a un mdulo.
15
<dependencies>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
</exclusions>
<dependencies>
</dependencies>
</sub-deployment>
< /jboss-deployment-structure>
Para mayor informacin sobre este archivo consulte: Seccin 3.1.3.2, jboss-deploymentstructure.xml .
ap p licat io n .xml
En versiones anteriores de JBoss EAP, usted controlaba el orden de las implementaciones
dentro de un EAR usando el archivo jbo ss-app. xml . Esto ya no funciona as. La
especificacin Java EE6 proporciona el elemento <i ni ti al i ze-i n-o rd er> en el
appl i cati o n. xml el cual permite controlar el orden en que los mdulos Java EE se
implementan dentro de un EAR.
En la mayora de los casos no necesita especificar el orden de la implementacin. Si su
aplicacin usa inyecciones de dependencias y referencias de recursos para referirse a
componentes en mdulos externos, en la mayora de los casos el elemento
<i ni ti al i ze-i n-o rd er> no se requiere ya que el servidor de aplicaciones puede
determinar implcitamente la manera correcta y ptima de ordenar los componentes.
Vamos a asumir que tiene una aplicacin que contiene un myBeans. jar y una
myApp. war empacados dentro de un myApp. ear. Un servlet en el myApp. war usa una
anotacin @ EJB para inyectar un bean desde myBeans. jar. En este caso, el servidor de
aplicaciones tiene el conocimiento apropiado para asegurarse de que el componente EJB
est disponible antes de que se inicie el servlet y no tenga que utilizar el elemento
<i ni ti al i ze-i n-o rd er>.
Sin embargo, si ese servlet usa referencias remotas del estilo de bsqueda JND I de legado
como las siguientes para acceder al bean es posible que necesite especificar el orden de
los mdulos.
i nit() {
Context ctx = new InitialContext();
ctx.lookup("TheBeanInMyBeansModule");
16
}
En este caso, el servidor no puede determinar que el componente EJB se encuentra en la
myBeans. jar y necesita reforzar que los componentes en la myBeans. jar sean
inicializados antes que los componentes en myApp. war. Para lograr esto, configure el
elemento <i ni ti al i ze-i n-o rd er> como true y especifique el orden de los mdulos
myBeans. jar y myApp. war en el archivo appl i cati o n. xml .
El siguientes es un ejemplo que usa el elemento <i ni ti al i ze-i n-o rd er> para
controlar el orden de la implementacin. La myBeans. jar se implementa antes que el
archivo myApp. war.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="6"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/application_6.xsd">
<application-name>myApp</application-name>
<initialize-in-order>true</initialize-in-order>
<module>
<ejb>myBeans.jar</ejb>
</module>
<module>
<web>
<web-uri>myApp.war</web-uri>
<context-root>myApp</context-root>
</web>
</module>
< /application>
El esquema para el archivo appl i cati o n. xml se puede encontrar en
http://java.sun.com/xml/ns/javaee/application_6.xsd.
Nota
D ebe tener en cuenta que la configuracin del elemento <i ni ti al i ze-i no rd er> como true demora la implementacin. Es preferible definir dependencias
apropiadas usando las inyecciones de dependencias o referencias de recursos ya
que le da al contenedor mayor flexibilidad optimizando las implementaciones.
jb o ss- ejb 3.xml
El descriptor de implementacin jbo ss-ejb3. xml reemplaza el descriptor de
implementacin jbo ss. xml para sobreescribir y agregar a las funcionalidades
proporcionadas por el descriptor de implementacinejb-jar. xml de la edicin
empresarial Java (EE). El nuevo archivo es incompatible con jbo ss. xml y el jbo ss. xml
ahora se ignora en las implementaciones.
lo g in - co n f ig .xml
El archivo l o g i n-co nfi g . xml ya no se utiliza para la configuracin de la seguridad.
La seguridad ahora se configura en el elemento <securi ty-d o mai n> en el archivo de
17
3.1 .3.3. Em pacar re curso s para e l nue vo sist e m a m o dular de carga de clase s
R esu men
En versiones anteriores de JBoss EAP, todos los recursos dentro del directorio WEB-INF/ se
agregaron a la ruta de clase WAR. En JBoss EAP 6, los artefactos de la aplicacin web solo se
cargan desde los directorios WEB-INF/cl asses y WEB-INF/l i b. Si no se empacan los artefactos
de la aplicacin en los lugares especificados se pueden generar C l assNo tFo und Excepti o n,
No C l assD efErro r u otros errores en tiempo de ejecucin.
Para resolver estos errores de carga de clases debe modificar la estructura su archivador de
aplicaciones o definir un mdulo personalizado.
Mo d if icar el emp aq u e d e recu rso s
Para hacer los recursos disponibles solo para la aplicacin tiene que poner juntos los
archivos de propiedades u otros artefactos con la WAR movindolos al directorio WEBINF/cl asses/ o WEB-INF/l i b/. Este enfoque se describe en ms detalles aqu:
Seccin 3.1.3.4, Cambiar la ubicacin de las propiedades ResourceBundle
C rear u n m d u lo p erso n aliz ad o
Si quiere hacer disponibles recursos personalizados para todas las aplicaciones
ejecutando en el servidor de JBoss EAP 6 tiene que crear un mdulo personalizado. Este
enfoque se describe en ms detalle aqu: Seccin 3.1.3.5, Crear un mdulo
personalizado
Reportar un error
3.1 .3.4 . Cam biar la ubicaci n de las pro pie dade s Re so urce Bundle
R esu men
En versiones anteriores de JBoss EAP, el directorio EAP_HOME/server/SERVER_NAME/co nf/ se
encontraba en la ruta de clase y disponible para la aplicacin. Para hacer las propiedades
disponibles para la ruta de clase de la aplicacin en JBoss EAP 6, debe empacarlas dentro de su
aplicacin.
Pro ced imien t o 3.2. C amb iar la u b icaci n d e las p ro p ied ad es R eso u rceB u n d le
18
<resources>
<resource-root path="properties"/>
</resources>
< /module>
2. Modifique el subsistema ee en el archivo de configuracin del servidor. Puede utilizar el CLI
JBoss o puede modificar manualmente el archivo.
A. Siga estos pasos para modificar el archivo de configuracin usando el CLI JBoss.
a. Inicie el servidor y conctese al CLI de administracin.
A. Para Linux, ingrese lo siguiente en la lnea de comandos:
$ EAP_HOME/bin/jboss-cli.sh --connect
B. Para Windows, ingrese lo siguiente en la lnea de comandos:
C:\>EAP_HOME\bin\jboss-cli.bat --connect
D ebe ver la siguiente respuesta:
Conectado a un controlador autnomo en localhost:9999
19
<global-modules>
</global-modules>
< /subsystem>
3. Asumiendo que copi un archivo llamado my. pro perti es en la ubicacin correcta del
mdulo ahora puede cargar archivos de propiedades usando cdigo similar al siguiente:
T hread.currentThread().getContextClassLoader().getResource("my.prop
erties");
Reportar un error
20
1. Seccin 3.1.4.2, Actualizacin del cdigo de aplicacin para marcos de trabajo de registros
de terceros
2. Seccin 3.1.4.3, Modificar el cdigo para utilizar el nuevo marco de trabajo de inicio de
sesin JBoss
Reportar un error
Nota
Ya que este mtodo utiliza un archivo de configuracin log4j ya no podr cambiar la
configuracin de registro log4j en la ejecucin.
1. Cree un jbo ss-d epl o yment-structure. xml con el siguiente contenido:
< jboss-deployment-structure>
<deployment>
<exclusions>
</exclusions>
</deployment>
< /jboss-deployment-structure>
2. Ponga el archivo jbo ss-d epl o yment-structure. xml en el directorio MET A-INF/ o en el
directorio WEB-INF/ si est implementando un WAR o en el directorio MET A-INF/ si est
implementando un EAR. Si su implementacin incluye implementaciones dependientes hijas
tambin debe excluir el mdulo para cada subimplementacin.
21
< jboss-deployment-structure>
<deployment>
<exclusions>
</exclusions>
<resources>
</resources>
</deployment>
< /jboss-deployment-structure>
4. Inicie el servidor JBoss EAP 6 con el siguiente argumento de tiempo de ejecucin para
prevenir que se presente una C l assC astExcepti o n en la consola cuando implementa la
aplicacin:
-Dorg.jboss.as.logging.per-deployment=false
5. Implemente su aplicacin.
Pro ced imien t o 3.6 . C o n f ig u raci n d e las d ep en d en cias d e reg ist ro p ara JB o ss EAP 6 .3
o p o st erio res
En JBoss EAP 6.3 y posteriores puede utilizar el nuevo atributo del sistema de registro ad d l o g g i ng -api -d epend enci es para excluir dependencias del marco de trabajo de registro de
terceros. Los siguientes pasos demuestran cmo modificar este atributo de registro en un servidor
autnomo JBoss EAP.
1. Inicie el servidor JBoss EAP 6 con el siguiente argumento de tiempo de ejecucin para
prevenir que se presente una C l assC astExcepti o n en la consola cuando implementa la
aplicacin:
-Dorg.jboss.as.logging.per-deployment=false
2. Abra una terminal y conctese al CLI de administracin.
A. Para Linux, ingrese lo siguiente en la lnea de comandos:
$ EAP_HOME/bin/jboss-cli.sh --connect
B. Para Windows, ingrese lo siguiente en la lnea de comandos:
C:\>EAP_HOME\bin\jboss-cli.bat --connect
3. Modifique el atributo ad d -l o g g i ng -api -d epend enci es en el subsistema de registro.
Este atributo controla si el contenedor debe agregar dependencias implcitas API de registro
a sus implementaciones.
22
<add-logging-api-dependencies value="false"/>
....
< /subsystem>
4. Implemente su aplicacin.
Reportar un error
3.1 .4 .3. Mo dificar e l c digo para ut ilizar e l nue vo m arco de t rabajo de inicio de
se si n JBo ss
R esu men
Para utilizar el nuevo marco de trabajo, cambie sus importaciones y su cdigo as:
Pro ced imien t o 3.7. Mo d if icar el c d ig o y las d ep en d en cias p ara u t iliz ar el marco d e
t rab ajo d e in icio d e sesi n JB o ss
1. C amb ie su s imp o rt acio n es y su c d ig o d e in icio d e sesi n
El siguiente es un ejemplo del cdigo que utiliza el nuevo marco de trabajo de inicio de
sesin JBoss:
i mport org.jboss.logging.Level;
i mport org.jboss.logging.Logger;
p rivate static final Logger logger =
Logger.getLogger(MyClass.class.toString());
i f(logger.isTraceEnabled()) {
logger.tracef("Starting...", subsystem);
}
2. Ag reg u e la d ep en d en cia d e in icio d e sesi n
La JAR que contiene las clases de inicio de sesin de JBoss se encuentra en el mdulo
llamado o rg . jbo ss. l o g g i ng . Su archivo MANIFEST -MF se debe ver as:
23
Manifest-Version: 1.0
Dependencies: org.jboss.logging
Para mayor informacin sobre cmo encontrar la dependencia del mdulo consulte
Seccin 3.1.2.3, Actualizar las dependencias de la aplicacin debido a los cambios en la
carga de clases and Seccin 4.2.1, D epurar y resolver problemas de migracin .
Reportar un error
24
Para mayor informacin sobre la carga de clases consulte el captulo titulado Mdulos y
carga de clases en la Gua de desarrollo para JBoss EAP 6 en
https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.
Reportar un error
25
26
27
<resource-root path="mysql-connector-java5.1.15.jar"/>
< /resources>
< dependencies>
<module name="javax.api"/>
< /dependencies>
< /module>
El nombre del mdulo, " com.mysql" , coincide con la estructura del
directorio para este mdulo. El elemento <d epend enci es> se usa para
especificar las dependencias de este mdulo en otros mdulos. En este
caso, tal como los es con todas las fuentes de datos JD BC, depende de
las APIs JD BC Java que se definen en otro mdulo llamado javax. api .
Ese mdulo se encuentra bajo el directorio
mo d ul es/system/l ayers/base/javax/api /mai n/.
Nota
Asegrese de NO tener un espacio al principio del archivo
mo d ul e. xml de otra manera obtendr un error " New
missing/unsatisfied dependencies" para este controlador.
iii. Copie la JAR del controlador MySQL JD BC en el directorio
EAP_HOME/mo d ul es/co m/mysq l /mai n/:
$ cp mysql-connector-java-5.1.15.jar
EAP_HOME/mo d ul es/co m/mysq l /mai n/
B. In st alaci n d el co n t ro lad o r IB M D B 2 JD B C y la JAR licen cia co mo u n
m d u lo n cleo .
Este ejemplo se proporciona slo para demostrar la manera de implementar
controladores que requieren JARs adems de la JAR del controlador JD BC.
i. Cree la estructura del directorio
EAP_HOME/mo d ul es/co m/i bm/d b2/mai n/.
ii. En el subdirectorio mai n/, cree un archivo mo d ul e. xml que contenga la
siguiente definicin de mdulo para el controlador IBM D B2 JD BC y
licencia:
28
<resource-root path="db2jcc.jar"/>
<resource-root path="db2jcc_license_cisuz.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
< /module>
Nota
Asegrese de NO tener un espacio al principio del archivo
mo d ul e. xml de otra manera obtendr un error " New
missing/unsatisfied dependencies" para este controlador.
iii. Copie el controlador JD BC y la JAR de lincencia en el directorio
EAP_HOME/mo d ul es/co m/i bm/d b2/mai n/.
$ cp db2jcc.jar EAP_HOME/mo d ul es/co m/i bm/d b2/mai n/
$ cp db2jcc_license_cisuz.jar
EAP_HOME/mo d ul es/co m/i bm/d b2/mai n/
Las ventajas de este enfoque son:
Este es el nico enfoque que funciona cuando el controlador JD BC consiste de
ms de una JAR.
Con este enfoque, los controladores que no cumplen con los requerimientos de
JD BC 4.0 se pueden instalar sin modificar la JAR del controlador o creando una
superposicin de archivos.
Las desventajas de este enfoque son:
Es ms dificil configurar un mdulo.
El mdulo se debe copiar manualmente en todos los servidores ejecutando en un
dominio administrado.
2. C o n f ig u re la f u en t e d e d at o s.
a. Ag reg u e el co n t ro lad o r d e la b ase d e d at o s.
Agregar el elemento <d ri ver> al elemento <d ri vers> del mismo archivo.
Nuevamente esto contiene alguna de la misma informacin de la fuente de datos que
se defini previamente en el archivo *-d s. xml .
Primero determine si la JAR controladora cumple con los requerimientos de JD BC
4.0. Una JAR que cumple con los requerimientos de JD BC 4.0 contiene un archivo
MET A-INF/servi ces/java. sq l . D ri ver que especifica el nombre de la clase
29
controladora. El servidor usa este archivo para encontrar el nombre de las clases
controladoras en la JAR. Un controlador que cumpla con los requerimientos de
JD BC 4.0 no requiere un elemento <d ri ver-cl ass> ya que ya se especifica en la
JAR. Este es un ejemplo del elemento controlador para un controlador MySQL que
cumple con los requerimientos de JD BC 4.0:
Importante
Tiene que detener el servidor antes de modificar el archivo de configuracin
del servidor para que su cambio persista al reiniciar el servidor.
El siguiente es un ejemplo de un elemento de la fuente de datos MySQL en el archivo
stand al o ne. xml :
<min-pool-size>100</min-pool-size>
<max-pool-size>200</max-pool-size>
</pool>
<security>
<user-name>USERID</user-name>
<password>PASSWORD</password>
</security>
<statement>
30
<prepared-statement-cache-size>100</prepared-statementcache-size>
<share-prepared-statements/>
</statement>
< /datasource>
3. Act u aliz aci n d e las ref eren cias JN D I en el c d ig o d e la ap licaci n .
D ebe reemplazar los nombres de las bsquedas JND I que estn desactualizados en el
cdigo fuente de la aplicacin para utilizar los nuevos nombres de la fuente de datos
estndar JND I que haya definido. Para obtener mayor informacin, consulte:
Seccin 3.1.8.4, Modifique la aplicacin a seguir las nuevas reglas de los espacios de
nombre JND I .
Tambin debe reemplazar cualquier anotacin @ R eso urce existente que acceda la fuente
de datos para utilizar el nuevo nombre JND I. Por ejemplo:
@ Resource(name = "java:/YourDatasourceName").
Reportar un error
31
Importante
Tiene que detener el servidor antes de modificar el archivo de configuracin del servidor para
que su cambio persista al reiniciar el servidor.
D ef in ir el ad ap t ad o r d e recu rso s
La informacin del descriptor del adaptador de recursos se define bajo el siguiente elemento del
subsistema en el archivo de configuracin del servidor:
< subsystem xmlns="urn:jboss:domain:resource-adapters:1.1"/>
Utilizar un poco de la misma informacin que se definio previamente en el archivo del adaptador
de recursos *-d s. xml .
El siguiente es un ejemplo de un elemento del adaptador de recursos en el archivo de configuracin
del servidor:
< resource-adapters>
<resource-adapter>
<archive>multiple-full.rar</archive>
<config-property name="Name">ResourceAdapterValue</config-property>
<transaction-support>NoTransaction</transaction-support>
<connection-definitions>
<connection-definition
classname="org.jboss.jca.test.deployers.spec.rars.multiple.MultipleManagedConn
ectionFactory1"
enabled="true" jndi-name="java:/eis/MultipleConnectionFactory1"
pool-name="MultipleConnectionFactory1">
<config-property
name="Name">MultipleConnectionFactory1Value</config-property>
</connection-definition>
<connection-definition
classname="org.jboss.jca.test.deployers.spec.rars.multiple.MultipleManagedConn
ectionFactory2"
enabled="true" jndi-name="java:/eis/MultipleConnectionFactory2"
pool-name="MultipleConnectionFactory2">
<config-property
name="Name">MultipleConnectionFactory2Value</config-property>
</connection-definition>
</connection-definitions>
<admin-objects>
<admin-object
classname="org.jboss.jca.test.deployers.spec.rars.multiple.MultipleAdminObject
1Impl"
jndi-name="java:/eis/MultipleAdminObject1">
<config-property name="Name">MultipleAdminObject1Value</configproperty>
</admin-object>
<admin-object classname="org.jboss.jca.test.deployers.spec.rars.multiple.MultipleAdminObject
32
2Impl"
jndi-name="java:/eis/MultipleAdminObject2">
<config-property name="Name">MultipleAdminObject2Value</configproperty>
</admin-object>
</admin-objects>
</resource-adapter>
< /resource-adapters>
Reportar un error
Importante
Tiene que detener el servidor antes de modificar el archivo de configuracin del servidor para
que su cambio persista al reiniciar el servidor.
Para configurar la seguridad para la autenticacin bsica, agregue un nuevo dominio de seguridad
bajo el securi ty-d o mai ns a los archivos de configuracin del servidor
stand al o ne/co nfi g urati o n/stand al o ne. xml o d o mai n/co nfi g urati o n/d o mai n. xml :
< security-domain name="example">
<authentication>
<module-option name="usersProperties"
value="${jboss.server.config.dir}/exampleusers.properties"/>
<module-option name="rolesProperties"
value="${jboss.server.config.dir}/exampleroles.properties"/>
</login-module>
</authentication>
< /security-domain>
Si la instancia de JBoss EAP 6 est ejecutando como un servidor autnomo,
${jbo ss. server. co nfi g . d i r} se refiere al directorio
EAP_HOME/stand al o ne/co nfi g urati o n/. Si la instancia est ejecutando en un dominio
administrado, ${jbo ss. server. co nfi g . d i r} se refiere al directorio
EAP_HOME/d o mai n/co nfi g urati o n/.
Mo d if icaci n d e lo s n o mb res d el d o min io d e seg u rid ad
33
En JBoss EAP 6, los dominios de seguridad ya no usan el prefijo java: /jaas/ en sus nombres.
Para las aplicaciones web, tiene que borrar este prefijo de las configuraciones del dominio de
seguridad en el jbo ss-web. xml .
Para las aplicaciones empresariales tiene que borrar este prefijo de las configuraciones del
dominio de seguridad en el archivo jbo ss-ejb3. xml . Este archivo ha reemplazado el
jbo ss. xml en JBoss EAP 6.
Reportar un error
34
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.2"
xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee">
<property>
<name>org.jboss.ws.cxf.disableHandlerAuthChecks</name>
<value>true</value>
</property>
< /webservices>
Nota
El habilitar la propiedad o rg . jbo ss. ws. cxf. d i sabl eHand l erAuthC hecks hace el
sistema vulnerable a CVE-2013-2133. Si la aplicacin espera que se apliquen restricciones
de seguridad declaradas en mtodos EJB y no las aplica de manera independiente al
controlador JAX-WS entonces la propiedad no se debe habilitar. La propiedad solo se debe
utilizar para propsitos de compatibilidad retroactiva cuando se necesita evitar que dae la
aplicacin.
Reportar un error
35
La especificacin Java EE 6 define cuatro espacios de nombres lgicos, cada uno con su propio
mbito, pero los nombres EJB porttiles solo se enlazan a tres de ellos. La siguiente tabla detalla
cundo y cmo utilizar cada espacio de nombre.
T ab la 3.1. Esp acio s d e n o mb res JN D I p o rt t iles
Esp acio d e n o mb re JN D I
D escrip ci n
java:global
java:module
java:app
Puede encontrar mayor informacin sobre los contextos de nombrado JND I en la seccin EE.5.2.2,
" Application Component Environment Namespaces" en " JSR 316: JavaTM Platform, Enterprise
Edition (Java EE) Specification, v6" . Puede descargar la especificacin de aqu:
http://jcp.org/en/jsr/detail?id=316
Reportar un error
36
productManager = (ProductManager)
context.lookup("OrderManagerApp/ProductManagerBean/local");
} catch(Exception lookupError) {
}
Note que el nombre de bsqueda es O rd erManag erApp/P ro d uctManag erBean/l o cal .
El siguiente es un ejemplo de la manera en que la misma bsqueda se codificara en JBoss EAP
6 usando la inyeccin de dependencias.
@ EJB(lookup="java:app/OrderManagerEJB/ProductManagerBean!services.ejb.
ProductManager")
p rivate ProductManager productManager;
Los valores de la bsqueda ahora se definen como variables de miembros y usan el nuevo
espacio de nombre JND I porttil java: app
java: app/O rd erManag erEJB/P ro d uctManag erBean! servi ces. ejb. P ro d uctManag er.
Si prefiere no utilizar la inyeccin de dependencias entonces puede continuar creando el nuevo
InitialContext como se mostr anteriormente y modificar la bsqueda para utilizar el nuevo
espacio de nombre JND I.
37
productManager = (ProductManager)
context.lookup("java:app/OrderManagerEJB/ProductManagerBean!services.e
jb.ProductManager");
} catch(Exception lookupError) {
}
Reportar un error
38
39
3.2 .2 .2 . Co nfiguraci n de cam bio s para las aplicacio ne s que usan Hibe rnat e y JPA
R esu men
Si su aplicacin contiene un archivo persi stence. xml o si el cdigo usa las anotaciones
@ P ersi stenceC o ntext o @ P ersi stenceUni t, JBoss EAP 6 detecta esto durante la
implementacin y asume que la aplicacin usa JPA. Implcitamente agrega Hibernate 4 adems de
otras pocas dependencias a la ruta de clase de su aplicacin.
Si su aplicacin actualmente usa bibliotecas Hibernate 3, en la mayora de los casos podr cambiar
usando Hibernate 4 y ejecutar exitosamente. Sin embargo, si ve C l assNo tFo und Excepti o ns
cuando implementa su aplicacin, puede tratar de resolverlas usando uno de los siguientes
enfoques.
Importante
Las aplicaciones que usan Hibernate directamente con Seam 2.2 pueden usar una versin de
Hibernate 3 empacada dentro de la aplicacin. Hibernate 4, el cual se proporciona a travs
del mdulo org.hibernate de JBoss EAP 6 no es soportado por parte de Seam 2.2. Este
ejemplo tiene el propsito de ayudarle a empezar a ejecutar su JBoss EAP 6 como primer
paso. Tenga en cuenta que el empacar Hibernate 3 con una aplicacin Seam 2.2 no es una
configuracin soportada.
40
<persistence-unit name="plannerdatasource_pu">
<jta-data-source>java:jboss/datasources/PlannerDS</jtadata-source>
<properties>
<property name="jboss.as.jpa.providerModule"
value="hibernate3-bundled" />
</properties>
</persistence-unit>
< /persistence>
El implementador JPA (Java Persistence API) detectar la presencia de un proveedor de
persistencia en la aplicacin y usa las bibliotecas Hibernate 3. Para mayor informacin
sobre las propiedades de persistencia JPA, consulte Seccin 3.2.2.3, Propiedades de la
unidad de persistencia .
3. In h ab ilt ar el cach d e seg u n d o n ivel d e H ib ern at e
El cach de segundo nivel para Hibernate 3 no presenta el mismo comportamiento con
JBoss EAP 6 tal como lo hizo en lanzamientos anteriores. Si est utilizando el cach de
segundo nivel de Hibernate con su aplicacin, tiene que inhabilitarlo hasta que actualice a
Hibernate 4. Para inhabilitar el cach de segundo nivel configure el
<hi bernate. cache. use_seco nd _l evel _cache> como fal se en el archivo
persi stence. xml .
Reportar un error
41
N o mb re d e la
p ro p ied ad
Valo r
p red et ermin ad
o
Pro p sit o
hi bernate. i d .
new_g enerato r
_mappi ng s
true
hi bernate. tra
nsacti o n. jta.
pl atfo rm
hi bernate. ejb
. reso urce_sca
nner
hi bernate. tra
nsacti o n. mana
g er_l o o kup_cl
ass
hi bernate. ses
si o n_facto ry_
name
hi bernate. ses
si o n_facto ry_
name_i s_jnd i
hi bernate. ejb
. enti tymanag e
r_facto ry_nam
e
Instancia de la
interfaz
o rg . hi bernate
. servi ce. jta.
pl atfo rm. spi .
JtaP l atfo rm
Instancia de la
interaz
o rg . hi bernate
. ejb. packag i n
g . Scanner
42
Valo r
p red et ermin ad
o
Pro p sit o
o rg . hi bernate
Reportar un error
3.2 .2 .4 . Act ualizaci n de su aplicaci n Hibe rnat e 3 para ut ilizar Hibe rnat e 4
R esu men
Cuando actualiza su aplicacin para utilizar Hibernate 4, algunas actualizaciones son generales y
aplican sin importar la versin de Hibernate que actualmente la aplicacin utiliza. Para otras
actualizaciones tiene que determinar la versin que la aplicacin utiliza actualmente.
Pro ced imien t o 3.14 . Act u aliz aci n d e la ap licaci n p ara u t iliz ar H ib ern at e 4
1. El comportamiento predeterminado del generador de secuencias de autoincremento cambi
en JBoss EAP 6. Para mayor informacin, consulte Seccin 3.2.2.5, Preservar el
comportamiento existente del valor auto generado de la identidad de Hibernate .
43
44
Nota
Si no modifica el cdigo de su aplicacin se puede generar una
java. l ang . C l assC astExcepti o n.
i. Para las propiedades mapeadas como los tipos de nmeros enteros
primitivos, Long, Short o Integer se retorna una valor Long;
ii. Para las propiedades mapeadas como tipos de de punto flotante primitivo,
Float o D ouble se retorna un valor D ouble.
Reportar un error
45
http://hibernate.sourceforge.net/hibernateconfiguration-3.0.dtd
http://hibernate.sourceforge.net/hibernatemapping-3.0.dtd
http://www.hibernate.org/dtd/hibernateconfiguration-3.0.dtd
http://www.hibernate.org/dtd/hibernatemapping-3.0.dtd
3.2 .2 .8 . Mo dificaci n de las pro pie dade s de pe rsist e ncia para las aplicacio ne s
Hibe rnat e y Se am m igradas que e je cut an e n un e nt o rno co n clst e rs
Si migra una aplicacin administrada por el contenedor JPA, las propiedades que tienen influencia
sobre la serializacin de contextos de persistencia se pasan de manera automtica al contenedor.
Sin embargo, debido a los cambios en Hibernate es posible que encuentre problemas de
serializacin si ejecuta su aplicacin Seam o Hibernate migradas en un entorno con clsters. Es
posible que vea mensajes en el registro de errores similares a los siguientes:
javax.ejb.EJBTransactionRolledbackException: JBAS010361: Failed to
deserialize
....
Caused by: java.io.InvalidObjectException: could not resolve session
factory during session deserialization
[uuid=8aa29e74373ce3a301373ce3a44b0000, name=null]
Para resolver estos errores, necesita modificar las propiedades en el archivo de configuracin. En la
mayora de los casos este es el archivo persi stence. xml . Para las aplicaciones nativas
Hibernate API, este es el archivo hi bernate. cfg . xml .
Pro ced imien t o 3.15. C o n f ig u re las p ro p ied ad es d e p ersist en cia p ara ejecu t ar en u n
en t o rn o co n cl st ers
1. Establezca el valor hi bernate. sessi o n_facto ry_name con un nombre nico. Este
nombre debe ser nico a travs de todas las implementaciones de la aplicacin en la
instancia de JBoss EAP 6. Por ejemplo:
46
3.2 .2 .9 . Act ualizaci n de su aplicaci n para que cum pla co n lo s re que rim ie nt o s de
la e spe cificaci n JPA 2 .0
R esu men
La especificacin JPA 2.0 requiere que un contexto de persistencia no se pueda propagar por fuera
de una transaccin JTA. Si su aplicacin usa solo contextos de persistencia con mbitos de
transacciones entonces el comportamiento es el mismo en JBoss EAP 6 tal como lo era en versiones
anteriores del servidor de aplicaciones y no se requieren cambios. Sin embargo, si su aplicacin
usa un contexto de persistencia extendido (XPC) para permitir colas o agrupamiento de
modificaciones de datos, es posible que necesite realizar cambios a su aplicacin.
C o mp o rt amien t o d e p ro p ag aci n d el co n t ext o d e p ersist en cia
Si su aplicacin tiene un bean de sesin con estado, Bean1, que usa un contexto de persistencia
extendido y llama a un bean de sesin sin estado, Bean2, que usa un contexto de persistencia con
mbito de transacciones entonces puede esperar que el siguiente comportamiento tenga lugar:
Si Bean1 inicia una transaccin JTA y realiza la invocacin de mtodo Bean2 con la
transaccin JTA activa, el comportamiento en JBoss EAP 6 es el mismo que en lanzamientos
anteriores y no se necesita ningn cambio.
Si Bean1 no inicia una transaccin JTA y realiza la invocacin del mtodo Bean2, JBoss EAP
6 no propaga el contexto de persistencia extendido en Bean2. Este comportamiento es diferente
de lanzamientos anteriores los cuales si propagaban el contexto de persistencia extendido en
Bean2. Si su aplicacin espera que el contexto de persistencia extendido sea propagado al
bean con el gestor de entidades transaccional, necesita cambiar su aplicacin para que realice
la invocacin dentro de una transaccin JTA activa.
Reportar un error
47
Este es un ejemplo de la manera en que se especificaron las propiedades para el cach de segundo
nivel en el archivo persi stence. xml en JBoss EAP 5.x.
value="org.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactory"/>
< property name="hibernate.cache.region.jbc2.cachefactory"
value="java:CacheManager"/>
< property name="hibernate.cache.use_second_level_cache" value="true"/>
< property name="hibernate.cache.region.jbc2.cfg.entity" value="mvccentity"/>
< property name="hibernate.cache.region_prefix" value="services"/>
Los siguientes pasos utilizarn este ejemplo para configurar Infinispan en JBoss EAP 6.
Pro ced imien t o 3.16 . Mo d if iq u e el arch ivo persi stence. xml p ara u sar In f in isp an
1. C o n f ig u re In f in isp an p ara u n a ap licaci n JPA en JB o ss EAP 6
Esta es la manera de especificar propiedades para lograr la misma configuracin para una
aplicacin JPA usando Infinispan en JBoss EAP 6:
< shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
B. ALL significa que las entidades siempre se ponen en el cach incluso si las marca para
no ponerlas en el cach.
< shared-cache-mode>ALL</shared-cache-mode>
2. C o n f ig u re In f in isp an p ara u n a ap licaci n H ib ern at e n at iva en JB o ss EAP 6
Esta es la manera de especificar la misma configuracin para una aplicacin nativa
Hibernate usando Infinispan con JBoss EAP 6:
value="org.jboss.as.jpa.hibernate4.infinispan.InfinispanRegionFacto
ry"/>
48
value="java:jboss/infinispan/container/hibernate"/>
< property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
< property name="hibernate.cache.use_second_level_cache"
value="true"/>
Tambin tiene que agregar las siguientes dependencias al archivo MANIFEST . MF:
Manifest-Version: 1.0
Dependencies: org.infinispan, org.hibernate
Para mayor informacin sobre las propiedades de cach de Hibernate consulte: Seccin 3.2.2.11,
Propiedades cach de Hibernate .
Reportar un error
D escrip ci n
49
N o mb re d e la p ro p ied ad
D escrip ci n
hi bernate. cache. d efaul t_cache_co ncur Configuracin utilizada para brindar el nombre
rency_strateg y
del
o rg . hi bernate. anno tati o ns. C acheC o nc
urrencyStrateg y predeterminado a utilizar
cuando se utiliza @ C acheabl e o @ C ache.
@ C ache(strateg y= ". . ") para sobreescribir
este valor predeterminado.
Reportar un error
50
51
<deployment>
<dependencies>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
</exclusions>
<dependencies>
</dependencies>
</sub-deployment>
< /jboss-deployment-structure>
Reportar un error
52
JAR
an t ig u a
Paq u et e an t ig u o
N u eva JAR
N u evo p aq u et e
JBossWS
SPI
JBossWS
SPI
JBossWS
SPI
JBossWS
SPI
JBossWS
SPI
JBossWS
SPI
org.jboss.wsf.spi.annotatio
n.*
org.jboss.wsf.spi.binding.*
JBossWS
API
JBossWS
API
JBossWS
API
JBossWS
API
JBossWS
API
JBossWS
API
org.jboss.ws.api.annotation
.*
org.jboss.ws.api.binding.*
org.jboss.wsf.spi.managem
ent.recording.*
org.jboss.wsf.spi.tools.*
org.jboss.wsf.spi.tools.ant.*
org.jboss.wsf.spi.tools.cmd.
*
org.jboss.ws.api.monitoring
.*
org.jboss.ws.api.tools.*
org.jboss.ws.tools.ant.*
org.jboss.ws.tools.cmd.*
JAR
an t ig u a
Paq u et e an t ig u o
JBossWS
SPI
JBossWS
Common
JBossWS
Common
JBossWS
Common
JBossWS
Common
JBossWS
Native
org.jboss.wsf.spi.util.Servic
eLoader
org.jboss.wsf.common.*
N u eva JAR
JBossWS
API
JBossWS
API
org.jboss.wsf.common.hand JBossWS
ler.*
API
org.jboss.wsf.common.addr JBossWS
essing.*
API
org.jboss.wsf.common.D OM JBossWS
Utils
API
org.jboss.ws.annotation.En JBossWS
dpointConfig
API
N u evo p aq u et e
org.jboss.ws.api.util.Service
Loader
org.jboss.ws.common.*
org.jboss.ws.api.handler.*
org.jboss.ws.api.addressin
g.*
org.jboss.ws.api.util.D OMUt
ils
org.jboss.ws.api.annotation
.EndpointConfig
53
Para las implementaciones de servicios web EJB, la ubicacin esperada del archivo
descriptor jbo ss-webservi ces. xml es en el directorio MET A-INF/. Para los puntos
finales del servicio web EJB y POJO agrupados en un archivo WAR, la ubicacin esperada
del archivo jbo ss-webservi ces. xml es en el directorio WEB-INF/.
El siguiente es un ejemplo de un archivo descriptor jbo ss-webservi ces. xml y una
tabla describiendo los elementos.
< webservices>
<context-root>foo<context-root>
<config-file>META-INF/custom.xml</config-file>
<property>
<name>prop.name</name>
<value>prop.value</value>
</property>
<port-component>
<ejb-name>TestService</ejb-name>
<port-component-name>TestServicePort</port-componentname>
<port-component-uri>/*</port-component-uri>
<auth-method>BASIC</auth-method>
<transport-guarantee>NONE</transport-guarantee>
<secure-wsdl-access>true</secure-wsdl-access>
</port-component>
<webservice-description>
<webservice-description-name>TestService</webservicedescription-name>
<wsdl-publish-location>file:///bar/foo.wsdl</wsdl-publishlocation>
</webservice-description>
< /webservices>
T ab la 3.8. D escrip ci n d el elemen t o d el arch ivo jb o ss- web service.xml
N o mb re d el elemen t o
D escrip ci n
context-root
config-name
config-file
propiedad
port-component
webservice-description
Reportar un error
54
@ ApplicationPath("/mypath")
p ublic class MyApplication extends Application {
}
En el ejemplo anterior, sus recursos JAX-RS estn disponibles en la ruta
/MY_WEB_APP_CONTEXT/mypath/.
Nota
Note que la ruta se debe especificar como /mypath no /mypath/*. No debe haber
espacios, barras oblicuas o asteriscos.
2. Cree una subclase de javax. ws. rs. co re. Appl i cati o n y use el archivo web. xml para
configurar el mapeo JAX-RS.
Si no desea usar la anotacin @ Appl i cati o nP ath entonces todava necesita crear la
subclase de javax. ws. rs. co re. Appl i cati o n. Luego puede configurar el mapeo JAXRS en el archivo web. xml . Por ejemplo:
}
< servlet-mapping>
<servlet-name>com.acme.MyApplication</servlet-name>
<url-pattern>/hello/*</url-pattern>
< /servlet-mapping>
En el ejemplo anterior, sus recursos JAX-RS estn disponibles en la ruta
/MY_WEB_APP_CONTEXT/hel l o .
Nota
Tambin puede utilizar este enfoque para sobreescribir una ruta de una aplicacin
que se configur usando la anotacin @ Appl i cati o nP ath.
55
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/hello/*</url-pattern>
< /servlet-mapping>
En el ejemplo anterior, sus recursos JAX-RS estn disponibles en la ruta
/MY_WEB_APP_CONTEXT/hel l o .
Nota
Cuando selecciona esta opcin solo necesita agregar el mapeo. No necesita agregar
el servlet correspondiente. El servidor es el responsable de agregar el servlet
correspondiente automticamente.
Reportar un error
<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule"
flag="required">
<module-option
name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</mod
ule-option>
<module-option
name="java.naming.security.authentication">simple</module-option>
....
</login-module>
</authentication>
< /application-policy>
Este es un ejemplo de la configuracin LD AP en el archivo de configuracin del servidor en JBoss
EAP 6:
< subsystem xmlns="urn:jboss:domain:security:1.2">
56
<security-domains>
<security-domain name="mcp_ldap_domain" cache-type="default">
<authentication>
<login-module code="org.jboss.security.auth.spi.LdapLoginModule"
flag="required">
<module-option name="java.naming.factory.initial"
value="com.sun.jndi.ldap.LdapCtxFactory"/>
<module-option name="java.naming.security.authentication"
value="simple"/>
...
</login-module>
</authentication>
</security-domain>
</security-domains>
< /subsystem>
Nota
El analizador sintctico XML cambi en JBoss EAP 6. En JBoss EAP 5, se especificaba las
opciones del mdulo como contenido del elemento como esto:
< module-option
name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory
</module-option>
Ahoras las opciones del mdulo tienen que especificarse como atributos de elementos con
" value=" as:
< module-option name="java.naming.factory.initial"
value="com.sun.jndi.ldap.LdapCtxFactory"/>
Reportar un error
57
Importante
Se debe chequear el registro del servidor despus de iniciar JBoss EAP 6 6 para asegurarse
de que la biblioteca nativa carg de manera exitosa y que se est utilizando el tipo de diario
ASYNCIO. Si la biblioteca nativa no logra cargar, HornetQ fallar con el tipo de diario NIO y
esto se ver declarado en el registro del servidor.
Importante
La biblioteca nativa que implementa E/S asincrnicas requiere que l i bai o est instalado en
el sistema Red Hat Enterprise Linux en donde est ejecutando JBoss EAP 6.
Reportar un error
58
<loader-repository>
com.example:archive=unique-archive-name
<loader-repositoryconfig>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
<attribute
name="ProviderName">EnterpriseApplicationPlatform6JMSProvider
</attribute>
<attribute
name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAd
apter</attribute>
<attribute
name="FactoryRef">jms/RemoteConnectionFactory</attribute>
<attribute
name="QueueFactoryRef">jms/RemoteConnectionFactory</attribute
>
<attribute
name="TopicFactoryRef">jms/RemoteConnectionFactory</attribute
>
<attribute name="Properties">
java.naming.factory.initial=org.jboss.naming.remote.client.In
itialContextFactory
java.naming.provider.url=remote://EnterpriseApplicationPlatfo
rm6host:4447
java.naming.security.principal=jbossuser
java.naming.security.credentials=jbosspass
</attribute>
</mbean>
<mbean code="org.jboss.jms.server.bridge.BridgeService"
name="jboss.jms:service=Bridge,name=MyBridgeName" xmbeandd="xmdesc/Bridge-xmbean.xml">
<depends optional-attributename="SourceProviderLoader">jboss.messaging:service=JMSProvide
rLoader,name=JMSProvider</depends>
<depends optional-attributename="TargetProviderLoader">jboss.messaging:service=JMSProvide
59
rLoader,name=EnterpriseApplicationPlatform6JMSProvider</depen
ds>
<attribute
name="SourceDestinationLookup">/queue/A</attribute>
<attribute
name="TargetDestinationLookup">jms/queue/test</attribute>
<attribute name="QualityOfServiceMode">1</attribute>
<attribute name="MaxBatchSize">1</attribute>
<attribute name="MaxBatchTime">-1</attribute>
<attribute
name="FailureRetryInterval">60000</attribute>
<attribute name="MaxRetries">-1</attribute>
<attribute
name="AddMessageIDInHeader">false</attribute>
<attribute name="TargetUsername">jbossuser</attribute>
<attribute name="TargetPassword">jbosspass</attribute>
</mbean>
< /server>
Nota
El elemento l o ad -repo si to ry est presente para asegurar que el SAR tiene
un cargador de clases aislado. Tambin note que la bsqueda JND I y el
puente " destino" incluyen credenciales de seguridad para el usuario
" jbossuser" con la contrasea " jbosspass" . Esto se debe a que JBoss EAP 6
est asegurado por defecto. El usuario llamado " jbossuser" con contrasea
" jbosspass" se cre en el Appl i cati o nR eal m con el rol g uest usando el
script EAP_HOME/bi n/ad d _user. sh.
d. Copie las siguientes JARs del directorio
EAP_HOME/mo d ul es/system/l ayers/base/ en el directorio
EAP5_HOME/server/PROFILE_NAME/d epl o y/myBri d g e. sar/. Reemplace cada
VERSION_NUMBER con el nmero de la versin en su distribucin de JBoss EAP 6.
o rg /ho rnetq /mai n/ho rnetq -co re-VERSION_NUMBER. jar
o rg /ho rnetq /mai n/ho rnetq -jms-VERSION_NUMBER. jar
o rg /jbo ss/ejb-cl i ent/mai n/jbo ss-ejb-cl i ent-VERSION_NUMBER. jar
o rg /jbo ss/l o g g i ng /mai n/jbo ss-l o g g i ng -VERSION_NUMBER. jar
o rg /jbo ss/l o g manag er/mai n/jbo ssl o g manag er-VERSION_NUMBER. jar
o rg /jbo ss/marshal l i ng /mai n/jbo ssmarshal l i ng -VERSION_NUMBER. jar
o rg /jbo ss/marshal l i ng /ri ver/mai n/jbo ss-marshal l i ng ri ver-VERSION_NUMBER. jar
o rg /jbo ss/remo te-nami ng /mai n/jbo ss-remo tenami ng -VERSION_NUMBER. jar
o rg /jbo ss/remo ti ng 3/mai n/jbo ss-remo ti ng -VERSION_NUMBER. jar
60
Nota
No copie simplemente EAP_HOME/bi n/cl i ent/jbo ss-cl i ent. jar ya que
las clases API javax entrarn en conflicto con las de JBoss EAP JBoss 5.x.
<properties>
</properties>
<resources>
<!-- Insert resources required to connect to
the source or target
-->
</resources>
<dependencies>
<!-- Add the dependencies required by JMS Bridge
61
code
-->
<module name="javax.api" />
<module name="javax.transaction.api"/>
</dependencies>
< /module>
iii. Copie las JARs del proveedor de mensajera requeridas para la bsqueda
JND I de los recursos fuente en el subdirectorio mai n/ del mdulo. La
estructura del directorio para el mdulo MyCustomMQ ahora se debe ver
como la siguiente.
modules/
`-- system
`-- layers
`-- base
`-- org
`-- mycustommq
`-- main
|-- mycustommq-1.2.3.jar
|-- mylogapi-0.0.1.jar
|-- module.xml
b. Configuracin del puente JMS en el subsistema messag i ng del servidor JBoss EAP
6.
i. Antes de empezar, detenga el servidor y relice una copia de seguridad de los
archivos de configuracin del servidor. Si est ejecutando un servidor
autnomo este es el archivo
EAP_HOME/stand al o ne/co nfi g urati o n/stand al o ne-ful l -ha. xml .
Si est ejecutando un dominio administrado, realice una copia de seguridad
de los archivos EAP_HOME/d o mai n/co nfi g urati o n/d o mai n. xml y
EAP_HOME/d o mai n/co nfi g urati o n/ho st. xml .
ii. Agregue el elemento jms-bri d g e al subsistema messag i ng en el archivo
de configuracin del servidor. Los elementos so urce y targ et proporcionan
los nombres de los recursos JMS utilizados para bsquedas JND I. Si se
especifican las credenciales user y passwo rd entonces se pasan como
argumentos cuando se crea una conexin JMS.
El siguiente es un ejemplo del elemento jms-bri d g e configurado para el
proveedor de mensajera MyCustomMQ:
...
<source>
<connection-factory name="ConnectionFactory"/>
<destination name="sourceQ"/>
<user>user1</user>
62
<password>pwd1</password>
<context>
<property key="java.naming.factory.initial"
value="org.mycustommq.jndi.MyCustomMQInitialContextFact
ory"/>
<property key="java.naming.provider.url"
value="tcp://127.0.0.1:9292"/>
</context>
</source>
<target>
<connection-factory
name="java:/ConnectionFactory"/>
<destination name="/jms/targetQ"/>
</target>
<quality-of-service>DUPLICATES_OK</quality-ofservice>
<failure-retry-interval>500</failure-retryinterval>
<max-retries>1</max-retries>
<max-batch-size>500</max-batch-size>
<max-batch-time>500</max-batch-time>
<add-messageID-in-header>true</add-messageID-inheader>
</jms-bridge>
< /subsystem>
63
64
<jvm name="default">
</jvm>
<socket-binding-group ref="ha-sockets"/>
</server-group>
< /server-group>
b. H ab ilit aci n d el u so d e cl st ers p ara servid o res au t n o mo s
Para habilitar los clsters para los servidores autnomos inicie el servidor usando el
archivo de configuracin apropiado as:
$ EAP_HOME/bi n/stand al o ne. sh --server-co nfi g = stand al o neha. xml -D jbo ss. no d e. name= UNIQUE_NODE_NAME
2. Esp ecif iq u e la d irecci n d e en lace
En JBoss EAP 5.x usualmente indicara la direccin de enlace utilizada para el uso de
clsters utilizando el argumento de la lnea de comandos -b as:
$ EAP5_HOME/bi n/run. sh -c al l -b 19 2. 16 8. 0 . 2
JBoss EAP 6 enlaza sockets a las direcciones IP e interfaces que se encuentran en los
elementos <i nterfaces> en los archivos stand al o ne. xml , d o mai n. xml y ho st. xml .
Las configuraciones estndar que se envan junto con JBoss EAP incluyen dos
configuraciones de interfaz:
< interfaces>
<interface name="management">
<inet-address
value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
65
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
< /interfaces>
Estas configuraciones de interfaz usan los valores de las propiedades del sistema
jbo ss. bi nd . ad d ress. manag ement y jbo ss. bi nd . ad d ress. Si estas propiedades del
sistema no se establecen entonces se utiliza el valor predeterminado 127. 0 . 0 . 1 para cada
valor.
Tambin puede especificar la direccin de enlace como un argumento de la lnea de
comandos cuando inicia el servidor o puede definirla explcitamente dentro del archivo de
configuracin del servidor JBoss EAP 6.
A. Especifique el argumento de enlace en la lnea de comandos cuando incia el servidor
autnomo JBoss EAP.
El siguiente es un ejemplo de cmo especificar la direccin de enlace en la lnea de
comandos para un servidor autnomo:
EAP_HOME/bi n/stand al o ne. sh -D jbo ss. bi nd . ad d ress= 127. 0 . 0 . 1
Nota
Tambin puede utilizar el argumento -b, el cual es un atajo para D jbo ss. bi nd . ad d ress= 127. 0 . 0 . 1:
EAP_HOME/bi n/stand al o ne. sh -b= 127. 0 . 0 . 1
El formato de la sintaxis de JBoss EAP 5 todava se soporta:
EAP_HOME/bi n/stand al o ne. sh -b 127. 0 . 0 . 1
Note que el argumento -b solo cambia la interfaz publ i c. No afecta la interfaz
manag ement.
<inet-address value="192.168.0.2"/>
</interface>
66
<interface name="public">
<inet-address value="192.168.0.2"/>
</interface>
< /interfaces>
< socket-binding-groups>
<socket-binding-group name="ha-sockets" defaultinterface="public">
Nota
Si especifica la direccin de enlace como un valor definido en lugar de una
propiedad del sistema en el archivo de configuracin entonces no puede
sobreescribirlo con un argumento de la lnea de comandos.
<stack name="udp">
</stack>
< /subsystem>
67
< socket-binding-groups>
</socket-binding-group>
< /socket-binding-groups>
Si prefiere especificar la direccin multicast y el puerto en la lnea de comandos, puede
definir la direccin multicast y los puertos como propiedades del sistema y luego usar esas
propiedades en la lnea de comandos cuando inicie el servidor. En el siguiente ejemplo,
jbo ss. mcast. ad d r es el nombre de la variable para la direccin multicast y
jbo ss. mcast. po rt es el nombre de la variable para el puerto.
<stack name="udp">
</stack>
< /subsystem>
6. R eemp laz ar la rep licaci n d e co mp a ero s
JBoss EAP 5.x utilizaba JBoss Cache Buddy Replication para eliminar la replicacin de
datos en todas las instancias en un clster.
En JBoss EAP 6, la replicacin de compaeros fue reemplazada por el cach distribudo de
Infinispan tambin conocido como el modo D IST . La distribucin es un modo de uso de
clsters poderoso, el cual le permite a Infinispan el escalar linearmente cuando se agregan
68
<transport lock-timeout="60000"/>
<file-store/>
</replicated-cache>
<file-store/>
</distributed-cache>
< /cache-container>
69
p ackage
org.jboss.as.quickstarts.cluster.hasingleton.service.ejb;
i mport java.util.Date;
i mport java.util.concurrent.atomic.AtomicBoolean;
i mport javax.naming.InitialContext;
i mport javax.naming.NamingException;
i mport
i mport
i mport
i mport
i mport
i mport
org.jboss.logging.Logger;
org.jboss.msc.service.Service;
org.jboss.msc.service.ServiceName;
org.jboss.msc.service.StartContext;
org.jboss.msc.service.StartException;
org.jboss.msc.service.StopContext;
/ **
* @ author <a href="mailto:wfink@ redhat.com">Wolf-Dieter
Fink</a>
*/
p ublic class HATimerService implements Service<String> {
70
"timer");
/**
* A flag whether the service is started.
*/
/**
* @ return the name of the server node
*/
LOGGER.infof("%s is %s at %s",
HATimerService.class.getSimpleName(), (started.get() ?
"started" : "not started"),
System.getProperty("jboss.node.name"));
return "";
if (!started.compareAndSet(false, true)) {
try {
((Scheduler) ic.lookup("global/jboss-cluster-hasingletonservice/SchedulerBean!org.jboss.as.quickstarts.cluster.hasingl
eton.service.ejb.Scheduler")).initialize("HASingleton timer
@ " + node + " " + new Date());
} catch (NamingException e) {
} else {
try {
((Scheduler) ic.lookup("global/jboss-clusterha-singletonservice/SchedulerBean!org.jboss.as.quickstarts.cluster.hasingl
71
eton.service.ejb.Scheduler")).stop();
} catch (NamingException e) {
}
b. C ree u n act ivad o r q u e in st ala el Servi ce co mo u n sin g let o n en cl st er.
El siguiente listado es un ejemplo de un activador Service que instala el
HAT i merServi ce como un servicio singleton en clster:
p ackage
org.jboss.as.quickstarts.cluster.hasingleton.service.ejb;
i mport
i mport
i mport
i mport
i mport
i mport
org.jboss.as.clustering.singleton.SingletonService;
org.jboss.logging.Logger;
org.jboss.msc.service.DelegatingServiceContainer;
org.jboss.msc.service.ServiceActivator;
org.jboss.msc.service.ServiceActivatorContext;
org.jboss.msc.service.ServiceController;
/ **
* Service activator that installs the HATimerService as a
clustered singleton service
* during deployment.
*
* @ author Paul Ferraro
*/
p ublic class HATimerServiceActivator implements
ServiceActivator {
@ Override
public void activate(ServiceActivatorContext context) {
log.info("HATimerService will be installed!");
/*
*/
// singleton.setElectionPolicy(new
PreferredSingletonElectionPolicy(new
SimpleSingletonElectionPolicy(), new
NamePreference("node2/cluster")));
72
singleton.build(new
DelegatingServiceContainer(context.getServiceTarget(),
context.getServiceRegistry()))
.setInitialMode(ServiceController.Mode.ACTIVE)
.install()
Nota
El cdigo ejemplo anterior usa una clase,
o rg . jbo ss. as. cl usteri ng . si ng l eto n. Si ng l eto nServi ce, que es
parte de la API privada JBoss EAP. Una API pblica se har disponible en el
lanzamiento EAP 7 y la clase privada ya no se utilizar, pero estas clases se
mantendrn y estarn disponibles durante el ciclo de lanzamiento de EAP 6.x.
p ackage
org.jboss.as.quickstarts.cluster.hasingleton.service.ejb
;
/ **
* @ author <a href="mailto:wfink@ redhat.com">WolfDieter Fink</a>
*/
p ublic interface Scheduler {
void initialize(String info);
73
void stop();
}
ii. C rear el b ean Sin g let o n q u e imp lemen t a el t emp o riz ad o r sin g let o n
a n ivel d e cl st er.
p ackage
org.jboss.as.quickstarts.cluster.hasingleton.service.ejb
;
i mport
i mport
i mport
i mport
i mport
i mport
i mport
javax.annotation.Resource;
javax.ejb.ScheduleExpression;
javax.ejb.Singleton;
javax.ejb.Timeout;
javax.ejb.Timer;
javax.ejb.TimerConfig;
javax.ejb.TimerService;
i mport org.jboss.logging.Logger;
/ **
* A simple example to demonstrate a implementation of
a cluster-wide singleton timer.
*
* @ author <a href="mailto:wfink@ redhat.com">WolfDieter Fink</a>
*/
@ Singleton
p ublic class SchedulerBean implements Scheduler {
@ Resource
@ Timeout
public void scheduler(Timer timer) {
LOGGER.info("HASingletonTimer: Info=" +
timer.getInfo());
@ Override
sexpr.hour("*").minute("*").second("0/10");
timerService.createCalendarTimer(sexpr, new
TimerConfig(info, false));
74
@ Override
public void stop() {
timer.cancel();
B. Para Microsoft Windows use la siguiente sintaxis de comandos para iniciar los
servidores:
EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.portoffset=PORT_OFFSET
75
Nota
Si prefiere no utilizar argumentos de la lnea de comandos entonces puede configurar
el archivo stand al o ne-ha. xml para cada instancia de servidor para enlazar en
una interfaz por separado.
76
En JBoss EAP 5, la interfaz remota EJB se enlazaba en JND I por defecto bajo el nombre
" ejbName/local" para las interfaces locales y " ejbName/remote" para las interfaces remotas. Luego la
aplicacin cliente buscaba el bean usando " ejbName/remote" .
En JBoss EAP 6, una nueva API cliente EJB especifica se introdujo para realizar la invocacin. Sin
embargo, si no quiere reescribir su cdigo para utilizar la nueva API entonces puede modificar el
cdigo existente para utilizar la ejb: BEAN_REFERENCE para acceso remoto a EJBs con la
siguiente sintaxis.
Para beans sin estado, la sintaxis ejb: BEAN_REFERENCE es:
e jb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fullyqualified-classname-of-the-remote-interface>
Para beans con estado la sintaxis ejb: BEAN_REFERENCE es:
e jb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fullyqualified-classname-of-the-remote-interface>?stateful
Los valores a sustituirse en la sintaxis anterior son:
<app-name> - el nombre de la aplicacin de las EJBs implementadas. Este es usualmente el
nombre ear sin el sufijo .ear, sin embargo, el nombre se puede sobreescribir en el archivo
application.xml. Si la aplicacin no se implementa como un .ear, este valor es una cadena vaca.
Asuma que este ejemplo no se implementaba como un EAR.
<mo d ul e-name> - el nombre del mdulo de las EJBs implementadas en el servidor. Este es
usualmente el nombre jar de la implementacin EJB sin el sufijo .jar, pero se puede sobreescribir
usando el ejb-jar.xml. En este ejemplo, asuma que las EJBs se implementaban en una jboss-ejbremote-app.jar as que el nombre del mdulo es jboss-ejb-remote-app.
<d i sti nct-name> - un nombre diferente opcional para la EJB. Este ejemplo no usa un nombre
diferente as que utiliza una cadena vaca.
<bean-name> - por defecto, es el nombre simple de la clase de la clase de la implementacin del
bean.
<ful l y-q ual i fi ed -cl assname-o f-the-remo te-i nterface> - el nombre de la clase
completamente calificada de la vista remota.
Act u aliz aci n d el c d ig o d el clien t e
Asuma que ha implementado los siguientes EJB sin estado en un servidor de JBoss EAP 6. Note que
expone una vista remota para el bean.
@ Stateless
@ Remote(RemoteCalculator.class)
p ublic class CalculatorBean implements RemoteCalculator {
@ Override
public int add(int a, int b) {
return a + b;
}
77
@ Override
public int subtract(int a, int b) {
return a - b;
}
En JBoss EAP 5, la bsqueda EJB del cliente y la invocacin se codificaba de manera similar a esto:
i nt a = 204;
i nt b = 340;
i nt sum = statelessRemoteCalculator.add(a, b);
Si su cliente est accediendo un EJB con estado debe agregar " ?stateful" al final de la bsqueda
del contexto as:
78
79
remote.connection.default.port = 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POL
ICY_NOANONYMOUS=false
# Add any of the following SASL options if required
#
remote.connection.default.connect.options.org.xnio.Options.SASL_POL
ICY_NOANONYMOUS=false
#
remote.connection.default.connect.options.org.xnio.Options.SASL_POL
ICY_NOPLAINTEXT=false
#
remote.connection.default.connect.options.org.xnio.Options.SASL_DIS
ALLOWED_MECHANISMS=JBOSS-LOCAL-USER
Cambie el nombre del host y el puerto para que coincida con su servidor. 4 4 4 7 es el nmero
de puerto predeterminado. Para una conexin segura configure la lnea SSL_ENABLED
como true y borre el comentario de la lnea SSL_ST AR T T LS. La interfaz remota en el
contenedor soporta las conexiones seguras y no seguras usando el mismo puerto.
3. Ag reg ar d ep en d en cias p ara las in t erf aces emp resariales remo t as
Agregar las dependencias Maven al po m. xml para las interfaces empresariales remotas de
los beans de sesin.
< dependency>
<groupId>org.jboss.as.quickstarts</groupId>
<artifactId>jboss-ejb-remote-server-side</artifactId>
<type>ejb-client</type>
<version>${project.version}</version>
< /dependency>
Ahora que el proyecto se configur correctamente, puede agregar el cdigo para acceder e invocar
los beans de sesin.
Pro ced imien t o 3.23. O b t en g a u n p ro xy b ean u san d o JN D I e in vo q u e mt o o d o s d el b ean
1. Man ejo d e las excep cio n es verif icad as
D os de los mtodos usados en el siguiente cdigo (Ini ti al C o ntext() y l o o kup())
tienen una excepcin verificada del tipo javax. nami ng . Nami ng Excepti o n. Estas
llamadas de mtodos pueden estar includas en un bloque try/catch que atrape
Nami ng Excepti o n o en un mtodo que se declare para presentar Nami ng Excepti o n. El
manual de inicio rpido ejb-remo te usa la segunda tcnica.
2. C ree u n co n t ext o JN D I
Un objeto del contexto JND I proporciona el mecanismo para solicitar recursos del servidor.
Cree un contexto JND I usando el siguiente cdigo:
final Hashtable jndiProperties = new Hashtable();
j ndiProperties.put(Context.URL_PKG_PREFIXES,
"org.jboss.ejb.client.naming");
final Context context = new InitialContext(jndiProperties);
80
Las propiedades de conexin para el servicio JND I se leen del archivo jbo ss-ejbcl i ent. pro perti es.
3. U se el mt o d o lo o ku p ( ) d el co n t ext o JN D I p ara o b t en er u n p ro xy b ean
Invoque el mtodo l o o kup() del proxy bean y psele el nombre JND I del bean de sesin
que requiera. Esto retornar un objeto que se debe vaciar al tipo de la interfaz empresarial
remota que contiene los mtodos que quiere invocar.
"ejb:/jboss-ejb-remote-server-side//CalculatorBean!" +
RemoteCalculator.class.getName());
Los nombres JND I de beans de sesin se definen utilizando una sintaxis especial. Para
mayor informacin consulte Seccin 3.2.10.3, Referencia de nombrado JND I EJB .
4. In vo caci n d e mt o d o s
Ahora que tiene un objeto bean proxy puede invocar cualquiera de los mtodos que se
encuentane en la interfaz empresarial remota.
i nt a = 204;
i nt b = 340;
S ystem.out.println("Adding " + a + " and " + b + " via the remote
stateless calculator deployed on the server");
i nt sum = statelessRemoteCalculator.add(a, b);
S ystem.out.println("Remote calculator returned sum = " + sum);
El bean proxy pasa la peticin de la invocacin del mtodo al bean de sesin en el servidor,
en donde se ejecuta. El resultado se retorna al bean proxy, el cual luego lo retorna al que
realiza la llamada. La comunicacin entre el bean proxy y el bean de sesin remoto es
transparente para el que realiza la llamada.
Ahora debe poder configurar un proyecto Maven para soportar la invocacin de beans de sesin en
un servidor remoto y escribir el cdigo para invocar los mtodos de los beans de sesin usando un
bean proxy recuperado del servidor usando JND I.
Reportar un error
81
<mo d ul eName>
El nombre del mdulo es el nombre del archivo JAR en donde est implementado el bean
de sesin. Por defecto, el nombre del archivo JAR es su nombre de archivo sin el sufijo
. jar. El nombre del mdulo tambin se puede sobreescribir en el archivo ejb-jar. xml
del JAR.
<d i sti nctName>
JBoss EAP 6 permite que cada implementacin especifique un nombre opcional diferente.
Si la implementacin no tiene un nombre diferente entonces djelo en blanco.
<beanName>
El nombre del bean es el nombre de la clase del bean de sesin que se va a invocar.
<vi ewC l assName>
El nombre de clase de vista es el nombre de clase completamente calificado de la interfaz
remota. Esto incluye el nombre del paquete de la interfaz.
?stateful
El sufijo ?stateful se requiere cuando el nombre JND I se refiere a un bean de sesin con
estado. No se incluye para otros tipos de beans.
Reportar un error
...
<extension module="org.jboss.as.cmp"/>
...
< /extensions>
82
...
<subsystem xmlns="urn:jboss:domain:cmp:1.1"/>
...
< /profiles>
.
Para iniciar un servidor autnomo JBoss EAP 6 con el perfil completo pase el argumento c standalone-full.xml or -c standalone-full-ha.xml en la lnea de comandos
cuando inicie el servidor.
La co n f ig u raci n d e co n t en ed o r ya n o se so p o rt a
En versiones anteriores de JBoss EAP era posible configurar un contenedor diferente para
entidades CMP y otros beans y utilizarlo estableciendo referencias dentro del archivo
descriptor de implementacin de la aplicacin jbo ss. xml . Por ejemplo, haba diferentes
configuraciones para SLSB para poner los beans en sesiones en general.
En JBoss EAP 6.x, es posible utilizar beans de entidad EJB 2 con un contenedor estndar.
Sin embargo, ya no se soportan las diferentes configuraciones del contenedor. El enfoque
recomendado es migrar los beans de sesin con estado EJB2 (SFSB del ingls Stateful
Session Beans), los beans de sesin sin estado (SLSB ddel ingls Stateless Session
Beans), beans dirigidos por mensajes (MD B del ingls Message D riven Beans) a EJB 3 y
para la persistencia administrada por el contenedor (CMP del ingls Container-Managed
Persistence) y los beans de entidad de persistencia administrada por beans (BMP del
ingls Bean-Managed Persistence) utilizar la API de persistencia Java (JPA del ingls Java
Persistence API) de acuerdo con la especificacin EJB 3.
La configuracin predeterminada del contenedor en JBoss EAP 6 contiene varios cambios
para los beans EJB 2 CMP:
El bloqueo pesimista est activado por defecto. Esto puede generar puntos muertos.
El cdigo de deteccin de deadLock que se encontraba en la capa CMP en JBoss EAP
5.x ya no est en JBoss EAP 6.
En JBoss EAP 5.x, tambin era posible el personalizar el cach, el agrupamiento, co mmi to pti o ns y la pila de interceptores. En JBoss EAP 6, esto ya no es posible. Hay solo una
implementacin, la cual es similar a la poltica Instance P er T ransacti o n con
co mmi t-o pti o n C . Si migra una aplicacin que usa la configuracin del contenedor del
bean de entidades cmp2. x jd bc2 pm, el cual usa un administrador de persistencia
basado en JD BC compatible con CMP2.x , entonces tendr impacto en el rendimiento. Este
contenedor se optimiz para rendimiento. Se recomienda que migre estas entidades a EJB
3 antes de migrar la aplicacin.
C o n f ig u raci n d el in t ercep t o r d el lad o d el servid o r
JBoss EAP 6 soporta el Intercepto r Java EE estndar utilizando las anotaciones
@ Intercepto rs y @ Aro und Invo ke. Sin embargo, esto no permite la manipulacin por
fuera de la transaccin o la seguridad.
En versiones anteriores de JBoss EAP era posible modificar la pila de interceptores para
tener interceptores personalizados para cada invocacin EJB. Esto se utilizaba con
frecuencia para implementar seguridad personalizada o mecanismos de reintento antes de
chequeos de seguridad o chequeos de transacciones o creacin. JBoss EAP 6.1 introdujo
83
84
<res-ref-name>jdbc/Resource1</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
< /resource-ref>
< resource-ref >
<res-ref-name>java:comp/env/jdbc/Resource2</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
< /resource-ref>
El archivo jbo ss-ejb3. jxml mapea los nombres JND I a las referencias usando la
siguiente sintaxis XML.
< resource-ref>
<res-ref-name>jdbc/Resource1</res-ref-name>
<jndi-name>java:jboss/datasources/ExampleDS</jndi-name>
< /resource-ref>
< resource-ref>
<res-ref-name>java:comp/env/jdbc/Resource2</res-ref-name>
<jndi-name>java:jboss/datasources/ExampleDS</jndi-name>
< /resource-ref>
Algunas de las opciones de configuracin que estaban disponibles en el archivo
jbo ss. xml JBoss EAP 5.x no se implementaron en JBoss EAP 6. La siguiente lista
describe algunos de los atributos utilizados comnmente en el archivo jbo ss. xml y si
hay una manera opcional de alcanzarlos en JBoss EAP 6.
El elemento metho d -attri bute se utilizaba para configurar mtodos de beans de
sesin y entidades individuales.
Las opciones de configuracin read -o nl y y i d empo tent no se llevaron a JBoss
EAP 6.
85
La opcin transacti o n-ti meo ut ahora se configura en el archivo jbo ssejb3. xml .
El atributo mi ssi ng -metho d -permi ssi o n-excl ud e-mo d e cambi el
comportamiento de los mtodos sin implementar metadatos de seguridad explcitos en
un bean asegurado. En JBoss EAP 6, la ausencia de una anotacin @ R o l esAl l o wed
se trata de manera similar a @ P ermi tAl l
C o n f ig u raci n d e map eo d el t ip o d e f u en t e d e d at o s
En versiones anteriores de JBoss EAP, era posible configurar el mapeo del tipo de fuente
de datos dentro del archivo de configuracin de la implementacin de la fuente de datos
*-d s. xml .
En JBoss EAP 6, esto se debe hacer ahora en el archivo descriptor de implementacin
jbo sscmp-jd bc. xml .
< defaults>
<datasource-mapping>mySQL</datasource-mapping>
<create-table>true</create-table>
....
< /defaults>
En versiones anteriores de JBoss EAP, el mapeo personalizado se realizaba en el archivo
stand ard jbo sscmp-jd bc. xml . Este archivo ya no est disponible y el mapeo ahora se
realiza en el archivo descriptor de implementacin jbo sscmp-jd bc. xml .
C amb io s ad icio n ales a la p ersist en cia ad min ist rad a p o r el co n t en ed o r y las relacio n es
ad min ist rad as p o r el co n t en ed o r
C amb io s en el it erad o r d e relacio n es ad min ist rad as p o r el co n t en ed o r y
co leccio n es
En lanzamientos anteriores de JBoss EAP, era posible para algunos contenedores, por
ejemplo el contenedor cmp2. x jd bc2 pm el iterar colecciones CMR (del ingls Container
Managed Relationship) y borrar o agregar relaciones. D ebido a que la configuracin del
contenedor no se soporta, esto ya no es posible en JBoss EAP 6. Para obtener mayor
informacin sobre cmo lograr esta misma funcionalidad en el cdigo de la aplicacin,
consulte EJB2.1 Localizador de entidades CMP con relaciones (CMR) retorna duplicados
en EAP6 en la seccin de Soluciones de la base de conocimiento de soporte del Portal de
clientes.
En t rad as d u p licad as d e relacio n es ad min ist rad as p o r el co n t en ed o r p ara
lo caliz ad o res
En versiones anteriores de JBoss EAP, era posible seleccionar diferentes contenedores
CMP que utilizaban diferentes estrategias de persistencia. El contenedor cmp2. x jd bc2
pm en JBoss EAP 5.x utilizaba SQ L-9 2 optimizado para generar sintaxis LEFT OUTER
JOIN optimizada para localizadores. D ebido a que JBoss EAP 6.x solo soporta el
contenedor estndar para CMP y CMR, la implementacin no contiene estas
optimizaciones. El localizador debe incluir la palabra clave D IST INC T en la declaracin
SELEC T para evitar un producto cartesiano en el grupo de resultados. Para obtener mayor
informacin consulte EJB2.1 Localizador para entidades CMP con relaciones (CMR)
retorna duplicados en EAP6 en la seccin de Soluciones de la base de conocimiento de
soporte del Portal de clientes.
C amb io en el b o rrad o p red et ermin ad o en cascad a p ara b ean s d e en t id ad C MP
86
El valor predeterminado del borrado en cascada cambi a fal se. Esto puede generar
fallos de borrado en JBoss EAP 6. Si relaciones de entidades se marcan como cascad ed el ete debe establecer explcitamente el batch-cascad e-d el ete como true en el
archivo jbo sscmp-jd bc. xml . Para obtener mayor informacin consulte fallo en el
borrado en cascada para entidades EJB2 CMP despus de la migracin a EAP6 en la
seccin de Soluciones de la base de conocimiento de soporte del Portal de clientes.
Map eo s p erso n aliz ad o s C MP p ara camp o s p erso n aliz ad o s
Si utiliz las clases de mapeo de clientes tal como JD BC P arameterSetter,
JD BC R esul tSetR ead er y Mapper en su aplicacin JBoss EAP 5.x, es posible que vea la
java. l ang . C l assNo tFo und Excepti o n cuando implementa su aplicacin en JBoss
EAP 6. Esto se debe a que los nombres de paquetes para las interfaces se cambiaron de
o rg . jbo ss. ejb. pl ug i ns. cmp. jd bc. Mapper a
o rg . jbo ss. as. cmp. jd bc. Mapper. Para obtener mayor informacin consulte Cmo
utilizar el mapeo de campos para las clases personalizadas en una aplicacin EJB2 CMP
en EAP6 en la seccin de Soluciones de la base de conocimiento de soporte del Portal de
clientes.
G en eraci n d e llaves p rimarias u t iliz an d o co man d o s d e en t id ad
Si su aplicacin JBoss EAP 5 usa enti ty-co mmand s para generar llaves primarias, por
ejemplo Seq uence o Auto -i ncrement es posible que vea una
C l assNo tFo und Excepti o n para la clase JD BC O racl eSeq uenceC reateC o mmand
cuando migra su aplicacin a JBoss EAP 6. Esto se debe a que el paquete clase cambi
de o rg . jbo ss. ejb. pl ug i ns. cmp. jd bc a o rg . jbo ss. as. cmp. jd bc. keyg en. Si
utiliza esta clase en su aplicacin JBoss EAP 6 tambin debe agregar una dependencia en
el mdulo EAP _HO ME/mo d ul es/system/l ayers/base/o rg /jbo ss/as/cmp.
C amb io s en la ap licaci n
Mo d if iq u e el c d ig o p ara u t iliz ar las n u evas reg las d e esp acio d e n o mb res JN D I.
As como con EJB 3.0, tiene que utilizar el prefijo completo JND I con EJB 2.x. Para mayor
informacin sobre las nuevas reglas del espacio de nombre JND I y ejemplos del cdigo
consulte Seccin 3.1.8.1, Actualizacin de los nombres de espacios de nombres JND I de
la aplicacin .
Puede encontrar los ejemplos sobre cmo actualizar los espacios de nombres JND I de
lanzamientos anteriores aqu: Seccin 3.1.8.5, Ejemplos de espacios de nombres JND I en
lanzamientos anteriores y la manera en que se especifican en JBoss EAP 6 .
Mo d if iq u e el d escrip t o r d e arch ivo s jbo ss-web. xml
Modifique el <jnd i -name> para cada <ejb-ref> para utilizar el nuevo formato de
bsqueda completamente calificado JND I.
U se XD o clet p ara map ear el n o mb re JN D I N ame d e in t erf aces lo cales in t ern as
Con EJB 2 era muy comn el utilizar el patrn Lo cato r para buscar Beans. Si usted
utilizaba este patrn en su aplicacin, en lugar de modificar el cdigo de la aplicacin
code, puede utilizar XD oclet para generar un mapa para los nuevos nombres JND I.
Una anotacin XD oclet tpica se ve as:
@ ejb.bean name="UserAttribute" display-name="UserAttribute"
local-jndi-name="ejb21/UserAttributeEntity" view-type="local"
type="CMP" cmp-version="2.x" primkey-field="id"
87
try {
Object objRef;
try {
objRef =
initialContext.lookup("global/"+jndiName);
} catch(java.lang.Exception e) {
objRef = initialContext.lookup(jndiName);
if
(java.rmi.Remote.class.isAssignableFrom(narrowTo))
return
javax.rmi.PortableRemoteObject.narrow(objRef, narrowTo);
else
return objRef;
} finally {
initialContext.close();
}
2. Ejecute Ant, configurando el atributo plantilla para utilizar el l o o kup. xd t
modificado para la tarea ejbd o cl et.
3. Modifique el subsistema nami ng en el archivo de configuracin del servidor para
mapear el nombre JND I viejo al nuevo nombre JND I vlido.
< subsystem xmlns="urn:jboss:domain:naming:1.2">
<bindings>
<lookup name="java:global/ejb21/UserAttributeEntity"
lookup="java:global/ejb2CMP/ejb/UserAttribute!de.wfink.ejb21
88
.cmp.cmr.UserAttributeLocalHome"/>
</bindings>
<remote-naming/>
< /subsystem>
R esu men d e arch ivo s o b so let o s
Los siguientes archivos ya no se soportan en JBoss EAP 6.
jb o ss.xml
El archivo descriptor de implementacin jbo ss. xml ya no se soporta y se ignora si se
incluye en el archivador implementado.
st an d ard jb o sscmp - jd b c.xml
El archivo de configuracin stand ard jbo sscmp-jd bc. xml ya no se soporta. Esta
informacin de configuracin ahora se incluye en el mdulo o rg . jbo ss. as. cmp y ya no
se puede personalizar.
st an d ard jb o ss.xml
El archivo de configuracin stand ard jbo ss. xml ya no se soporta. Esta informacin de
configuracin ahora se incluye en el archivo stand al o ne. xml al ejecutar un servidor
autnomo o el archivo d o mai n. xml en un dominio administrado.
Reportar un error
89
Nota
Aunque las bibliotecas JBoss AOP pueden funcionar en JBoss EAP 6, no es una
configuracin soportada.
Reportar un error
Importante
Las aplicaciones que usan Hibernate directamente con Seam 2.2 pueden usar una versin de
Hibernate 3 empacada dentro de la aplicacin. Hibernate 4, el cual se proporciona a travs
del mdulo org.hibernate de JBoss EAP 6 no es soportado por parte de Seam 2.2. Este
ejemplo tiene el propsito de ayudarle a empezar a ejecutar su JBoss EAP 6 como primer
paso. Tenga en cuenta que el empacar Hibernate 3 con una aplicacin Seam 2.2 no es una
configuracin soportada.
Pro ced imien t o 3.25. Mig raci n d e arch ivad o res Seam 2.2
1. Act u aliz aci n d e la co n f ig u raci n d e la f u en t e d e d at o s
Algunos ejemplos de Seam 2.2 usan la fuente de datos JD BC predeterminada llamada
java: /Exampl eD S. Esta fuente de datos predeterminada cambi en JBoss EAP 6 a
java: jbo ss/d ataso urces/Exampl eD S. Si su aplicacin usa la base de datos del
ejemplo puede hacer una de las siguientes cosas:
Si quiere utilizar la base de datos del ejemplo que se enva junto con JBoss EAP 6,
modifique el archivo MET A-INF/persi stence. xml para reemplazar el elemento jtad ata-so urce existente con el nombre JND I de la fuente de datos de la base de datos:
< !-- <jta-data-source>java:/ExampleDS</jta-data-source> -->
< jta-data-source>java:jboss/datasources/ExampleDS</jta-datasource>
Si prefiere mantener su base de datos existente, puede agregar la definicin de la fuente
de datos al archivo EAP_HOME/stand al o ne/co nfi g urati o n/stand al o ne. xml .
90
Importante
Tiene que detener el servidor antes de modificar el archivo de configuracin del
servidor para que su cambio persista al reiniciar el servidor.
La siguiente definicin es una copia de la fuente de datos HSQL predeterminada definida
en JBoss EAP 6:
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=1</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
< /datasource>
Tambin puede agregar la definicin de la fuente de datos usando la interfaz de la lnea
de comandos del CLI de administracin. El siguiente es un ejemplo de la sintaxis que
tiene que utilizar para agregar una fuente de datos. La " \" al final de la lnea indica la
continuacin del comando en la siguiente lnea.
Ejemp lo 3.3. Ejemp lo d e la sin t axis p ara ag reg ar la d ef in ici n d e la f u en t e
d e d at o s
$ EAP_HOME/bin/jboss-cli --connect
[standalone@ localhost:9999 /] data-source add --name=ExampleDS
--jndi-name=java:/ExampleDS \
--connection-url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1 -driver-name=h2 \
--user-name=sa --password=sa
Para mayor informacin sobre cmo configurar una fuente de datos consulte
Seccin 3.1.6.2, Actualizacin de la configuracin de la fuente de datos .
2. Ag reg ar las d ep en d en cias req u erid as
Ya que las aplicaciones Seam 2.2 usan JSF 1.2, necesita agregar las dependencias para
los mdulos JSF 1.2 y excluir los mdulos JSF 2.0. Para lograr esto necesita crear un
archivo jbo ss-d epl o yment-structure. xml en el directorio MET A-INF/ del EAR que
contiene los siguientes datos:
< jboss-deployment-structure xmlns="urn:jboss:deploymentstructure:1.0">
<deployment>
<dependencies>
91
export="true"/>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
</exclusions>
<dependencies>
</dependencies>
</sub-deployment>
< /jboss-deployment-structure>
Si su aplicacin usa marcos de trabajo de registro de terceros es necesario agregar esas
dependencias tal como se describe aqu: Seccin 3.1.4.1, Modificar las dependencias de
registros .
3. Si su ap licaci n u sa H ib ern at e 3.x, p rimero t rat e d e ejecu t ar la ap licaci n
u san d o las b ib lio t ecas H ib ern at e 4
Si su aplicacin no usa el contexto de persistencia administrada Seam, la bsqueda
Hibernate, validacin u otras funcionalidades que han cambiado con Hibernate 4, es posible
que pueda ejecutar con las bibliotecas Hibernate 4. Sin embargo, si ve
C l assNo tFo und Excepti o ns o C l assC astExcepti o ns que apuntan a las clases
Hibernate o ve errores similares al siguiente puede que necesite seguir las instrucciones en
el siguiente paso y modificar la aplicacin para utilizar bibliotecas Hibernate 3.3.
Caused by: java.lang.LinkageError: loader constraint
violation in interface itable initialization: when resolving method
"org.jboss.seam.persistence.HibernateSessionProxy.getSession(Lorg/hi
bernate/EntityMode;)Lorg/hibernate/Session;" the class loader
(instance of org/jboss/modules/ModuleClassLoader) of the current
class, org/jboss/seam/persistence/HibernateSessionProxy, and the
class loader (instance of org/jboss/modules/ModuleClassLoader) for
interface org/hibernate/Session have different Class objects for the
type org/hibernate/Session used in the signature
4. C o p ie lo s arch ivo s d ep en d ien t es d e f u era d e lo s marco s d e t rab ajo u o t ro s
lu g ares
Si su aplicacin usa Hibernate 3.x y no puede utilizar Hibernate 4 de manera exitosa con su
aplicacin, necesitar copiar las JARs Hibernate 3.x en el directorio /l i b y excluir el
mdulo Hibernate en la seccin de implementaciones del MET A-INF/jbo ss-d epl o ymentstructure. xml as:
<exclusions>
92
<module name="org.hibernate"/>
</exclusions>
<deployment>
< /jboss-deployment-structure>
Tiene que tomar pasos adicionales cuando agrupa Hibernate 3.x con su aplicacin. Para
mayor informacin, consulte Seccin 3.2.2.2, Configuracin de cambios para las
aplicaciones que usan Hibernate y JPA .
5. D ep u rar y reso lver erro res JN D I Seam 2.2
Cuando migra una aplicacin Seam 2.2 puede que vea errores
javax. nami ng . NameNo tFo und Excepti o n en el registro como el siguiente:
javax.naming.NameNotFoundException: Name 'jboss-seam-booking' not
found in context ''
Si no quiere modificar las bsquedas JND I en el cdigo, puede modificar el archivo
co mpo nents. xml de la aplicacin de esta manera:
a. R eemp laz ar el elemen t o co re- in it exist en t e
Primero necesita reemplazar el elemento core-init existente as:
< !-- <core:init jndi-pattern="jboss-seam-booking/#
{ejbName}/local" debug="true" distributable="false"/>
< core:init debug="true" distributable="false"/>
-->
93
c. Ag reg ar elemen t o s d el co mp o n en t e
Para cada mensaje INFO de enlace JND I en el registro, agregue un elemento
co mpo nent que coincida en el archivo co mpo nents. xml :
< component
class="org.jboss.seam.example.booking.AuthenticatorAction"
jndi-name="java:app/jboss-seambooking.jar/AuthenticatorAction" />
Para mayor informacin sobre cmo depurar y resolver problemas de migracin consulte
Seccin 4.2.1, D epurar y resolver problemas de migracin .
Para ver una lista de problemas de migracin conocidos con los archivadores Seam 2
consulte Seccin 3.2.13.2, Problemas de migracin del archivador Seam 2.2 .
R esu lt ad o
El archivador Seam 2.2 implementa y ejecuta de manera exitosa en JBoss EAP 6.
Reportar un error
94
95
<persistence-unit name="example_pu">
<jta-data-source>java:jboss/datasources/ExampleDS</jtadata-source>
<properties>
<property name="jboss.as.jpa.providerModule"
value="hibernate3-bundled" />
</properties>
<class>com.acme.Foo</class>
<class>com.acme.Bar</class>
</persistence-unit>
< /persistence>
El llamar a co mp o n en t es EJB Seam d esd e h ilo s q u e n o so n EJB g en era u n a
javax.n amin g .N ameN o t Fo u n d Excep t io n
Este problema se ha generado debido a los cambios en JBoss EAP 6 para implementar el
nuevo sistema de carga de clases modulares y para adoptar las nuevas convenciones de
espacios de nombre JND I estandarizadas. El espacio de nombre java: app est indicado
para los nombres compartidos por todos los componentes en una sola aplicacin. Los
hilos que no son EE, tal como los hilos asincrnicos Quartz tienen que utilizar el espacio
de nombre java: g l o bal , el cual es compartido por todas las aplicaciones
implementadas en una instancia del servidor de aplicaciones.
Si recibe una javax. nami ng . NameNo tFo und Excepti o n cuando trata de llamar a los
componentes EJB Seam desde mtodos asincrnicos Quartz tiene que modificar el archivo
co mpo nents. xml para utilizar el nombre JND I global, por ejemplo:
96
asynchronous methods en las 2.2.0 Release Notes para Red Hat JBoss Web Framework Kit en
el portal de clientes.
Reportar un error
97
4 .1.2. Familiariz acin con las herramient as que le ayudan con la migracin
R esu men
Hay algunas herramientas que le pueden ayudar en realizar su migracin. La siguiente es una lista
de estas herramientas junto con una descripcin de lo que hacen.
T at t let ale
Con el cambio a la carga de clases de manera modular, necesita encontrar y rectificar las
dependencias de aplicaciones. Tattletale le puede ayudar a identificar nombres de
mdulos dependientes y generar el XML de configuracin para su aplicacin.
Seccin 4.1.3, Uso de Tattletale para encontrar dependencias de aplicaciones
H erramien t a d e mig raci n Iro n Jacamar
En JBoss EAP 6, las fuentes de datos y los adaptadores de recursos ya no se configuran
en un archivo separado. Ahora se definen en el archivo de configuracin del servidor y
usan nuevos esquemas. La herramienta de migracin IronJacamar puede ayudar a
convertir la configuracin antigua al formato que JBoss EAP 6 espera.
Seccin 4.1.6, Uso de la herramienta IronJacamar para migrar configuraciones del
adapatador de recursos y la fuente de datos
Reportar un error
98
R esu men
D ebido a los cambios en la carga modular de clases en JBoss EAP 6, puede que encuentre rastros
C l assNo tFo und Excepti o n o C l assC astExcepti o n en el registro de JBoss cuando migre su
aplicacin. Para resolver estos errores, necesita encontrar las JARs que contienen las clases
especificadas por las excepciones.
Tattletale es una excelente herramienta de terceros que escanea de manera recursiva su aplicacin
y proporciona reportes detallados sobre su contenido. Tattletale 1.2.0.Beta2 o posterior contiene
soporte adicional para ayudar con la nueva carga de clases de mdulos JBoss utilizada en JBoss
EAP 6. El reporte " JBoss AS 7" de Tattletale se puede utilizar para identificar de manera automtica y
generar nombres de mdulos dependientes para incluir el archivo jbo ss-d epl o ymentstructure. xml de su aplicacin.
Pro ced imien t o 4 .1. In st ale y ejecu t e T at t let ale p ara b u scar d ep en d en cias d e
ap licacio n es
1. Seccin 4.1.4, D escarga e instalacin de Tattletale
2. Seccin 4.1.5, Creacin y revisin del reporte Tattletale
Nota
Tattletale es una herramienta de terceros y no se soporta como parte de JBoss EAP 6. Para
ver la documentacin actualizada sobre cmo instalar y usar Tattletale, vaya al sitio web de
Tattletale en http://www.jboss.org/tattletale.
Reportar un error
99
Por ejemplo: java -jar tattl etal e-1. 2. 0 . Beta2/tattl etal e. jar
~ /appl i cati o ns/jbo ss-seam-bo o ki ng . ear ~ /o utput-resul ts/
2. En un navegador, abra el archivo OUTPUT_DIRECTORY/i nd ex. html y haga clic en " JBoss
AS 7" bajo la seccin " Reports" .
a. La columna a la izquierda lista los archivos que la aplicacin utiliza. Haga clic en el
enlace ARCHIVE_NAME para ver los detalles sobre el archivo tal como la ubicacin,
la informacin del manifesto y las clases que contiene.
b. El enlace jbo ss-d epl o yment-structure. xml en la columna a la derecha
muestra la manera de especificar la dependencia de mdulos para el archivo
nombrado en la columna izquierda. Haga clic en este enlace para ver la manera de
definir la informacin del mdulo de dependencias de implementacin para este
archivo.
Reportar un error
Nota
La herramienta de migracin IronJacamar es una herramienta de terceros y no se soporta
como parte de JBoss EAP 6. Para mayor informacin sobre IronJacamar, vaya a
http://www.ironjacamar.org/. Para ver la documentacin actualizada sobre cmo instalar y
usar esta herramienta vaya a http://www.ironjacamar.org/documentation.html.
Reportar un error
100
Nota
La herramienta de migracin solo est disponible en la versin IronJacamar 1.1 o posteriores
y requiere Java 7 o posteriores.
1. D escargue la ltima distribucin de IronJacamar de aqu:
http://www.ironjacamar.org/download.html
2. D escomprima el archivo descargado en el directorio que escoja.
3. Busque el script convertidor en la distribucin IronJacamar.
El script Linux se encuentra aqu: IRONJACAMAR_HOME/d o c/as/co nverter. sh
El archivo de agrupacin Windows se encuentra aqu:
IRONJACAMAR_HOME/d o c/as/co nverter. bat
Reportar un error
Nota
El script convertidor IronJacamar requiere Java 7 o posteriores.
101
Importante
Tiene que detener el servidor antes de modificar el archivo de configuracin del
servidor para que su cambio persista al reiniciar el servidor.
Si est ejecutando en un dominio administrado, copie el XML en el archivo
EAP_HOME/d o mai n/co nfi g urati o n/d o mai n. xml .
Si est ejecutando como un servidor autnomo, copie el XML en el archivo
EAP_HOME/stand al o ne/co nfi g urati o n/stand al o ne. xml .
4. Modifique el XML generado en el nuevo archivo de configuracin.
Este es un ejemplo del archivo de configuracin de la fuente de datos jbo ss-seambo o ki ng -d s. xml para el ejemplo de reservas de Seam 2.2 que se enva junto con JBoss
EAP 5.x:
< ?xml version="1.0" encoding="UTF-8"?>
< datasources>
<local-tx-datasource>
<jndi-name>bookingDatasource</jndi-name>
<connection-url>jdbc:hsqldb:.</connection-url>
<driver-class>org.hsqldb.jdbcDriver</driver-class>
<user-name>sa</user-name>
<password></password>
</local-tx-datasource>
< /datasources>
El siguiente es el archivo de configuracin que se gener ejecutando el script convertidor. El
archivo generado contiene u elemento <d ri ver-cl ass>. La manera preferida de definir la
clase controladora en JBoss EAP 6 es utilizar un elemento <d ri ver>. Este es el XML que
resulta en el archivo de configuracin de JBoss EAP 6 con modificaciones para borrar el
comentario del elemento <d ri ver-cl ass> y agregar el elemento correspondiente
<d ri ver>:
< subsystem xmlns="urn:jboss:domain:datasources:1.1">
<datasources>
<connection-url>jdbc:hsqldb:.</connection-url>
<driver-class>org.hsqldb.jdbcDriver</driver-class>
->
<driver>h2<driver>
<transaction-isolation>TRANSACTION_NONE</transactionisolation>
<pool>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
102
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<user-name>sa</user-name>
<password/>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
</validation>
<timeout/>
<statement>
<track-statements>false</track-statements>
</statement>
</datasource>
<drivers>
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xadatasource-class>
</driver>
</drivers>
</datasources>
< /subsystem>
Reportar un error
Nota
El script convertidor IronJacamar requiere Java 7 o posteriores.
1. Abra una lnea de comandos y navegue al directorio IRONJACAMAR_HOME/d o cs/as/.
2. Ejecute el script convertidor con el siguiente comando:
Para Linux: . /co nverter. sh -ra SOURCE_FILE TARGET_FILE
Para Microsoft Windows: . /co nverter. bat -ra SOURCE_FILE TARGET_FILE
El SOURCE_FILE es el archivo -ds.xml del adaptador de recursos del lanzamiento anterior. El
TARGET_FILE contiene la nueva configuracin.
Por ejemplo, para convertir el archivo de configuracin del adaptador de recursos
mttestad apter-d s. xml en el directorio actual escribira:
Para Linux: . /co nverter. sh -ra mttestad apter-d s. xml new-ad apterco nfi g . xml
Para Microsoft Windows: . /co nverter. bat -ra mttestad apter-d s. xml newad apter-co nfi g . xml
103
Importante
Tiene que detener el servidor antes de modificar el archivo de configuracin del
servidor para que su cambio persista al reiniciar el servidor.
Si est ejecutando en un dominio administrado, copie el XML en el archivo
EAP_HOME/d o mai n/co nfi g urati o n/d o mai n. xml .
Si est ejecutando como un servidor autnomo, copie el XML en el archivo
EAP_HOME/stand al o ne/co nfi g urati o n/stand al o ne. xml .
4. Modifique el XML generado en el nuevo archivo de configuracin.
Este es un ejemplo del archivo de configuracin del adaptador de recursos
mttestad apter-d s. xml de JBoss EAP 5.x TestSuite:
< ?xml version="1.0" encoding="UTF-8"?>
<!-==================================================================
== -->
<!-- ConnectionManager setup for jboss test adapter
-->
<!-- Build jmx-api (build/build.sh all) and view for config
documentation -->
<!-==================================================================
== -->
< connection-factories>
<tx-connection-factory>
<jndi-name>JBossTestCF</jndi-name>
<xa-transaction/>
<rar-name>jbosstestadapter.rar</rar-name>
<connectiondefinition>javax.resource.cci.ConnectionFactory</connectiondefinition>
<config-property name="IntegerProperty"
type="java.lang.Integer">2</config-property>
<config-property name="BooleanProperty"
type="java.lang.Boolean">false</config-property>
<config-property name="DoubleProperty"
type="java.lang.Double">5.5</config-property>
<config-property name="UrlProperty"
type="java.net.URL">http://www.jboss.org</config-property>
104
<jndi-name>JBossTestCF2</jndi-name>
<xa-transaction/>
<rar-name>jbosstestadapter.rar</rar-name>
<connectiondefinition>javax.resource.cci.ConnectionFactory</connectiondefinition>
<config-property name="IntegerProperty"
type="java.lang.Integer">2</config-property>
<config-property name="BooleanProperty"
type="java.lang.Boolean">false</config-property>
<config-property name="DoubleProperty"
type="java.lang.Double">5.5</config-property>
<config-property name="UrlProperty"
type="java.net.URL">http://www.jboss.org</config-property>
<jndi-name>JBossTestCFByTx</jndi-name>
<xa-transaction/>
<track-connection-by-tx>true</track-connection-by-tx>
<rar-name>jbosstestadapter.rar</rar-name>
<connectiondefinition>javax.resource.cci.ConnectionFactory</connectiondefinition>
<config-property name="IntegerProperty"
type="java.lang.Integer">2</config-property>
<config-property name="BooleanProperty"
type="java.lang.Boolean">false</config-property>
<config-property name="DoubleProperty"
type="java.lang.Double">5.5</config-property>
<config-property name="UrlProperty"
type="java.net.URL">http://www.jboss.org</config-property>
<resource-adapter>
<archive>jbosstestadapter.rar</archive>
<transaction-support>XATransaction</transaction-support>
<connection-definitions>
<!-- Replace the "FIXME_MCF_CLASS_NAME" class-name value with the
105
jndi-name="java:jboss/JBossTestCF" pool-name="JBossTestCF"
classname="org.jboss.test.jca.adapter.TestManagedConnectionFactory"
enabled="true"
jndi-name="java:jboss/JBossTestCF" pool-name="JBossTestCF"
use-ccm="true" use-java-context="true">
<config-property name="IntegerProperty">2</config-property>
<config-property name="sleepInStart">200</config-property>
<config-property name="sleepInStop">200</config-property>
<config-property name="BooleanProperty">false</config-property>
<config-property
name="UrlProperty">http://www.jboss.org</config-property>
<config-property name="DoubleProperty">5.5</config-property>
<pool>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<application/>
</security>
<timeout/>
<validation>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
</validation>
</connection-definition>
</connection-definitions>
</resource-adapter>
<resource-adapter>
<archive>jbosstestadapter.rar</archive>
<transaction-support>XATransaction</transaction-support>
<connection-definitions>
<!-- Replace the "FIXME_MCF_CLASS_NAME" class-name value with the
correct class name
<connection-definition class-name="FIXME_MCF_CLASS_NAME"
enabled="true"
jndi-name="java:jboss/JBossTestCF2" pool-name="JBossTestCF2"
classname="org.jboss.test.jca.adapter.TestManagedConnectionFactory"
enabled="true"
jndi-name="java:jboss/JBossTestCF2" pool-name="JBossTestCF2"
use-ccm="true" use-java-context="true">
<config-property name="IntegerProperty">2</config-property>
<config-property name="sleepInStart">200</config-property>
<config-property name="sleepInStop">200</config-property>
<config-property name="BooleanProperty">false</config-property>
<config-property
name="UrlProperty">http://www.jboss.org</config-property>
106
<config-property name="DoubleProperty">5.5</config-property>
<pool>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<application/>
</security>
<timeout/>
<validation>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
</validation>
</connection-definition>
</connection-definitions>
</resource-adapter>
<resource-adapter>
<archive>jbosstestadapter.rar</archive>
<transaction-support>XATransaction</transaction-support>
<connection-definitions>
<!-- Replace the "FIXME_MCF_CLASS_NAME" class-name value with the
correct class name
<connection-definition class-name="FIXME_MCF_CLASS_NAME"
enabled="true"
jndi-name="java:jboss/JBossTestCFByTx" poolname="JBossTestCFByTx"
classname="org.jboss.test.jca.adapter.TestManagedConnectionFactory"
enabled="true"
jndi-name="java:jboss/JBossTestCFByTx" poolname="JBossTestCFByTx"
use-ccm="true" use-java-context="true">
<config-property name="IntegerProperty">2</config-property>
<config-property name="sleepInStart">200</config-property>
<config-property name="sleepInStop">200</config-property>
<config-property name="BooleanProperty">false</config-property>
<config-property
name="UrlProperty">http://www.jboss.org</config-property>
<config-property name="DoubleProperty">5.5</config-property>
<pool>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<application/>
</security>
<timeout/>
<validation>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
</validation>
</connection-definition>
107
</connection-definitions>
</resource-adapter>
</resource-adapters>
< /subsystem>
Reportar un error
108
109
3. Puede que vea ms de un resultado. En este caso, el siguiente resultado es la JAR que
necesitamos:
Binary file ./jboss-eap-5.1/seam/lib/hibernate-validator.jar
matches
4. Copie esta JAR al directorio l i b/ de la aplicacin.
Si encuentra que necesita un nmero ms grande de JARs, puede que sea ms fcil el definir
un mdulo para las clases. Para mayor informacin consulte Modules en el captulo titulado
Inicio rpido para desarrollar aplicaciones en la Gua de desarrollo para JBoss EAP 6 en
https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.
5. Vuelva a construir y a implementar la aplicacin
Reportar un error
com.example1.CustomClass1.getClass().getClassLoader().toString
());
l ogger.info("Class loader for CustomClass2: " +
com.example2.CustomClass2.getClass().getClassLoader().toString
());
b. La informacin en el registro muestra qu mdulos estn cargando las clases y con
base en su aplicacin necesitar borrar o mover las JAR(s) que causan conflictos.
110
Reportar un error
111
Muy posiblemente la razn por la cual se le redirecciona a esta pgina es ya que Seam atrap una
excepcin que no se manej en el cdigo de la aplicacin. La causa raz de la excepcin
usualmente se encuentra en uno de los enlaces en la " pgina de depuracin JBoss Seam" .
1. Amplie la seccin C o mpo nent en la pgina y busque el componente
o rg . jbo ss. seam. caug htExcepti o n.
2. La causa y el rastro de la pila debe apuntarle a las dependencias que faltan.
<deployment>
<dependencies>
112
</deployment>
< /jboss-deployment-structure>
Reportar un error
Importante
Las aplicaciones que usan Hibernate directamente con Seam 2.2 pueden usar una versin de
Hibernate 3 empacada dentro de la aplicacin. Hibernate 4, el cual se proporciona a travs
del mdulo org.hibernate de JBoss EAP 6 no es soportado por parte de Seam 2.2. Este
ejemplo tiene el propsito de ayudarle a empezar a ejecutar su JBoss EAP 6 como primer
paso. Tenga en cuenta que el empacar Hibernate 3 con una aplicacin Seam 2.2 no es una
configuracin soportada.
113
<deployment>
<exclusions>
</exclusions>
<dependencies>
114
</dependencies>
</deployment>
< /jboss-deployment-structure>
R esu lt ad o :
La aplicacin de ejemplo Seam 2.2 JPA implementa y ejecuta de manera exitosa en JBoss EAP 6.
Reportar un error
Importante
Las aplicaciones que usan Hibernate directamente con Seam 2.2 pueden usar una versin de
Hibernate 3 empacada dentro de la aplicacin. Hibernate 4, el cual se proporciona a travs
del mdulo org.hibernate de JBoss EAP 6 no es soportado por parte de Seam 2.2. Este
ejemplo tiene el propsito de ayudarle a empezar a ejecutar su JBoss EAP 6 como primer
paso. Tenga en cuenta que el empacar Hibernate 3 con una aplicacin Seam 2.2 no es una
configuracin soportada.
Pro ced imien t o 4 .7. Mig raci n d el ejemp lo d e reservas Seam 2.2
1. C ree el arch ivo jbo ss-d epl o yment-structure. xml
Cree un nuevo archivo llamado jbo ss-d epl o yment-structure. xml en el jbo ss-seambo o ki ng . ear/MET A-INF/ y agregue el siguiente contenido:
<dependencies>
115
<module name="org.apache.commons.logging"
export="true"/>
<module name="org.apache.commons.collections"
export="true"/>
</dependencies>
<exclusions>
</exclusions>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
<module name="com.sun.jsf-impl" slot="main"/>
</exclusions>
<dependencies>
<module name="javax.faces.api" slot="1.2"/>
<module name="com.sun.jsf-impl" slot="1.2"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
116
slf4j-log4j12.jar
hibernate-core.jar
hibernate-entitymanager.jar
hibernate-validator.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
4. C amb ie lo s n o mb res d e b sq u ed a JN D I
Cambie las cadenas de bsqueda JND I en el archivo jbo ss-seam-bo o ki ng . war/WEBINF/co mpo nents. xml . D ebido a las nuevas reglas porttiles JND I, JBoss EAP 6 ahora
enlaza EJBs usando reglas de sintaxis porttiles JND I y no puede utilizar el jndiPattern que
se utiliz en JBoss EAP 5. As se deben cambiar las cadenas de bsqueda JND I EJB de la
aplicacin para JBoss EAP 6:
java:global/jboss-seam-booking/jboss-seambooking/HotelSearchingAction!org.jboss.seam.example.booking.HotelSe
arching
java:app/jboss-seambooking/HotelSearchingAction!org.jboss.seam.example.booking.HotelSe
arching
java:module/HotelSearchingAction!org.jboss.seam.example.booking.Hot
elSearching
java:global/jboss-seam-booking/jboss-seambooking/HotelSearchingAction
java:app/jboss-seam-booking/HotelSearchingAction
java:module/HotelSearchingAction
Las cadenas de bsqueda JND I para las EJBs del marco de trabajo Seam 2.2 se debn
cambiar as:
java:global/jboss-seam-booking/jbossseam/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchro
nizations
java:app/jbossseam/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchro
nizations
java:module/EjbSynchronizations!org.jboss.seam.transaction.LocalEjb
Synchronizations
java:global/jboss-seam-booking/jboss-seam/EjbSynchronizations
java:app/jboss-seam/EjbSynchronizations
java:module/EjbSynchronizations
Puede tomar cualquiera de los siguientes enfoques:
a. Ag reg ar elemen t o s d el co mp o n en t e
Puede agregar un jnd i -name para todo EJB al WEB-INF/co mpo nents. xml :
<component
class="org.jboss.seam.transaction.EjbSynchronizations" jndiname="java:app/jboss-seam/EjbSynchronizations"/>
<component
class="org.jboss.seam.async.TimerServiceDispatcher" jndi-
117
name="java:app/jboss-seam/TimerServiceDispatcher"/>
<component
class="org.jboss.seam.example.booking.AuthenticatorAction"
jndi-name="java:app/jboss-seam-booking/AuthenticatorAction"
/>
<component
class="org.jboss.seam.example.booking.BookingListAction"
jndi-name="java:app/jboss-seam-booking/BookingListAction" />
<component
class="org.jboss.seam.example.booking.RegisterAction" jndiname="java:app/jboss-seam-booking/RegisterAction" />
<component
class="org.jboss.seam.example.booking.HotelSearchingAction"
jndi-name="java:app/jboss-seam-booking/HotelSearchingAction"
/>
<component
class="org.jboss.seam.example.booking.HotelBookingAction"
jndi-name="java:app/jboss-seam-booking/HotelBookingAction" />
<component
class="org.jboss.seam.example.booking.ChangePasswordAction"
jndi-name="java:app/jboss-seam-booking/ChangePasswordAction"
/>
b. Puede modificar el cdigo agregando la anotacin @ JND IName(val ue= "")
especificando la ruta JND I. A continuacin puede ver un ejemplo del cdigo
cambiado del bean de sesin sin estado. Puede encontrar una descripcin detallada
de este proceso en la documentacin de referencia de Seam 2.2.
@ Stateless
@ Name("authenticator")
@ JndiName(value="java:app/jboss-seambooking/AuthenticatorAction")
p ublic class AuthenticatorAction
implements Authenticator
{
. ..
}
R esu lt ad o :
La aplicacin de reservas Seam 2.2 implementa y ejecuta de manera exitosa en JBoss EAP 6.
Reportar un error
118
Importante
Las aplicaciones que usan Hibernate directamente con Seam 2.2 pueden usar una versin de
Hibernate 3 empacada dentro de la aplicacin. Hibernate 4, el cual se proporciona a travs
del mdulo org.hibernate de JBoss EAP 6 no es soportado por parte de Seam 2.2. Este
ejemplo tiene el propsito de ayudarle a empezar a ejecutar su JBoss EAP 6 como primer
paso. Tenga en cuenta que el empacar Hibernate 3 con una aplicacin Seam 2.2 no es una
configuracin soportada.
119
seam-booking.ear EAP6_HOME/standalone/deployments/
$ cp -r EAP5_HOME/seam/examples/booking/exploded-archives/jbossseam-booking.war EAP6_HOME/standalone/deployments/jboss-seam.ear
$ cp -r EAP5_HOME/seam/examples/booking/exploded-archives/jbossseam-booking.jar EAP6_HOME/standalone/deployments/jboss-seam.ear
3. Inicie el servidor de JBoss EAP 6 y revise el resgistro. Ver:
INFO [org.jboss.as.deployment] (DeploymentScanner-threads - 1)
Found jboss-seam-booking.ear in deployment directory.
To trigger deployment create a file called jboss-seambooking.ear.dodeploy
4. Cree un archivo vaco con el nombre jbo ss-seam-bo o ki ng . ear. d o d epl o y y cpielo
en el directorio EAP6_HOME/stand al o ne/d epl o yments. Necesita copiar este archivo en
el directorio de implementaciones muchas veces al migrar esta aplicacin as que
mantngalo en un lugar en donde lo pueda encontrar fcilmente. En el registro ahora debe
ver los siguientes mensajes, indicando que se est implementando:
INFO [org.jboss.as.server.deployment] (MSC service
Starting deployment of "jboss-seam-booking.ear"
INFO [org.jboss.as.server.deployment] (MSC service
Starting deployment of "jboss-seam-booking.jar"
INFO [org.jboss.as.server.deployment] (MSC service
Starting deployment of "jboss-seam.jar"
INFO [org.jboss.as.server.deployment] (MSC service
Starting deployment of "jboss-seam-booking.war"
thread 1-1)
thread 1-3)
thread 1-6)
thread 1-2)
120
Importante
Las aplicaciones que usan Hibernate directamente con Seam 2.2 pueden usar una versin de
Hibernate 3 empacada dentro de la aplicacin. Hibernate 4, el cual se proporciona a travs
del mdulo org.hibernate de JBoss EAP 6 no es soportado por parte de Seam 2.2. Este
ejemplo tiene el propsito de ayudarle a empezar a ejecutar su JBoss EAP 6 como primer
paso. Tenga en cuenta que el empacar Hibernate 3 con una aplicacin Seam 2.2 no es una
configuracin soportada.
Pro ced imien t o 4 .10. D ep u raci n y reso lu ci n d e excep cio n es y erro res d e
imp lemen t aci n
1. Emita - java.lang.ClassNotFoundException: javax.faces.FacesException
Cuando implementa la aplicacin, el registro contiene el siguiente error:
ERROR \[org.jboss.msc.service.fail\] (MSC service thread 1-1)
MSC00001: Failed to start service jboss.deployment.subunit."jbossseam-booking.ear"."jboss-seam-booking.war".POST_MODULE:
org.jboss.msc.service.StartException in service
jboss.deployment.subunit."jboss-seam-booking.ear"."jboss-seambooking.war".POST_MODULE:
Failed to process phase POST_MODULE of subdeployment "jboss-seambooking.war" of deployment "jboss-seam-booking.ear"
(.. additional logs removed ...)
Caused by: java.lang.ClassNotFoundException:
javax.faces.FacesException from \[Module "deployment.jboss-seambooking.ear:main" from Service Module Loader\]
at
org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java
:191)
Lo q u e sig n if ica:
La ClassNotFoundException indica que falta una dependencia. En este caso, no puede
encontrar la clase javax. faces. FacesExcepti o n y necesita agregar la dependencia de
manera explcita.
Para reso lverlo :
Busque el nombre del mdulo para esa clase en el directorio
EAP6_HOME/mo d ul es/system/l ayers/base/ buscando una ruta que coincida con la
clase que falta. En este caso se encuentran dos mdulos que coinciden:
javax/faces/api/main
javax/faces/api/1.2
Ambos mdulos tienen el mismo nombre de mdulo: javax. faces. api pero uno en el
directorio principal es para JSF 2.0 y el que se encuentra en el directorio 1.2 es para JSF 1.2.
Si hubiera solo un mdulo disponibles entonces podra simplemente crear un archivo
MANIFEST . MF y agregar la dependencia del mdulo. Pero en este caso, quiere utilizar la
121
versin JSF 1.2 y no la versin 2.0 en main as que necesita especificar uno y excluir el otro.
Para lograr esto, cree un archivo jbo ss-d epl o yment-structure. xml en el directorio
MET A-INF/ del EAR que contiene los siguientes datos:
<dependencies>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
</exclusions>
<dependencies>
</dependencies>
</sub-deployment>
< /jboss-deployment-structure>
En la seccin d epl o yment agregue la dependencia para la javax. faces. api para el
mdulo JSF 1.2. Tambin agregue la dependencia para el mdulo JSF 1.2 en la seccin de
subimplementacin para la WAR y excluya el mdulo para JSF 2.0.
Vuelva a implementar la aplicacin borrando el archivo
EAP6_HOME/stand al o ne/d epl o yments/jbo ss-seam-bo o ki ng . ear. fai l ed y
creando un archivo en blanco jbo ss-seam-bo o ki ng . ear. d o d epl o y en el mismo
directorio.
2. Emita - java.lang.ClassNotFoundException: org.apache.commons.logging.Log
Cuando implementa la aplicacin, el registro contiene el siguiente error:
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8)
MSC00001: Failed to start service jboss.deployment.unit."jbossseam-booking.ear".INSTALL:
org.jboss.msc.service.StartException in service
jboss.deployment.unit."jboss-seam-booking.ear".INSTALL:
Failed to process phase INSTALL of deployment "jboss-seambooking.ear"
(.. additional logs removed ...)
Caused by: java.lang.ClassNotFoundException:
org.apache.commons.logging.Log from [Module "deployment.jboss-seambooking.ear.jboss-seam-booking.war:main" from Service Module
Loader]
Lo q u e sig n if ica:
La C l assNo tFo und Excepti o n indica que falta una dependencia. En este caso, no puede
encontrar la clase o rg . apache. co mmo ns. l o g g i ng . Lo g y necesita agregar la
dependencia de manera explcita.
Para reso lverlo :
122
<dependencies>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
</exclusions>
<dependencies>
</dependencies>
</sub-deployment>
< /jboss-deployment-structure>
Vuelva a implementar la aplicacin borrando el archivo
EAP6_HOME/stand al o ne/d epl o yments/jbo ss-seam-bo o ki ng . ear. fai l ed y
creando un archivo en blanco jbo ss-seam-bo o ki ng . ear. d o d epl o y en el mismo
directorio.
3. Emita - java.lang.ClassNotFoundException: org.dom4j.D ocumentException
Cuando implementa la aplicacin, el registro contiene el siguiente error:
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[defaulthost].[/seam-booking]] (MSC service thread 1-3) Exception sending
context initialized event to listener instance of class
org.jboss.seam.servlet.SeamListener: java.lang.NoClassDefFoundError:
org/dom4j/DocumentException
(... additional logs removed ...)
Caused by: java.lang.ClassNotFoundException:
org.dom4j.DocumentException from [Module "deployment.jboss-seambooking.ear.jboss-seam.jar:main" from Service Module Loader]
Lo q u e sig n if ica:
123
La C l assNo tFo und Excepti o n indica que falta una dependencia. En este caso, no puede
encontrar la clase o rg . d o m4 j. D o cumentExcepti o n.
Para reso lverlo :
Busque el nombre del mdulo en el directorio
EAP6_HOME/mo d ul es/system/l ayers/base/ buscando la
o rg /d o m4 j/D o cumentExcepti o n. El nombre del mdulo es org.dom4j . Modifique el
archivo jbo ss-d epl o yment-structure. xml para agregar la dependencia del mdulo a
la seccin de implementacin del archivo.
<dependencies>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
</exclusions>
<dependencies>
</dependencies>
</sub-deployment>
< /jboss-deployment-structure>
Vuelva a implementar la aplicacin borrando el archivo
EAP6_HOME/stand al o ne/d epl o yments/jbo ss-seam-bo o ki ng . ear. fai l ed y
creando un archivo en blanco jbo ss-seam-bo o ki ng . ear. d o d epl o y en el mismo
directorio.
4. Emita - java.lang.ClassNotFoundException: org.hibernate.validator.InvalidValue
Cuando implementa la aplicacin, el registro contiene el siguiente error:
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[defaulthost].[/seam-booking]] (MSC service thread 1-6) Exception sending
context initialized event to listener instance of class
org.jboss.seam.servlet.SeamListener: java.lang.RuntimeException:
Could not create Component:
org.jboss.seam.international.statusMessages
(... additional logs removed ...)
Caused by: java.lang.ClassNotFoundException:
org.hibernate.validator.InvalidValue from [Module
"deployment.jboss-seam-booking.ear.jboss-seam.jar:main" from
Service Module Loader]
124
Lo q u e sig n if ica:
La C l assNo tFo und Excepti o n indica que falta una dependencia. En este caso, no puede
encontrar la clase o rg . hi bernate. val i d ato r. Inval i d Val ue.
Para reso lverlo :
Hay un mdulo org.hibernate.validator , pero la JAR no contiene la clase
o rg . hi bernate. val i d ato r. Inval i d Val ue as que el agregar la dependencia del
mdulo no resuelve este problema. En este caso, la JAR que contiene la clase era parte de la
implementacin JBoss EAP 5.X. Busque la JAR que contiene la clase que falta en el
directorio EAP5_HOME/seam/lib/. Para lograr esto, abra una consola y escriba lo
siguiente:
$ cd EAP5_HOME/seam/lib
$ grep 'org.hibernate.validator.InvalidValue' `find . -name
'*.jar'`
El resultado muestra:
$ Binary file ./hibernate-validator.jar matches
$ Binary file ./test/hibernate-all.jar matches
En este caso, copie la hi bernate-val i d ato r. jar al directorio jbo ss-seambo o ki ng . ear/l i b/:
$ cp EAP5_HOME/seam/lib/hibernate-validator.jar jboss-seambooking.ear/lib
Vuelva a implementar la aplicacin borrando el archivo
EAP6_HOME/stand al o ne/d epl o yments/jbo ss-seam-bo o ki ng . ear. fai l ed y
creando un archivo en blanco jbo ss-seam-bo o ki ng . ear. d o d epl o y en el mismo
directorio.
5. Emita - java.lang.InstantiationException: org.jboss.seam.jsf.SeamApplicationFactory
Cuando implementa la aplicacin, el registro contiene el siguiente error:
INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC
service thread 1-7) Unsanitized stacktrace from failed start...:
com.sun.faces.config.ConfigurationException: Factory
'javax.faces.application.ApplicationFactory' was not configured
properly.
at
com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactorie
sExist(FactoryConfigProcessor.java:296) [jsf-impl-2.0.4-b09jbossorg-4.jar:2.0.4-b09-jbossorg-4]
(... additional logs removed ...)
Caused by: javax.faces.FacesException:
org.jboss.seam.jsf.SeamApplicationFactory
at
javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.ja
va:606) [jsf-api-1.2_13.jar:1.2_13-b01-FCS]
(... additional logs removed ...)
125
at
com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactorie
sExist(FactoryConfigProcessor.java:294) [jsf-impl-2.0.4-b09jbossorg-4.jar:2.0.4-b09-jbossorg-4]
... 11 more
Caused by: java.lang.InstantiationException:
org.jboss.seam.jsf.SeamApplicationFactory
at java.lang.Class.newInstance0(Class.java:340) [:1.6.0_25]
at java.lang.Class.newInstance(Class.java:308) [:1.6.0_25]
at
javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.ja
va:604) [jsf-api-1.2_13.jar:1.2_13-b01-FCS]
... 16 more
Lo q u e sig n if ica:
La co m. sun. faces. co nfi g . C o nfi g urati o nExcepti o n y la
java. l ang . Instanti ati o nExcepti o n indican un problema de dependencias. En este
caso, la causa no es tan obvia.
Para reso lverlo :
Necesita encontrar el mdulo que contiene las clases co m. sun. faces. Aunque no hay un
mdulo co m. sun. faces, hay dos mdulos co m. sun. jsf-i mpl . Una revisin rpida de
la jsf-i mpl -1. 2_13. jar en el directorio 1.2 muestra que contiene las clases
co m. sun. faces. Tal como lo hizo con javax. faces. FacesExcepti o n
C l assNo tFo und Excepti o n, debe utilizar la versin JSF 1.2 y no la versin JSF 2.0 en
main, as que necesita especificar una y excluir la otra. Necesita modificar el jbo ssd epl o yment-structure. xml para agregar la dependencia del mdulo a la seccin de
implementacin del archivo. Tambin tiene que agregarla a la subimplementacin WAR y
excluir el mdulo JSF 2.0. El archivo se debe ver as:
< jboss-deployment-structure xmlns="urn:jboss:deploymentstructure:1.0">
<deployment>
<dependencies>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
</exclusions>
<dependencies>
</dependencies>
</sub-deployment>
< /jboss-deployment-structure>
Vuelva a implementar la aplicacin borrando el archivo
126
<dependencies>
<module name="org.apache.commons.collections"
export="true"/>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
127
</exclusions>
<dependencies>
</dependencies>
</sub-deployment>
< /jboss-deployment-structure>
128
EAP 6 se enva junto con una base de datos de ejemplo que ya est definida en el archivo
stand al o ne. xml , modifique el archivo persi stence. xml para utilizar esa base de datos
de ejemplo en esta aplicacin. Al ver en el archivo stand al o ne. xml puede ver que el
jnd i -name para la base de datos de ejemplo es
java: jbo ss/d ataso urces/Exampl eD S. Modifique el archivo jbo ss-seambo o ki ng . jar/MET A-INF/persi stence. xml para comentar el elemento existente jtad ata-so urce y reemplazarlo as:
< !-- <jta-data-source>java:/bookingDatasource</jta-data-source> -->
< jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
Vuelva a implementar la aplicacin borrando el archivo
EAP6_HOME/stand al o ne/d epl o yments/jbo ss-seam-bo o ki ng . ear. fai l ed y
creando un archivo en blanco jbo ss-seam-bo o ki ng . ear. d o d epl o y en el mismo
directorio.
8. En este momento la aplicacin se implementa sin errores, pero cuando accede la URL
http://localhost:8080/seam-booking/ en un navegador e intenta " Account Login" , obtiene un
error en tiempo de ejecucin The page isn't redirecting properly . En el siguiente paso,
aprender a depurar y resolver errores en tiempo de ejecucin.
Para aprender cmo depurar y resolver problemas de tiempo de ejecucin haga clic aqu:
Seccin 4.3.7, D epuracin y resolucin de errores y excepciones en tiempo de ejecucin del
archivador de reservas Seam 2.2
Para regresar al tema anterior haga clic aqu: Seccin 4.3.4, Migracin del archivador de
reservas de Seam 2.2 a JBoss EAP 6: instrucciones paso por paso
Reportar un error
Importante
Las aplicaciones que usan Hibernate directamente con Seam 2.2 pueden usar una versin de
Hibernate 3 empacada dentro de la aplicacin. Hibernate 4, el cual se proporciona a travs
del mdulo org.hibernate de JBoss EAP 6 no es soportado por parte de Seam 2.2. Este
ejemplo tiene el propsito de ayudarle a empezar a ejecutar su JBoss EAP 6 como primer
paso. Tenga en cuenta que el empacar Hibernate 3 con una aplicacin Seam 2.2 no es una
configuracin soportada.
Pro ced imien t o 4 .11. D ep u raci n y reso lu ci n d e excep cio n es y erro res en t iemp o d e
ejecu ci n
En este momento cuando implementa la aplicacin no ve errores en el registro. Sin embargo,
cuando accede la URL de la aplicacin, aparecen errores en el registro.
1. Emita - javax.naming.NameNotFoundException: Name 'jboss-seam-booking' not found in
context ''
129
130
TimerServiceD ispatcher. Necesita modificar el archivo l i b/co mpo nents. xml del WAR
para usar los nuevos enlaces JND I. En el registro, note que todos los enlaces EJB JND I
empienzan por " java:app/jboss-seam-booking.jar" Reemplace el elemento co re: i ni t as:
"http://jboss.com/products/seam/core
http://jboss.com/products/seam/core-2.2.xsd
http://jboss.com/products/seam/transaction
http://jboss.com/products/seam/transaction-2.2.xsd
http://jboss.com/products/seam/security
http://jboss.com/products/seam/security-2.2.xsd
http://jboss.com/products/seam/components
http://jboss.com/products/seam/components-2.2.xsd">
<core:init jndi-pattern="java:app/jboss-seam-booking.jar/#
{ejbName}" debug="true" distributable="false"/>
<core:manager conversation-timeout="120000"
concurrent-request-timeout="500"
conversation-id-parameter="cid"/>
<transaction:ejb-transaction/>
<security:identity authenticate-method="#
{authenticator.authenticate}"/>
<component
class="org.jboss.seam.transaction.EjbSynchronizations"
jndi-name="java:app/jboss-seam/EjbSynchronizations"/>
<component class="org.jboss.seam.async.TimerServiceDispatcher"
jndi-name="java:app/jbossseam/TimerServiceDispatcher"/>
< /components>
131
132
java.lang.NoClassDefFoundError:
org/hibernate/annotations/common/reflection/ReflectionManager
Lo q u e sig n if ica:
La NoClassD efFoundError indica que falta una biblioteca Hibernate.
Para reso lverlo :
Copie las JARs hi bernate-anno tati o ns. jar y hi bernate-co mmo nsanno tati o ns. jar del directorio EAP 5_HO ME/seam/l i b/ al directorio jbo ss-seambo o ki ng . ear/l i b.
Vuelva a implementar la aplicacin borrando el archivo
stand al o ne/d epl o yments/jbo ss-seam-bo o ki ng . ear. fai l ed y creando un
archivo en blanco jbo ss-seam-bo o ki ng . ear. d o d epl o y en el mismo directorio.
4. Se deben resolver los errores de tiempo de ejecucin y de las aplicaciones
En este punto, la aplicacin se implementa y ejecuta sin errores.
Para regresar al tema anterior haga clic aqu: Seccin 4.3.4, Migracin del archivador de
reservas de Seam 2.2 a JBoss EAP 6: instrucciones paso por paso
Reportar un error
Importante
Las aplicaciones que usan Hibernate directamente con Seam 2.2 pueden usar una versin de
Hibernate 3 empacada dentro de la aplicacin. Hibernate 4, el cual se proporciona a travs
del mdulo org.hibernate de JBoss EAP 6 no es soportado por parte de Seam 2.2. Este
ejemplo tiene el propsito de ayudarle a empezar a ejecutar su JBoss EAP 6 como primer
paso. Tenga en cuenta que el empacar Hibernate 3 con una aplicacin Seam 2.2 no es una
configuracin soportada.
1. Cre un archivo jbo ss-d epl o yment-structure. xml en el directorio MET A-INF/ del
EAR. Agreg <d epend enci es> y <excl usi o ns> para resolver
C l assNo tFo und Excepti o ns. Este archivo contiene los siguientes datos:
<dependencies>
133
<module name="org.apache.commons.collections"
export="true"/>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
</exclusions>
<dependencies>
</dependencies>
</sub-deployment>
< /jboss-deployment-structure>
134
< component
class="org.jboss.seam.transaction.EjbSynchronizations" jndiname="java:app/jboss-seam/EjbSynchronizations"/>
<component
class="org.jboss.seam.async.TimerServiceDispatcher" jndiname="java:app/jboss-seam/TimerServiceDispatcher"/>
Reportar un error
135
Historial de revisiones
R evisi n 6 .3.0- 24
Wed n esd ay Ju ly 30 2014
Red Hat JBoss Enterprise Application Platform 6.3.0.GA
136
San d e G ild a