Class ProxyServlet

java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
org.pentaho.platform.web.servlet.ServletBase
org.pentaho.platform.web.servlet.ProxyServlet
All Implemented Interfaces:
Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig, org.pentaho.platform.api.engine.ILogger

public class ProxyServlet extends ServletBase
This servlet is used to Proxy a Servlet request to another server for processing and returns that result to the caller as if this Servlet actually serviced it. Setup the proxy by editing the web.xml to map the servlet name you want to proxy to the Proxy Servlet class.

  <servlet>
    <servlet-name>ViewAction</servlet-name>
    <servlet-class>org.pentaho.platform.web.servlet.ProxyServlet</servlet-class>
    <init-param>
       <param-name>ProxyURL</param-name>
       <param-value>http://my.remoteserver.com:8080/pentaho</param-value>
    </init-param>
   </servlet>
 

In the above example, all requests to /ViewAction will be forwarded to the ViewAction Servlet running on the Hitachi Vantara server at my.remoteserver.com:8080

NOTES:

For this to be useful, both Pentaho servers should be using the same database repository.

The receiving server should have the ProxyTrustingFilter enabled to handle authentication.

This Servlet works with GET and POST requests. All requests in the Pentaho BI Platform are currently GET requests.

Author:
Doug Moran
See Also:
  • Field Summary

    Fields inherited from class org.pentaho.platform.web.servlet.ServletBase

    debug

    Fields inherited from interface org.pentaho.platform.api.engine.ILogger

    ACTIVITY_LOG, DEBUG, ERROR, FATAL, INFO, INSTANCE_LOG, SESSION_LOG, SOLUTION_LOG, TRACE, UNKNOWN, WARN
  • Constructor Summary

    Constructors
    Constructor
    Description
    Base Constructor
  • Method Summary

    Modifier and Type
    Method
    Description
    protected URI
    buildProxiedUri(javax.servlet.http.HttpServletRequest request, String userName)
     
    protected void
     
    protected void
    doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
     
    protected void
    doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
     
    protected void
    doProxy(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
     
    protected void
    doProxyCore(URI requestUri, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
     
     
    org.apache.commons.logging.Log
     
     
    void
    init(javax.servlet.ServletConfig servletConfig)
     
    boolean
     
    protected void
    service(javax.servlet.http.HttpServletRequest arg0, javax.servlet.http.HttpServletResponse arg1)
     

    Methods inherited from class org.pentaho.platform.web.servlet.ServletBase

    debug, debug, error, error, fatal, fatal, getLoggingLevel, getObjectName, getPentahoSession, info, info, setCorsHeaders, setLoggingLevel, trace, trace, warn, warn

    Methods inherited from class javax.servlet.http.HttpServlet

    doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service

    Methods inherited from class javax.servlet.GenericServlet

    destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ProxyServlet

      public ProxyServlet()
      Base Constructor
  • Method Details

    • getLogger

      public org.apache.commons.logging.Log getLogger()
      Specified by:
      getLogger in class ServletBase
    • init

      public void init(javax.servlet.ServletConfig servletConfig) throws javax.servlet.ServletException
      Specified by:
      init in interface javax.servlet.Servlet
      Overrides:
      init in class javax.servlet.GenericServlet
      Throws:
      javax.servlet.ServletException
    • getProxyURL

      public String getProxyURL()
    • getErrorURL

      public String getErrorURL()
    • isLocaleOverrideEnabled

      public boolean isLocaleOverrideEnabled()
    • doProxy

      protected void doProxy(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
    • buildProxiedUri

      protected URI buildProxiedUri(javax.servlet.http.HttpServletRequest request, String userName) throws URISyntaxException, MalformedURLException
      Throws:
      URISyntaxException
      MalformedURLException
    • doProxyCore

      protected void doProxyCore(URI requestUri, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
    • copyContent

      protected void copyContent(InputStream in, OutputStream out) throws IOException
      Throws:
      IOException
    • service

      protected void service(javax.servlet.http.HttpServletRequest arg0, javax.servlet.http.HttpServletResponse arg1) throws javax.servlet.ServletException, IOException
      Overrides:
      service in class javax.servlet.http.HttpServlet
      Throws:
      javax.servlet.ServletException
      IOException
    • doPost

      protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException
      Overrides:
      doPost in class javax.servlet.http.HttpServlet
      Throws:
      javax.servlet.ServletException
      IOException
    • doGet

      protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException
      Overrides:
      doGet in class javax.servlet.http.HttpServlet
      Throws:
      javax.servlet.ServletException
      IOException