Service Builder Liferay 7.2上未满足的参考配置
我们正在尝试将代码从Liferay 6.2迁移到Liferay 7.2,但在service builder方面遇到了困难。我们遵循了(将依赖项注入器更改为ds,将@Component添加到impl类…)但是当我们在gogo shell中运行ds:unsatisfied命令时,会出现以下情况:Service Builder Liferay 7.2上未满足的参考配置,liferay,liferay-7,declarative-services,Liferay,Liferay 7,Declarative Services,我们正在尝试将代码从Liferay 6.2迁移到Liferay 7.2,但在service builder方面遇到了困难。我们遵循了(将依赖项注入器更改为ds,将@Component添加到impl类…)但是当我们在gogo shell中运行ds:unsatisfied命令时,会出现以下情况: Declarative Service {id: 5522, name: foo.**PersistenceImpl, unsatisfied references: {n
Declarative Service {id: 5522, name: foo.**PersistenceImpl, unsatisfied references:
{name: Configuration, target: (&(origin.bundle.symbolic.name=foo.service)(name=service))}
}
知道发生了什么吗?晚了几个月,但这里是解决我们问题的方法 基本上,我们必须创建两个新类,一个实现org.osgi.framework.BundleActivator,另一个实现com.liferay.portal.upgrade.registry.UpgradeStepRegistrator 执行此操作时,我们强制表更新服务的版本并将其发布到osgi。如果您使用service Builder并更改了默认包名(流程建议),但未手动更新其他引用,则“未满足引用”也可能失败 更详细地说:我也遇到了同样的问题,但在使用Gogo Shell工具(控制面板->Gogo Shell,然后编写
ds:unsatisfied
)检查后,它发现有一些缺少的包应该由*-api组件导出(提示:当您遵循service Builder步骤时,会生成一个*-api和一个*-service组件)
修复
因此,我从*-api组件进入了bnd.bnd
文件,检查了Export-Package
条目。我注意到,尽管我已经将包完全更改为其他内容,但Service Builder流程并不在意,并使用了相同的旧默认包(提示:它通过在服务名称后面附加.exception、.model、.service和.service.persistence来命名它们)。下面是我从bnd.bnd
文件导出包属性的示例:
Export-Package:\
<my_service_name>.exception,\
<my_service_name>.model,\
<my_service_name>.service,\
<my_service_name>.service.persistence
导出包:\
.例外情况\
.模型\
.服务\
.service.persistence
更改我的包的实际名称解决了这个问题
进一步阅读:请详细说明信息..实际上缺少哪个实例..在部署之前您是否运行过service builder..它在您的代码中..所以我看不到;-)您是如何忽略这一点的?我在这里也有同样的行为:(@Victor在下面发布了答案,我可以稍后进一步说明,但这应该会让您开始。