4

Eclipse3.7とEclipseGeminiJPA/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を検索する必要がありますか、それともより洗練されたアプローチがありますか?

乾杯、ムキ

4

2 に答える 2

10

Declarative Services 1.1(最新の仕様バージョン)を使用している場合は、bindメソッドのシグネチャを次のように変更できます。

public void bindEntityManagerFactoryBuilder(EntityManagerFactoryBuilder emfBuilder, Map properties)

マップには、バインドされたサービスのサービスプロパティが含まれます。

于 2011-09-13T13:02:41.100 に答える
1

ServiceReferenceオブジェクトにアクセスしたい場合は、次のように使用できます(1.0および1.1 DSでサポートされています)。

public void bindEntityManagerFactoryBuilder(ServiceReference reference)
于 2011-09-14T02:37:37.487 に答える