ServletService
和PoorServlet
之间有什么区别?何时仅使用servlet以及何时将servlet定义为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
}
}
答案 0 :(得分:3)
PoorServlet
不是OSGi服务,因此不会在Sling servlet引擎中注册。因此,它不会在任何路径下可用。这是一个简单的POJO,Sling对此一无所知。
ServiceServlet
也不是真正的OSGi组件。为了使其成为OSGi组件,您应该使用添加@Component
和@Service
注释。然后,您可以添加应包含servlet路径的sling.servlet.paths
属性。完成这些修改后,您可以在适当的路径下访问您的servlet。
还有一些有用的@SlingServlet
注释可用于代替@Component
,@Service
以及所有与servlet相关的属性:
@SlingServlet(paths="/bin/my/path")
public class ServiceServlet extends SlingAllMethodsServlet {
...
中找到更多信息