Привет Я работаю над приложением, которое имеет странную проблему. Приложение отлично работает как в локальном tomcat, так и удаленном развертывании tomcat, но на некоторых модулях изменяется контекст URL-адреса.Изменение контекста URL-адреса между локальным сервером и tomcat
Вот один из примеров:
первый у меня есть это в моей Web.xml
, чтобы устранить сомнение:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Я следующий вид:
<form name="cra" th:action="@{'/customer/relations/add/'}" method="POST">
<input type="hidden" name="craAcctCustNbr"/>
<input type="hidden" name="craChildAcctCustNbr"/>
</form>
, которая вызывается JavaScript. Заметьте, я использую теги Thymeleaf. Обычно это исправляет URL-адрес, поэтому он находится в контексте приложения.
Теперь в моем местном экземпляре это означает, что localhost:8080/customer/relations/add
, который идет к моему контроллеру mvc весны просто отлично. Однако в удаленном развертывании tomcat, где приложение находится под контекстом testapp
, он должен перевести на XX.XX.XXX.XX:8080/testapp/customer/relations/add
. Это не тот случай, он вместо этого делает это: XX.XX.XXX.XX:8080/customer/relations/add
, который затем дает сообщение 404 с сообщением The requested resource (/customer/account-relations/add/) is not available.
. Остальная часть приложения отлично работает на удаленном сервере развертывания и остается в контексте.
После осмотра, когда я открываю страницу и проверьте источник его определен правильно, как:
<form name="cra" method="POST" enctype="application/x-www-form-urlencoded" action="/testapp/customer/relations/add/">
<input type="hidden" name="craAcctCustNbr" />
<input type="hidden" name="craChildAcctCustNbr" />
</form>
Однако, когда действие происходит оно переходит в то, что я только что объяснил.
У меня нет возможности проверить журнал приложений, и я не уверен, что это проблема с tomcat, проблема с весной или проблема с тимелеафом.
Любые подсказки относительно того, как я могу это решить? В противном случае мне пришлось бы поддерживать доступ к удаленным журналам, и мне потребовалось бы немного времени, чтобы получить учетные данные для доступа к ним.
В качестве первого шага используйте Firebug или что-то, чтобы проверить URL-адрес исходящего запроса. Если в нем есть правильный контекст, вы будете знать, что посмотреть на стороне сервера. Если нет, то клиентская сторона.Он также может показывать перенаправление на неправильный URL-адрес, который может дать дополнительные подсказки. –
Вы пытались установить действие th: action на th: action = "@ {'/ testapp/customer/relations/add /'}", чтобы увидеть, работает ли оно или нет? Я знаю, что это не правильный способ сделать это, но попробуйте сделать снимок. – brnrd
Хорошо, это странно, но, видимо, мое приложение работает отлично. Я ничего не сделал, чтобы это исправить. Странно. Я просто оставил его, как в выходные. Возможно, проблема с сервером? – Nimchip