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显示。