Ответы пользователя по тегу Spring
  • Почему возникает ошибка при запросе?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    А у вас там в файле базы такая таблица есть? Удостоверьтесь в этом, а так же в том, что ее имя правильно замапленно.

    P.S. Ваша ошибка вот она -
    Caused by: org.h2.jdbc.JdbcSQLException: Таблица "LEGAL_ENTITY" не найдена
    Table "LEGAL_ENTITY" not found; SQL statement:
    select legalentit0_.id as id1_2_, legalentit0_.inn as inn2_2_, legalentit0_.name as name3_2_, legalentit0_.version as version4_2_ from legal_entity legalentit0_


    Та ошибка, которую вы указали, это возникающая на следующем уровне.

    P.P.S https://stackoverflow.com/questions/33519630/h2-jd...
    Ответ написан
    5 комментариев
  • В чем проблема HTTP Status 404?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Измените код метода контроллера на вот этот и проверьте.
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String list(Model uiModel) {
    	List<HotelAudit> contacts = HotelService.findAll();
    	uiModel.addAttribute("contacts", contacts);
    	return "list";
    }


    • Вы указали базовый урл, на который мапится контроллер, но не указали куда смотрит метод, поэтому, скорее всего и 404.
    • Еще момент, не нужно указывать базовый путь к представлению, достаточно указать относительный.


    Вообще, я бы посоветовал вам изучить базовую информацию по работе со Spring Framework - там есть некоторые, важные моменты, которые могут помочь на начальном этапе.

    Так же, при разработке представлений, советую обратить внимание, к примеру, на то, что тазывается Tags в JSP, это позволит заметно утилизировать (фу слово) код представлений.
    Ответ написан
  • Artifact group:war exploded: Error during artifact deployment. See server log for details?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    <param-value>web/servler1.xml
    А вот этот файл то есть? Что там у вас?
    Вот более полный кусок конфига web.xml
    <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>web/servler1.xml
                </param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
    Ответ написан
  • Почему после logout wabapp пускает на защищенную часть?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Давайте так. https://github.com/elennaro/sshwa/tree/0.2-SNAPSHOT - приложение отсюда работает?
    Если работает, то что-то у вас не так. Если нет - то нужно разбираться с конфигурированием, что-то где-то не сработало.

    Сам использую xml-конфигурацию - с закрытием областей проблем не было ни разу.
    Но хочу отметить, у меня были проблемы с выходом, не мог разобраться, почему не работал.

    В результате, у меня в web.xml появились вот такие фильтры:
    <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>/j_spring_security_logout</url-pattern>
        </filter-mapping>
    
        <filter-mapping>
            <filter-name>springSecurityFilterChain</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>


    Ну и сам конфиг безопасности:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xmlns="http://www.springframework.org/schema/security"
                 xsi:schemaLocation="http://www.springframework.org/schema/beans
    	http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    	http://www.springframework.org/schema/security 
    	http://www.springframework.org/schema/security/spring-security-4.0.xsd">
    
        <beans:bean id="tokenPersistRepo"
                    class="org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl">
            <beans:property name="dataSource" ref="dataSource"/>
        </beans:bean>
    
    
        <beans:bean id="nonAjaxRequestMatcher" class="org.whatever.NonAjaxRequestMatcher"/>
    
        <beans:bean id="loginUrlAuthenticationEntryPoint"
                    class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
            <beans:constructor-arg value="/login"/>
        </beans:bean>
    
        <beans:bean id="ajaxAuthenticationEntryPoint"
                    class="org.springframework.security.web.authentication.HttpStatusEntryPoint">
            <beans:constructor-arg name="httpStatus"
                                   value="#{T(org.springframework.http.HttpStatus).UNAUTHORIZED}"/>
        </beans:bean>
    
        <beans:bean id="authenticationRequestCache"
                    class="org.springframework.security.web.savedrequest.HttpSessionRequestCache">
            <beans:property name="requestMatcher" ref="nonAjaxRequestMatcher"/>
        </beans:bean>
    
        <beans:bean id="authenticationEntryPoint"
                    class="org.springframework.security.web.authentication.DelegatingAuthenticationEntryPoint">
            <beans:constructor-arg>
                <beans:map>
                    <beans:entry key-ref="nonAjaxRequestMatcher" value-ref="loginUrlAuthenticationEntryPoint"/>
                </beans:map>
            </beans:constructor-arg>
            <beans:property name="defaultEntryPoint" ref="ajaxAuthenticationEntryPoint"/>
        </beans:bean>
    
        <http entry-point-ref="authenticationEntryPoint" use-expressions="true">
            <request-cache ref="authenticationRequestCache"/>
    
            <headers>
                <frame-options disabled="true"/>
            </headers>
    
            <intercept-url pattern="/backend/roles/**" access="hasAnyRole('ROLE_ADMINISTRATOR')"/>
            <intercept-url pattern="/backend/**" access="hasAnyRole('ROLE_ADMINISTRATOR', 'ROLE_SYS')"/>
            <intercept-url pattern="/registries/**" access="hasAnyRole('ROLE_ADMINISTRATOR', 'ROLE_SYS', 'ROLE_REGISTRY')"/>
            <intercept-url pattern="/registries" access="hasAnyRole('ROLE_ADMINISTRATOR', 'ROLE_SYS', 'ROLE_REGISTRY')"/>
            <intercept-url pattern="/login/**" access="permitAll"/>
            <intercept-url pattern="/logout/**" access="permitAll"/>
            <intercept-url pattern="/resources/**" access="permitAll"/>
            <intercept-url pattern="/bundles/**" access="permitAll"/>
            <intercept-url pattern="/jawr/**" access="permitAll"/>
            <intercept-url pattern="/error/**" access="permitAll"/>
    
            <access-denied-handler error-page="/403"/>
    
            <intercept-url pattern="/**" access="isAuthenticated()"/>
    
            <form-login login-page="/login" default-target-url="/"
                        authentication-failure-url="/login?error" username-parameter="username"
                        password-parameter="password"/>
    
            <logout logout-success-url="/" logout-url="/j_spring_security_logout" delete-cookies="JSESSIONID,remember-me"/>
    
            <remember-me
                    key="${app.remember-me-key}"
                    remember-me-parameter="remember-me"
                    remember-me-cookie="remember-me"
                    token-validity-seconds="86400"
                    token-repository-ref="tokenPersistRepo"/>
    
            <csrf/>
        </http>
    
        <authentication-manager alias="authenticationManager">
            <authentication-provider user-service-ref="usersManager">
                <password-encoder hash="bcrypt"/>
            </authentication-provider>
        </authentication-manager>
    
    </beans:beans>


    Есть подозрение, что он избыточен, но сейчас проверять нет цели, желания и времени, т.к. проекты с Java не пересекаются, к сожалению.
    Ответ написан
    4 комментария
  • Как генерировать ссылку на профиль пользователя через MVC?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Ну, к примеру так:

    @RequestMapping(value = {"/url/to/profileAction/{id}"}, method = RequestMethod.GET)
    public ModelAndView profileAction(@PathVariable("id") Long id) {
    	ModelAndView modelAndView = new ModelAndView();
    	modelAndView.setViewName("profile");
    	
    	UserDTO data = getUserDTOsService().getById(id);
    
    	if (data != null) {
    		modelAndView.getModel().put("data", data);
    		return modelAndView;
    	}
    	
    	return "redirect:/";/*ну или бросить исключение, что нет пользователя*/
    }
    Ответ написан
    1 комментарий
  • Как получить залогиненого пользователя в Spring Security?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    К примеру, как то так (кусок кода из контроллера):
    // check if user is login
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    if ((!(auth instanceof AnonymousAuthenticationToken)) && auth != null) {
    	UserDetails userDetail = (UserDetails) auth.getPrincipal();
    
    	if (userDetail != null) {
    		model.addObject("username", userDetail.getUsername());
    	} else {
    		model.addObject("username", "");
    	}
    }
    ,

    В конфиге безопасности есть такое:
    <authentication-manager alias="authenticationManager">
            <authentication-provider user-service-ref="usersManager">
                <password-encoder hash="bcrypt"/>
            </authentication-provider>
        </authentication-manager>


    В конфиге контекста приложения объявлен usersManager:
    <bean id="usersManager" class="org.whatever.impl.UsersServiceImpl">
            <property name="usersDAO" ref="usersDAO"/>
            <property name="languageDao" ref="languagesDAO"/>
            <property name="roleDAO" ref="roleDAO"/>
            <property name="usersViewDAO" ref="usersViewDAO"/>
    </bean>

    Ну и сам UsersServiceImpl имеет такой вид:
    package org.whatever.impl;
    /*импорты убрал */
    /* интерфейс UsersService наследует org.springframework.security.core.userdetails.UserDetailsService */
    public class UsersServiceImpl extends ServiceBase implements UsersService {
    
        @Autowired
        private UsersDAO usersDAO;
    
        public void setUsersViewDAO(UsersViewDAO usersViewDAO) {
            this.usersViewDAO = usersViewDAO;
        }
    
        public UsersDAO getUsersDAO() {
            return usersDAO;
        }
    
    	/*сократил код*/
    
        /**
         * Детали по пользователю, полученному из базы
         */
        @Override
        @Transactional(readOnly = true)
        public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException {
            User userFromDb = this.getUsersDAO().getUserByLogin(login);
    
            if (userFromDb != null) {
                return new org.whatever.UserView(userFromDb); /*применяет org.springframework.security.core.userdetails.UserDetails*/
            }
    
            String result = new Formatter().format("User with login %s not found", login).toString();
            throw new UsernameNotFoundException(result);
        }
    }
    Ответ написан
    Комментировать
  • Как решить данную проблему при запуске Spring проекта??

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    В обшем-то, вот ваша ошибка:
    javax.servlet.ServletException: Circular view path [greeting.html]: would dispatch back to the current handler URL [/greeting.html] again. Check your ViewResolver setup!


    Похоже, у вас есть роут /greeting.html и шаблон.
    Попробуйте заменить
    return "greeting.html"; на
    return "greeting";
    Ответ написан
  • Как настроить пул соединений MySQL?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Советую поставить HikariCP, автор позиционирует его как один из самых быстрых пулов соединений.
    Сам его использовал в связке с PostgreSQL, за 3 года работы приложения вообще не было с ним проблем (ПО - учетная система организации, в которую ежедневно бьется информация и вытаскиваются отчеты).

    Так же можно посмотреть в сторону пула от Одноклассников, авторы данных пулов пересекались в Issues на гитхабе

    Ссылки:
    https://habrahabr.ru/post/269023/
    https://brettwooldridge.github.io/HikariCP/
    Ответ написан
  • Как исправить ошибку при удалении таблиц Hibernate?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    У меня сложилось впечатление, что не весь лог...
    PostgreSQL (у вас судя по всему же он) дает выполнить такой запрос?

    Касаемо самой проблемы, вы используете пересоздание схемы при запуске приложения. Может попробовать поставить update место drop-create?

    Вот тут что-то похоже писали, но не указано кто победил:forum.spring.io/forum/spring-projects/data/70844-h...

    От себя хотел бы добавить, что для обновления схемы БД я бы использовал фреймворк миграций. Это даст вам более лучший контроль над версиями БД.
    Ответ написан