【问题标题】:liferay use service/class from ext plugin in portletliferay 使用 portlet 中 ext 插件的服务/类
【发布时间】:2014-03-14 13:29:28
【问题描述】:

我创建了一个 Liferay 自定义 MVC portlet,它需要调用其他人在已经部署在服务器上的 ext 插件中定义的一些服务/类。有谁知道解决“找不到类/服务”错误需要什么?

提前致谢!

【问题讨论】:

    标签: liferay portlet


    【解决方案1】:

    部署 EXT 插件后,任何插件都可以访问 ext-<plugin-name>-ext-service.jar 中的类,因为它进入全局类路径(tomcat 为 /tomcat/lib/ext),就像 liferay 的 portal-service.jar

    ext-<plugin-name>-ext-impl.jar 中的类只能通过 EXT 和挂钩 JSP(如果有)访问,因为它类似于 portal-impl.jar,因为它驻留在门户类路径中的 \tomcat\webapps\ROOT\WEB-INF\lib 中。

    因此,如果您正在访问 ext-impl.jar 中的类,这似乎是这种情况,那么我很抱歉地说 但您不走运

    如果您可以提供更多信息,可能会找到一些解决方法。

    【讨论】:

    • 我创建了一个自定义 portlet,它每 10 分钟运行一次调度程序;此调度程序正在将记录从文本文件导入 DDL。门户还有一个覆盖 DDL portlet 功能的钩子,当您从其接口添加新记录时,它会自动调用类的方法,然后调用服务,两者都部署在 ext.xml 中。当我通过 Importer portlet(我的 portlet)创建新记录时,需要执行相同的步骤以使一切正常运行:调用 ext 中定义的类,该类将调用其他服务。
    • 我忘了说类和服务都已经定义在ext插件的ext-impl文件夹中了。非常感谢您之前的快速回复!
    • 您可能需要将类从ext-impl 复制到您的portlet 并复制依赖项。但是,如果您使用来自portal-impl 的很多类,那么这似乎不是一个选择。您可以尝试重构并查看是否所有服务都可以移动到您的 portlet 或 ext-service。目前我只能想到这个。
    • 是的,我认为这是唯一的解决方案,但我不确定它是否可行。非常感谢您的宝贵时间!
    【解决方案2】:

    我已经解决了这个问题。我从我的 portlet 直接使用数据库,而不是使用服务,并将所需的 java 函数从 ext 复制到我的 portlet。这已经解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      相关资源
      最近更新 更多