Servidor jboss y librerias spring

Tengo un problema con una aplicación tipo war que quiero hacer correr en jboss. Obtengo el siguiente error:
ERROR [HelloWorld] Error configurando escuchador de aplicacion de clase org. Springframework. Web. Context. ContextLoaderListener
java. Lang. ClassNotFoundException: or. Springframework. Web. Context. ContextLoaderListener
parece que no coge o encuentra la clase ContextLoaderListener, que se encuentra en una librería de spring spring-web.jar que tengo en mi directorio WEF-INF/lib y que no sé porqué no me encuentra. También he probado a poner en mi fichero pom.xml lo siguiente:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>2.5.5</version>
</dependency>
Pero no funciona, porque sigue dando el mismo error. ¿Sabe alguien como arreglarlo? Muchas gracias, un saludo
PD. La aplicación es el ejemplo HelloWorld de AnayaMultimedia, que no me funciona tal cual y he tenido que solucionar algunos errores, entre ellos este. Por si ya le ha pasado a alguien.

1 Respuesta

Respuesta
1
Por la error que mandas el problema es que no encuentra el jar necesario en tu classpath, si ya lo tienes en WEB-INF/lib y no lo toma, entonces ponlo en el lib global de jboss (en la raíz de la instalación).
Si aun así no lo toma entonces es posible que tu jar este mal, intenta descargarlo de nuevo.
Hola, éstos son los pasos que he seguido:
1. Borrar los archivos temporales que se habían creado en el servidor jboss (había leído por internet que era algo que podía dar lugar a error)
2. Guardar todas las librerías que tengo en la aplicación .war en la carpeta lib del servidor jboss, incluida la que creo que me está dando error (spring.jar).
3. Arrancar el servidor.
Resultado: el mismo, da exactamente el mismo error. Y ya he descargado dos o tres veces la librería spring.jar. El caso es que el error es (por lo que yo entiendo, si no por favor corrígeme) que jboss no encuentra la clase ContextLoaderListener. Esa clase se encuentra en una librería que está en el servidor, por lo que debería encontrarla. ¿Puede ser que el error esté:
     A. En que la clase ContextLoaderListener.class no esté bien hecha, tenga algún error, o la clase o archivo que remita a la clase anterior no apunte bien a ésta clase.?
     B. Que el error esté en el propio jboss, porque al arrancarlo en la ventana de comandos MS2, la primera cosa rara que pone es:
