2014-04-18 3 views
0

CQ5 용 osgi 백엔드 서비스를 만들려고합니다. 우리는 dev 환경으로 eclipse와 함께 cqblueprints archetype을 사용하고 있습니다. 콘솔을 사용하여 CQ에 배포 할 수 있습니다. CQ에 웹 콘솔에서 우리는 내가 (펠릭스 콘솔) 서비스 메뉴에 아무것도 검색하지 않는 경우 내가 생성 한 찾을 수있는,CQ5 (OSGi 번들) 서비스로 Sling Servlet

com.acme.wcm.cq - acme-corporate-servicescom.acme.wcm.cq.acme-corporate-services 
Symbolic Name com.acme.wcm.cq.acme-corporate-services 
Version 1.0.0.SNAPSHOT 
Bundle Location inputstream:acme-corporate-services-1.0.0-SNAPSHOT.jar 
Last Modification Fri Apr 18 12:30:34 PDT 2014 
Description Bundle containing the backend services for acme CQ 
Start Level 20 
Bundle Classpath .,OSGI-INF/lib/json-simple-1.1.jar,OSGI-INF/lib/commons-lang-2.3.jar,OSGI-INF/lib/gson-2.2.4.jar,OSGI-INF/lib/org.apache.servicemix.bundles.rome-1.0_3.jar,OSGI-INF/lib/org.apache.servicemix.bundles.jdom-2.0.2_1.jar,OSGI-INF/lib/org.apache.servicemix.bundles.jaxen-1.1.6_1.jar,OSGI-INF/lib/org.apache.servicemix.bundles.dom4j-1.6.1_5.jar,OSGI-INF/lib/xml-apis-1.0.b2.jar 
Exported Packages com.acme.wcm.cq.exception,version=1.0.0.SNAPSHOT 
com.acme.wcm.cq.feed,version=1.0.0.SNAPSHOT 
com.acme.wcm.cq.feed.util,version=1.0.0.SNAPSHOT 
com.acme.wcm.cq.filter,version=1.0.0.SNAPSHOT 
com.acme.wcm.cq.osgi,version=1.0.0.SNAPSHOT 
com.acme.wcm.cq.search,version=1.0.0.SNAPSHOT 
com.acme.wcm.cq.servlet,version=1.0.0.SNAPSHOT 
com.acme.wcm.cq.servlet.model,version=1.0.0.SNAPSHOT 
com.acme.wcm.cq.util,version=1.0.0.SNAPSHOT 
Imported Packages com.day.cq.search,version=0.0.0 from com.day.cq.cq-search (209) 
com.day.cq.search.result,version=0.0.0 from com.day.cq.cq-search (209) 
com.day.cq.wcm.api,version=1.0.0 from com.day.cq.wcm.cq-wcm-api (288) 
javax.jcr,version=2.0.0 from org.apache.sling.jcr.jcr-wrapper (76) 
javax.jcr,version=1.1.0 from org.apache.sling.jcr.jcr-wrapper (76) 
javax.servlet, ble,version=0.0.0.1_007_JavaSE from org.apache.felix.framework (0) 
javax.swing.tree,version=0.0.0.1_007_JavaSE from org.apache.felix.framework (0) 
javax.xml.bind,version=2.1.0 from org.apache.felix.framework (0) 
javax.xml.namespace,version=0.0.0.fragment_xml from org.apache.felix.framework (0) 
javax.xml.stream,version=1.0.0 from org.apache.felix.framework (0) 
javax.xml.stream.events,version=1.0.0 from org.apache.felix.framework (0) 
javax.xml.stream.util,version=1.0.0 from org.apache.felix.framework (0) 
javax.xml.validation,version=0.0.0.fragment_xml from org.apache.felix.framework (0) 
org.apache.sling.api,version=2.2.0 from org.apache.sling.api (123) 
org.apache.sling.api.request,version=2.3.0 from org.apache.sling.api (123) 
org.apache.sling.api.resource,version=2.3.2 from org.apache.sling.api (123) 
org.apache.sling.api.servlets,version=2.1.0 from org.apache.sling.api (123) 
org.osgi.framework,version=1.6.0 from org.apache.felix.framework (0) 
org.slf4j,version=1.6.4 from slf4j.api (14) 
Manifest Headers Bnd-LastModified: 1397849403046 
Build-Jdk: 1.7.0_45 
Built-By: jsunny 
Bundle-Activator: com.acme.wcm.cq.osgi.Activator 
Bundle-ClassPath: ., OSGI-INF/lib/json-simple-1.1.jar, OSGI-INF/lib/commons-lang-2.3.jar, OSGI-INF/lib/gson-2.2.4.jar, OSGI-INF/lib/org.apache.servicemix.bundles.rome-1.0_3.jar, OSGI-INF/lib/org.apache.servicemix.bundles.jdom-2.0.2_1.jar, OSGI-INF/lib/org.apache.servicemix.bundles.jaxen-1.1.6_1.jar, OSGI-INF/lib/org.apache.servicemix.bundles.dom4j-1.6.1_5.jar, OSGI-INF/lib/xml-apis-1.0.b2.jar 
Bundle-Description: Bundle containing the backend services for acme CQ 
Bundle-ManifestVersion: 2 
Bundle-Name: com.acme.wcm.cq - acme-corporate-services 
Bundle-SymbolicName: com.acme.wcm.cq.acme-corporate-services 
Bundle-Version: 1.0.0.SNAPSHOT 
Created-By: Apache Maven Bundle Plugin 
Embed-Dependency: *; scope=compile|runtime 
Embed-Directory: OSGI-INF/lib 
Embed-Transitive: true 
Embedded-Artifacts: OSGI-INF/lib/json-simple-1.1.jar; g="com.googlecode.json-simple"; a="json-simple"; v="1.1", OSGI-INF/lib/commons-lang-2.3.jar; g="commons-lang"; a="commons-lang"; v="2.3", OSGI-INF/lib/gson-2.2.4.jar; g="com.google.code.gson"; a="gson"; v="2.2.4", OSGI-INF/lib/org.apache.servicemix.bundles.rome-1.0_3.jar; g="org.apache.servicemix.bundles"; a="org.apache.servicemix.bundles.rome"; v="1.0_3", OSGI-INF/lib/org.apache.servicemix.bundles.jdom-2.0.2_1.jar; g="org.apache.servicemix.bundles"; a="org.apache.servicemix.bundles.jdom"; v="2.0.2_1", OSGI-INF/lib/org.apache.servicemix.bundles.jaxen-1.1.6_1.jar; g="org.apache.servicemix.bundles"; a="org.apache.servicemix.bundles.jaxen"; v="1.1.6_1", OSGI-INF/lib/org.apache.servicemix.bundles.dom4j-1.6.1_5.jar; g="org.apache.servicemix.bundles"; a="org.apache.servicemix.bundles.dom4j"; v="1.6.1_5", OSGI-INF/lib/xml-apis-1.0.b2.jar; g="xml-apis"; a="xml-apis"; v="1.0.b2" 
Export-Package: com.acme.wcm.cq.exception; version="1.0.0.SNAPSHOT", com.acme.wcm.cq.feed; uses:="javax.jcr, com.day.cq.search.result, org.apache.sling.api.resource"; version="1.0.0.SNAPSHOT", com.acme.wcm.cq.feed.util; uses:="javax.jcr, com.day.cq.search.result, org.apache.sling.api.resource"; version="1.0.0.SNAPSHOT", com.acme.wcm.cq.filter; uses:="javax.servlet, org.apache.sling.api.request, org.apache.sling.api, org.slf4j"; version="1.0.0.SNAPSHOT", com.acme.wcm.cq.osgi; uses:="org.osgi.framework"; version="1.0.0.SNAPSHOT", com.acme.wcm.cq.search; uses:="javax.jcr, com.day.cq.search.result, org.apache.sling.api"; version="1.0.0.SNAPSHOT", com.acme.wcm.cq.servlet; uses:="org.apache.sling.api.servlets, javax.servlet, org.apache.sling.api, org.slf4j, javax.jcr, com.acme.wcm.cq.search, com.day.cq.search.result, com.acme.wcm.cq.exception, com.acme.wcm.cq.servlet.model"; version="1.0.0.SNAPSHOT", com.acme.wcm.cq.servlet.model; version="1.0.0.SNAPSHOT", com.acme.wcm.cq.util; uses:="javax.jcr, com.day.cq.search.result, org.apache.sling.api, com.day.cq.search, org.apache.sling.api.resource, com.day.cq.wcm.api, org.apache.sling.api.servlets, javax.servlet"; version="1.0.0.SNAPSHOT" 
Import-Package: com.acme.wcm.cq.search, com.day.cq.search, com.day.cq.search.result, com.day.cq.wcm.api, com.sun.msv.datatype; resolution:=optional, com.sun.msv.datatype.xsd; resolution:=optional, javax.jcr; version="[2.0, 3)", javax.servlet, javax.swing.table, javax.swing.tree, javax.xml.bind, javax.xml.namespace, javax.xml.stream, javax.xml.stream.events, javax.xml.stream.util, javax.xml.validation, nu.xom; resolution:=optional, org.apache.sling.api; version="[2.2, 3)", org.apache.sling.api.request; version="[2.2, 3)", org.apache.sling.api.resource; version="[2.1, 3)", org.apache.sling.api.servlets; version="[2.1, 3)", org.gjt.xpp; resolution:=optional, org.jdom; resolution:=optional, org.jdom.input; resolution:=optional, org.jdom.output; resolution:=optional, org.osgi.framework; version="[1.4, 2)", org.relaxng.datatype; resolution:=optional, org.slf4j; version="[1.6, 2)", org.xmlpull.v1; resolution:=optional 
Manifest-Version: 1.0 
Tool: Bnd-1.50.0 

