• Как незаметно передеплоить сервер?

    Недавно занимался похожей проблемой. Пока для себя нашёл простое решение - Parallel deployment.

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

    Для реализации этого у себя в название war файла добавил номер сборки и теперь оно выглядит примерно так: App##015.war. Кидаем war-файл в webapps и через пару секунд у нас задеплоина новая версия. Очень удобно.

    При желании старые сессии можно почистить принудительно и тогда старая версия сразу удалиться. Это на случай, если произошли серьёзные изменения (например, схема базы сильно поменялась).
    Ответ написан
    Комментировать
  • Как контролировать доступ пользователей к REST ресурсам?

    Вход пользователей в систему стоит делать через готовый фреймворк. Я использую Apache Shiro. Писать что-то своё для авторизации точно не стоит.

    Проверку принадлежности документа пользователю можно сделать через идентификатор пользователя (PK в базе, например): при создании документа идентификатор пользователя записываете в документ, а при изменении/удалении документа сравниваете идентификатор текущего пользователя и идентификатор пользователя, сохранённый в документе. При использовании Shiro получить текущего пользователя не проблема.
    Ответ написан
    Комментировать
  • Как правильно вычислять географические расстояния в высоконагруженных сервисах?

    Думаю, правильно будет использовать расширение к базе данных для работы с геоданными. Для MySQL ничего подходящего не знаю, для Postgresql есть PostGIS, с помощью которого вашу задачу можно будет очень легко решить. Если возможности полностью перейти на Postgresql нет, то можно, например, вынести туда хранение текущих координат пользователей и поиск по ним.

    У меня в одном из проектов основная база - это MySQL, а PostGIS как дополнительная для работы с картой.
    Ответ написан
    Комментировать
  • Java EE каждый раз нужно делать редеплой проекта при разработке на TomCat?

    Используйте IDE для разработки своего приложения. Например, Eclipse при изменении jsp, js, css и т. п. файлов не деплоит приложение на сервер заново. Соответственно, изменив стили можно практически сразу смотреть результат в браузере.

    Деплой происходит только при изменении java-классов, кофигураций и т. п.
    Ответ написан
    Комментировать