我正在使用Eclipse 3.7和Eclipse Gemini JPA / DBAccess。我实现了一个引用EntityManagerBuilderFactory的声明式ServiceComponent。 bind方法如下所示:
public void bindEntityManagerFactoryBuilder(EntityManagerFactoryBuilder emfBuilder) {
emfFactoryBuilders.add(emfBuilder);
}
但是,我需要ServiceReference来获取此服务的属性,例如:
ServiceReference ref = ...
String unitName = (String)ref.getProperty(EntityManagerFactoryBuilder.JPA_UNIT_NAME);
我是否必须在ServiceRegistry中搜索此ServiceReference,还是有更优雅的方法?
欢呼声, 缪奇
答案 0 :(得分:10)
如果您使用的是Declarative Services 1.1(最新的规范版本),则可以将bind方法的签名更改为:
public void bindEntityManagerFactoryBuilder(EntityManagerFactoryBuilder emfBuilder, Map properties)
地图将包含绑定服务的服务属性。
答案 1 :(得分:1)
如果您想访问服务引用对象,可以使用这种方式(1.0和1.1 DSp支持它>
public void bindEntityManagerFactoryBuilder(ServiceReference reference)