JSR286规范是否要求在包含portlets的WAR中存在web.xml文件?起初,我是这么认为的,但后来我创建了一个没有web.xml的portlet,并将其部署在Liferay中,它可以完美地工作。那么,它是Liferay的扩展(或bug),还是没有必要拥有这样的文件?
发布于 2012-01-09 21:42:31
正如Olaf所说的那样,portlet只不过是一个web应用程序。Liferay有一个侦听器,它在portlet自动部署时触发。它引爆了war并添加了web.xml和必要的内容。如果你有源代码,你可以检查逻辑。类名是PortletDeployer,方法是getServletContent。在添加web.xml并填充它之后,他们只需使用FileUtil.touch触摸它。
发布于 2012-01-06 06:56:58
我真的不得不深入研究这个规范--但我的假设是,它在这方面遵循servlet规范: portlet应用程序首先被部署到应用程序服务器。如果servlet规范要求有一个web.xml,那么就需要满足这个要求。否则,应用服务器将不会部署WAR (这或多或少是WAR文件格式是否需要或建议使用web.xml的问题
Liferay只有在Apperver部署了web应用程序后才会生效。Liferay本身并不关心web.xml
基于这种争论(不看规范-所以我在这里给出了一个有根据的猜测),我希望JSR 286不会对web.xml发表声明。但是,它可能引用了servlet规范,这反过来可能需要/推荐/提到web.xml。
如果Appserver需要它,或者如果它丢失了,它们的行为又是另一回事了。
https://stackoverflow.com/questions/8749818
复制相似问题