0

我从基础文件 com.day.cq.wcm.foundation.profile.impl.ProfileImages 为类 com.xxx.cq.wcm.foundation.profile.impl.TnailImages 创建了一个包。

这是我在这门课上所做的更改

  1. 默认基础类 ProfileImages 的宽度和高度在 TnailImages 中具有我们自己的默认宽度和高度。

  2. 选择器更改为我们自己的like

    • @scr.property name="sling.servlet.selectors" values.0="adjust"

    • values.1="调整.小"

  3. 变量更改为 private static final String THUMBNAIL = "small";

  4. 元类型注释不会为 CQ5.5 编译我更改了这个 * @scr.component metatype="false"

    • @组件(立即=真)

这个包编译成功,我在 OSGi felix 控制台中看到它,它处于启动模式。即便如此,我还是重新启动了这个捆绑包以及整个 CQ5。

当我使用以下标签调用图像时

任何地方都没有spas

servlet ThumbNailImages 没有被调用,我在 error.log 中看到以下错误

servletengine 无法发回最后一个块:软件导致连接中止:套接字写入错误

此图像未显示在页面中,firebug 显示无法加载 URL

默认 img 工作正常

com.day.cq.wcm.foundation.profile.impl.ProfileImages 类可在

/libs/foundation/src/impl/src/main/java/com/day/cq/wcm/foundation/profile/impl/ProfileImages.java

这是我的注释

 * @Component(immediate = true)
 * @scr.service
 * @scr.property name="sling.servlet.resourceTypes" value="nt:file"
 * @scr.property name="sling.servlet.extensions" values.0="res"
 *                          values.1="jpg"
 *                          values.2="png"
 *                          values.3="gif"
 * @scr.property name="sling.servlet.selectors" values.0="adjust"
 *                                              values.1="adjust.small"
 */

似乎没有调用这个 servlet,当我调用 http://xyz.com:4502/content/dam/geometrixx/portraits/scott_reynolds.jpg.adjust.small.jpg 我收到 404 Cannot serve request to /content /dam/geometrixx/portraits/scott_reynolds.jpg.adjust.small.jpg 在 org.apache.sling.servlets.get.DefaultGetServlet

3 (2013-05-20 11:02:40) TIMER_END{2,resolveServlet(JcrNodeResource, type=dam:Asset, superType=null, path=/content/dam/geometrixx/portraits/scott_reynolds.jpg)} 使用servlet com .day.cq.dam.core.impl.servlet.BinaryProviderServlet 3 (2013-05-20 11:02:40) TIMER_END{2,ServletResolution} URI=/content/dam/geometrixx/portraits/scott_reynolds.jpg.adjust。 small.jpg 由 Servlet=com.day.cq.dam.core.impl.servlet.BinaryProviderServlet 处理

似乎我的 Servlet TnailImages 没有被调用,它总是会使用默认的 servlet。

4

1 回答 1

0

/system/console/components如果您的 servlet 没有被调用,您应该首先通过和/system/console/serviceswebconsole 页面验证它是否已正确注册为 OSGi Servlet 服务。还要验证服务属性是否符合您的想法。

没关系,您可以使用最近的请求控制台页面/system/console/requests来查看 Sling 如何解析测试请求以及它选择哪个 Servlet 或脚本来处理它。

最后的手段是设置 DEBUG 日志级别并查看日志以获取来自SlingServletResolver类的消息。

在您的情况下,问题可能是scott_reynolds.jpg您正在访问的资源的资源类型不是nt:file,在演示图像具有dam:Asset资源类型的 vanilla CQ5.5 系统上。无论如何,该/system/console/requests页面都会向您显示。

于 2013-05-21T08:49:53.667 回答