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



我已经从基础文件com.day.cq.wcm.foundation.profile. impl.tnailimages中为类com.xxx.cq.wcm. found.profile . impl.profileimages创建了一个bundle。

下面是我对这个类所做的修改

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

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

    • @scr。属性名= " sling.servlet。选择器"values.0 = "调整"

    • values.1 = " adjust.small"

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

  4. metattype注释将无法编译CQ5.5我更改了此* @scr.component metattype ="false"

    • @Component(immediate = true)

这个包编译成功,我看到它在OSGi felix控制台,它是在启动模式。即使在那时,我也重新启动了这个bundle以及整个CQ5。

当我使用以下标签

调用图像时

没有空格

servlet ThumbNailImages没有被调用,我在error.log

中看到以下错误

servletengine无法发送回最后一个chunk:软件导致连接中止:socket写错误

此图像未显示在页面中,firebug显示加载URL失败

默认img可以正常工作

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

/libs/基金/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无法在org.apache. sl. servlet .get. defaultgetservlet

中提供请求到/content/dam/geometrixx/portraits/scott_reynolds.jpg. adjustment .small.jpg

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)} Using servlet com.day.cq.dam.core.impl.servlet.BinaryProviderServlet3 (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。

如果您的servlet没有被调用,您应该首先通过/system/console/components/system/console/services webconsole页面验证它是否正确注册为OSGi servlet服务。还要验证服务属性是否与您所想的一致。

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

最后一种方法是设置DEBUG日志级别并观察来自SlingServletResolver类的消息的日志。

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

最新更新