08:50:16,450 WARN  [AnnotationCreator] No ClassLoader provided, using TCCL: org.jboss.managed.api.annotation.ManagementComponent
y puede ser que por éste error no encuentre dicha clase?
¿Cómo podría solucionar cualquiera de las dos cosas? No tengo experiencia con errores en servidores, de modo que no tengo claro qué tengo que hacer. Te agradecería que me echases un cable con este tema, porque llevo bastante tiempo estancada con lo mismo y no consigo avanzar. Por si te sirve de algo, estaba intentando arrancar una aplicación ejemplo de Anaya Multimedia, bajada de internet, que se llama HelloWorld.war, sobre struts2.
Muchas gracias por todo, un saludo
Elena
¿El error que te da al iniciar es este verdad? (java. Lang. ClassNotFoundException: or. Springframework. Web. Context. ContextLoaderListener), esto significa que no encuentra la clase ContextLoaderListener. Ahora Spring es una serie de librerías o componentes, por lo que puedo ver la clase esta contenida dentro del paquete springframework. Web. Spring tiene un modulo para el core, otro para web y varios más, es posible que la clase que estas bajando (spring.jar) sea solo el core de spring y no traiga los componentes web. Pudieras abrir el jar (es realmente un zip con la extensión modificiada) y navegar para ver si encuentras esa clase siguiendo todo el paquete (org. Springframework. Web. Context. ContextLoaderListener). Si no lo encuentras entonces es cierto lo que te comento, solo tienes el core de spring y te haría falta el componente web (antes se llamaba spring-web.jar no se si le hayan cambiado el nombre o siga igual).
Si sigues teniendo problemas te paso mi correo y me puedes enviar el jar y verificamos que esta pasando.
Hola, en la librería spring.jar sí que se encuentra la clase, y aun así de todos modos y buscando por internet había quién decía que efectivamente para utilizar esa clase había que bajar otra librería, spring-web.jar, y tanto esa como el módulo spring-webmvc.jar también las coloqué en WEB-INF/lib, y en lib de jboss, pero sigo con el mismo error, el de java.lang.ClassNotFoundException. Si quieres te paso todos los jar que tengo y que necesites. Te agradezco mucho tu ayuda,
Un saludo
Probemos algo para ver si no es tu instalación de JBoss la que esta fallando, ¿puedes bajar tocmat y desplegar tu aplicación en tomcat?, si esta funciona entonces algo esta mal en tu instalación de JBoss si por el contrario sigue fallando, si seria bueno si me pudieras mandar el proyecto. Una cosa rápida en el web.xml de tu proyecto debe haber una declaración para el contextlistener, ¿si esta ahí?
Hola experto, te comento:
* Por un lado, he visto en otro foro que igual el error estaba en el jboss 5.0.0, que descargase el 5.1.0, lo he hecho pero no ha dado resultado. Sigo con el mismo error en jboss 5.1.0 que en jboss 5.0.0.
* Por otro lado, como me dijiste, he probado a bajarme el Tomcat 6.0, si coloco en el navegador la dirección http://localhost:8080 veo la página de apache, pero si ya pongo http://localhost:8080/HelloWorld me dice que no encuentra la página. Aunque hay una cosa que me choca, y es que pone:
"org.apache.catalina.core.AprLifecycleListener init
INFO: La biblioteca nativa de Apache Tomcat basada en ARP que permite un rendimiento óptimo en entornos de desarrollo no ha sido hallada en java.libry. path: C\... "
¿Puede ser que me falte una librería para jboss y tomcat, o algo parecido?
Por cierto, aquí está mi web.xml, sí tiene la declaración para el contextListener:
<xml version="1.0" encoding="UTF-8"?>
<!-- The web.xml, also known as the deployment descriptor, defines a Java Servlet web application.
This document is a mandatory element of any web application and must reside within WEB-INF. The
deployment descriptor defines all the servlets and servlet filters that belong to this web
application. -->
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<display-name>S2 HelloWorld (XML Based)</display-name>
<!-- Declaration of the Struts 2 filter. Since our entire web application will be a Struts 2
application, we will not have any other servlets or filters. Of course, real Struts 2
applications may also have other servlets or filters, but since we are doing only Struts 2
stuff in this example, we need only define the Struts 2 filter. -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- The Struts 2 filter should be mapped to ALL requests coming into the web application. As a filter,
it can let the non-struts requests pass through and they will arrive at which ever servlets to which
they may be mapped. Of course, this sample app has no other servlets, so we expect the filter to catch
everything. When the filter recognizes a Struts 2 request, typically by the .action extension, the
normal filter chaining of a web application is aborted and the request is completely handled by
the Struts 2 system. -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
¿Cómo puedo enviarte la aplicación? Gracias por todo, un saludo
El error ese que te manda tomcat sobre una librería no encontrada para optimizar el rendimiento es normal, no te preocupes por esa, sin esa tomcat funciona igual solo sirve para mejorar el rendimiento.
Por lo que veo en tu web.xml, el proyecto se basa en struts2 y en Spring, si veo la declaración del contextlistener, ya con esto de que entra struts2 en juego el problema podría estar en el código de struts que intenta acceder al contextlistener de spring.
En la raíz de la instalación de tomcat tienes una carpeta de logs, revisa el catalina.log o server.log ahí te debería de marcar un error a la hora de iniciar tu aplicación.
Si gustas mandame tu proyecto por favor a esta dirección: [email protected]
Hola, el caso es que el tomcat me dice esto:
INFO: validateJarFile(C:\Archivos de programa\Apache Software Foundation\Tomcat 6.0\webapps\HelloWorld.war\WEB-INF\lib\javaee.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
10-jun-2009 8:49:24 org. Apache. Catalina. Core.StandardContext start
GRAVE: Error listenerStart
10-jun-2009 8:49:24 org. Apache. Catalina. Core.StandardContext start
GRAVE: Falló en arranque del Contexto [/HelloWorld.war] debido a errores previos
¿Quiere decir que no encuentra la librería javaee.jar que tengo en el WEB-INF/lib de mi aplicación? He estado mirando todos los ficheros catalina* que tiene el tomcat, y en uno pone ésto:
// You can assign additional permissions to particular web applications by
// adding additional "grant" entries here, based on the code base for that
// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files.
¿Tengo qué asignar algún permiso especial para que pueda coger las librerías de mi WEB-INF/lib?
De todos modos, te paso mi aplicación al correo que indicas, a ver si es que tengo algo mal en ella, o me falta algo.
Gracias de nuevo y un saludo
Esta raro el error sobre todo por la clase que lo genera. Dejame checar el proyecto que me mandaste.
Hola, al final puedo seguir adelante con la aplicación, y he aprendido mucho sobre servidores y spring. Muchas gracias por todo, sin tu ayuda no habría sabido seguir. Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas