LINUX.ORG.RU

Deploy spring mvc

 , , , ,


0

3

Создаю простое приложение на примере web mvc, деплой на tomcat 8 (ubuntu 16.04.1), прокси через nginx (через apache тоже пробовал). Доступ к приложению идёт через domain.com, но ссылки ведут на domain.com/applicationname/url, собственно из applicationname.war. Без прокси прямой адрес ip:8080/applicationname. Подскажите куда смотреть?

Какие ссылки? На веб страницах? Какой шаблонизатор используете? Если thymeleaf, то такая конструкция ${/url} даст вам ссылку относительно context root. Пишите просто /url.

Weres ★★★
()
Ответ на: комментарий от chrisred

Вместо @{/hello} напишите /hello. Вы используете урл относительно того, по которому задеплоилось приложение. А у вас прокси. Либо задеплойте приложение в корень.

Weres ★★★
()
Ответ на: комментарий от chrisred

Прокси стоит перед вашим приложением, а страницу рендерит оно само. Приложение не знает, на каком урле его будут показывать. Я в таком случае деплоил приложение по урлу / и все работало. Тут вам стоит обратиться к документации томката. Не думаю, что удастся исправить проблему через прокси.

Weres ★★★
()
Ответ на: комментарий от chrisred

Как вот это

Можно, но так же хотелось бы задеплоить несколько приложений

согласовать с этим?

Доступ к приложению идёт через domain.com

Если остальные «несколько приложений» - не рутовые - то никаких проблем. Замените своим ROOT.war. А если что-то другое вы хотите (несколько рутовых приложений), то единственный вариант реализации ваших пожеланий - корневые приложения в разных поддоменах? Это можно сделать (томкат умеет «виртуальные хосты»), но вам точно оно нужно?

Qasta
()
Ответ на: комментарий от Qasta

Проксируем каждое приложение на отдельный домен. Проблема не в том как открыть несколько приложений на разных доменах, проблема в Url.

chrisred
() автор топика
Последнее исправление: chrisred (всего исправлений: 1)
Ответ на: комментарий от chrisred

Я сам использовал и в проектах встречал два варианта. В обоих случаях ссылки на ресурсы указывались абсолютные без имени сервера - относительно корня сайта («/myappname/static/js/jquery.js» и т.п.). Получали мы их двумя способами:

1. Везде сами руками прописывали префикс (вида request.contextPath, если компонента их не добавляет). То есть получалось что-то вроде (в jsp странице):

<a href="<%=request.contextPath%>/myServlet/goToMyPage">Go to my page</a>

2. Для приложения где-нибудь вводится настройка типа «путь к приложению». В которую нужно ввести значение полного пути: http://mydomain.com/myappname (или http://mydomain.com/ в вашем случае). В приложении в страницах request.contextPath заменяли на чтение этой настройки.

Второй вариант также необходим, когда в программе есть какие-нибудь рассылки или почтовые уведомления - всё равно надо делать настройку, т.к. томкат часто развернут за nginx-ом и самому собрать правильный урл для вставки в письмо бывает сложно (да и не нужно).

Использование относительных путей для обычной программы (не одностраник-javascript) имхо зло.

Qasta
()
Последнее исправление: Qasta (всего исправлений: 1)
Ответ на: комментарий от chrisred

То есть вы включили @EnableGlobalMethodSecurity (как указано в http://docs.spring.io/spring-boot/docs/1.5.1.RELEASE/reference/htmlsingle/#bo... ), а он всё равно при заходе на ваш контроллер (не на статическую страницу, а на контроллер - чтобы был Java-метод какой-нибудь) не возвращает 401 код, не показывает форму логина, а просто отрабатывает? Там по-умолчанию должна быть BASIC авторизация - добейтесь, чтобы она заработала.

Ну и выложите куда-нибудь ваш проект, потому что иначе придется гадать по фотографии. Или хотя бы основные файлы (класс контроллера, классы, где прописаны аннотации spring-а, отвечающие за всю конфигурацию, web.xml если есть, веб-фильтры если есть). И список зависимостей из pom.xml тоже дайте (при условии, что плагины настроены по-дефолту + включен плагин спрингбута)

P.S. Я сходу не скажу, насколько spring-boot дружен с деполем в tomcat (а не запуском как standalone приложение). В принципе, дело может быть и в этом...

Qasta
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.