2013-11-27 4 views
2

일반적으로 ServletServicePoorServlet의 차이점은 무엇입니까? 서블릿을 언제 사용하고 서블릿을 OSGI 서비스로 정의 할 것인가? 서블릿 서비스 열악한 서블릿

PoorServlet

:

public class PoorServlet extends SlingAllMethodsServlet 
{ 
    @Override 
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException 
    { 
     //Do something fun here 
    } 
} 

ServiceServlet :

@Properties({ 
     @Property(name="service.pid", value="mycompany.ServiceServlet",propertyPrivate=false), 
     @Property(name="service.description",value="Service servlet", propertyPrivate=false), 
     @Property(name="service.vendor",value="mycompany", propertyPrivate=false) 
}) 
public class ServiceServlet extends SlingAllMethodsServlet 
{ 
    @Override 
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException 
    { 
     //Do something fun here 
    } 

}

답변

3

PoorServlet은 OSGi 서비스 아니므 슬링 서블릿 엔진에 등록되지 않는다. 결과적으로 어떤 경로에서도 사용할 수 없습니다. 그것은 단순한 POJO이고 슬링은 그것에 대해 아무것도 모릅니다.

ServiceServlet은 실제로 OSGi 구성 요소가 아닙니다. OSGi 구성 요소로 만들려면 추가 @Component@Service 주석을 사용해야합니다. 그런 다음 서블릿 경로를 포함해야하는 sling.servlet.paths 속성을 추가 할 수 있습니다. 이러한 수정 후에는 적절한 경로로 서블릿에 액세스 할 수 있습니다.

@Component, @Service 대신 사용할 수있는 유용한 @SlingServlet 주석 모든 서블릿 관련 속성도있다 :

@SlingServlet(paths="/bin/my/path") 
public class ServiceServlet extends SlingAllMethodsServlet { 
... 

Sling documentation에서 자세한 정보를 찾을 바랍니다가.

관련 문제