로 번들의 세부 정보를 볼 수 있지만.

정상입니까? 내가 브라우저에서 서블릿을 요청하면이를 확인하려면 나는

http://localhost:4502/apps/path/to/my/servlet 

나는 다음과 같은 오류를 받고 있어요, 간단한 servelet

import java.io.IOException; 
import javax.servlet.ServletException; 
import org.apache.sling.api.SlingHttpServletRequest; 
import org.apache.sling.api.SlingHttpServletResponse; 
import org.apache.sling.api.servlets.SlingSafeMethodsServlet; 
import org.slf4j.Logger; 
org.slf4j.LoggerFactory; 

@Component(immediate = true, metatype = false) 
@Service(value = javax.servlet.Servlet.class) 
@Properties(value = { @Property(name = "sling.servlet.methods", value = { "GET" }), 
     @Property(name = "sling.servlet.paths", value = { "/path/to/my/servlet", "/apps/path/to/my/servlet" }) }) 
public class AbsoluteUrlServlet extends SlingSafeMethodsServlet { 
    private static final long serialVersionUID = -1920460619265757059L; 
    private static final Logger logger = LoggerFactory.getLogger(AbsoluteUrlServlet.class); 

    @Override 
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { 
     logger.debug("AbsoluteUrlServlet::doGet()"); 
     response.setContentType("text/plain"); 
     response.getOutputStream().print("Hello AbsoluteUrlServlet World!"); 
    } 
} 

을 상자에 포장하지만했다. 어떤 자원 문제를 해결하기 위해 몇 가지 포인터를 제공하십시오

Cannot serve request to /apps/path/to/my/servlet in /libs/sling/servlet/errorhandler/404.jsp 
Request Progress: 

     0 (2014-04-18 12:33:58) TIMER_START{Request Processing} 
     0 (2014-04-18 12:33:58) COMMENT timer_end format is {<elapsed msec>,<timer name>} <optional message> 
     0 (2014-04-18 12:33:58) LOG Method=GET, PathInfo=/apps/path/to/my/servlet 
     0 (2014-04-18 12:33:58) TIMER_START{ResourceResolution} 
     0 (2014-04-18 12:33:58) TIMER_END{0,ResourceResolution} URI=/apps/path/to/my/servlet resolves to Resource=NonExistingResource, path=/apps/path/to/my/servlet 
     1 (2014-04-18 12:33:58) LOG Resource Path Info: SlingRequestPathInfo: path='/apps/path/to/my/servlet', selectorString='null', extension='null', suffix='null' 
     1 (2014-04-18 12:33:58) TIMER_START{ServletResolution} 
     1 (2014-04-18 12:33:58) TIMER_START{resolveServlet(NonExistingResource, path=/apps/path/to/my/servlet)} 
     1 (2014-04-18 12:33:58) LOG {0}: no servlet found 
     1 (2014-04-18 12:33:58) TIMER_END{0,resolveServlet(NonExistingResource, path=/apps/path/to/my/servlet)} Using servlet org.apache.sling.servlets.get.DefaultGetServlet 
     1 (2014-04-18 12:33:58) TIMER_END{0,ServletResolution} URI=/apps/path/to/my/servlet handled by Servlet=org.apache.sling.servlets.get.DefaultGetServlet 
     1 (2014-04-18 12:33:58) LOG Applying Requestfilters 
     1 (2014-04-18 12:33:58) LOG Calling filter: org.apache.sling.bgservlets.impl.BackgroundServletStarterFilter 
     1 (2014-04-18 12:33:58) LOG Calling filter: org.apache.sling.i18n.impl.I18NFilter 

하는 결과가 없습니다.

답변

2

마지막으로 이유를 찾을 수 있습니다. 이는에 serviceComponents.xml 내 번들에서 누락 된 인해

나는 내 pom.xml 파일에서 maven-scr-plugin를 놓쳤다. ( My previous thread를 참조하십시오)

+0

는 친절하게 당신이 serviceComponents.xml를 생성 할 수 얼마나 당신의 대답에 포함한다. 이것은 동일한 문제에 직면 한 다른 사람들을 도울 수 있습니다. – rakhi4110

+0

예, POM에 "maven-scr-plugin"이 없습니다. – kallada