首页 > 解决方案 > Service Builder Liferay 7.2 上的不满意参考配置

问题描述

我们正在尝试将代码从 Liferay 6.2 迁移到 Liferay 7.2,但在服务构建器方面我们遇到了困难。我们已经按照指南(将依赖注入器更改为 ds,将 @Component 添加到 impl 类...)但是当我们在 gogo shell 中运行 ds:unsatisfied 命令时,会出现以下情况:

Declarative Service {id: 5522, name: foo.**PersistenceImpl, unsatisfied references: 
                {name: Configuration, target: (&(origin.bundle.symbolic.name=foo.service)(name=service))}
        }

任何想法发生了什么?

标签: liferayliferay-7declarative-services

解决方案


在您使用 Service Builder 并且您更改了默认包名称(由流程建议)但您没有手动更新其他引用的情况下,也可能出现“不满意的引用”失败。

更详细地说:我遇到了同样的问题,但是在使用 Gogo Shell 工具(控制面板 -> Gogo Shell 然后编写ds:unsatisfied)检查后,它发现有一些丢失的包应该由 *-api 组件导出(提示:当您遵循服务构建器步骤时,会生成一个 *-api 和一个 *-service 组件)。

修复

因此,我bnd.bnd从 *-api 组件进入文件并检查了Export-Package条目。我注意到的是,即使我已经将包更改为完全不同的东西,Service Builder 进程并不关心并使用相同的旧默认包(提示:它通过将 .exception 附加到服务名称来命名它们, .model、.service 和 .service.persistence)。Export-Package以下是文件中我的属性的示例bnd.bnd

Export-Package:\
    <my_service_name>.exception,\
    <my_service_name>.model,\
    <my_service_name>.service,\
    <my_service_name>.service.persistence

将 <my_service_name> 更改为我的包的实际名称解决了这个问题。

进一步阅读:https ://help.liferay.com/hc/en-us/articles/360018168891-Detecting-Unresolved-OSGi-Components


推荐阅读