Сбой инициализации контекста в Spring3 Security с использованием JDBC! - PullRequest
2 голосов
/ 28 марта 2011

Ошибка Сбой инициализации контекста в Spring3 Security с использованием JDBC.

Файл: applicationContext-security-JDBC.xml

<?xml version="1.0" encoding="UTF-8"?>
<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"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/jdbc
           http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.0.xsd">


    <http auto-config="true">
        <intercept-url pattern="/friends/**" access="ROLE_USER" />
        <intercept-url pattern="/articles/**" access="ROLE_USER" />
        <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    </http>

    <authentication-manager alias="authenticationManager">

        <authentication-provider>
            <jdbc-user-service data-source-ref="dataSource" />
        </authentication-provider>
    </authentication-manager>
</beans:beans>

Web.XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

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

    <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>
        /WEB-INF/applicationContext-security-JDBC.xml
         </param-value>
    </context-param>

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


    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>



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

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>



    <!--
      - Loads the root application context of this web app at startup.
      - The application context is then available via
      - WebApplicationContextUtils.getWebApplicationContext(servletContext).
    -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!--
      - Publishes events for session creation and destruction through the application
      - context. Optional unless concurrent session control is being used.
      -->
    <listener>
      <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>


</web-app>

Ниже приведена ошибка:

[ОШИБКА, ContextLoader] Сбой инициализации контекста org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем org.springframework.security.authentication.ProviderManager # 0 ': невозможно создать внутренний бин (внутренний бин) типа [org.springframework.security.config. authentication.AuthenticationManagerFactoryBean] при установке свойства компонента 'parent'; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем '(внутренний компонент)': FactoryBean вызвала исключение при создании объекта; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'org.springframework.security.authenticationManager': невозможно разрешить ссылку на бин 'org.springframework.security.authentication.dao.DaoAuthenticationProvider # 0' «поставщики» свойств бобов с ключом [0]; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'org.springframework.security.authentication.dao.DaoAuthenticationProvider # 0': не удается разрешить ссылку на боб 'org.springframework.security.provisionagerUDe 0 'при установке свойства компонента' userDetailsService '; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'org.springframework.security.provisioning.JdbcUserDetailsManager # 0': невозможно разрешить ссылку на бин 'dataSource' при установке свойства бина 'dataSource'; вложенным исключением является org.springframework.beans.factory.NoSuchBeanDefinitionException: не определен бин с именем «dataSource»

1 Ответ

2 голосов
/ 28 марта 2011

Это легко ответить.Сообщение об исключении говорит (в конце): «Не определен бин с именем dataSource».И, конечно же, ваш файл applicationContext-security-JDBC.xml не содержит определения для компонента dataSource.

Раздел 6.2 руководства SpringSecurity содержит материал о том, как настроить источник данных для службы пользовательских данных JDBC.(Подсказка: SpringSecurity нужно указать какую базу данных, какое имя пользователя и какой пароль использовать ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...