0

我们试图在另一个 portlet (Portlet B) 中使用一个 portlet (Portlet A) 的服务。我们已将服务(Portlet A)的 jar 文件放入其中,\tomcat-7.0.27\webapps\ROOT\WEB-INF\lib并将此 jar 包含在另一个 portlet(Portlet B)的显示插件 packages.xml 中。

我们正在使用外部数据库,即我们在 portlet-spring.xml 中进行了更改。

如果我部署包含实际服务(Portlet A)的 portlet 并调用一些服务方法,那么它被称为很好,它会获取数据。如果我们在另一个 Portlet(Portlet B)中编写相同的方法,那么它会获取数据。但是,当我们尝试在另一个 Portlet(Portlet B)中编写尚未在实际服务 Portlet(Portlet A)中调用的方法时,就会出现问题,然后无法获取数据。它总是带来一个空白。

任何人都可以提出可能是什么原因。

我们不能将所有的 portlet 放在同一个 jar 中,因为没有一个 portlet 非常大。(大约 35 个)。

或者除了将jar文件放在lib目录中之外,还有其他更好的解决方案吗?

4

1 回答 1

3

正如 Lucky Boy 评论的那样,一种选择是将您的 *-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.jarmy-custom-hook-service.jar将自动在您自己的 web 应用程序中结束,准备使用。

于 2013-07-09T11:39:27.593 回答