Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
ДмитрийСмирнов
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 32
1

Spring Boot + Security + Data

19.04.2016, 17:56. Просмотров 936. Ответов 21

При поднятии сервера приложения в консоле выводит сообщение

Java
1
2
   19-Apr-2016 16:20:13.584 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
    19-Apr-2016 16:20:13.586 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors
И деплой не заканчивается. Как я понимаю что какой- то из слушателей не поднимается но учитывая что более конкретных подробностей нет - возникает затруднения в решении. Прошу вашей помощи, коллеги.
Мой
web.xml

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app
            PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
            "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
        <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>
        <listener>
            <listener-class>ua.dsa.config.ContainerContextClosedHandler</listener-class>
        </listener>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
Классы конфигурации бинов.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
 @WebListener 
    public class ContainerContextClosedHandler implements ServletContextListener {
        @Override
        public void contextInitialized(ServletContextEvent servletContextEvent) {  
        }
        @Override
        public void contextDestroyed(ServletContextEvent servletContextEvent) {
            Enumeration<Driver> drivers = DriverManager.getDrivers();
            Driver driver = null;
            while(drivers.hasMoreElements()) {
                try {
                    driver = drivers.nextElement();
                    DriverManager.deregisterDriver(driver);
                } catch (SQLException ex) {
                }
            }
            try {
                AbandonedConnectionCleanupThread.shutdown();
            } catch (InterruptedException e) {       
            }
        }
    }
    
    public class Initializer implements WebApplicationInitializer  {
    
        private static final String DISPATCHER_SERVLET_NAME = "dispatcher";
        
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
            ctx.register(WebAppConfig.class);
            ctx.register(SecurityConfig.class);
            servletContext.addListener(new ContextLoaderListener(ctx));
            ctx.setServletContext(servletContext);
            Dynamic servlet = servletContext.addServlet(DISPATCHER_SERVLET_NAME, new DispatcherServlet(ctx));
            servlet.addMapping("/");
            servlet.setLoadOnStartup(1);
        }
    }
    
    @Configuration
    @EnableWebSecurity
    @EnableGlobalMethodSecurity(securedEnabled = true)
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
           private UserRepositoryAndDetailsImpl userDetailsService = new UserRepositoryAndDetailsImpl();
        
        @Autowired
        public void registerGlobalAuthentication(AuthenticationManagerBuilder auth) throws Exception {
            auth
                    .userDetailsService(userDetailsService)
                    .passwordEncoder(getShaPasswordEncoder());
        }
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf()
                    .disable()
                    .authorizeRequests()
                    .antMatchers("/resources/**", "/**").permitAll()
                    .anyRequest().permitAll()
                    .and();
    
            http.formLogin()
                    .loginPage("/login")
                    .loginProcessingUrl("/j_spring_security_check")
                    .failureUrl("/login?error")
                    .usernameParameter("j_username")
                    .passwordParameter("j_password")
                    .permitAll();
    
            http.logout()
                    .permitAll()
                    .logoutUrl("/logout")
                    .logoutSuccessUrl("/login?logout")
                    .invalidateHttpSession(true);
    
        }
    
        @Bean
        public ShaPasswordEncoder getShaPasswordEncoder(){
            return new ShaPasswordEncoder();
        }
    
    }
    
    @Configuration
    @EnableWebMvc
    @ComponentScan("ua.dsa")
    @EnableTransactionManagement
    @PropertySource("classpath:application.properties")
    @EnableJpaRepositories("ua.dsa.repository")
    public class WebAppConfig extends WebMvcConfigurerAdapter {
    
    
        private static final String PROP_DATABASE_DRIVER = "db.driver";
        private static final String PROP_DATABASE_PASSWORD = "db.password";
        private static final String PROP_DATABASE_URL = "db.url";
        private static final String PROP_DATABASE_USERNAME = "db.username";
        private static final String PROP_HIBERNATE_DIALECT = "db.hibernate.dialect";
        private static final String PROP_HIBERNATE_SHOW_SQL = "db.hibernate.show_sql";
        private static final String PROP_ENTITYMANAGER_PACKAGES_TO_SCAN = "db.entitymanager.packages.to.scan";
        private static final String PROP_HIBERNATE_HBM2DDL_AUTO = "db.hibernate.hbm2ddl.auto";
    
        @Resource
        private Environment env;
    
        @Bean
        public DataSource dataSource() {
            DriverManagerDataSource dataSource = new DriverManagerDataSource();
    
            dataSource.setDriverClassName(env.getRequiredProperty(PROP_DATABASE_DRIVER));
            dataSource.setUrl(env.getRequiredProperty(PROP_DATABASE_URL));
            dataSource.setUsername(env.getRequiredProperty(PROP_DATABASE_USERNAME));
            dataSource.setPassword(env.getRequiredProperty(PROP_DATABASE_PASSWORD));
    
            return dataSource;
        }
    
        @Bean
        public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
            LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
            entityManagerFactoryBean.setDataSource(dataSource());
            entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistence.class);
            entityManagerFactoryBean.setPackagesToScan(env.getRequiredProperty(PROP_ENTITYMANAGER_PACKAGES_TO_SCAN));
    
            entityManagerFactoryBean.setJpaProperties(getHibernateProperties());
    
            return entityManagerFactoryBean;
        }
    
        @Bean
        public JpaTransactionManager transactionManager() {
            JpaTransactionManager transactionManager = new JpaTransactionManager();
            transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
    
            return transactionManager;
        }
    
        private Properties getHibernateProperties() {
            Properties properties = new Properties();
            properties.put(PROP_HIBERNATE_DIALECT, env.getRequiredProperty(PROP_HIBERNATE_DIALECT));
            properties.put(PROP_HIBERNATE_SHOW_SQL, env.getRequiredProperty(PROP_HIBERNATE_SHOW_SQL));
            properties.put(PROP_HIBERNATE_HBM2DDL_AUTO, env.getRequiredProperty(PROP_HIBERNATE_HBM2DDL_AUTO));
    
            return properties;
        }
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
        }
    
        @Bean
        public UrlBasedViewResolver setupViewResolver() {
            UrlBasedViewResolver resolver = new UrlBasedViewResolver();
            resolver.setPrefix("/pages/");
            resolver.setSuffix(".jsp");
            resolver.setViewClass(JstlView.class);
    
            return resolver;
        }
        
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2016, 17:56
Ответы с готовыми решениями:

