2017-01-19 16 views
1

Ближайший StackOverflow вопрос, который объясняет мои симптомы здесь - How can I deploy a Grails 3.0.1 war file in Tomcat7?404 при развертывании Grails 3.1.10 войну tomcat7 или tomcat8

Я нахожусь в процессе обновления приложения Grails 2.3.4 для Grails 3.1.10 и все работает с «grails run-app».

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

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

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

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

Менеджер показывает 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» из «компиляции» в «предоставленный» в файле build.gradle.

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

+0

Проверьте свою папку "webapps" в своей установке tomcat. Возможно, у вас есть проблема с контекстным контуром. Например. когда ваш URL-адрес сервера «http://123.com/», и ваша война была названа «ROOT.war», тогда она будет развернута в «webapps/ROOT» и в Интернете по адресу http://123.com/. , Но когда он был назван «myapp.war», он будет развернут в папке «webapps/myapp» и в сети с контекстным путем: «http://123.com/myapp». – Mexx

+0

Да, война называется myapp-0.1.war ... и, похоже, она устанавливается в правильную папку под webapps/myapp-0.1/https://foo.com:8443/myapp-0.1/, это то, что кота менеджер ссылки на .. и он дает 404. :(Спасибо, однако. – Kirby

ответ

1

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

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

Тогда при развертывании должны иметь правильное имя и вы можете перейти по ссылке https://localhost:8080/myWar

+0

Страшно думать, что созданный Grails 3 (grails create-app) build.gradle будет содержать build.config, который не будет строить для войны из этого я получил меня вперёд, но мне было бы интересно узнать почему. Это также решило мою проблему с военным именем. Спасибо. – Kirby

+0

В моих приложениях grails я не удалял указанные строки, и он отлично разворачивается. Странное поведение, возможно, это зависит от используемой версии tomcat. Нет проблем с tomcat 8.5.9 в моем случае. – Mexx

+0

Вы правы. Это странное поведение, но я вернул их, и это сработало. мой ответ. –