我将service.jar
从一个portlet(让我们称之为Portlet A
)包含到另一个客户端Portlet的WEB-INF/lib
文件夹中,以便客户端可以使用*LocalServiceUtil
。请注意,这是我以前很多次成功完成的事情。
但是在这种情况下,我在调用LocalServiceUtil时遇到了这个运行时异常:
[PortletBeanLocatorUtil:38] BeanLocator is null for servlet context [Portlet A's portlet-name]
我几乎可以肯定项目属性或构建portlet A的配置有问题,但我不确定在哪里查看。 Liferay论坛充满了与BeanLocator相关的问题,但每个问题都有另一个解决方案
这两个项目都是针对相同的Liferay SDK和Tomcat Server版本设计和部署的。
修复BeanLocator问题的任何想法?
答案 0 :(得分:0)
* service.jar仅包含来自portlet A的服务的签名,即* LocalService和* Service接口,模型接口和util类(以及通常位于docroot下的服务文件夹中的所有项目)树)而不是实现类。 因此,为了使其工作,必须在服务器中同时部署两个portlet(否则将找不到实现类)。 如果是这种情况,您可以更改portlet B的liferay-plugin-package.properties文件,并将portlet A添加为必需的部署上下文。这将自动注入后者的service.jar。