Настройка spring boot security
Всем привет! Подскажите пожалуйста, как настроить security конфиг, если веб...

Jetty embedded + Spring MVC + Spring Security
Добрый день. По роду работы приходилось писать на JavaSE, в том числе и...

Spring MVC. 404 ошибка при включении Spring Data JPA в проект
Добрый день. Есть простой шаблонный проект с использованием Spring MVC и Maven....

Spring. Тесты и Spring-security
Вопрос из области почему так. Есть у меня такой вот тест: ...

Spring security c 3 на 4
Не знаю почему, но после того, как перешел на spring security 4 возникает...

21
Любопытный
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
20.04.2016, 08:50 2
Цитата Сообщение от ДмитрийСмирнов Посмотреть сообщение
учитывая что более конкретных подробностей нет - возникает затруднения в решении
Цитата Сообщение от ДмитрийСмирнов Посмотреть сообщение
Full details will be found in the appropriate container log file
В консольном логе же говорится что подробнее можно посмотреть в лог-файле контейнера.
0
ДмитрийСмирнов
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 32
20.04.2016, 08:55  [ТС] 3
Так понимаю это сервер? В моем случае томкат?
0
Любопытный
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
20.04.2016, 08:57 4
ДмитрийСмирнов, да.
0
ДмитрийСмирнов
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 32
20.04.2016, 08:59  [ТС] 5
Томкат не пишет логи. В директории сервера а папке log ничего нет. Сразу так и сделал же.
0
Любопытный
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
20.04.2016, 09:06 6
ДмитрийСмирнов, как Вы запускаете приложение?
0
ДмитрийСмирнов
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 32
20.04.2016, 09:08  [ТС] 7
С идеи, использую томкат
0
Любопытный
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
20.04.2016, 09:11 8
Вы запускаете с использованием встроенного томкэта?
Попробуйте задеплоить на предварительно запущенном контейнере.
0
ДмитрийСмирнов
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 32
20.04.2016, 09:16  [ТС] 9
Нет. С использованием скачанного, с прописаным Каталина Хоум. Всмысле предварительно запущеным? start.bat потом запустить в идее?
0
KEKCoGEN
Эксперт Java
2061 / 1931 / 502
Регистрация: 28.12.2010
Сообщений: 7,736
20.04.2016, 09:22 10
ДмитрийСмирнов, если уж используете спринг бут, используйте его функционал. Уберите web.xml, используйте встроенный томкат и покажите ваш pom.xml. Может вы там тоже понаписали всякого
0
Любопытный
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
20.04.2016, 09:27 11
ДмитрийСмирнов, вообще проще нормально логер настроить в буте.
В дальнейшем все равно он понадобится для отладки.
Подключите log4j, к примеру, и установите уровень логирования с дебага.
0
ДмитрийСмирнов
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 32
20.04.2016, 11:40  [ТС] 12
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
ДмитрийСмирнов, если уж используете спринг бут, используйте его функционал. Уберите web.xml, используйте встроенный томкат и покажите ваш pom.xml. Может вы там тоже понаписали всякого
Каким образом мне с не совсем понимаю процедуру как переместить фильтр и его маппинг web.xml в класс конфигурации.
Вот файл pom.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.example</groupId>
    <artifactId>tes</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
 
    <name>Tes</name>
    <description>Tes</description>
 
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.3.RELEASE</version>
        <relativePath/>
    </parent>
 
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <spring.mvc>4.2.0.RELEASE</spring.mvc>
        <javax.servlet>3.0.1</javax.servlet>
        <jstl.version>1.2</jstl.version>
        <spring.securiry>4.0.0.RELEASE</spring.securiry>
    </properties>
 
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.mvc}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.mvc}</version>
        </dependency>
 
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${javax.servlet}</version>
            <scope>provided</scope>
        </dependency>
 
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring.securiry}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>${spring.securiry}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.0.0.Final</version>
            <scope>compile</scope>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>1.9.0.RELEASE</version>
            <scope>compile</scope>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${spring.securiry}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>3.2.1</version>
        </dependency>
 
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.0.0.Final</version>
            <scope>compile</scope>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <version>${spring.securiry}</version>
        </dependency>
 
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
 
