2013-11-27 32 views
2

ServletServicePoorServlet一般有什么区别?何时只使用一个servlet以及何时将servlet定义为OSGI服务?Servlet服务差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服务,并且因此将不会在吊带servlet引擎注册。因此在任何路径下都不可用。这是一个简单的POJO,Sling对此一无所知。

ServiceServlet在你的例子中也不是一个真正的OSGi组件。为了使它成为OSGi组件,您应该使用add @Component@Service注释。然后您可以添加sling.servlet.paths属性,该属性应包含servlet路径或路径。在这些修改之后,您可以在适当的路径下访问您的servlet。

还有有用@SlingServlet注释可以用来代替@Component@Service和所有servlet相关属性:

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

请找到在Sling documentation的更多信息。