404 при развертывании войны Grails 3.1.10 на tomcat7 или tomcat8

Ближайший вопрос о стеке, объясняющий мои симптомы, находится здесь: Как развернуть военный файл Grails 3.0.1 в Tomcat7?

Я занимаюсь обновлением приложения Grails 2.3.4 до Grails 3.1.10, и все работает с "grails run-app".

Когда я отправляюсь на войну, я не получаю ничего, кроме 404 для любого URL-адреса.

Война развертывается без каких-либо сообщений об ошибках в catalina.out.

Журналы доступа tomcat показывают мои попытки доступа. (не линукс проблема?)

Я могу добраться до менеджера tomcat, и менеджер tomcat показывает мое приложение как «работающее» как истинное. (без ошибок)

Диспетчер показывает myapp-0.1, потому что файл войны был myapp-0.1.war .. пока все в порядке.

Я использую Grails 3.1.10.

Я пробовал как Tomcat 7.0.55, так и 8.0.92.

Я попытался изменить grails.serverUrl в application.groovy на различные значения. Сейчас:

//fix war name after get working
grails.serverUrl = "/myapp-0.1"
System.setProperty("server.contextPath","/myapp-0.1")

Я пробовал выше без "-0.1". (я был удивлен, узнав, что это необходимо - https://stackoverflow.com/a/23664531/104993)

Я попытался изменить «org.springframework.boo: spring-boot-starter-tomcat» с «compile» на «provided» в файле build.gradle.

Пожалуйста, дайте мне знать, что мне нужно уточнить. Трудно вставить выходные данные журнала и файлы конфигурации. (я за брандмауэром)


person Kirby    schedule 19.01.2017    source источник
comment
Проверьте папку «webapps» в вашей установке tomcat. Возможно, у вас проблема с контекстным путем. Например. когда URL-адрес вашего сервера «123.com', а ваша война называется «ROOT.war», тогда она будет развернуто в «webapps/ROOT» и в сети на «123.com». Но когда он был назван «myapp.war», он будет развернут в папке «webapps/myapp» и в сети с контекстным путем: «123.com/myapp».   -  person Mexx    schedule 20.01.2017
comment
да, война называется myapp-0.1.war ... и, похоже, она развертывается в правильную папку в webapps/myapp-0.1/ foo.com:8443/myapp-0.1 - это то, на что ссылается менеджер tomcat.. и он дает 404. :( Спасибо, однако.   -  person Kirby    schedule 20.01.2017


Ответы (1)


Вы добавляете следующую задачу в свой build.gradle, она назовет войну так, как вы хотите:

task wrapper(type:Wrapper){
     war.archiveName='myWar.war'
}

Затем при развертывании у него должно быть правильное имя, и вы можете перейти на https://localhost:8080/myWar.

person Jimi D    schedule 20.01.2017
comment
Страшно подумать, что файл build.gradle, сгенерированный Grails 3 (grails create-app), будет содержать файл build.config, который не готов к войне из коробки. Это продвинуло меня вперед, но я хотел бы знать, почему. Это также решило мою проблему с военным именем! Спасибо. - person Kirby; 20.01.2017
comment
В моих приложениях Grails я не удалял упомянутые строки, и они отлично развертываются. Кажется, это странное поведение, возможно, это зависит от используемой версии tomcat. В моем случае с tomcat 8.5.9 проблем нет. - person Mexx; 24.01.2017
comment
Ты прав. Это странное поведение, но я вставил их обратно, и это сработало. Я отредактировал свой ответ. - person Jimi D; 24.01.2017