</project>
0
Любопытный
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
20.04.2016, 12:38 13
Цитата Сообщение от ДмитрийСмирнов Посмотреть сообщение
как переместить фильтр и его маппинг web.xml в класс конфигурации.
Его не нужно никуда перемещать, Spring Boot инициализирует фильтр Security сам.

Добавлено через 1 минуту
Вы в pom.xml натаскали стартеров бута, и помимо них отдельно засунули библиотеки, которые стартеры и так добавят. Уберите лишнее

Добавлено через 6 минут
Код - солянка примеров из интернета, с использованием Spring Boot и без.
Если взялись использовать Spring Boot, то дайте ему самому делать автоконфигурацию.
0
ДмитрийСмирнов
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 32
20.04.2016, 12:43  [ТС] 14
Тогда Web.xml и так пуст получается.
Воспользовался spring init для создания структур проекта. Старичков бута удалю, сам спринг Бут плагин Мавен оставить?
0
Любопытный
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
20.04.2016, 12:59 15
Если используете Spring Boot то не стартеры удаляйте, а то что по второму разу добавляете. То, что в стартерах и так есть.
0
KEKCoGEN
Эксперт Java
2061 / 1931 / 502
Регистрация: 28.12.2010
Сообщений: 7,736
20.04.2016, 13:52 16
ДмитрийСмирнов, как уже выше сказали, у вас бардак в pom.xml. web.xml удалите ваще. Вот тут можно за пару кликов собрать стартовый проект с нормальным pom.xml и всеми нужными плюшками
0
ДмитрийСмирнов
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 32
20.04.2016, 18:57  [ТС] 17
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
ДмитрийСмирнов, как уже выше сказали, у вас бардак в pom.xml. web.xml удалите ваще. Вот тут можно за пару кликов собрать стартовый проект с нормальным pom.xml и всеми нужными плюшками
Попробовал ваш способ- проблема осталась.
0
KEKCoGEN
Эксперт Java
2061 / 1931 / 502
Регистрация: 28.12.2010
Сообщений: 7,736
20.04.2016, 19:18 18
Цитата Сообщение от ДмитрийСмирнов Посмотреть сообщение
Попробовал ваш способ
какой именно? Удалили все, пошли на https://start.spring.io/ и пересобрали проект?
0
ДмитрийСмирнов
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 32
20.04.2016, 19:36  [ТС] 19
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
какой именно? Удалили все, пошли на https://start.spring.io/ и пересобрали проект?
Верно. Собрал как мне нужно без лишних либов. В Tomcat Localhost Log нашёл исключение
Java
1
java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present - check whether you have multiple ContextLoader* definitions in your web.xml!
Погуглил увидел что связанно это с дублированием Контекста в web.xml странно, учитывая то что его нет.
Самостоятельно создал webapp и WEB-INF но не web.xml

Добавлено через 2 минуты
Цитата Сообщение от Любопытный Посмотреть сообщение
ДмитрийСмирнов, вообще проще нормально логер настроить в буте.
В дальнейшем все равно он понадобится для отладки.
Подключите log4j, к примеру, и установите уровень логирования с дебага.
Исключение в Tomcat Localhost Log описал выше
0
Любопытный
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
20.04.2016, 20:00 20
ДмитрийСмирнов, дайте код того, что писали вручную. Покажи структуру каталогов, которая сейчас у Вас есть.
0
20.04.2016, 20:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2016, 20:00

Spring Security
Добрый день. Использую SpringSecurity: protected void...

Thymeleaf spring security
Добрый день. Возник вопрос можно ли как-то совместить в одном div ...

Spring Security logout
Как задать вылогинивание с сайта через определенное время, точнее обратил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru