2013-05-22 40 views
0

我想從/ libs/foundation/src/impl/src/main/java/com/day/cq/wcm/foundation/pro file/impl/ProfileImages.java擴展ProfileImages servlet在cq5中擴展ProfileImages servlet

並捆綁爲OSGI服務。

我有以下注釋

@Component(immediate=true) 
@SlingServlet(
    resourceTypes = {"nt:file"}, 
    methods = {"GET"}, 
    selectors = {"adjust","adjust.small"}, 
    extensions = {"res", "jpg", "png", "gif"} 
) 

我看到我在OSGi控制檯束和服務的服務。但是它沒有這樣做是用來做

ProfileImages創建縮略圖,如果我們調用以下URL ProfileImages的servlet

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

看來,吊帶SERVET是不是能解決我的servlet

有一件事我需要知道的是如何讓我的服務

Apache的吊索的Servlet Resolverorg.apache.sling.servlets.resolver

更新

我的servlet正在做同樣的事情,以下服務吊索的servlet解析器

服務ID 843種類型: org.apache.sling.api.resource.ResourceProvider

描述:在 [/libs/foundation/components/primary/nt/file/prof/thumbnail.gif.servl 等,/libs/foundation/components/primary/nt/file/prof.gif ServletResourceProvider爲Servlet的.servlet, /libs/foundation/components/primary/nt/file/prof/thumbnail.res.servle t,/libs/foundation/components/primary/nt/file/prof.jpg.servlet, /libs /基礎/組件/ primary/nt/file/prof.png.servlet, /lib/foundation/components/primary/nt/file/prof/thumbnail.jpg.servle t,/libs/foundation/components/primary/nt/file/prof.res.servlet]

我的服務應與身份證件和吊帶的東西像解析器

...../adjust.small.jpg.servlet上市,.../adjust.res.servlet 我使用CRXDE用於開發的web版本 是否有任何配置需要我通過資源解析器獲取我的服務?

+0

我沒有使用maven這個,是否有必要有maven來解決問題 – user1130906

+0

不,maven是沒有必要的。 – Woodifer

回答

0

您的servlet無法解析,因爲它沒有在Declarative Services Runtime中註冊。 @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註釋,那麼恐怕您不會在使用構建生命週期工具來構建您的OSGi包之前上傳到CQ5。 否則您必須手動創建服務組件文件。