Foros del Web » Programación para mayores de 30 ;) » Java »

Aplicación que no despliega con Spring Security

Estas en el tema de Aplicación que no despliega con Spring Security en el foro de Java en Foros del Web. Pues eso que añadir el archivo de configuración de Spring Security no me despliega la aplicación. Los archivos están en el directorio correcto. Pero al ...
  #1 (permalink)  
Antiguo 14/11/2013, 15:06
 
Fecha de Ingreso: febrero-2006
Mensajes: 43
Antigüedad: 18 años, 2 meses
Puntos: 1
Aplicación que no despliega con Spring Security

Pues eso que añadir el archivo de configuración de Spring Security no me despliega la aplicación. Los archivos están en el directorio correcto. Pero al agregar la ruta spring-security.xml en el context-param y los filtros de spring security en el web.xml. Por que no me despliea???

Me da el siguiente error:

Código HTML:
GRAVE: Error configurando escuchador de aplicación de clase org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/springframework/context/ConfigurableApplicationContext
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
	at java.lang.Class.getConstructor0(Class.java:2699)
	at java.lang.Class.newInstance0(Class.java:326)
	at java.lang.Class.newInstance(Class.java:308)
	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ConfigurableApplicationContext
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
	... 14 more
14-nov-2013 21:40:45 org.apache.catalina.core.StandardContext listenerStart
GRAVE: Se ha saltado la instalación de escuchadores de aplicación debido a error(es) previo(s)
14-nov-2013 21:40:45 org.apache.catalina.core.StandardContext startInternal
GRAVE: Error listenerStart
14-nov-2013 21:40:45 org.apache.catalina.core.StandardContext startInternal
GRAVE: Falló en arranque del Contexto [/bets] debido a errores previos
14-nov-2013 21:40:45 org.apache.coyote.AbstractProtocolHandler start

Mis archivos de configuración son los siguientes:

pom.xml
Código PHP:
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  
      <
modelVersion>4.0.0</modelVersion>
      <
groupId>com.omb</groupId>
      <
artifactId>bets</artifactId>
      <
packaging>war</packaging>
      <
version>0.0.1-SNAPSHOT</version>
      <
name>bets Maven Webapp</name>
     <
url>http://maven.apache.org</url>

    
<properties>
        <
spring.version>3.2.2.RELEASE</spring.version>
        <
project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </
properties>
  
      <
dependencies>
        <
dependency>
            <
groupId>javax.servlet</groupId>
            <
artifactId>servlet-api</artifactId>
            <
version>2.2</version>
            <
scope>provided</scope>
            <
optional>true</optional>
        </
dependency>      
      
        <
dependency>
              <
groupId>junit</groupId>
              <
artifactId>junit</artifactId>
              <
version>3.8.1</version>
              <
scope>test</scope>
        </
dependency>
        
        <
dependency>
          <
groupId>org.hibernate</groupId>
          <
artifactId>ejb3-persistence</artifactId>
          <
version>1.0.1.GA</version>
        </
dependency>            
        
        <!-- 
Spring 3 dependencies -->
        <
dependency>
            <
groupId>org.springframework</groupId>
            <
artifactId>spring-core</artifactId>
            <
version>${spring.version}</version>
        </
dependency>

        <
dependency>
            <
groupId>org.springframework</groupId>
            <
artifactId>spring-web</artifactId>
            <
version>${spring.version}</version>
        </
dependency>

        <
dependency>
            <
groupId>org.springframework</groupId>
            <
artifactId>spring-webmvc</artifactId>
            <
version>${spring.version}</version>
        </
dependency>    
            
        <
dependency>
            <
groupId>jstl</groupId>
              <
artifactId>jstl</artifactId>
              <
version>1.2</version>
              <
scope>compile</scope>
        </
dependency>
        
        <
dependency>
              <
groupId>taglibs</groupId>
              <
artifactId>standard</artifactId>
              <
version>1.1.2</version>
              <
scope>compile</scope>
        </
dependency>            

        <
dependency>
            <
groupId>mysql</groupId>
            <
artifactId>mysql-connector-java</artifactId>
            <
version>5.1.6</version>
        </
dependency>
        
        <!-- 
Hibernate Validator -->
        <
dependency>
            <
groupId>org.hibernate</groupId>
            <
artifactId>hibernate-validator</artifactId>
            <
version>4.2.0.Final</version>
        </
dependency>    
        
        <
dependency>
            <
groupId>javax.validation</groupId>
            <
artifactId>validation-api</artifactId>
            <
version>1.1.0.Final</version>
        </
dependency>
        
        <
dependency>
            <
groupId>org.slf4j</groupId>
            <
artifactId>slf4j-log4j12</artifactId>
            <
version>1.7.5</version>
        </
dependency>                
        
        <
dependency>
           <
