1

JSR 286 规范是否要求web.xmlWAR 中存在包含 portlet 的文件?起初,我是这么想的,但后来我创建了一个不带web.xml. 那么它是 Liferay 的扩展(或错误),还是不需要这样的文件?

4

2 回答 2

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 需要它,或者如果它丢失了它们的行为是另一回事。

于 2012-01-05T22:56:58.013 回答
1

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

于 2012-01-09T13:42:31.317 回答