2013-11-27 4 views
2

В чем разница между ServletService и PoorServlet? Когда использовать только сервлет и когда определять сервлет как службу OSGI?Servlet Service poor Servlet

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, которое должно содержать путь сервлетов или пути. После этих изменений вы можете получить доступ к своему сервлету по соответствующему пути.

Существует также полезно @SlingServlet аннотаций, которые могут быть использованы вместо @Component@Service, и все сервлетные связанные свойства:

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

Вы можете найти более подробную информацию в Sling documentation.