Hi,
I think the multiple transactions - one for the findall and one for each
row- may be sufficient to explain the 30 sec. Trying a slsb would tell.
Also, I don't know much about sun hardware, is ultrasparc 170 mhz a fast or
slow machine?

david jencks
On 2001.07.04 23:20:31 -0400 Jonathan Ackerman wrote:
> True, knew I was going to get myself into trouble answering this one :) 
> 
> Still believe that using ValueObjects and a Distributed Facade is a
> better
> way to go. In many cases your web container & EJB container are not
> running
> on the same machine in production.
> 
> However because both are in VM in this case then  network traffic is not
> an
> issue.
> 
> Could it be that the entity beans are causing the ejbStore() method to
> fire
> for each attribute that is retrieved from them because of container
> managed
> transactions ? 
> 
> Maybe Saul could stick some System.outs in his ejbLoad() & ejbStore()
> methods to see what is happening.
> 
> Jonathan
> 
> -----Original Message-----
> From: marc fleury [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, 5 July 2001 2:55 p.m.
> To: [EMAIL PROTECTED]
> Subject: RE: [JBoss-user] JBoss performance problems
> 
> 
> |1)  You do a network call for home look up
> |2)  You do a network call for the findAll(), the server returns the
> |enumeration
> |3)  You do a network call to get an attribute from the entity bean
> |3a) The server starts a transaction
> |3b) server gets attributes from ejb
> |3c) The server commits the transaction (which can result in a DB update
> |unless you are using dirty flags)
> |3d) Server returns value to client (more network traffic)
> |4)  You repeat step 3 for each attributes you fetch
> |5)  You repeat step 4 for each row
> 
> ? we are integrated in VM with jetty and tomcat
> 
> marcf
> 
> |
> |Also if this is the first time you have accessed these entity beans, the
> |server will have to create and data fill them from the database.
> |
> |As you can see above, you are doing a large number of network calls
> which
> |are expensive & a large number of transactions which is even more
> |expensive.
> |
> |A better approach is to use stateless session beans as Facades for your
> |entity beans. The session bean talks to your entity beans, data fills a
> |serializable class (a ValueObject) with the data for each row and
> |returns an
> |array or collection of these back to the client.
> |
> |If you do that the client/server flow looks like:
> |
> |1) You do a network call for home look up for your session bean
> |2) You do a network call to the home calling create() to get the remote
> |interface
> |3) You do a network call to your session bean calling a getRows() method
> |3a) Server starts a transaction
> |3b) Session bean lookups the home of the your entity bean (usually a
> |optimised call since we are in the container already)
> |3c) Session bean calls findAll() on the entity bean's home and gets an
> |enumeration of entity beans
> |3d) Session bean creates a collection
> |3e) Session bean creates a ValueObject and copies the attributes from
> the
> |entity bean to the ValeuObject. (Once again these calls are optimised
> |because we are in container already)
> |3f) Session bean adds ValueObject to the collection
> |3g) Steps 3e, 3f are repeated for each row (entity bean)
> |3h) Session bean returns collection
> |3i) Server commits transaction (this could result in DB updates if
> |you don't
> |have dirty flags on your entity beans)
> |4) Client processes collection of ValueObjects and generates HTML table
> |
> |As you can see this method reduces the number of network calls
> dramatically
> |and is more scaleable (because Stateless Session Beans are pooled).
> |
> |Check out some of the patterns at http://www.theserverside.com
> |
> |Hope that helps
> |
> |Jonathan
> |
> |-----Original Message-----
> |From: Saul Farber [mailto:[EMAIL PROTECTED]]
> |Sent: Thursday, 5 July 2001 1:01 p.m.
> |To: [EMAIL PROTECTED]
> |Subject: [JBoss-user] JBoss performance problems
> |
> |
> |Hello gurus,
> |
> |I'm having some performance problems with JBoss right now.  Could
> |someone help me out a bit?
> |
> |Here's the scenario:
> |
> |Sun UltraSparc1-170Mhz:
> |
> |     running:        +Jboss2.2.1_Jetty3.1.RC4 bundle
> |                     +PostgreSQL (ver 7.x)
> |
> |My app is pretty simple, just direct calls to entity EJB's from JSP's.
> |However, when I try to load a page that essentially displays a whole
> |table (all 30 rows) by using Home.findAll(), then running through the
> |java.util.Enumeration object, it takes close to 30 seconds to load the
> |page.  This seems rather excessive.  Could I have something
> |misconfigured?
> |
> |If you need more info, please email me.  I saw a similar post in the
> |archives, but couldn't find a response to it.
> |
> |Thanks,
> |
> |Saul
> |
> |
> |_______________________________________________
> |JBoss-user mailing list
> |[EMAIL PROTECTED]
> |http://lists.sourceforge.net/lists/listinfo/jboss-user
> |
> |_______________________________________________
> |JBoss-user mailing list
> |[EMAIL PROTECTED]
> |http://lists.sourceforge.net/lists/listinfo/jboss-user
> 
> 
> 
> _______________________________________________
> JBoss-user mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/jboss-user
> 
> _______________________________________________
> JBoss-user mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/jboss-user
> 


_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to