16.9. Portlet应用的部署

Spring Portlet MVC应用的部署过程和JSR-168 Portlet应用的一样。然而, 这部分内容常常使人感到困惑,所以值得在这里简单地介绍一下。

通常情况下,portal/portlet容器在servlet容器的某个Web应用中运行, 你的Portlet运行在servlet容器的另一个Web应用里。为了使得Portlet容器能够调用 Portlet应用,Portlet容器必须对一个显式的Servlet进行跨Context的调用,那个Servlet 提供了对在 portlet.xml 定义的Portlet服务的访问支持。

JSR-168规范对这方面没有规定,所以每个Portlet容器都有自己的机制,通常 会引入一些“布署时的处理”来改变Portlet应用并且把Portlet注册到Portlet容器里。

至少,在Portlet应用中 web.xml 文件需要通过修改来注入 Portlet容器会显式调用的Servlet。有时候,单个Servlet实例对Web应用中的所有 Portlet提供支持,有时候,对于每个Portlet需要一个Servlet实例。

有些Portlet容器也会在Web应用中注入类库或者配置文件。Portlet容器需要实现Portlet JSP Tab库以供使用。

最重要的是理解你选择的portal对Portlet布署的要求,并且确保满足它们 (通常是按照它提供的自动布署程序)。仔细阅读portal这方面的文档。

在你布署完Portlet后,检查 web.xml 。有些老的portal 会破坏 ViewRendererServlet 的定义,破坏你的Portlet显示。