在cq5中扩展ProfileImages servlet

时间:2013-05-22 01:40:49

标签: osgi cq5 sling

我试图从/ libs / foundation / src / impl / src / main / java / com / day / cq / wcm / foundation / pro file / impl / ProfileImages.java

扩展ProfileImages servlet

并捆绑为OSGI服务。

我有以下注释

@Component(immediate=true)
@SlingServlet(
    resourceTypes = {"nt:file"},
    methods = {"GET"},
    selectors = {"adjust","adjust.small"},
    extensions = {"res", "jpg", "png", "gif"}
)

我在OSGI控制台中的捆绑包和服务中看到了我的服务。但是,它不像用于执行的ProfileImages servlet那样做

如果我们调用以下网址,则ProfileImages会创建缩略图

http://mydomain.com:4502/content/dam/geometrixx/portraits/scott_reynolds.jpg.prof.thumbnail.100.100.jpg

如果我的servlet被调用,我应该得到相同的响应

http://mydomain.com:4502/content/dam/geometrixx/portraits/scott_reynolds.jpg.adjust.small.100.100.jpg

但是我得到的是404来自DefaultGetServlet

似乎Sling servet无法解析我的servlet

我需要知道的一件事是如何在

中更新我的服务

Apache Sling Servlet Resolverorg.apache.sling.servlets.resolver

我的servlet与sling servlet解析器中的以下服务做同样的事情

  

服务ID 843类型:   org.apache.sling.api.resource.ResourceProvider

     

描述:Servlet的ServletResourceProvider   [/libs/foundation/components/primary/nt/file/prof/thumbnail.gif.servl   et,/ libs/foundation/components/primary/nt/file/prof.gif.servlet,   /libs/foundation/components/primary/nt/file/prof/thumbnail.res.servle   t,/ libs/foundation/components/primary/nt/file/prof.jpg.servlet,   /libs/foundation/components/primary/nt/file/prof.png.servlet,   /libs/foundation/components/primary/nt/file/prof/thumbnail.png.servle   T,   /libs/foundation/components/primary/nt/file/prof/thumbnail.jpg.servle   t,/ libs/foundation/components/primary/nt/file/prof.res.servlet]

我的服务应该列在带有id和类似

的吊索解析器中

..... / adjust.small.jpg.servlet,.... / adjust.res.servlet 我正在使用CRXDE网络版进行开发 有什么配置可以让我的资源解析器服务吗?

1 个答案:

答案 0 :(得分:0)

您的servlet无法解析,因为它未在Declarative Services Runtime中注册。 @Component和@SlingServlet注释不会在运行时进行评估,它们是Apache Felix SCR插件项目的一部分,它提供了一个maven插件和ant任务来创建“OSGi Declarative Services”描述符。 http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin.html

要将Servlet注册为OSGi服务,需要OSGI-INF / serviceComponents.xml文件。

因此,如果您打算使用scr注释,我担心在上传到CQ5之前,您不会使用构建生命周期工具来构建OSGi包。 否则,您必须手动创建服务组件文件。