2013-05-07 4 views
1

저는 현재 CQ5/AEM으로 작업하고 있으며 인젝터 주석과 비슷한 방식으로 작동하는 @Reference 주석이 있습니다.주석 인젝터가 null로만 나타나면 어떻게 디버그합니까?

우리의 문제는 POM 파일에 잘못된 설정이있어서 주입이 실패한 것입니다.

문제를 일으키는 요소를 확인하기 위해 섹션별로 POM 파일 섹션을 변경해야했습니다. 무력은 분명히 결코 최선의 방법이 아닙니다.

스프링과 같은 다른 프레임 워크에서 주석 인젝터가 실패 할 때이를 디버깅하는 방법은 무엇입니까?

우리가 흔히 볼 수있는 문제가 있으므로 충분한 조언을드립니다.

안부,

바 야니


  <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>2.3.7</version> 
       <configuration> 
        <instructions> 
         <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency> 
         <Embed-Directory>OSGI-INF/lib</Embed-Directory> 
         <Embed-Transitive>true</Embed-Transitive> 
        </instructions> 
       </configuration> 
      </plugin> 

우리는 구성을 제거한 후 그것을 해결했습니다.

그러나 제공된 범위의 복제기 종속성을 설정하여 해결할 수도 있습니다.

  <dependency> 
       <groupId>com.day.cq</groupId> 
       <artifactId>cq-replication</artifactId> 
       <version>5.4.24</version> 
       <scope>provided</scope> 
      </dependency> 

내 핵심 질문은 여전히 ​​당신이 참조에 단지 널 주어진이 문제를 공격하는 방법에 대한 제안을 할 것이다, 우리는 @Reference로 시작하는 경우는 null 것을 가지고 주어진?

답변

1

@Reference는 OSGi Declarative Services (DS)의 메타 데이터를 생성하기 위해 Apache Felix maven-scr-plugin에 의해 처리됩니다.

"주사가 막 실패했습니다"라고 말하는 것은 아닙니다.

빌드 타임에 문제가 발생하면 maven-scr-plugin 구성 오류로 인한 것일 수 있습니다.이 경우 DS 메타 데이터가 올바르게 생성되지 않습니다. 해당 메타 데이터는 target/scr-plugin-generated/OSGI-INF에서 생성됩니다. DS 사양과 비교하여 해당 파일이 올바른지 확인할 수 있습니다. 여기서 생성 된 XML 메타 데이터 파일의 구문은 상당히 간단하며 DS 사양에 문서화되어 있습니다. 또한 빌드시 디버그 정보를 출력하여 이러한 문제를 해결하는 데 도움이되는 mvn -X에 유의하십시오.

반면 빌드 및 DS 메타 데이터는 정상이지만 빌드시 참조가 만족스럽지 않으면 OSGi 콘솔 (Sling 및 CQ5의/system/console 아래)을 통해 확인할 수 있습니다. 필요한 OSGi 서비스 존재하지 않는 경우 시스템 로그에서 가능한 이유를 점검하거나 Java 레벨에서 서비스 모듈을 디버그하십시오.

+0

안녕하세요 Bertrand. 응답 해 주셔서 대단히 감사드립니다. 위의 질문에 대한 업데이트 된 설명을 참조하십시오. 우리를 도와 줄 시간을 찾을 수 있다면 크게 감사하겠습니다. –

+0

Embed-Dependency 및/또는 Artifact 범위 문을 변경 한 후 작동하면 가져온 패키지를 사용할 수 없기 때문에 필요한 서비스가 시작되지 않았거나 클라이언트 번들이 같은 이유로 API 패키지를 보지 못했음을 의미합니다. 이 경우 CQ 로그에 오류가 표시되어야합니다. –

+0

로그를 확인했지만 눈이 멀었 음에 틀림 없습니다. :) 팁 주셔서 감사합니다, 많이 고맙게 생각합니다. –