我试图扩展ProfileImages servlet从 /libs/foundation/src/impl/src/main/java/com/day/cq/wcm/Foundation/pro file/impl/ProfileImages.java
并捆绑为OSGI服务。
我有以下注释
@Component(immediate=true)
@SlingServlet(
resourceTypes = {"nt:file"},
methods = {"GET"},
selectors = {"adjust","adjust.small"},
extensions = {"res", "jpg", "png", "gif"}
)
我在捆绑包中看到我的服务,在OSGI控制台中看到服务。但是它不像ProfileImages servlet过去那样做
ProfileImages创建缩略图,如果我们调用以下URL
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 ServletResolverorg.apache.sling. servlet.解析器
我的servlet正在做与吊索servlet解析器中的以下服务相同的事情
服务ID843类型:org.apache.sling. api.source.ResourceProvider
ServletResourceProvider for Servlet at[/libs/Foundation/组件/主/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/file/prof.png.servlet, /libs/foundation/components/primary/nt/file/prof/thumbnail.png.servle /libs/foundation/components/primary/nt/file/prof/thumbnail.jpg.servlet, /libs/foundation/components/primary/nt/file/prof.res.servlet]
我的服务应该列在吊索解析器与id和类似的东西
……/调整.小. jpg.servlet,……/调整.res.servlet我正在使用CRXDE Web版本进行开发是否有任何配置我必须做才能在资源解析器中获得我的服务?
您的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/serviceCompons. xml文件。
因此,如果您打算使用scr注释,恐怕您不会在上传到CQ5之前使用构建生命周期工具来构建您的OSGi包。否则,您必须手动创建服务组件文件。