0

我正在尝试从 /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 et, /libs/foundation/components/primary/nt/file/prof.gif.servlet, /libs /foundation/components/primary/nt/file/prof/thumbnail.res.servlet, /libs/foundation/components/primary/nt/file/prof.jpg.servlet, /libs/foundation/components/primary/nt/文件/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]

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

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

4

1 回答 1

0

无法解析您的 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 包。否则,您必须手动创建服务组件文件。

于 2013-06-11T15:57:04.210 回答