groupId>javassist</groupId>
           <
artifactId>javassist</artifactId>
           <
version>3.4.GA</version>
           <
scope>compile</scope>
        </
dependency>
        
        <
dependency>
           <
groupId>org.hibernate</groupId>
           <
artifactId>hibernate-annotations</artifactId>
           <
version>3.4.0.GA</version>
           <
scope>compile</scope>
        </
dependency>                
        
        <!-- 
Jackson JSON Mapper -->
        <
dependency>
            <
groupId>org.codehaus.jackson</groupId>
            <
artifactId>jackson-mapper-asl</artifactId>
            <
version>1.9.13</version>
        </
dependency>                
                    
        <!-- 
reCaptcha -->
        <
dependency>
            <
groupId>net.tanesha.recaptcha4j</groupId>
            <
artifactId>recaptcha4j</artifactId>
            <
version>0.0.7</version>
        </
dependency>    
        
        <!-- 
SHA hash -->
        <
dependency>
            <
groupId>commons-codec</groupId>
            <
artifactId>commons-codec</artifactId>
            <
version>1.8</version>
        </
dependency>
 
        <!-- 
Spring Security -->
        <
dependency>
            <
groupId>org.springframework.security</groupId>
            <
artifactId>spring-security-core</artifactId>
            <
version>3.1.4.RELEASE</version>
        </
dependency>        
        <
dependency>
            <
groupId>org.springframework.security</groupId>
            <
artifactId>spring-security-web</artifactId>
            <
version>3.1.4.RELEASE</version>
        </
dependency>
        <
dependency>
            <
groupId>org.springframework.security</groupId>
            <
artifactId>spring-security-config</artifactId>
            <
version>3.1.4.RELEASE</version>
        </
dependency>        
                    
      </
dependencies>
  
      <
build>
        <
finalName>bets</finalName>
      </
build>
      
</
project
web.xml
Código PHP:
<web-app id="WebApp_ID" 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"
>

    <
display-name>Spring Web MVC Application</display-name>

    <
servlet>
        <
servlet-name>bets-dispatcher</servlet-name>
        <
servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <
load-on-startup>1</load-on-startup>
    </
servlet>

    <
servlet-mapping>
        <
servlet-name>bets-dispatcher</servlet-name>
        <
url-pattern>/</url-pattern>
    </
servlet-mapping>

    <
listener>
        <
listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </
listener>
    
    <
listener>                                                                                      
        <
listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </
listener>    

    <
context-param>
        <
param-name>contextConfigLocation</param-name>
        <
param-value>
            /
WEB-INF/bets-dispatcher-servlet.xml, /WEB-INF/spring-security.xml
        
</param-value>
    </
context-param>
    
    <!-- 
Spring Security -->
    <
filter>
        <
filter-name>springSecurityFilterChain</filter-name>
        <
filter-class>
                  
org.springframework.web.filter.DelegatingFilterProxy
                
</filter-class>
    </
filter>
 
    <
filter-mapping>
        <
filter-name>springSecurityFilterChain</filter-name>
        <
