JSR-286 组件是否需要在其 WAR 文件中有一个 web.xml 文件?



JSR 286 规范是否要求在包含 Portlet 的 WAR 中存在web.xml文件?起初,我是这么认为的,但后来我创建了一个没有web.xml的Portlet,将其部署在Liferay中,并且它完美地工作。那么它是Liferay的扩展名(或错误(,还是没有必要有这样的文件?

正如 Olaf 所说,Portlet 只不过是一个 Web 应用程序。Liferay有一个侦听器,当portlet自动部署时触发。它引爆了战争并增加了网络.xml和必要的内容。如果您有源代码,您可以检查逻辑。类名是PortletDeployer,方法是getServletContent。添加网络后.xml并填充它,他们只需使用 FileUtil.touch 触摸它。

我真的必须深入研究规范 - 但我的假设是它在这方面遵循 servlet 规范:Portlet 应用程序首先部署到应用程序服务器。如果 servlet 规范要求 web.xml 存在,则需要满足此要求。否则,应用服务器将不会部署 WAR(如果 WAR 文件格式需要推荐 Web,这或多或少是一个问题.xml

Liferay只有在Apperver部署了Web应用程序后才会启动。Liferay本身并不关心网络.xml

基于这种争论(并且不看规范 - 所以我在这里给出一个有根据的猜测(,我希望JSR 286不会对web.xml发表声明。但是,它可能引用了servlet规范,这反过来可能需要/推荐/提及web.xml。

如果

应用程序服务器需要它,或者如果缺少它,他们如何表现是另一回事。

最新更新