Cargadores de Clases multiples en Jboss

12 views
Skip to first unread message

Esteban Hernández

unread,
Oct 19, 2005, 5:18:59 PM10/19/05
to BogJBug
Surge un problema cuando se desea desplegar aplicaciones en diferentes
nodos; Cada aplicación tiene su propio ambiente para cargar su
classsloader, pero en el momento de desarrollar una aplicación, es
dificil simular esto,

¿ Cual serí ala mejor la forma de hacer esto ???

'Raul Redondo

unread,
Oct 19, 2005, 7:51:29 PM10/19/05
to BogJBug
Esteban Hernández ha escrito:

Una buena opción es hacer el ambiente de desarrollo lo más parecido a
como funciona en los clusters. Por omisión, JBoss tiene ciertos
comportamientos para acelerar el rendimiento en modo no-cluster. Sin
embargo a la hora de hacer el cluster vienen los dolores de cabeza y se
pagan las penalizaciones. Dos de esas situaciones son:

1. Parámetros por referencia en los EJB.
2. "flat class loading" (todos comparten todo).

Para hacer las cosas más fáciles a futuro, los parámetros en los EJB
deberían pasarse por valor y los componentes usar "isolated class
loaders" (cargadores de clases independientes para cada componente:
War, EJB-JAR ...).

Aquí pongo un enlace que explica como cambiar esas configuraciones (es
simple).
http://wiki.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration

El tema de la carga de clases en JBoss merece un buen estudio para
evitar decir "que extraño ese error" por la falta de conocimiento.
Enlace también:
http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossClassLoadingUseCases

Finalmente, a mi parecer, la forma más conveniente de referenciar las
thirdparty libraries para tener puntos a favor en estos casos, es usar
las librerías en el EAR y referenciarlas en el Clash-Path del META-INF
en cada componente WAR, EJB-JAR que esté dentro del EAR. Con estas
prácticas creo que se tendría un buen acercamiento al deploy final ;)

Rulas.

Jaime Rodríguez

unread,
Oct 20, 2005, 12:28:03 PM10/20/05
to BogJBug
Además de la configuración de carga de clases a las que se refiere
Rulas es también fácil desplegar la aplicación simulando un cluster
en una sola máquina, esto permite probar la aplicación en un ambiente
ditribuido sin salir del entorno de programación, los siguientes son
los pasos para hacerlo:

La solución se basa en redirigir los puertos de cada instancia de
JBoss, esto se hace utilizando el descriptor
{JBOSS_HOME}/docs/examples/binding-manager/sample-bindings.xml.

1. Copie la carpeta all 2 veces con nombres diferentes, pe. all1, all2
2. En el conf/jboss-services.xml de cada copia (all1 y all2) descomente
la sección "Service Binding", y cambie el atributo service-name,
ports-01 en all1 y ports-02 en all2.
3. Elimine el archivo remoting-service.xml de las carpetas
{all,all1,all2}/deploy, que no es compatible con la configuración del
Service Binding.

Bueno en el jboss.xml los EJB deben ser clustered. Inicie cada
instancia como:

sh run.sh -c all
sh run.sh -c all1
sh run.sh -c all2

Y listo un cluster de 3 nodos...

Reply all
Reply to author
Forward
0 new messages