0

我将service.jar来自一个 portlet(我们称之为Portlet A)的WEB-INF/lib文件包含到另一个客户端 Portlet 的文件夹中,以便客户端可以使用*LocalServiceUtil. 请注意,这是我以前成功做过很多次的事情。

但是在这种情况下,我在调用 LocalServiceUtil 时遇到了这个运行时异常:

[PortletBeanLocatorUtil:38] BeanLocator is null for servlet context [Portlet A's portlet-name]

我几乎可以肯定 Portlet A 的项目属性或构建配置有问题,但我不确定从哪里查看。Liferay 论坛到处都是 BeanLocator 相关的问题,但每个人都有不同的解决方案

这两个项目都是为相同的 Liferay SDK 和 Tomcat 服务器版本设计和部署的。

解决 BeanLocator 问题的任何想法?

4

1 回答 1

0

*service.jar 仅包括来自 portlet A 的服务的签名,即 *LocalService 和 *Service 接口、模型接口和 util 类(以及通常驻留在项目树的 docroot 下的服务文件夹中的所有内容)和不是实现类。因此,要使其工作,必须在服务器中同时部署两个 portlet(否则将找不到实现类)。如果也是这种情况,您可以更改 portlet B 的 liferay-plugin-package.properties 文件并将 portlet A 添加为所需的部署上下文。这将自动注入后者的 service.jar。

于 2015-01-27T14:30:36.653 回答