我们正在尝试在另一个portlet(Portlet B)中使用portlet(Portlet A)的服务。我们已将服务的jar文件(Portlet A)放在\tomcat-7.0.27\webapps\ROOT\WEB-INF\lib
中,并将此jar包含在另一个portlet(Portlet B)的display plugin packages.xml中。
我们正在使用外部数据库,即我们在portlet-spring.xml中进行了更改。
如果我部署包含实际服务(Portlet A)的portlet并调用某些服务方法,那么它被称为fine&它获取数据。如果我们在另一个portlet(Portlet B)中编写相同的方法,那么它将获取数据。 但是当我们尝试在另一个portlet(Portlet B)中编写一个尚未在实际服务portlet(Portlet A)中调用的方法时,会出现问题,然后才会获取数据。它总是带来一片空白。
任何人都可以提出可能的原因。
我们无法将所有portlet放在同一个jar中,因为portlet都不是很大。(约35)。
或者是否有其他更好的解决方案,而不是将jar文件放在lib目录中?
答案 0 :(得分:3)
幸运男孩评论,一个选项是将* -service.jar文件放在全局类路径中,tomcat/lib/ext
另一种选择是明确命名依赖项:编辑插件的WEB-INF/liferay-plugin-package.properties
并将依赖项添加到此插件所需的另一个插件中:
required-deployment-contexts=my-other-portlet,my-custom-hook
这将确保包含此声明的插件仅在部署了依赖项后才会部署,并且还会将其服务jar复制到“本身” - 例如my-other-portlet-service.jar
和my-custom-hook-service.jar
会自动结束您自己的网络应用程序,随时可以使用。