2011-09-13 3 views
4

Eclipse Gemini JPA/DBAccess에서 Eclipse 3.7을 사용하고 있습니다. EntityManagerBuilderFactory를 참조하는 선언적 ServiceComponent를 구현했습니다. 바인드 방법은 다음과 같습니다OSGi 선언적 서비스 - 바인드 메소드에서 ServiceReference 얻기

ServiceReference ref = ... 
    String unitName = (String)ref.getProperty(EntityManagerFactoryBuilder.JPA_UNIT_NAME); 

내가이 ServiceReference의 ServiceRegistry를 검색하기 위해, 또는이 수행 내가 좋아하는이 서비스의 속성을 얻기 위해 ServiceReference 필요하지만

public void bindEntityManagerFactoryBuilder(EntityManagerFactoryBuilder emfBuilder) { 
    emfFactoryBuilders.add(emfBuilder); 
} 

더 우아한 접근법?

public void bindEntityManagerFactoryBuilder(EntityManagerFactoryBuilder emfBuilder, Map properties) 

지도가 포함됩니다 :

환호, 당신은 선언적 서비스 1.1 (가장 최근의 사양 버전)를 사용하는 경우 Muki

답변

10

, 당신은 당신의 바인드 메소드의 서명을 변경할 수 있습니다 바운드 서비스의 서비스 속성 당신이이 방법을 사용할 수 있습니다 ServiceReference 개체에 액세스 할 수 있도록 좋아하는 경우에

1

(이것은 1.0 및 1.1 DS가 지원하는 것) :

public void bindEntityManagerFactoryBuilder(ServiceReference reference)