Solucionando la excepción java.lang.OutOfMemoryError

Si al desplegar tu aplicación en Tomcat/JBoss te sale ésta famosa excepción:

java.lang.OutOfMemoryError: PermGen space

Ésta web y ésta otra lo explican bastante bien, pero resumiendo, el problema viene de que el ClassLoader del anterior de ploy de la aplicación no ha sido descargado y recolectado como basura, por lo que se lanza ésa excepción.

Las posibles causas son:

  • Cualquier referencia desde fuera de la aplicación a un objeto de la aplicación en la cual haya sido cargada la clase por el cargador de clases de la aplicación, causará una fuga de memoria en el cargador de clases. Habrá que vigilar las referencias.
  • A veces se produce cuando la aplicación se reinstala en el servidor sin reiniciar el servidor. La forma de reinstalar las aplicaciones es eliminando el classloader que cargó la aplicación por primera vez y creando un nuevo classloader para la nueva instancia de la aplicación.

Espero que ésto os ayude como me ha ayudado a mi icon smile Solucionando la excepción java.lang.OutOfMemoryError

¡Happy coding!

Etiquetas: , , ,

JEE con JBoss y Netbeans: Conceptos básicos

 JEE con JBoss y Netbeans: Conceptos básicos
Vamos a aprender los conceptos básicos de una aplicación JEE, y a aprender más sobre Beans, Servlets y JSPs, y el resto de las tecnologías básicas de las aplicaciones Java Enterprise.

¿Qué es contenedor de aplicaciones? Descripción de JBoss

La Wikidepdia habla mejor que yo:

JBoss AS es el primer servidor de aplicaciones de código abierto, preparado para la producción y certificado J2EE 1.4, disponible en el mercado, ofreciendo una plataforma de alto rendimiento para aplicaciones de e-business. Combinando una arquitectura orientada a servicios revolucionaria con una licencia de código abierto, JBoss AS puede ser descargado, utilizado, incrustado y distribuido sin restricciones por la licencia. Por este motivo es la plataforma más popular de middleware para desarrolladores, vendedores independientes de software y, también, para grandes empresas.

Al ser Java, es un servidor de aplicaciones multiplataforma, y viene cargadito de múltiples caracteristicas más que jugosas, como:

  • Cumple todo tipo de estándares

  • Es incrustable, sin restricciones por su licencia abierta

  • El sun middleware apto para cualquier objeto Java

  • Implementa de forma nativa EJB 3, Hibernate, etc…

  • Dispone de un servidor Tomcat integrado

  • Y mucho, mucho, mucho más icon smile JEE con JBoss y Netbeans: Conceptos básicos

Lée la página de JBoss en la Wikipedia para conocer todos los detalles en profundidad.

¿Qué es una Bean? Tipos de Beans

Una Bean es un objeto Java que corre dentro del contenedor de aplicaciones y cumple una función específica en nuestra aplicación JEE. Hay tres tipos básicos de Beans (EJBs), cada uno de ellos con propósitos muy diferentes:

  • Session Bean: Realiza una tarea para un cliente, una acción concreta de la lógica de negocio. Representa el grueso de proceso de la aplicación, e implementa la funcionalidad de la misma.

  • Entity Bean: Representa una entidad de negocio que presiste en un almacenamiento externo (como una BD). Serán utilizadas por ORMs como Hibernate para implementar la persistencia de datos de la aplicación.

  • Message-Driven Bean: Actúa como un Listener para la Java Message Service API, procesando mensajes de forma asíncrona.

Cada EJB define dos interfaces, un interfaz Home y un interfaz Remote, que engloban las funcionalidades de la bean según quien vaya a consumirlas. Nosotros, en éste manual, pasaremos de las interfaces Home y usaremos tan sólo el interfaz Remote.

Más adelante, en los ejemplos concretos, explicaremos cómo implementarlos y cómo utilizarlos a través de la RMI (instanciación remota, usando los mecanismos que nos brinda el servidor de aplicaciones Java, es decir, JBoss).

¿Qué es un servlet? ¿Y un JSP? Diferencia entre ambos

Los servlets y los JSPs son en realidad la misma cosa, pero con diferente envoltura.

Un servlet es un objeto que se ejecuta en el contexto del servidor web (como el Tomcapt que JBoss tiene integrado). Se pueden mapear las peticiones de los usuarios a dichos servlets, para poder servir contenidos web dinámicos. Es un estandar muy bien definido y permite extender la funcionalidad del servidor web de forma cómoda y eficiente. Es un objeto java puro y duro.

Por otro lado, un JSP es una forma simplificada de generar servlets, pues cada JSP se convertirá a servlet de forma automática antes de atender peticiones. Un JSP combina código Java con HTML de forma que el desarrollo de páginas dinámicas se acerca mucho más a la forma de programar de otros lenguajes como el popular PHP.

Ambas son buenas tecnologías, pero en éste tutorial usaremos tan sólo Servlets.

Conclusiones

JBoss y las tecnologías Java nos dan una base maravillosa para desarrollar aplicaciones web escalables, sólidas y profesionales. En lecciones sucesivas iremos desgranando todo el potencial de ésta plataforma.

Y recordad, Code is Poetry icon smile JEE con JBoss y Netbeans: Conceptos básicos

Etiquetas: , , , ,

Disclaimer: Las imágenes mostradas en ésta página web se utilizan sólamente con propósitos ilustrativos, y son propiedad de sus respectivos autores (cuando es aplicable).
Hijo de Blog es un producto del Dr. SeROne

Los contenidos se ofrecen bajo una licencia de Creative Commons
Attribution-NonCommercial-NoDerivs 3.0 Unported

salvo que se indique lo contrario

Licencia de Creative Commons