Требуется ли портлетам JSR-286 файл web.xml в их файлах WAR? - PullRequest
1 голос
/ 06 января 2012

Требуется ли в спецификации JSR 286 наличие файла web.xml в WAR-файлах, содержащих портлеты? Сначала я так и думал, но потом я создал портлет без web.xml, развернул его в Liferay, и он работал безупречно. Так это расширение (или ошибка) Liferay, или нет необходимости иметь такой файл?

Ответы [ 2 ]

1 голос
/ 09 января 2012

Как правильно сказал Олаф, портлет - это не что иное, как веб-приложение.Liferay имеет прослушиватель, который запускается при автоматическом развертывании портлета.Он взрывает войну и добавляет web.xml и необходимый контент.Вы можете проверить логику, если у вас есть источник.Имя класса - PortletDeployer, а метод - getServletContent.После добавления файла web.xml и его заполнения они просто касаются его с помощью FileUtil.touch.

1 голос
/ 06 января 2012

Мне бы действительно пришлось покопаться в спецификации - но я предполагаю, что она следует спецификации сервлета в этом отношении: приложение с портлетами в первую очередь развертывается на сервере приложений. Если спецификация сервлета требует наличия файла web.xml, это требование должно быть выполнено. В противном случае Appserver не развернет WAR (более или менее вопрос, если для файла WAR формата требуется или , рекомендуется web.xml

Liferay включится только после того, как Apperver развернет веб-приложение. Самому Liferay нет дела до web.xml

Основываясь на этом утверждении (и не глядя на спецификацию - поэтому я даю здесь обоснованное предположение), я ожидаю, что JSR 286 не сделает заявление о web.xml. Однако он, вероятно, ссылается на спецификацию сервлета, а это, в свою очередь, может потребовать / рекомендовать / упоминать web.xml.

А если Appservers требует этого или как они ведут себя, если он отсутствует, это еще одна история.

...