2017-03-09 5 views
0

나를 ConfigurationFactory로 사용할 수있는 OSGI 서비스를 구현하려는 중입니다. 서비스 구현에는 아래와 같이 두 가지 속성 만 있습니다. @Reference ("(service.label = TESTCALL)") Felix SCR 주석 오류

@Property(value="this is service variable property value") 
static final String MY_SERVICE_VARIABLE = "service.variable"; 

@Property(description="Label for this MyService") 
private static final String MY_SERVICE_LABEL = "service.label"; 

와 내가 잘 컴파일하고 여러 서비스 구성에서 임의로 데이터를 검색 아래의 코드로이 서비스를 호출하는 것을 시도하고있다 OSGI 서블릿에서이 서비스 구성 데이터를 검색하고 있습니다.

@Reference 
MyService myservice; 

하지만 난 아래의 오류에 직면하고 컴파일하는 동안 service.label를 사용하여 내 OSGI 서블릿에서 코드 아래 사용하여 서비스를 호출하고 각 구성 데이터를 얻을 싶어 할 때.

@Reference("(service.label=TESTCALL)") 
MyService myservice; 

심볼 [ERROR] 기호 찾을 수있어서의 값() ERROR] 위치 : @interface의 org.apache.felix.scr.annotations.Reference.

답변

0

AEM 6.x 버전의 경우 @Reference(target = "(service.label=TESTCALL)")을 사용하면 컴파일해야합니다. 나는 이전에 나의 gourivar github에 사용했던 샘플 POC를 업로드했다. 내 aemvardhan.wordpress.com

+0

고마워, 효과가 있었다. 예제 코드는 – krish

0

서비스에는 Service Factory 주석이 없을 가능성이 큽니다. 같은 뭔가 :

@Service 
    @Component(
     metatype=true,label="my service", 
     description="sample my service implementation", 
     configurationFactory=true) 
     public class MyServiceImpl implements MyService { 

    } 

참고 configurationFactory=true 속성. 이렇게하면 서비스가 여러 구성을 가질 수 있습니다.

+0

내 서비스에는 이미 주석이 포함되어 있으며 ** @ Reference MyService myservice로 사용할 때 작동한다. ; ** ** @ Reference ("(service.label = TESTCALL)") MyService myservice; **로 사용하면 컴파일이 실패합니다. 왜냐하면 구성 데이터를 분리하여 검색하려고하기 때문에 (즉, 여러 서비스 중 모든 구성 데이터) – krish

+0

같은 질문을 다른 방법으로 물어 보겠습니다. ** 공장 서비스를 여러 구성 데이터로 검색하는 방법 **. 모든 코드 스 니펫이 도움이됩니다. – krish

+0

당신의 접근 방식은 괜찮습니까? 코드 스 니펫을 보지 않고 (어쩌면 요긴 할 수 있겠습니까?) 컴파일 오류의 원인을 볼 수 없습니다. https://cqdump.wordpress.com/2014/08/05/managing-multiple-instances-of-services-osgi-service-factories/에서 코드 스니퍼를 시도해보고 로컬로 시도한 것처럼 작동하는지 확인할 수 있습니다. 그리고 그것은 ok를 컴파일합니다 (바인딩을 테스트하지는 않았지만 여기에는 문제가되지 않습니다). –