Hmm, just from looking at the error message you're getting and the javadocs I'd say the problem is the actual path "/content/geometrixx/en/products.html". The javadocs for SlingHttpServletRequest.getRequestDispatcher(String, RequestDispatcherOptions) state:
"Returns a RequestDispatcher object that acts as a wrapper for the resource located at the given path. A RequestDispatcher object can be used to include the resource in a response." As far as I see "/content/geometrixx/en/products.html" is not a valid path in the JCR, so try it without the .html extension: "/content/geometrixx/en/products". Hope that helps. Cheers, Jakob On Wed, May 2, 2012 at 10:25 PM, durga nuvvula <[email protected]> wrote: > Hi Jakob, > > Thanks for your response. > > First of all the pretty standard requestDispatcher, i was trying with > Filter.My filter was registered with Ext.HttpService and did not work. The > same code worked well with the Sling Servlet. > > ExtHttpService service = (ExtHttpService) context.getService(sRef); > service.registerFilter(new VanityUrlFilter(), "/testVanityFilter", null, 0, > null); > . > > public void doFilter(ServletRequest request, ServletResponse response, > > FilterChain chain) throws IOException, ServletException { > > RequestDispatcher requestDispatcher = > request.getRequestDispatcher("/content/geometrixx/en/products.html"); > > requestDispatcher.forward(request, response); > > } > > > http://localhost:4502/testVanityFilter was yielding me the response > > > > *The requested URL /content/geometrixx/en/products.html was not found on > this server.* > > > > When I look into the logs, I could see this. > > > > *30.04.2012 12:39:44.854 *INFO* [0:0:0:0:0:0:0:1 [1335807584851] GET > /content/geometrixx/en/products.html HTTP/1.1] > org.apache.sling.engine.impl.SlingRequestProcessorImpl service: Resource > /testVanityFilter not found* > > *I have put the same code in the Sling Servlet and could see that the > request is forwarded to the products page successfully with no url change > in the browser which is desired behaviour.* > > My scenario is Apache server would hit my filter or servlet now, and > filter/servlet would look for whether its a CQ content page or my webapp > page and then if it is a CQ page, forward it to CQ page as above. Would > there be any difference from the security perspective to use the servlet > vis a vis filter. > > Second thing is I have found examples using the SlingHttpServletRequest and > the usage. I was not sure how to call the content/geometrixx/en/products.html. > Of course with out using the SlingHttpServletRequest also I am able to > serve the same using servletRequest object. > > I just want to deal with CQ pages using SlingHttpServletRequest and was not > able to solve with SlingHttpServletRequest. > > SlingHttpServletRequest slingRequest = (SlingHttpServletRequest)request; > > Resource resource = > slingRequest.getResourceResolver().getResource("/content/geometrixx/e > n/products.html"); > > RequestDispatcherOptions requestDispatcherOptions = new > RequestDispatcherOptions(); > > RequestDispatcher requestDispatcher = > slingRequest.getRequestDispatcher(resource,requestDispatcherOptions); > > Best Regards, > Durga > > On Wed, May 2, 2012 at 9:16 PM, Jakob Külzer <[email protected]>wrote: > >> Hello Durga, >> >> What error are you getting? Can you post the stacktrace, that would >> help finding the error tremendously. >> >> Cheers, >> Jakob >> >> On Tue, May 1, 2012 at 6:24 PM, durga nuvvula <[email protected]> >> wrote: >> > Hello Team, >> > >> > >> > I am getting 500 error on using the SlingHttpServletRequest >> requestDispatcher >> > forward. Please suggest. My requirement is to forward the request to that >> > page once the request comes to filter and filter identifies that as a CQ >> > content landing page. I am relatively new using sling and CQ. please >> help. >> > >> > >> > >> > public void doFilter(ServletRequest request, ServletResponse response, >> > >> > FilterChain chain) throws IOException, >> > ServletException { >> > >> > >> > SlingHttpServletRequest slingRequest = >> > (SlingHttpServletRequest)request; RequestDispatcherOptions >> > requestDispatcherOptions = new RequestDispatcherOptions(); >> > RequestDispatcher requestDispatcher = >> > >> slingRequest.getRequestDispatcher("/content/geometrixx/en/products.html",requestDispatcherOptions); >> > requestDispatcher.forward(request, response); >> > >> > } >> > >> > >> > >> > I have looked into the docuemntation for SlingHttpServletRequest to get >> the >> > dispatcher. but there are no examples as such. >> > >> > >> > >> > http://dev.day.com/docs/en/cq/current/javadoc/org/apache/sling/api/Sli >> > ngHttpServletRequest.html#getRequestDispatcher(org.apache.sling.api.r e >> > source.Resource, >> > org.apache.sling.api.request.RequestDispatcherOptions)< >> http://dev.day.com/docs/en/cq/current/javadoc/org/apache/sling/api/SlingHttpServletRequest.html#getRequestDispatcher(org.apache.sling.api.resource.Resource,%20org.apache.sling.api.request.RequestDispatcherOptions) >> > >> > >> > >> > >> > I have looked into the documentation of the sling servlet registration to >> > understand the terms path, selectors, extensions etc. >> > >> > >> > >> > sling.servlet.paths = [ "/libs/sling/sample/html", >> > "/libs/sling/sample/txt" ] sling.servlet.resourceTypes = [ >> > "sling/unused" ] sling.servlet.selectors = [ "img" ] >> > sling.servlet.extensions = [ "html", "txt", "json" ] >> > >> > A Servlet service registered with these properties is registered under >> the >> > following paths: >> > >> > - /libs/sling/sample/html >> > - /libs/sling/sample/txt >> > >> > >> > RequestDispatcher< >> http://docs.oracle.com/javaee/1.4/api/javax/servlet/RequestDispatcher.html?is-external=true >> > >> > *getRequestDispatcher< >> http://dev.day.com/docs/en/cq/current/javadoc/org/apache/sling/api/SlingHttpServletRequest.html#getRequestDispatcher(org.apache.sling.api.resource.Resource) >> > >> > *(Resource< >> http://dev.day.com/docs/en/cq/current/javadoc/org/apache/sling/api/resource/Resource.html >> > >> > resource) >> > Same as >> > getRequestDispatcher(Resource,RequestDispatcherOptions)< >> http://dev.day.com/docs/en/cq/current/javadoc/org/apache/sling/api/SlingHttpServletRequest.html#getRequestDispatcher(org.apache.sling.api.resource.Resource,%20org.apache.sling.api.request.RequestDispatcherOptions) >> > >> > but >> > using empty options.RequestDispatcher< >> http://docs.oracle.com/javaee/1.4/api/javax/servlet/RequestDispatcher.html?is-external=true >> > >> > *getRequestDispatcher< >> http://dev.day.com/docs/en/cq/current/javadoc/org/apache/sling/api/SlingHttpServletRequest.html#getRequestDispatcher(org.apache.sling.api.resource.Resource,%20org.apache.sling.api.request.RequestDispatcherOptions) >> > >> > *(Resource< >> http://dev.day.com/docs/en/cq/current/javadoc/org/apache/sling/api/resource/Resource.html >> > >> > resource, RequestDispatcherOptions< >> http://dev.day.com/docs/en/cq/current/javadoc/org/apache/sling/api/request/RequestDispatcherOptions.html >> > >> > options) >> > Returns a RequestDispatcher object that acts as a wrapper for >> the >> > resource located at the given >> > resource.RequestDispatcher< >> http://docs.oracle.com/javaee/1.4/api/javax/servlet/RequestDispatcher.html?is-external=true >> > >> > *getRequestDispatcher< >> http://dev.day.com/docs/en/cq/current/javadoc/org/apache/sling/api/SlingHttpServletRequest.html#getRequestDispatcher(java.lang.String,%20org.apache.sling.api.request.RequestDispatcherOptions) >> > >> > *(String< >> http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true >> > >> > path, RequestDispatcherOptions< >> http://dev.day.com/docs/en/cq/current/javadoc/org/apache/sling/api/request/RequestDispatcherOptions.html >> > >> > options) >> > Returns a RequestDispatcher object that acts as a wrapper for >> the >> > resource located at the given path. >> > >> > >> > >> > >> > >> > I have tried first 2 api's >> > >> > >> > >> > SlingHttpServletRequest slingRequest = (SlingHttpServletRequest)request; >> > >> > Resource resource = >> > slingRequest.getResourceResolver().getResource("/content/geometrixx/e >> > n/products.html"); >> > >> > RequestDispatcherOptions requestDispatcherOptions = new >> > RequestDispatcherOptions(); >> > >> > RequestDispatcher requestDispatcher = >> > slingRequest.getRequestDispatcher(resource,requestDispatcherOptions); >> > >> > >> > Also tried the 3rd api above in the doFilter code. >> > >> > >> > >> > Should I give the path in the resource with html extension. >> > >> > >> > >> > Any pointers/suggestions to solve this requestDispatcher forward would be >> > appreciable. >> > >> > >> > --Durga >> >> >> >> -- >> Cheers, >> Jakob >> -- Cheers, Jakob
