Ok, thanks again for your kind help.  :)

祝好。

束灵杰
Cynric Shu


在 2013年12月6日 星期五,0:13,Joakim Erdfelt 写道:

> DefaultServlet is always more performant than ResourceHandler.
> The DefaultServlet can do more for performance too (ranged requests, 
> compression, caching, etags, resume, etc ...)
>  
> ResourceHandler is an extremely low level and super simple technique for 
> serving content, good for test cases, but it has none of the performance 
> improvement layers that the DefaultServlet provides.
>  
> --
> Joakim Erdfelt <[email protected] (mailto:[email protected])>
> webtide.com (http://www.webtide.com/) - intalio.com/jetty 
> (http://intalio.com/jetty)
> Expert advice, services and support from from the Jetty & CometD experts
> eclipse.org/jetty (http://eclipse.org/jetty/) - cometd.org 
> (http://cometd.org/)
>  
>  
>  
>  
> On Thu, Dec 5, 2013 at 8:46 AM, cynricshu <[email protected] 
> (mailto:[email protected])> wrote:
> > Hi, Joakim
> >  
> > Thank you for reply, I have tried your code, and it work well, thank you so 
> > much!  
> >  
> > But I wonder that, is your solution better than using ResourceHandler (I 
> > mean in performance )?   
> >  
> > Best regards,
> > Cynric Shu
> >  
> >  
> > 在 2013年12月5日 星期四,22:49,Joakim Erdfelt 写道:
> >  
> > > Don't mix HandlerList with resource handler + default handler with 
> > > servlet context handlers.
> > >  
> > > Stay within the ServletContextHandler, and replace the resourceHandler 
> > > with an alternative DefaultHandler.  
> > > Example:
> > >  
> > > package jetty.examples;
> > >  
> > > import javax.servlet.MultipartConfigElement;
> > >  
> > > import org.eclipse.jetty.server.Server;
> > > import org.eclipse.jetty.server.ServerConnector;
> > > import org.eclipse.jetty.servlet.DefaultServlet;
> > > import org.eclipse.jetty.servlet.ServletContextHandler;
> > > import org.eclipse.jetty.servlet.ServletHolder;
> > >  
> > > public class ManyDefaultServletWithMultipart  
> > > {
> > >     public static void main(String[] args)
> > >     {
> > >         System.setProperty("org.eclipse.jetty.servlet.LEVEL","DEBUG");
> > >          
> > >         Server server = new Server();
> > >         ServerConnector connector = new ServerConnector(server);
> > >         connector.setPort(8080);
> > >         server.addConnector(connector);
> > >  
> > >         // Setup the basic application "context" for this application at 
> > > "/"  
> > >         // This is also known as the handler tree (in jetty speak)
> > >         ServletContextHandler context = new 
> > > ServletContextHandler(ServletContextHandler.SESSIONS);
> > >         context.setContextPath("/");
> > >         server.setHandler(context);
> > >  
> > >         // The filesystem paths we will map
> > >         String homePath = System.getProperty("user.home");
> > >         String pwdPath = System.getProperty("user.dir");
> > >         String tmpPath = System.getProperty("java.io.tmpdir");
> > >          
> > >         // A Servlet for API Calls
> > >         ServletHolder holderApi = new ServletHolder("api", 
> > > ExampleApiServlet.class);
> > >         // Configure for MultiPart POST
> > >         holderApi.getRegistration().setMultipartConfig(new 
> > > MultipartConfigElement(tmpPath));
> > >         context.addServlet(holderApi,"/api/*");
> > >  
> > >         // Fist, add special pathspec of "/home/" content mapped to the 
> > > homePath
> > >         ServletHolder holderHome = new ServletHolder("static-home", 
> > > DefaultServlet.class);
> > >         holderHome.setInitParameter("resourceBase",homePath);
> > >         holderHome.setInitParameter("dirAllowed","true");
> > >         holderHome.setInitParameter("pathInfoOnly","true");
> > >         context.addServlet(holderHome,"/home/*");
> > >  
> > >         // Lastly, the default servlet for root content
> > >         // It is important that this is last.
> > >         ServletHolder holderPwd = new ServletHolder("default", 
> > > DefaultServlet.class);
> > >         holderPwd.setInitParameter("resourceBase",pwdPath);
> > >         holderPwd.setInitParameter("dirAllowed","true");
> > >         context.addServlet(holderPwd,"/");
> > >          
> > >         try
> > >         {
> > >             server.start();
> > >             server.dump(System.err);
> > >             server.join();
> > >         }
> > >         catch (Throwable t)
> > >         {
> > >             t.printStackTrace(System.err);
> > >         }
> > >     }
> > > }
> > >  
> > >  
> > >  
> > > --  
> > > Joakim Erdfelt <[email protected] (mailto:[email protected])>
> > > webtide.com (http://www.webtide.com/) - intalio.com/jetty 
> > > (http://intalio.com/jetty)
> > > Expert advice, services and support from from the Jetty & CometD experts
> > > eclipse.org/jetty (http://eclipse.org/jetty/) - cometd.org 
> > > (http://cometd.org/)
> > >  
> > >  
> > >  
> > >  
> > > On Thu, Dec 5, 2013 at 2:48 AM, cynricshu <[email protected] 
> > > (mailto:[email protected])> wrote:
> > > > Hi,  
> > > > Recently I have updated Jetty from 9.0.3 to 9.1.0, and after that, I 
> > > > got a problem.
> > > > I’m using Jetty in embedded mode, here’s my code:
> > > >  
> > > > ServletContextHandler context = new ServletContextHandler(  
> > > >                 ServletContextHandler.SESSIONS);
> > > >         context.setContextPath("/");
> > > >  
> > > >         ServletHolder holder = new ServletHolder(new 
> > > > jettyHttpRequestHandler());  
> > > >         holder.getRegistration().setMultipartConfig(
> > > >                 new MultipartConfigElement(getTmpDir()));
> > > >  
> > > >         context.addServlet(holder, "/api/*");
> > > >  
> > > >         HandlerList internalHandlers = new HandlerList();
> > > >         internalHandlers.addHandler(context);
> > > >         internalHandlers.addHandler(resourceHandler);
> > > >         internalHandlers.addHandler(defaultHandler);
> > > >  
> > > > Server server = new Server();
> > > >         server.setHandler(internalHandlers);
> > > >  
> > > > server.start();
> > > > server.join();
> > > >  
> > > > Then I open the start page in browser, the url is 
> > > > http://localhost:8080/views/admin/dashboard.html  
> > > >  
> > > > In the old version of Jetty(9.0.3), all work well, but with the latest 
> > > > Jetty, I encountered a 404 error. It seems that the Jetty Server didn’t 
> > > > pass the request to resourceHandler.  
> > > >  
> > > > I don’t know why, does anyone know?
> > > > Thanks.
> > > >  
> > > > Best regards,
> > > > Cynric Shu
> > > >  
> > > >  
> > > >  
> > > >  
> > > > _______________________________________________
> > > > jetty-users mailing list
> > > > [email protected] (mailto:[email protected])
> > > > https://dev.eclipse.org/mailman/listinfo/jetty-users
> > > >  
> > >  
> > > _______________________________________________
> > > jetty-users mailing list
> > > [email protected] (mailto:[email protected])
> > > https://dev.eclipse.org/mailman/listinfo/jetty-users
> > >  
> > >  
> > >  
> >  
> >  
> >  
> > _______________________________________________
> > jetty-users mailing list
> > [email protected] (mailto:[email protected])
> > https://dev.eclipse.org/mailman/listinfo/jetty-users
> >  
>  
> _______________________________________________
> jetty-users mailing list
> [email protected] (mailto:[email protected])
> https://dev.eclipse.org/mailman/listinfo/jetty-users
>  
>  


_______________________________________________
jetty-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to