2014-09-04 3 views
2

아마도 슬링 서블릿에서 주석이 무엇인지 또는 제어하는 ​​것을 오해했습니다.슬링 서블릿 요청 메소드 속성이 무시 되었습니까?

나는 다음과 같이 정의 된 서블릿이 있습니다

@Component(immediate = true, metatype = false, label = "File Processor Servlet") 
@Service(serviceFactory = false, value = javax.servlet.Servlet.class) 
@Properties(value = { 
    @org.apache.felix.scr.annotations.Property(name = "sling.servlet.methods", value = { "GET" }), 
    @org.apache.felix.scr.annotations.Property(name = "sling.servlet.extensions", value = { "json" }), 
    @org.apache.felix.scr.annotations.Property(name = "sling.servlet.paths", value = { "/bin/FileProcessor" }) 

지금이 배포하고 좋은 모두가 행복하다, (내가 BTW CQ5.3 환경을 사용하고 있습니다) 잘 작동 할 수 있습니다. 나는 나는 또한 당신이 볼 수 하지만를 잘 작동 doDelete() 방법을 구현 깨달았다 내 코드를 통해 사람을 복용 할 때

그러나 그것은 단지했다, 나는 sling.servlet.methods의 방법으로 그것을 선언하지 않은 속성의 주석.

주석에서 메소드로 DELETE를 생략하면 문제가 발생하고 서블릿이 처리되지 못하게 될 것이라고 생각했습니다.

이 주석의 요점을 놓쳤습니까?

건배.

답변

3

sling.servlet.resourceTypes, sling.servlet.selectors, sling.servlet.extensionssling.servlet.methods 값은 sling.servlet.paths 속성이 설정되지 않은 경우에만 유효하다. paths 속성이 설정된 경우 다른 모든 속성은 무시됩니다.

슬링 문서에서 인용.

sling.servlet.methods - 서블릿에서 지원하는 요청 메소드. 속성 값은 단일 문자열, 문자열 배열 또는 문자열 벡터 여야합니다. sling.servlet.paths 속성이으로 설정된 경우이 속성은 무시됩니다. 이 특성이 누락 된 경우, 서블릿에 의해 실제로 구현/처리되는 메소드와 상관없이 기본값은 GET입니다.

자세한 내용은 Sling Engine Documentation을 참조하십시오.

편집 포함 @BertrandDelacretaz 코멘트 :

그리고 BTW 경로에 서블릿을 등록 서블릿에 매핑되는 자원 유형으로, 원하는 경로에서 리소스를 만들기 같은 문서 "를 인용, 슬링 권장되지 않는다 더 많은 슬링 내장 기능을 활용하면서 대부분의 경우 동일한 결과를 제공합니다. " 액세스 제어와 같은 기능.

+0

링크 된 문서에서 볼 수 있듯이 "서비스"및 "속성"대신 "서블릿 용 특수 어노테이션"을 사용할 수 있습니다 : "SlingServlet". – Thomas

+0

@ 토마스 - 네. 그러나 어느 쪽이든 적용 할 수있는 규칙은 동일합니다. :) – rakhi4110

+2

그리고 경로에 서블릿을 BTW에 등록하는 것은 권장하지 않습니다. 같은 문서를 인용하면 "원하는 경로에 서블릿에 매핑되는 리소스 유형으로 리소스를 생성하면 더 많은 것을 활용하면서 대부분 동일한 결과를 얻을 수 있습니다 Sling built-in features "를 참조하십시오. 액세스 제어와 같은 기능. –