【问题标题】:Servlet Service poor ServletServlet 服务差 Servlet
【发布时间】:2013-12-13 04:25:26
【问题描述】:

ServletServicePoorServlet 一般有什么区别?何时只使用 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
    }

}

【问题讨论】:

    标签: java servlets osgi aem


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2013-10-15
      • 2016-01-24
      • 1970-01-01
      • 2016-12-30
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      相关资源
      最近更新 更多