url-pattern>/*</url-pattern>
    </filter-mapping>    
    
    <error-page>
           <error-code>404</error-code>
           <location>/error/404</location>
    </error-page>    
    
    <error-page>
        <error-code>403</error-code> 
        <location>/error/403</location> 
    </error-page>      
        
</web-app> 
  #2 (permalink)  
Antiguo 14/11/2013, 15:07
 
Fecha de Ingreso: febrero-2006
Mensajes: 43
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Aplicación que no despliega con Spring Security

bets-dispatcher-servlet.xml
Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/mvc 
          http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/beans     
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.1.xsd">
        
    <context:component-scan base-package="com.omb.bets.web.pages" />

    <!-- support JSR303 annotation if JSR 303 validation present on classpath -->
    <mvc:annotation-driven />
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/pages/</value>
        </property>
        
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
    
    <bean id="properties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list><value>/WEB-INF/config.properties</value></list>
        </property>
    </bean>
    
    <bean id="messagestatusdao" class="com.omb.bets.model.message.MessageStatusDao" />
    <bean id="messagedao" class="com.omb.bets.model.message.MessageDao" />
    
    <bean id="userstatusdao" class="com.omb.bets.model.user.UserStatusDao" />
    <bean id="usertypedao" class="com.omb.bets.model.user.UserTypeDao" />    
    <bean id="userdao" class="com.omb.bets.model.user.UserDao" />    
    
    <bean id="country" class="com.omb.bets.model.country.Country" />
    <bean id="countrydao" class="com.omb.bets.model.country.CountryDao" />        
    
    <bean id="province" class="com.omb.bets.model.province.Province" />
    <bean id="provincedao" class="com.omb.bets.model.province.ProvinceDao" />

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources/ directory -->
    <mvc:resources mapping="/assets/**" location="/assets/" />
</beans>
spring-security.xml
Código PHP:
<beans:beans xmlns="http://www.springframework.org/schema/security"
    
xmlns:beans="http://www.springframework.org/schema/beans" 
    
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security-3.0.3.xsd"
>
 
    <
http auto-config="true">
        <
intercept-url pattern="/welcome*" access="ROLE_USER" />
        <
form-login login-page="/login" default-target-url="/welcome"
            
authentication-failure-url="/loginfailed" />
        <
logout logout-success-url="/logout" />
    </
http>
 
    <
authentication-manager>
        <
authentication-provider>
            <
user-service>
                <
user name="mkyong" password="123456" authorities="ROLE_USER" />
            </
user-service>
        </
authentication-provider>
    </
authentication-manager>
 
</
beans:beans
  #3 (permalink)  
Antiguo 15/11/2013, 04:13
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Aplicación que no despliega con Spring Security

No te faltará el Spring.jar en el classpath de tu aplicación?
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #4 (permalink)  
Antiguo 15/11/2013, 10:00
 
Fecha de Ingreso: febrero-2006
Mensajes: 43
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Aplicación que no despliega con Spring Security

Hola, antes de nada muchas gracias por responder.
Con el Spring.jar en el classpath supongo que te refieres a si lo tengo importado. Te paso las capturas de todos los jar que me pone eclipse que estoy usando:

Dependencias de maven:
http://imageshack.us/a/img401/8715/lbkp.png
http://imageshack.us/photo/my-images/809/tbib.png/

Libraries:
http://imageshack.us/a/img854/1645/mw77.png

Mirando por foros en internet he leído que podía ser conflictos entre librerías y no se porque tengo algunas librerías repetidas de varias versiones, como se aprecia en las fotos.

spring-context por ejemplo está en libraries en la versión 3.0.5 y dentro de las dependencias de maven la versión 3.2.2. He intentado hacer un maven clean pero al volver a desplegarlo me las añade otra vez. En le pom.xml ten la versión de maven 3.2.2.

La aplicación sin el spring-security me despliega bien y funciona todo, pero al añadir al web.xml el archivo de configuración de security.xml y los filtros no me despliega y me da ese error.

Un saludo y muchas gracias.
  #5 (permalink)  
Antiguo 17/11/2013, 11:35
 
Fecha de Ingreso: febrero-2006
Mensajes: 43
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Aplicación que no despliega con Spring Security

Bueno después de perder unos cuantos días he encontrado el problema y la solución aunque no me gusta. Describo los pasos que he seguido.

He tenido que restaurar un commit más antiguo para eliminar toda la configuración de security y nada seguía sin desplegar. Pues he hecho un maven clean de todas las dependencias y eliminado la configuración del servidor apache en eclipse y volví a configurarlo.

Seguí este tutorial para empezar con algo sencillo:
http://www.mkyong.com/spring-security/spring-security-hello-world-example/

Y seguía con problemas, concretamente tenía este error:
Código PHP:
GRAVEExcepción enviando evento de contexto destruído a instancia de escuchador de clase org.springframework.web.context.ContextLoaderListener
java
.lang.IllegalStateExceptionBeanFactory not initialized or already closed call 'refresh' before accessing beans via the ApplicationContext
    at org
.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172)
    
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1078)
    
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1052)
    
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1000)
    
at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:554)
    
at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142)
    
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4763)
    
at org.apache.catalina.core.StandardContext$4.run(StandardContext.java:5472)
    
at java.lang.Thread.run(Thread.java:662)
    
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5481)
    
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)
    
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
    
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
    
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)
    
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
    
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
    
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
    
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)
    
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    
at org.apache.catalina.startup.Catalina.start(Catalina.java:620)
    
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    
at java.lang.reflect.Method.invoke(Method.java:597)
    
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)
    
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)
17-nov-2013 18:03:46 org.apache.coyote.AbstractProtocolHandler start
INFO
Starting ProtocolHandler ["http-bio-8080"]
17-nov-2013 18:03:46 org.apache.coyote.AbstractProtocolHandler start
INFO
Starting ProtocolHandler ["ajp-bio-8009"]
17-nov-2013 18:03:46 org.apache.catalina.startup.Catalina start
INFO
Server startup in 5026 ms 
El problema son las versiones de spring y spring security. Estaba utilizando la versión 3.2.2 de spring y la 3.1.4 de security y nada. Pasé a usar la 3.1.4 en ambas dependencias y nada. Como en el tutorial tuve que usar la 3.0.5. Esto me da algo de rabia porque soy muy de usar siempre versiones actualizadas. ¿Alguien sabe el origen del problema?

Un saludo y gracias.

Etiquetas: clase, hibernate, security, spring
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:14.