// Added in Servlet 2.5
 public String getContextPath() {
   try {
     Method getContextPathMethod =
         servletContext.getClass().getMethod("getContextPath", (Class<?>[]) null); // $NON-NLS-1$
     return (String) getContextPathMethod.invoke(servletContext, (Object[]) null)
         + proxyContext.getServletPath();
   } catch (Exception e) {
     // ignore
   }
   return null;
 }
 public void removeAttribute(String attributeName) {
   Dictionary<String, Object> attributes = proxyContext.getContextAttributes(httpContext);
   attributes.remove(attributeName);
 }
 public void setAttribute(String attributeName, Object attributeValue) {
   Dictionary<String, Object> attributes = proxyContext.getContextAttributes(httpContext);
   attributes.put(attributeName, attributeValue);
 }
 public Enumeration<String> getAttributeNames() {
   Dictionary<String, Object> attributes = proxyContext.getContextAttributes(httpContext);
   return attributes.keys();
 }
 public Object getAttribute(String attributeName) {
   Dictionary<String, Object> attributes = proxyContext.getContextAttributes(httpContext);
   return attributes.get(attributeName);
 }
 public RequestDispatcher getRequestDispatcher(String arg0) {
   return new RequestDispatcherAdaptor(
       servletContext.getRequestDispatcher(proxyContext.getServletPath() + arg0));
 }