【问题标题】:Extending ProfileImages servlet in cq5在 cq5 中扩展 ProfileImages servlet
【发布时间】:2013-05-16 22:31:15
【问题描述】:

我正在尝试从 /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 那样做

如果我们调用以下 URL,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

但是我得到的是来自 DefaultGetServlet 的 404

Sling servet 似乎无法解析我的 servlet

我需要知道的一件事是如何更新我的服务

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

我的 servlet 与 sling servlet resolver 中的以下服务做同样的事情

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

描述:Servlet 的 ServletResourceProvider 位于 [/libs/foundation/components/primary/nt/file/prof/thumbnail.gif.servl 等,/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 吨, /libs/foundation/components/primary/nt/file/prof/thumbnail.jpg.servle t, /libs/foundation/components/primary/nt/file/prof.res.servlet]

我的服务应该在 sling resolver 中列出,带有 id 和类似的东西

...../adjust.small.jpg.servlet, ..../adjust.res.servlet 我正在使用 CRXDE 网页版进行开发 是否需要进行任何配置才能让我的服务进入资源解析器?

【问题讨论】:

  • 我没有为此使用maven,是否需要使用maven来解决问题
  • 不,不需要 maven。

标签: osgi aem sling


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-06-03
    • 1970-01-01
    • 2015-01-25
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多