Saturday, 15 September 2012

jetty - Redirecting root context path or binding it to a servlet or mapping it with a welcome-file -



jetty - Redirecting root context path or binding it to a servlet or mapping it with a welcome-file -

i using jetty-9 in embedded mode , need 1 web application. consequently root url go homepage of application, i.e. like

http://localhost:4444/

should end in servlet. start out with:

servletcontexthandler sccontext = new servletcontexthandler(servletcontexthandler.sessions); sccontext.setcontextpath("/");

none of next worked, neither

sccontext.addservlet(listsservlet.class, "/");

nor

sccontext.setwelcomefiles(new string[]{"/lists})

where /lists mapped listsservlet servlet. 403 (forbidden).

i not utilize defaultservlet, seems handle welcome files. since servletcontexthandler has setwelcomefiles expected contain logic utilize them.

any ideas?

for 403 forbidden error, have security setup not allowing access handlers/servlets.

eliminate security (for now), verify rest working, add together security bit later lock downwards specifics.

if want see suggestions below @ work, consider looking @ code illustration in reply stackoverflow: how correctly back upwards html5 <video> sources jetty.

welcome files appended incoming request path if there nil nowadays @ location. illustration requesting directory , welcome-file of 'index.html' appended request path.

while work ...

class="lang-java prettyprint-override">sccontext.setwelcomefiles(new string[]{"lists"}) // add together default servlet (must named "default") servletholder holderdefault = new servletholder("default",defaultservlet.class); holderdefault.setinitparameter("resourcebase",basedir.getabsolutepath()); holderdefault.setinitparameter("dirallowed","true"); holderdefault.setinitparameter("welcomeservlets","true"); holderdefault.setinitparameter("redirectwelcome","true"); sccontext.addservlet(holderdefault,"/");

it's not aiming for, said root path only. above create changes requests /foo/ /foo/lists

instead, might create more sense utilize rewrite rule + handler instead of welcome-files approach.

class="lang-java prettyprint-override">rewritehandler rewrite = new rewritehandler(); rewrite.sethandler(sccontext); rewritepatternrule rootrule = new rewritepatternrule(); rootrule.setpattern("/"); rootrule.setreplacement("/list"); rootrule.setterminating(true); rewrite.addrule(rootrule); server.sethandler(rewrite);

this rewritepatternrule changes request path / /list , forwards request wrapped sscontext (if want see /list on browser, alter redirectpatternrule instead.

jetty embedded-jetty jetty-9 welcome-file

No comments:

Post a Comment