JSR 286规范是否要求在包含portlet的WAR中存在web.xml
文件?起初,我想是这样,但后来我创建了一个没有web.xml
的portlet,在Liferay中部署它并且它完美无缺。那么它是Liferay的扩展(或错误),还是没有必要拥有这样的文件?
答案 0 :(得分:1)
我真的必须深入研究规范 - 但我的假设是它遵循这方面的servlet规范:首先将portlet应用程序部署到应用程序服务器。如果servlet规范要求web.xml存在,则需要满足此要求。否则,Appserver将不会部署WAR(如果WAR文件格式需要或建议 web.xml
,那或多或少是问题 只有在Apperver部署了一个Web应用程序后,Liferay才会启动。 Liferay本身并不关心web.xml基于这种争论(并且没有查看规范 - 所以我在这里给出一个有根据的猜测)我希望JSR 286 不要对web.xml做出声明。但是,它可能引用了servlet规范,而这反过来可能需要/推荐/提及web.xml。
如果Appservers需要它或者如果缺少它们的行为方式又是另一个故事。
答案 1 :(得分:1)
正如奥拉夫所说,portlet只不过是一个Web应用程序。 Liferay有一个侦听器,当portlet自动部署时会触发该侦听器。它爆炸战争并添加web.xml和必要的内容。如果您有来源,可以检查逻辑。类名是PortletDeployer,方法是getServletContent。添加web.xml并填充后,只需使用FileUtil.touch触摸它。