2012-01-05 1 views
1

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

+0

Как мне известно, для этого просто нужно 'portlet.xml'. – home

ответ

1

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

+0

Вы можете увидеть код [здесь] (https://github.com/liferay/liferay-portal/blob/master/portal-impl/src/com/liferay/portal/tools/deploy/PortletDeployer.java#L239) , Итак, портлет WAR без 'web.xml' просто получает один от развертывателя. Ну, это не отвечает на мой конкретный вопрос, но все равно проясняет! Я хотел бы узнать о спецификации, но вашего ответа достаточно. – brandizzi

1

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^