Ошибка IllegalStateException в Spring Security

 
 
 
Сообщения:110
Ошибка следущего содержания:
SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:170)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1028)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1004)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:956)
at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:581)
at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:116)
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5115)
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5779)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1863)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)

Ошибка возникает в следущей строке - (/WEB-INF/spitter-security.xml) :
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext.xml
            /WEB-INF/spitter-security.xml           //ОШИБКА, ВОТ ТУТ
        </param-value>
    </context-param>

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

<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>


Сам файл spitter-security.xml:
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns="http://www.springframework.org/schema/security"
             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.xsd">
........
Тут всякий код
</beans:beans>


Может проблема в подключении схем?

Кунг-фу принцип: не сталкиваться лоб в лоб с внешними силами,а прогнуться под их давлением с тем, чтобы, разогнувшись, стать еще сильнее.
 
 
Сообщения:456
А как это Вы два значения одному параметру задаете.
Оставьте только /WEB-INF/applicationContext.xml, а уже в нем подключите spitter-security.xml, например так:
<import resource="/WEB-INF/spitter-security.xml" />
 
 
Сообщения:110
Выбило ошибку сменить схему spring-security-3.0.xsd на версию 3.2
Сменил
А теперь выбивает это(грешит на springSecurityFilterChain):
ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'org.springframework.security.filterChains':
Cannot resolve reference to bean 'org.springframework.security.web.DefaultSecurityFilterChain#0'
while setting bean property 'sourceList' with key [0];
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'org.springframework.security.web.DefaultSecurityFilterChain#0':
Cannot create inner bean '(inner bean)#3c782436' of type [org.springframework.security.web.authentication.logout.LogoutFilter]
while setting constructor argument with key [3];
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '(inner bean)#3c782436':
Cannot resolve reference to bean 'org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices#0'
while setting constructor argument with key [1];
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices#0':
Cannot create inner bean '(inner bean)#6f6d0caf' while setting constructor argument;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '(inner bean)#6f6d0caf':
Bean instantiation via factory method failed;
nested exception is org.springframework.beans.BeanInstantiationException:
Failed to instantiate [org.springframework.security.core.userdetails.UserDetailsService]:
Factory method 'cachingUserDetailsService' threw exception;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'userService':
Cannot resolve reference to bean 'dataSource' while setting bean property 'dataSource';
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No bean named 'dataSource' is defined


Spring Security у меня версия 3.2 а Spring web - 4.3.0 .Ошибка может быть связана с этим?

Кунг-фу принцип: не сталкиваться лоб в лоб с внешними силами,а прогнуться под их давлением с тем, чтобы, разогнувшись, стать еще сильнее.
Изменен:08 июл 2016 18:56
 
 
Сообщения:110
Вообщем, ошибка была в том что не включил <authentication-manager> в конфиг security.

Кунг-фу принцип: не сталкиваться лоб в лоб с внешними силами,а прогнуться под их давлением с тем, чтобы, разогнувшись, стать еще сильнее.
Изменен:09 июл 2016 12:59
 
 
Сообщения:456
V_JP:
Вообщем, ошибка была в том что не включил <authentication-manager> в конфиг security.

Ну по приведенному Вами стектрейсу этого не понять.
Ну или Вы не весь стектрейс привели. Источник ошибки как правило надо искать в самом низу стека.
 
 
Сообщения:110
Не, это был весь список стека.
Потом я подумал, что попробую глянуть, примеры других людей. И по аналогии глянул. И ошибка закралась в:
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns="http://www.springframework.org/schema/security"
             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.xsd">

Это не правильно. Хотя пример брал из книги. Замену сделал на:
<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
         xmlns:b="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="
	http://www.springframework.org/schema/security
	http://www.springframework.org/schema/security/spring-security.xsd
	http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd">

Это и была истинная причина ошибки. <authentication-manager> это уже следущая ошибка, я просто поспешил написать.
Но, спасибо что отозвались.)

Кунг-фу принцип: не сталкиваться лоб в лоб с внешними силами,а прогнуться под их давлением с тем, чтобы, разогнувшись, стать еще сильнее.
Изменен:09 июл 2016 15:29
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет