繁体   English   中英

Servlet服务不良Servlet

[英]Servlet Service poor Servlet

一般而言, ServletServicePoorServlet什么区别? 何时仅使用servlet,何时将servlet定义为OSGI Service?

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
    }

}

PoorServlet不是OSGi服务,因此不会在Sling servlet引擎中注册。 结果,它将在任何路径下都不可用。 这是一个简单的POJO,Sling对此一无所知。

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

还有一个有用的@SlingServlet批注,可以代替@Service @SlingServlet@Service @Component和所有与servlet相关的属性使用:

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

请在Sling文档中找到更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM