service - 如何在其他 portlet 中使用 Liferay 服务构建器 jar

标签 service liferay jndi builder

我有一个使用服务构建器构建的 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 错误),所以现在它只是一个数据库连接问题。

问题是:当服务构建器生成的 jar 被放置在某个其他门户中的原始门户之外时,是否存在一些结构依赖性没有得到满足?

最佳答案

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

  • 创建 ServiceLocator放在 Tomcat(或其他应用服务器)的 lib 中的 jar 中。
  • 通过setter将您的bean从服务构建器设置为服务定位器作为spring上下文中的静态字段(setter必须设置静态字段)
  • 接下来实现 bean,它将使用来自服务定位器的 bean 并将 delagate 调用
  • 只需通过放置在 tomcat 库中的类静态字段从服务构建器传递您的 bean(随处可见)
  • 将所需的接口(interface)也放在 lib
  • 的 jar 中

    关于service - 如何在其他 portlet 中使用 Liferay 服务构建器 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13884201/

    相关文章:

    spring - Controller、Service、Repository 和简单的委托(delegate)方法

    c# - 如何异步调用 WCF 服务?

    javascript - AngularJs $filter 在服务中使用函数

    export - 在Liferay中导出和导入的步骤

    Java - JNDI/Active Directory/Kerberos/WebLogic Server - 密码配置

    android - 如何在服务调用中传递 bool 参数

    java - Liferay+ Spring : @ModelAttribute in render method with url parameters

    liferay - 如何替换 Liferay native portlet 上的功能

    java - 如何从运行在服务器外部(Web 应用程序)的 Spring hibernate 项目中使用 JBoss AS7 JNDI 数据源?

    java - 从 Spring 查找 activeMQ 目的地