2013-11-27 27 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的更多信息。