RE: Strange Action Behaviour (Infinite Loop?) - Potentially Navigation Problem, Still need help!
Hi All, Still havn't resolved the issue below, but have discovered something interesting about it. The button (which sits in a tile) navigates to another page which displays a set of search results. When you click on this button again, and it attempts to navigate again, it falls into the loop below. However if the button returns no navigation instruction, the loop doesn't occur. Can anyone shed any light on this? Is it possibly a tiles + jsf problem, or just a JSF navigation problem? Thanks, Daniel -Original Message- From: Daniel Murley [mailto:[EMAIL PROTECTED] Sent: Saturday, 8 July 2006 9:06 PM To: 'MyFaces Discussion' Subject: Strange Action Behaviour (Infinite Loop?) Hi All, I have a form with a dynamically created panelGrid on it. This panelGrid also contains many other panel grids along with a command button. The nested panelGrids are rotated in and out as requested by the user. However I'm experiencing a problem that when the user hits the commandButton the first time - everything is fine. The second time, the action is fired over and over until MyFaces proceeds to throw a stackoverflow exception. Exception: 2006-07-08 20:49:47,939 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/APP].[Face s Servlet]] Servlet.service() for servlet Faces Servlet threw exception java.lang.StackOverflowError at org.apache.catalina.connector.Request.getSession(Request.java:2017) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:82 2) at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWr apper.java:215) at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRe quest.java:544) at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWr apper.java:215) at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRe quest.java:544) at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWr apper.java:215) at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRe quest.java:544) at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWr apper.java:215) at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRe quest.java:544) at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWr apper.java:215) at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRe quest.java:544) Which repeats until: at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWr apper.java:215) at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRe quest.java:544) at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWr apper.java:215) at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRe quest.java:544) at org.apache.myfaces.context.servlet.SessionMap.getSession(SessionMap.java:72) at org.apache.myfaces.context.servlet.SessionMap.getAttribute(SessionMap.java:4 3) at org.apache.myfaces.context.servlet.AbstractAttributeMap.get(AbstractAttribut eMap.java:87) at org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverI mpl.java:278) at org.springframework.web.jsf.DelegatingVariableResolver.resolveVariable(Deleg atingVariableResolver.java:108) at org.springframework.web.jsf.DelegatingVariableResolver.resolveVariable(Deleg atingVariableResolver.java:108) at org.apache.myfaces.config.LastVariableResolverInChain.resolveVariable(LastVa riableResolverInChain.java:42) at org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable(Va lueBindingImpl.java:574) at org.apache.commons.el.NamedValue.evaluate(NamedValue.java:124) at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:140) at org.apache.commons.el.BinaryOperatorExpression.evaluate(BinaryOperatorExpres sion.java:154) at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:383) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1076) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:59 8) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:60 2) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:60 2) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:60 2) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:135) at org.apache.myfaces.lifecycle.LifecycleImpl.applyRequestValues(LifecycleImpl. java:219) at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:71) at
RE: JSF Performance Problems
Is the result with Myfaces/JSP? Can somebody provide performance comparison with Myfaces/Facelets? JSF is still a new technology, and there are still plenty of rooms for improvements. Furthermore the performance differential wont be as drastic once we factor in business logic, persistence, AJAX etc. IMHO reduce development time is still the most important factor to consider. Regards, Yee From: jfaronson [mailto:[EMAIL PROTECTED] Sent: Sunday, July 09, 2006 8:11 AM To: users@myfaces.apache.org Subject: JSF Performance Problems I grabbed the attachments from the original performance bug https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=3 and ran some JMeter tests against the JSP only and the JSF versions. The pages are really simple, the JSP version outputs a page which is visually identical to the JSF page. The table in question had 10 columns and 50 - 200 rows. Not a huge amount of data. I used MyFaces 1.1.3 as the JSF implementation and ran the test in JBoss 4.0.4 GA running on JDK 1.4.2. Here's the results: Table Rows Average [ms] Median [ms] Hits / Min SamplesJSF Testcase 50 36 30 1300 5007JSP Testcase 50 14 10 4030 5001JSF Testcase 100 56 60 1050 5001JSP Testcase 100 21 20 2700 5001JSF Testcase 200 100 100 590 5001JSP Testcase 200 26 30 2170 5001 This data confirms the discussion in the sun forum. The JSF version started out nearly three times slower than the JSP page. The relative performance of the JSF version degraded to nearly four times slower as table rows were added. So if you are thinking about adopting JSF you should be aware of the performance hit and make sure that you can architect around the problem or get the performance benchmarks adjusted. Perceived performance is important in real life projects so it's more than a theoretical problem. I'd also like to know if anybody has ideas or code samples that make JSF perform better? View this message in context: JSF Performance Problems Sent from the MyFaces - Users forum at Nabble.com.
Large trees
I am working at a project that require very large trees. Which alternative to tree2 are avaible at the moment? And will tree2 support AJAX in the future?
panelNavigation2
I found the problem. navigationMenuItems does NOT work when embedded inside another navigationMenuItem tag It does however work if it is only inside the panelNavigation2 tag. Doesn't this menu system support embedded menu items? If it is suppose to support it then can somebody report this as a bug? Shawn
Re: Large trees
Have a look at the WIKI: http://wiki.apache.org/myfaces/Tree2 Tree2 doesn't support AJAX at the moment, but there has been some discussion for the future. On 7/9/06, O K [EMAIL PROTECTED] wrote: I am working at a project that require very large trees. Which alternative to tree2 are avaible at the moment? And will tree2 support AJAX in the future?
Re: JSF Performance Problems
Faclets gives you +10 - 15% more On 7/9/06, Yee CN [EMAIL PROTECTED] wrote: Is the result with Myfaces/JSP? Can somebody provide performance comparison with Myfaces/Facelets? JSF is still a new technology, and there are still plenty of rooms for improvements. Furthermore the performance differential won't be as drastic once we factor in business logic, persistence, AJAX etc. IMHO reduce development time is still the most important factor to consider. Regards, Yee From: jfaronson [mailto:[EMAIL PROTECTED] Sent: Sunday, July 09, 2006 8:11 AM To: users@myfaces.apache.org Subject: JSF Performance Problems I grabbed the attachments from the original performance bug https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=3 and ran some JMeter tests against the JSP only and the JSF versions. The pages are really simple, the JSP version outputs a page which is visually identical to the JSF page. The table in question had 10 columns and 50 - 200 rows. Not a huge amount of data. I used MyFaces 1.1.3 as the JSF implementation and ran the test in JBoss 4.0.4 GA running on JDK 1.4.2. Here's the results: Table Rows Average [ms] Median [ms] Hits / Min Samples JSF Testcase50 36301300 5007 JSP Testcase50 14104030 5001 JSF Testcase100 56601050 5001 JSP Testcase100 21202700 5001 JSF Testcase200 100 100 590 5001 JSP Testcase200 26302170 5001 This data confirms the discussion in the sun forum. The JSF version started out nearly three times slower than the JSP page. The relative performance of the JSF version degraded to nearly four times slower as table rows were added. So if you are thinking about adopting JSF you should be aware of the performance hit and make sure that you can architect around the problem or get the performance benchmarks adjusted. Perceived performance is important in real life projects so it's more than a theoretical problem. I'd also like to know if anybody has ideas or code samples that make JSF perform better? View this message in context: JSF Performance Problems Sent from the MyFaces - Users forum at Nabble.com. -- Matthias Wessendorf futher stuff: blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com
Re: Currrent Best Available Version of MyFaces
On 7/8/06, iSquareOne LLC [EMAIL PROTECTED] wrote: Another thing is we experienced problem with f:inputDate f:inputCalendar, and eventually we gave that up and use inputText instead. Is there any improvement on these two tags? inputCalendar bugs were fixed right after the 1.1.1 release, so upgrading should solve those problems.
Re: Currrent Best Available Version of MyFaces
but myfaces core 1.1.3 has a blocker bug, so not really usable. -Matt On 7/9/06, Mike Kienenberger [EMAIL PROTECTED] wrote: On 7/8/06, iSquareOne LLC [EMAIL PROTECTED] wrote: Another thing is we experienced problem with f:inputDate f:inputCalendar, and eventually we gave that up and use inputText instead. Is there any improvement on these two tags? inputCalendar bugs were fixed right after the 1.1.1 release, so upgrading should solve those problems. -- Matthias Wessendorf futher stuff: blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com
panelnavigation2 stylesheet not working in form?
When panelNavition2 is inside a form the stylesheet doesnt work? do anyone know a workaround for this problem? thanks in advance, ldr_ -- View this message in context: http://www.nabble.com/panelnavigation2-stylesheet-not-working-in-form--tf1915469.html#a5243964 Sent from the MyFaces - Users forum at Nabble.com.
Re: Style not getting reflected.
I have the same problem, when the panelnavigation2 is inside a form... did u find a solution? /ldr_ -- View this message in context: http://www.nabble.com/Style-not-getting-reflected.-tf1029954.html#a5244045 Sent from the MyFaces - Users forum at Nabble.com.
Re: Currrent Best Available Version of MyFaces
Well dude, we just posted a RC for myfaces core [1] http://people.apache.org/~matzew/myfaces/core/ you may take a look, because MyFaces 1.1.3 is not usable (IMO) -Matt On 7/9/06, Matthias Wessendorf [EMAIL PROTECTED] wrote: but myfaces core 1.1.3 has a blocker bug, so not really usable. -Matt On 7/9/06, Mike Kienenberger [EMAIL PROTECTED] wrote: On 7/8/06, iSquareOne LLC [EMAIL PROTECTED] wrote: Another thing is we experienced problem with f:inputDate f:inputCalendar, and eventually we gave that up and use inputText instead. Is there any improvement on these two tags? inputCalendar bugs were fixed right after the 1.1.1 release, so upgrading should solve those problems. -- Matthias Wessendorf futher stuff: blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com -- Matthias Wessendorf futher stuff: blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com
RE: Tomahawk: Tree2: TreeNodeBase.getChildCount() question - Lazy Loading issue.
In your example, you have the FolderNode as an inner class, does it have to be? Couldn't I have the following separate class files: FolderNode FileNode BaseTreeNode In Step 2: create the directory node (inner class) - isn't this the same as the FolderNode example at the bottom of your blog, except it is specific to your application? Thanks, --Todd -Original Message- From: Andrew Robinson [mailto:[EMAIL PROTECTED] Sent: Friday, July 07, 2006 4:17 PM To: MyFaces Discussion Subject: Re: Tomahawk: Tree2: TreeNodeBase.getChildCount() question - Lazy Loading issue. The magic of my code is just the fact that the base node reports 1 for the child count *only if* the node has not loaded the children yet and the node is not expanded. That is the big gotcha. If you are not using TreeModelBase or the default TreeState that it comes with that base tree node from my blog will not work. My code is also using 1.1.2 but I don't think that should matter. Your repeated A is because you reported a node count of 1, but returned more or less nodes than 1 as children (that is why I had to add the expanded code to my node). What problems were you having with my code? I can try to help that way, or if it doesn't seem to be working out, I can try during my free time to build an example ZIP for you with source that does the lazy loading. Were you getting errors, or was the tree just not working? BTW - I am using TreeModelBase and not changing the expansion state of the model (no overrides or customizations). -Andrew On 7/7/06, Todd Patrick [EMAIL PROTECTED] wrote: I have been unsuccessful in implementing the Lazy Loading technique that was described in the wiki or as described using AjaxAnywhere by Andrew R. By all means, this is my own fault and no one else, I greatly appreciate everyone's help! Therefore, I am at this point: I really just need the plus sign navigation displayed for every node, no matter if the node has a child or not. A user that clicks on the plus sign will run a server ActionEvent that will get the children for that node. If there is no children, do nothing. I went back and studied the following comment on Andrew R. blog: The tree2 renderer looks only at the getChildCount method, not the getChildren method when rendering. Meaning that if getChildCount should return 0, getChildren will never be called unless the node is expanded. Ok, good... now I should just be able to override the getChildCount method if I extend the TreeNodeBase class, such as: public int getChildCount() { return 1; } So, in combination with the wiki example Alternative Tree2 Lazy Loading Method...by jtmille3: public class LazyTreeNode extends TreeNodeBase { private static final long serialVersionUID = -6870203633601493362L; public LazyTreeNode() { } public LazyTreeNode(String type, String description, boolean leaf) { super(type, description, leaf); } public LazyTreeNode(String type, String description, String identifier, boolean leaf) { super(type, description, identifier, leaf); } public int getChildCount() { return 1; } public List getChildren() { // if there are no children, try and retrieve them if (super.getChildren().size() == 0) { super.getChildren().add(new LazyTreeNode(document, + id, + id,false)); } return super.getChildren(); } } This doesn't work. What I end up with is the parent value repeated such as: - A |_ A |_ A |_ A Instead, I should have: - A |_ B |_ C |_ D The way I build my tree children is in a *for* loop in the following method: public void getTreeTransactBranch(String _transactID, TreeNode _transactNode) throws NamingException{ InitialContext ctx = new InitialContext(); DataSource ds = (javax.sql.DataSource) ctx.lookup(jdbc/__Pool); Connection con; List TransactRow treeBranch = new LinkedList(); try { con = ds.getConnection(); try { TransactRow tree = new TransactRow(); treeBranch = tree.selectByParentID(con, _transactID); for (TransactRow row : treeBranch) { childTransactLeafLabel.append(row.getXactTypeID()); childTransactLeafLabel.append(spacer); childTransactLeafLabel.append(row.getName()); childTransactLeafLabel.append(spacer); childTransactLeafLabel.append(this.getDuration(row.getTCreated())); _transactNode.getChildren().add(new LazyTreeNode(transactions, childTransactLeafLabel.toString(), row.getTransactID(), false)); childTransactLeafLabel.delete(0, childTransactLeafLabel.length()); } } catch
Re: Tomahawk: Tree2: TreeNodeBase.getChildCount() question - Lazy Loading issue.
There is no reason to have to create the node as an inner class. I did it for speed sake as I was extremely short on time at work. The outer class had the model, and method to load the children nodes, so it was the most expedient place to put it. If you don't have it as and inner class you would just need to refer to an external source to load the unloaded nodes. On 7/9/06, Todd Patrick [EMAIL PROTECTED] wrote: In your example, you have the FolderNode as an inner class, does it have to be? Couldn't I have the following separate class files: FolderNode FileNode BaseTreeNode In Step 2: create the directory node (inner class) - isn't this the same as the FolderNode example at the bottom of your blog, except it is specific to your application? Thanks, --Todd -Original Message- From: Andrew Robinson [mailto:[EMAIL PROTECTED] Sent: Friday, July 07, 2006 4:17 PM To: MyFaces Discussion Subject: Re: Tomahawk: Tree2: TreeNodeBase.getChildCount() question - Lazy Loading issue. The magic of my code is just the fact that the base node reports 1 for the child count *only if* the node has not loaded the children yet and the node is not expanded. That is the big gotcha. If you are not using TreeModelBase or the default TreeState that it comes with that base tree node from my blog will not work. My code is also using 1.1.2 but I don't think that should matter. Your repeated A is because you reported a node count of 1, but returned more or less nodes than 1 as children (that is why I had to add the expanded code to my node). What problems were you having with my code? I can try to help that way, or if it doesn't seem to be working out, I can try during my free time to build an example ZIP for you with source that does the lazy loading. Were you getting errors, or was the tree just not working? BTW - I am using TreeModelBase and not changing the expansion state of the model (no overrides or customizations). -Andrew On 7/7/06, Todd Patrick [EMAIL PROTECTED] wrote: I have been unsuccessful in implementing the Lazy Loading technique that was described in the wiki or as described using AjaxAnywhere by Andrew R. By all means, this is my own fault and no one else, I greatly appreciate everyone's help! Therefore, I am at this point: I really just need the plus sign navigation displayed for every node, no matter if the node has a child or not. A user that clicks on the plus sign will run a server ActionEvent that will get the children for that node. If there is no children, do nothing. I went back and studied the following comment on Andrew R. blog: The tree2 renderer looks only at the getChildCount method, not the getChildren method when rendering. Meaning that if getChildCount should return 0, getChildren will never be called unless the node is expanded. Ok, good... now I should just be able to override the getChildCount method if I extend the TreeNodeBase class, such as: public int getChildCount() { return 1; } So, in combination with the wiki example Alternative Tree2 Lazy Loading Method...by jtmille3: public class LazyTreeNode extends TreeNodeBase { private static final long serialVersionUID = -6870203633601493362L; public LazyTreeNode() { } public LazyTreeNode(String type, String description, boolean leaf) { super(type, description, leaf); } public LazyTreeNode(String type, String description, String identifier, boolean leaf) { super(type, description, identifier, leaf); } public int getChildCount() { return 1; } public List getChildren() { // if there are no children, try and retrieve them if (super.getChildren().size() == 0) { super.getChildren().add(new LazyTreeNode(document, + id, + id,false)); } return super.getChildren(); } } This doesn't work. What I end up with is the parent value repeated such as: - A |_ A |_ A |_ A Instead, I should have: - A |_ B |_ C |_ D The way I build my tree children is in a *for* loop in the following method: public void getTreeTransactBranch(String _transactID, TreeNode _transactNode) throws NamingException{ InitialContext ctx = new InitialContext(); DataSource ds = (javax.sql.DataSource) ctx.lookup(jdbc/__Pool); Connection con; List TransactRow treeBranch = new LinkedList(); try { con = ds.getConnection(); try { TransactRow tree = new TransactRow(); treeBranch = tree.selectByParentID(con, _transactID); for (TransactRow row : treeBranch) { childTransactLeafLabel.append(row.getXactTypeID()); childTransactLeafLabel.append(spacer); childTransactLeafLabel.append(row.getName());
RE: JSF Performance Problems
I think the point is that the median time keeps rising. Whereas in JSP it doesn't, signifying some kind of leak in myfaces or the use of it... On a pure performance level I'd love to see how JSF stacks against Tapestry which takes a pooled-backing bean approach. I am convinced that creating and destroying hundreds (possibly thousands) of request-scoped backing beans every second WILL cause JSF scaling problems despite what craig has said in the past regarding bb's intention of being lightweight (the problem is, in a practical environment it is often hard to avoid heavyweight/work-heavy controllers--especially if they are EJB backed). -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Matthias Wessendorf Sent: Monday, 10 July 2006 4:17 AM To: MyFaces Discussion Subject: Re: JSF Performance Problems Faclets gives you +10 - 15% more On 7/9/06, Yee CN [EMAIL PROTECTED] wrote: Is the result with Myfaces/JSP? Can somebody provide performance comparison with Myfaces/Facelets? JSF is still a new technology, and there are still plenty of rooms for improvements. Furthermore the performance differential won't be as drastic once we factor in business logic, persistence, AJAX etc. IMHO reduce development time is still the most important factor to consider. Regards, Yee From: jfaronson [mailto:[EMAIL PROTECTED] Sent: Sunday, July 09, 2006 8:11 AM To: users@myfaces.apache.org Subject: JSF Performance Problems I grabbed the attachments from the original performance bug https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=3 and ran some JMeter tests against the JSP only and the JSF versions. The pages are really simple, the JSP version outputs a page which is visually identical to the JSF page. The table in question had 10 columns and 50 - 200 rows. Not a huge amount of data. I used MyFaces 1.1.3 as the JSF implementation and ran the test in JBoss 4.0.4 GA running on JDK 1.4.2. Here's the results: Table Rows Average [ms] Median [ms] Hits / Min Samples JSF Testcase50 36301300 5007 JSP Testcase50 14104030 5001 JSF Testcase100 56601050 5001 JSP Testcase100 21202700 5001 JSF Testcase200 100 100 590 5001 JSP Testcase200 26302170 5001 This data confirms the discussion in the sun forum. The JSF version started out nearly three times slower than the JSP page. The relative performance of the JSF version degraded to nearly four times slower as table rows were added. So if you are thinking about adopting JSF you should be aware of the performance hit and make sure that you can architect around the problem or get the performance benchmarks adjusted. Perceived performance is important in real life projects so it's more than a theoretical problem. I'd also like to know if anybody has ideas or code samples that make JSF perform better? View this message in context: JSF Performance Problems Sent from the MyFaces - Users forum at Nabble.com. -- Matthias Wessendorf futher stuff: blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com This correspondence is for the named persons only. It may contain confidential or privileged information or both. No confidentiality or privilege is waived or lost by any mis transmission. If you receive this correspondence in error please delete it from your system immediately and notify the sender. You must not disclose, copy or relay on any part of this correspondence, if you are not the intended recipient. Any opinions expressed in this message are those of the individual sender except where the sender expressly, and with the authority, states them to be the opinions of the Department of Emergency Services, Queensland.
Re: JSF Performance Problems
Are you using client or server side state saving? Using the latter will cut response times in half. Dennis Byrne -Original Message- From: Dhananjay Prasanna [mailto:[EMAIL PROTECTED] Sent: Monday, July 10, 2006 12:40 AM To: 'MyFaces Discussion' Subject: RE: JSF Performance Problems I think the point is that the median time keeps rising. Whereas in JSP it doesn't, signifying some kind of leak in myfaces or the use of it... On a pure performance level I'd love to see how JSF stacks against Tapestry which takes a pooled-backing bean approach. I am convinced that creating and destroying hundreds (possibly thousands) of request-scoped backing beans every second WILL cause JSF scaling problems despite what craig has said in the past regarding bb's intention of being lightweight (the problem is, in a practical environment it is often hard to avoid heavyweight/work-heavy controllers--especially if they are EJB backed). -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Matthias Wessendorf Sent: Monday, 10 July 2006 4:17 AM To: MyFaces Discussion Subject: Re: JSF Performance Problems Faclets gives you +10 - 15% more On 7/9/06, Yee CN [EMAIL PROTECTED] wrote: Is the result with Myfaces/JSP? Can somebody provide performance comparison with Myfaces/Facelets? JSF is still a new technology, and there are still plenty of rooms for improvements. Furthermore the performance differential won't be as drastic once we factor in business logic, persistence, AJAX etc. IMHO reduce development time is still the most important factor to consider. Regards, Yee From: jfaronson [mailto:[EMAIL PROTECTED] Sent: Sunday, July 09, 2006 8:11 AM To: users@myfaces.apache.org Subject: JSF Performance Problems I grabbed the attachments from the original performance bug https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=3 and ran some JMeter tests against the JSP only and the JSF versions. The pages are really simple, the JSP version outputs a page which is visually identical to the JSF page. The table in question had 10 columns and 50 - 200 rows. Not a huge amount of data. I used MyFaces 1.1.3 as the JSF implementation and ran the test in JBoss 4.0.4 GA running on JDK 1.4.2. Here's the results: Table Rows Average [ms] Median [ms] Hits / Min Samples JSF Testcase50 36301300 5007 JSP Testcase50 14104030 5001 JSF Testcase100 56601050 5001 JSP Testcase100 21202700 5001 JSF Testcase200 100 100 590 5001 JSP Testcase200 26302170 5001 This data confirms the discussion in the sun forum. The JSF version started out nearly three times slower than the JSP page. The relative performance of the JSF version degraded to nearly four times slower as table rows were added. So if you are thinking about adopting JSF you should be aware of the performance hit and make sure that you can architect around the problem or get the performance benchmarks adjusted. Perceived performance is important in real life projects so it's more than a theoretical problem. I'd also like to know if anybody has ideas or code samples that make JSF perform better? View this message in context: JSF Performance Problems Sent from the MyFaces - Users forum at Nabble.com. -- Matthias Wessendorf futher stuff: blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com This correspondence is for the named persons only. It may contain confidential or privileged information or both. No confidentiality or privilege is waived or lost by any mis transmission. If you receive this correspondence in error please delete it from your system immediately and notify the sender. You must not disclose, copy or relay on any part of this correspondence, if you are not the intended recipient. Any opinions expressed in this message are those of the individual sender except where the sender expressly, and with the authority, states them to be the opinions of the Department of Emergency Services, Queensland.