4

我有一个使用服务构建器构建的 Liferay 门户项目。在生成 portlet 时,还创建了一个 jar,我想在其他 portlet 中使用该 jar。从这里和其他地方的帖子中,建议的方法是将 myPortletName-portlet-services.jar 放在另一个 portlet 的 WEB-INF/lib 文件夹中。我还看到了 *-portlet-services.jar 放在 Tomcat 的 /lib/ext 文件夹中的位置。我还阅读了应该使用依赖项更新 liferay-plugin-package.properties 的位置。

我尝试了每种方法,每种方法都产生了非常接近工作的结果。服务构建器构建的 jar 引用了与 LR 数据库不同的 jndi/jdbc 全局资源,当从该 jar 调用方法时,我收到“用户缺少权限或找不到对象:”错误(我已在其他地方发布过有关此内容)。

我的预感是 jar 对 Spring/Hibernate 的一些依赖没有得到满足。那,或者当 jar 放置在服务构建器部署的门户之外时,jndi/jdbc 资源不“可见”。无论如何,很明显找到了 jar 的方法(否则可怕的 beanLocator 错误),所以现在它只是一个 DB 连接问题。

问题是:当服务构建器生成的 jar 放置在其他门户中的原始门户之外时,是否存在一些结构依赖关系?

4

1 回答 1

0

要在其他 portlet 中使用 Liferay 服务构建器 jar,请尝试:

  1. 在 Tomcat(或其他应用程序服务器)的 lib 中创建放置在 jar 中的ServiceLocator 。
  2. 通过setter将您的bean从服务构建器设置为服务定位器作为spring上下文中的静态字段(setter必须设置静态字段)
  3. 接下来实现 bean,它将使用来自服务定位器的 bean 并将 delagate 调用

    • 只需通过放置在 tomcat lib 中的类静态字段从服务构建器传递您的 bean(随处可见)
    • 将所需的接口也放在 lib 的 jar 中
于 2014-08-12T07:00:02.697 回答