Interesting.. can you say what tools you are using to get these measurements? We actually have to trouble shoot one 'button' that is extremely slow.... I was trying to look at TPTP but, just as it was the last time I looked at it 3 years ago, it is still unstable and locking up eclipse... :-(
I'd also be interested to see the numbers for the [404 -> DMF -> "/"] vs the [200 -> <jsp:forward ] approach.. it seems like it would be about the same amount of work either way? I agree this is very common and the best practice way should be in the doco somewhere. -----Original Message----- From: Janne Jalkanen [mailto:[email protected]] Sent: Wednesday, December 29, 2010 6:36 PM To: Stripes Users List Subject: Re: [Stripes-users] UrlBinding to / As Ben said, mapping to "/" isn't a good idea. However, since I would assume that this is a fairly common case, I do support the idea of using "" as a special sign for UrlBindings, as suggested on the bottom of STS-688. As for performance, Stripes is nary a peep in my profiler. String manipulation and I/O are way more CPU-intensive than ActionBean binding and validation. For example, I just run 32000 requests against my current test code, and no single Stripes method used more than 0.5% of CPU time. On class level, DefaultActionBeanPropertyBinder managed to use ~1%. On package level, all of Stripes uses about 6%. All other time I get to use on my app. So it's a fair trade, IMO. /Janne On Dec 29, 2010, at 16:19 , Newman, John W wrote: > Did you look at dynamic mapping filter at all? > > Leave your web.xml as is, just paste this in > > <filter> > <filter-name>DynamicMappingFilter</filter-name> > > <filter-class>net.sourceforge.stripes.controller.DynamicMappingFilter</filter-class> > </filter> > <filter-mapping> > <filter-name>DynamicMappingFilter</filter-name> > <url-pattern>/*</url-pattern> > <dispatcher>REQUEST</dispatcher> > <dispatcher>FORWARD</dispatcher> > <dispatcher>INCLUDE</dispatcher> > </filter-mapping> > > And > @UrlBinding("/") > public class Home extends AbstractActionBean<ActionBeanContext> { > > should work fine. Before DMF was added, I would do > > <welcome-file-list> > <welcome-file>Home.action</welcome-file> > </welcome-file-list> > > And make an empty file named Home.action next to WEB-INF... there's a thread > on this in the list archives if you dig. It worked, but I didn't measure > performance. Really if we were to have a serious conversation about ways to > improve performance, it would be a very very long discussion, with a lot to > say about the overuse of reflection. > > -----Original Message----- > From: Janne Jalkanen [mailto:[email protected]] > Sent: Wednesday, December 29, 2010 6:27 AM > To: Stripes Users List > Subject: Re: [Stripes-users] UrlBinding to / > > Folks, > > to follow up on this, it seems that the simplest way to accomplish an > URLBinding to "/" is to create an "/index.jsp" -file which has the following > contents: > > <%@ page language="java" contentType="text/html; charset=UTF-8" > pageEncoding="ISO-8859-1"%> > <% > // > // We just simply redirect to the proper actionbean. > // > > request.getRequestDispatcher( "/action/mybean" > ).forward(request,response); %> > > Also ensure that index.jsp is in your welcome-file-list. > > There seems to be no more performance penalty on Tomcat 6, oddly > enough. You'll just need to be careful that you have your Servlet > Filters mapped properly in web.xml, since RequestDispatcher.forward() > does not rerun the filter chain. (FWIW, I tried setting up REQUEST and > FORWARD dispatchers for StripesFilter, but got very quickly into > infinite loops, which were severely detrimental to the performance of > my web site. So just map the filters you need properly for *.jsp and > you should be fine.) > > This change alone bumped my Yottaa score up by 10 notches compared to > just blindly mapping action/mybean as a welcome-file. :-) > > /Janne > > On 29 Dec 2010, at 00:31, Janne Jalkanen wrote: > >> Hi folks! >> >> I need to map the root of my site to a particular ActionBean. Now, the >> simple way to do this is of course to use a welcome-file-list in web.xml >> (Tomcat 6.0.x): >> >> <welcome-file-list> >> <welcome-file>action/mybean</welcome-file> >> </welcome-file-list> >> >> but unfortunately this carries a fairly heavy performance penalty: compared >> to accessing action/mybean directly, the performance on EC2 Large instances >> is up to 100ms slower - and I'm seeing a definite bump in CPU usage as well >> (about 5x of what I would use normally). On my local OSX box the difference >> isn't that bad, but I'm still seeing it, especially the CPU usage. There's >> no considerable IO. >> >> So it seems that the welcome-file solution is less than ideal in my >> environment, and before I go and start ripping the guts out of it (or worse, >> changing my production environment), I'm wondering if there's a simple and >> clean way to resolve this the Stripes way. I see >> http://stripesframework.org/jira/browse/STS-688 has some discussion. >> >> Would a custom Servlet Filter be the best solution here? If so, then how >> would I invoke a particular ActionBean from it? >> >> (Here's the interesting part - it's slightly *faster* to have an >> index.jsp redirecting with 302 to /action/mybean than have the >> /action/mybean as the welcome-file. However, I want to steer away >> from redirects, since 1) I want clean URLs, and 2) redirects can be >> quite bad for performance, especially on mobile networks. And 3) it >> bothers me that this should really be faster than have an extra >> redirect loop... I'm wondering if having an ActionBean as a >> welcome-file somehow confuses Tomcat when the file does not exist >> physically.) >> >> /Janne > > > ---------------------------------------------------------------------- > -------- Learn how Oracle Real Application Clusters (RAC) One Node > allows customers to consolidate database storage, standardize their > database environment, and, should the need arise, upgrade to a full > multi-node Oracle RAC database without downtime or disruption > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ > Stripes-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/stripes-users > > > ---------------------------------------------------------------------- > -------- Learn how Oracle Real Application Clusters (RAC) One Node > allows customers to consolidate database storage, standardize their > database environment, and, should the need arise, upgrade to a full > multi-node Oracle RAC database without downtime or disruption > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ > Stripes-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/stripes-users ------------------------------------------------------------------------------ Learn how Oracle Real Application Clusters (RAC) One Node allows customers to consolidate database storage, standardize their database environment, and, should the need arise, upgrade to a full multi-node Oracle RAC database without downtime or disruption http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Stripes-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/stripes-users ------------------------------------------------------------------------------ Learn how Oracle Real Application Clusters (RAC) One Node allows customers to consolidate database storage, standardize their database environment, and, should the need arise, upgrade to a full multi-node Oracle RAC database without downtime or disruption http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Stripes-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/stripes-users
