osgi - Adding a servlet filter that wraps the request into a HttpServletRequestWrapper seem to break page forwading -


i'm having issues getting servlet forwarding work when request have been wrapped httpservletrequestwrapper.

this server-side equinox application, running within eclipse using embedded jetty web server provide httpservice implementation.

to isolate issue, thing field wrap request , pass forward:

public class testfilter implements filter {     public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception {         chain.dofilter(new httpservletrequestwrapper((httpservletrequest)request), response);     }     ... } 

...and servlet nothing trying forward jsp:

@override protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {     requestdispatcher dispatcher = request.getrequestdispatcher("/account.jsp");     try {         dispatcher.forward(request, response);      } catch (exception e) {         e.printstacktrace();     }  } 

according servlet 2.3 spec, request , response objects passed forward method can either original ones, or instance of provided wrappers. need pass custom wrapper, when that, forward fails following exception:

java.lang.stringindexoutofboundsexception: string index out of range: -1     @ java.lang.string.substring(unknown source)     @ org.eclipse.equinox.http.servlet.internal.proxyservlet.service(proxyservlet.java:64)     @ javax.servlet.http.httpservlet.service(httpservlet.java:820)     @ org.eclipse.equinox.http.jetty.internal.httpservermanager$internalhttpserviceservlet.service(httpservermanager.java:318)     @ org.mortbay.jetty.servlet.servletholder.handle(servletholder.java:511)     @ org.mortbay.jetty.servlet.servlethandler.handle(servlethandler.java:390)     @ org.mortbay.jetty.servlet.sessionhandler.handle(sessionhandler.java:182)     @ org.mortbay.jetty.handler.contexthandler.handle(contexthandler.java:765)     @ org.mortbay.jetty.servlet.dispatcher.forward(dispatcher.java:327)     @ org.mortbay.jetty.servlet.dispatcher.forward(dispatcher.java:126)     @ org.eclipse.equinox.http.servlet.internal.requestdispatcheradaptor.forward(requestdispatcheradaptor.java:30)     @ mypackage.internal.signup.platformsetupservlet.dopost(platformsetupservlet.java:53) ... 

if take wrapper away , pass forward original request servlet forward succeeds.

this looks bug in org.eclipse.equinox.http.servlet implementation, might missing something.

am doing wrong?

thank you!!

eduardo born

looks proxyservlet running problems when parsing request's information.

found source of proxyservlet:

http://kickjava.com/src/org/eclipse/equinox/http/servlet/internal/proxyservlet.java.htm

though doesn't match exactly, can see code it's trying extract path info request -- , didn't find "/", expecting. can try tweaking path of servlet maybe, test out?


Comments

Popular posts from this blog

java - SNMP4J General Variable Binding Error -

sql server - python to mssql encoding problem -

windows - Python Service Installation - "Could not find PythonClass entry" -