Согласно документации здесь написано:
Если у вас есть измененный шаблон web.xml, вам нужно будет перенести его в Spring, поскольку Grails 3.x не использует web.xml (хотя его можно включить в src / main / webapp / WEB -INF / web.xml).
, что, как я понимаю, означает, что если я включаю стороннюю проприетарную библиотеку, имеющую web.xml
, то я могу поместить ее в src/main/webapp/WEB-INF
без изменений (вместе со всем остальным, что они помещают в каталог tomcat webapp) и Grails будет загружать его. Правильно ли это толкование? Это то, что подразумевается под этим ответом.
Я запустил приложение Grails 3 с профилем react
(я тоже пробовал профиль web
) и веб-страницей с вызовами их сервлетов. Однако, хотя HTML-файл в webapp
можно найти, сам вызов сервлета возвращает 404
, и я не могу понять, почему. Если я создаю файл войны и развертываю на отдельном коте, вызов сервлета работает, но когда я запускаю так:
./gradlew server:bootRun --debug
тогда это не так, и я не вижу ничего интересного, напечатанного на консоли.
Есть ли какое-то сопоставление URL, которым я должен манипулировать или что-то в application.yml
?
В файле web.xml вызываемый сервлет выглядит следующим образом (это маленький кусочек, правда?):
<servlet>
<servlet-name>DataSourceLoader</servlet-name>
<servlet-class>com.isomorphic.servlet.DataSourceLoader</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DataSourceLoader</servlet-name>
<url-pattern>/isomorphic/DataSourceLoader</url-pattern>
</servlet-mapping>
Я понимаю, что альтернатива состоит в том, чтобы переписать web.xml
с использованием Beans и поместить вещи в resources.groovy
, но я бы предпочел подход, который требует как можно меньше моего кодирования.
[обновление]
Я смог обновить grails-app/conf/spring/resources.groovy
:
import org.springframework.boot.web.servlet.ServletRegistrationBean
// Place your Spring DSL code here
beans = {
DataSourceLoader(ServletRegistrationBean) { bean ->
servlet = new com.isomorphic.servlet.DataSourceLoader()
urlMappings = ['/isomorphic/DataSourceLoader']
}
}
и, похоже, работает ... Тем не менее, я все еще интересуюсь способами использования только web.xml
, если это возможно, что является моим первоначальным вопросом.