Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Interceptor 404 при создании нового файла / 4 сообщений из 4, страница 1 из 1
30.05.2013, 15:09:59
    #38280304
MarMot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Interceptor 404 при создании нового файла
Добрый день!

Есть Spring Interceptor, который перехватывает обращение к папке с ресурсами, проверяет доступ, и если доступ разрешен, то создает файл.

Код: 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.
public class AccessInterceptor implements HandlerInterceptor {

    ...

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
        logger.info("We now intercept that url " + request.getRequestURI());

	...

	// Проверка доступа для текущего пользователя
        if (validatePageNumber(pageNum, hashName)) {
            // Создание снэпшота
	    createImage(pageNum, hashName);
            return true;
        }

        response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
        return false;
    }

    private void createImage(int pageNum, String hashName) throws FileNotFoundException, IOException {
        String snapshotPath = ConfigProperties.SOURCE_FOLDER + "/" + ConfigProperties.SNAPSHOT_FORMAT + "/" + hashName + "/";
        File snapshotFolder = new File(snapshotPath);
        snapshotFolder.mkdirs();
        File snapshot = new File(snapshotPath + pageNum);
        // Если снэпшота нет, то создаем его
        if (!snapshot.isFile()) {
            _parser.getImage(hashName, pageNum);
            // Проверяем существование файла
	    if (!snapshot.isFile()) {
                logger.error("SNAPSHOT " + snapshotPath + imageName + " didn't generate!!!");
            }
        }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        logger.info("After handling the request " + request.getRequestURI());
        String url = request.getRequestURI();
        String snapshotPath = ConfigProperties.SOURCE_FOLDER + url;
        File snapshot = new File(snapshotPath);
        // Еще раз проверяем существование файла        	
	if (snapshot.isFile()) {
            logger.info("exist");
        } else {
            logger.info("don't exist");
        }
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        logger.info("After rendering the view " + request.getRequestURI());
    }

}



Проблема в том, что при первом обращении к пока не созданному файлу, возвращается 404 ошибка, хотя во всех проверках в логи пишется, что файл создан. При повторном обращении файлы нормально возвращаются.

В чем может быть загвоздка?
...
Рейтинг: 0 / 0
30.05.2013, 15:32:21
    #38280348
MarMot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Interceptor 404 при создании нового файла
Мапинг interceptor-а

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	
       <mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/PNG/**" />
			<bean id="AccessInterceptor"
				class="com.web.interceptors.PdfViewerAccessInterceptor" />
		</mvc:interceptor>
	</mvc:interceptors>

	<mvc:resources mapping="/PNG/**" location="/PNG/" />
...
Рейтинг: 0 / 0
30.05.2013, 16:37:50
    #38280497
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Interceptor 404 при создании нового файла
Явно в строке
Код: java
1.
if (validatePageNumber(pageNum, hashName)) {

а что делает validatePageNumber() - не понятно. Похоже, при первом заходе preHandle выполняется до любых авторизаций, поэтому проверка не срабатывает.
...
Рейтинг: 0 / 0
30.05.2013, 23:12:08
    #38280903
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Interceptor 404 при создании нового файла
MarMotВ чем может быть загвоздка?

Попробуйте продебажить код. В пошаговом режиме все должно быть прозрачно. Если есть проблемы в настройке IDE для дебагера спросите как это делается. Подскажем в меру возможности.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Interceptor 404 при создании нового файла / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]