I tried using sling.servlet.resourceTypes instead of the slingservlet.paths as
suggested but I still have my component's ( CustomExceptionHandlerServlet )
status = "unsatisfied". I think this makes my component unavailable as a
replacement to the default error handler.
The CustomExceptionHandlerServlet servlet is a part of my OSGI bundle. And the
DefaultErrorHandlerServlet provided by Sling is a part of
org.apache.sling.servlets.resolver bundle. Do I need to add
org.apache.sling.servlets.resolver.* to the import-package definition of my
bundle ?
My Maven bundle plugin configurations for my OSGI bundle (CUUtilities) looks
like this ..
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>org.consumersunion.cq.CUUtilities</Bundle-SymbolicName>
<Bundle-Activator>org.consumersunion.cq.Activator</Bundle-Activator>
<Export-Package>
com.day.cu.creator.*,org.consumersunion.*,org.consumerreports.*;version="${project.version}",com.emeta.*,org.cu.*,org.jdom.*,com.opensymphony.oscache.*;version="2.1",com.google.*;version="1.0",org.codehaus.jackson.*,net.sf.ehcache.*
</Export-Package>
<Import-Package>*;resolution:=optional</Import-Package>
<Bundle-License>n/a</Bundle-License>
<Bundle-Copyright>Copyright (c) Consumers Reports 2011.
All Rights Reserved.</Bundle-Copyright>
<excludeDependencies>*;scope=provided|runtime</excludeDependencies>
</instructions>
</configuration>
</plugin>
Thanks for any help.
- Praveen
On 7/28/11 8:35 PM, "sam "" <[email protected]> wrote:
can you try @scr.property sling.servlet.resourceTypes =
"sling/servlet/errorhandler/default"
?
On Thu, Jul 28, 2011 at 4:08 PM, Bethoju, Praveen <[email protected]>wrote:
> Hi -
>
> I'd like to create a custom error handler that will handle exceptions
> thrown
> from scripts (at a specific path... ex: /content/api/*) and I want
> errors/exceptions from all other servlets/scripts to be handled in the
> default way (when no custom error handlers are set) using
> DefaultErrorHandlerServlet.
>
> For this purpose, I created a Servlet and mapped it to
> "/apps/sling/servlet/errorhandler/default"
>
> /**
> *
> * @scr.component metatype="no" immediate="true"
> * @scr.service interface="javax.servlet.Servlet"
> *
> * This is the custom error handler servlet
> *
> * @scr.property name="sling.servlet.paths"
> value="/apps/sling/servlet/errorhandler/default"
> * @scr.property name="sling.servlet.prefix" value="0"
> *
> *
> */
> public class CustomExceptionHandlerServlet extends GenericServlet {
>
> /**
> * @scr.reference policy="static"
> */
> protected DefaultErrorHandlerServlet theDefaultErrorHandlerServlet;
>
>
> @Override
> public void service(ServletRequest request, ServletResponse response)
> throws IOException {
>
> SlingHttpServletRequest slingRequest = (SlingHttpServletRequest)
> request;
> SlingHttpServletResponse slingResponse = (SlingHttpServletResponse)
> response;
>
> String resourcePath =
> request.getRequestPathInfo().getResourcePath();
> if(resourcePath.contains("/content/api"))
> {
> // perform custom processing.
> }
> else
> {
> // Somehow forward to the default error handler servlet
> // or call the default error handler servlet, may be this way ?
> theDefaultErrorHandlerServlet.service(request, response);
>
> }
>
> }
>
> }
>
>
> I have two questions:
>
> 1. In Felix, I see that there's an active component called - "
>
> org.apache.sling.servlets.resolver.internal.defaults.DefaultErrorHandlerServ
> let" available. So, I've added a reference to it from my
> CustomExceptionHandlerServlet class. But for some reason, this dependency
> is
> "unsatisfied". Not sure if I am not doing this wiring correctly. Please
> advise.
>
> 2. If I can't wire the DefaultErrorHandlerServlet as in #1 or if its not
> the
> approach to take, is there a way to forward processing of the error to the
> default error handler servlet?
>
> Thanks
> Praveen
>
>
>
>
>
> **
> This e-mail message is intended only for the designated recipient(s) named
> above. The information contained in this e-mail and any attachments may be
> confidential or legally privileged. If you are not the intended recipient,
> you may not review, retain, copy, redistribute or use this e-mail or any
> attachment for any purpose, or disclose all or any part of its contents. If
> you have received this e-mail in error, please immediately notify the sender
> by reply e-mail and permanently delete this e-mail and any attachments from
> your computer system.
>
***
Scanned
**
This e-mail message is intended only for the designated recipient(s) named
above. The information contained in this e-mail and any attachments may be
confidential or legally privileged. If you are not the intended recipient, you
may not review, retain, copy, redistribute or use this e-mail or any attachment
for any purpose, or disclose all or any part of its contents. If you have
received this e-mail in error, please immediately notify the sender by reply
e-mail and permanently delete this e-mail and any attachments from your
computer system.