You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "V. Cekvenich" <vi...@users.sourceforge.net> on 2002/09/24 13:25:31 UTC

EJB / was Struts and high performance sites

They are hype marketed as such. Most newer developers try them, as I did 
when I was new, but in production they did not scale, so we removed 
them. On new sites I skip the writing them part,  since people would 
only remove them in production. (some management that take EJB to 
production are so upset that they go to the cached .NET ADO, so I steer 
my client's clear).

Read www.basebeans.com/bad.jsp links for other's opinion.
Some people disagree with them, but I had similar experience.

V.

Daniel Joshua wrote:
> V. Cekvenich,
> 
> 
>>The slow part is DAO in J2EE (and ADO in .NET). Avoid any EJB, they do
>>not scale.
> 
> 
> I though EJBs were designed to allow scalling?
> 
> 
> Regards,
> Daniel
> 
> 
> -----Original Message-----
> From: news [mailto:news@main.gmane.org]On Behalf Of V. Cekvenich
> Sent: Tuesday, September 24, 2002 5:56 PM
> To: struts-user@jakarta.apache.org
> Subject: Re: Struts and high performance sites
> 
> 
> Not a high volume of users, and 7 transactions per second? Should fit on
> a single medium box (if not a laptop) if you do it right.
> 
> You have to worry about creating objects if you write your own framework
> (you can put beans in session or requests, and request is better
> mostly), and then you have 2 projects, your app and a framework, and you
> won't do better than the Struts team and what about framework bugs?
> Also, with Struts, my clients are able to write several modules(pages)
> per day per developers, how's that for  productivity or beating the
> schedule?
> Some of the  Struts sites are 50 times more concurrent users I have
> worked on, no problem.
> 
> The slow part is DAO in J2EE (and ADO in .NET). Avoid any EJB, they do
> not scale.
> 
> Some good choices is RowSet(I do metadata w/ reflection to auto gen SQL
> updates - RowSet also avoids BO/DTO/VO mapping and GC), Resin, pgSQL,
> Eclipse or CodeGuide IDE, Linux/KDE and J:Rockit VM or IBM VM (Sun VM
> and Sun Inc. have issues). Sample good practices code on
> http://basicPortal.sf.net, FREE!
> 
> (If you have a large app or large # users, let a mentor help. many are
> on this list, it is cost effective, but not because of Struts only)
> 
> V.
> Struts Mentor
> 917 345 1445 /vic@baseBeans.com
> ("Mentor's helps you do it faster/cheaper)
> 
> 
> David Zimmerman wrote:
> 
>>Hi,
>>we are building a webshop for a site with a high volume of users, approx.
> 
> 800 concurrent users and 25k transactions per hour. We are going to use J2EE
> as the ground platform. I am now considering some design choices where using
> Struts is one of them. However I have some questions regarding the
> performance of Struts. I know this issue has been up many times before but I
> have never been able to find any satisfying answers, so...
> 
>>What, if any, overhead does the Struts controller generate? This question
> 
> must of course be seen in the context of writing your own controller or
> using any other framework. However, what is Struts overhead?
> 
>>What overhead does the use of form beans generate (in the sense of objects
> 
> created, memory use, the use of reflection, speed)
> 
>>Custom tags (Struts' or other). Would they be applicable in a case like
> 
> this? Wouldn't there be a massive creation of objects for every request?
> 
>>Please help me out here! I really want your knowledge on this!
>>
>>Regards
>>David Zimmerman
>>
>>
>>____________________________________________________________
>>Tired of all the SPAM in your inbox? Switch to LYCOS MAIL PLUS
>>http://www.mail.lycos.com/brandPage.shtml?pageId=plus
> 
> 
> 
> 
> 
> --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
> <ma...@jakarta.apache.org>




--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: DynaActionForm blowing away values...

Posted by Gemes Tibor <ge...@regens.hu>.
2002. szeptember 24. 13:54 dátummal James Krygowski ezt írtad:
> Hey all--
>
> never mind, i think that my server log isn't completely sequential/real
> time...

This is a good reason no to use System.out.println like stuff for debugging. 
Try using commons-logging w/ log4j for example.

Tib

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


RE: DynaActionForm blowing away values...

Posted by James Krygowski <ja...@shaws.com>.
Hey all--

never mind, i think that my server log isn't completely sequential/real
time...

thanks!

> -----Original Message-----
> From: James Krygowski [mailto:james.krygowski@shaws.com]
> Sent: Tuesday, September 24, 2002 7:44 AM
> To: Struts Users Mailing List
> Subject: DynaActionForm blowing away values...
>
>
> Hey all-
>
> I'm trying to use DynaActionForm to send data from an action to my jsp.
> I've got a setup something like:
>
> MaintainThemesAction ---> MaintainThemes.jsp
>
> I populate a the DynaActionForm associated with the action in the
> MaintainThemesAction but when I try to access the values it
> contains from my
> JSP I only get errors.  I've setup my form-bean and action
> mapping like the
> following xml snippets (yes, they are in the right locations in my
> struts-config.xml file ;))
>
>
>         <form-bean      name="maintainThemesForm"
>                         type="org.apache.struts.action.DynaActionForm">
>           <form-property name="themes" type="java.lang.Object[]"/>
>         </form-bean>
>
>
>
>         <action    path="/adsetup/GetThemes"
>            type="com.shaws.aps.action.AdSetupMaintenanceAction"
>            name="maintainThemesForm"
>            scope="request"
>            validate="false">
>           <forward name="success" path="/adsetup/MaintainThemes.jsp"/>
>         </action>
>
>
> Here's the errors i get.   The first few messages are system.out.println's
> from my action class.  I kinda find this output confusing given that it
> appears to run the action then map the action.  It also appears
> to blow away
> my DynaActionForm right before giving it to the JSP.   Can anyone suggest
> what is going wrong here?
>
> got 170 themes from database.
> dynaform name is maintainThemesForm
> dynaform is a NOT NULL form
> setting values to dynaform...
> checking set values.... Got an array of size 170 from dynaactionform.
> forwarding to jsp...
> 09/24 07:31:15 info [axis] Processing a 'GET' for path
> '/adsetup/GetThemes'
> 09/24 07:31:15 debug [axis]  Looking for ActionForm bean instance in scope
> 'requ
> est' under attribute key 'maintainThemesForm'
> 09/24 07:31:15 debug [axis]  Creating new DynaActionForm instance of type
> 'org.a
> pache.struts.action.DynaActionForm'
> 09/24 07:31:15 debug [axis]  Storing ActionForm bean instance in scope
> 'request'
>  under attribute key 'maintainThemesForm'
> 09/24 07:31:15 debug [axis]  Populating bean properties from this request
> 09/24 07:31:15 debug [axis]
> BeanUtils.populate(DynaActionForm[dynaClass=maintain
> ThemesForm,themes=<NULL>], {})
> 09/24 07:31:15 debug [axis]  Looking for Action instance for class
> com.shaws.aps
> .action.AdSetupMaintenanceAction
> 09/24 07:31:15 error Unhandled exception thrown from
> /adsetup/MaintainThemes.jsp:62
> [1]javax.servlet.jsp.JspException: Cannot create iterator for this
> collection
>         at
> org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:
> 337)
>         at
> jrun__adsetup__MaintainThemes2ejsp1b._jspService(jrun__adsetup__Maint
> ainThemes2ejsp1b.java:103)
>         at jrun.jsp.runtime.HttpJSPServlet.service(HttpJSPServlet.java:43)
>         at jrun.jsp.JSPServlet.service(JSPServlet.java:106)
>         at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
>         at
> jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
>         at
> jrun.servlet.JRunRequestDispatcher.invokeNext(JRunRequestDispatcher.j
> ava:414)
>         at
> jrun.servlet.JRunRequestDispatcher.forwardInvoke(JRunRequestDispatche
> r.java:387)
>         at
> jrun.servlet.JRunRequestDispatcher.forward(JRunRequestDispatcher.java
> :172)
>         at
> org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.
> java:1014)
>         at
> org.apache.struts.action.RequestProcessor.processForwardConfig(Reques
> tProcessor.java:417)
>         at
> org.apache.struts.action.RequestProcessor.processActionForward(Reques
> tProcessor.java:390)
>         at
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
> va:271)
>         at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:129
> 2)
>         at
> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>         at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
>         at
> jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
>         at
> jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:
> 241)
>         at
> jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:
> 527)
>         at
> jrun.servlet.http.WebService.invokeRunnable(WebService.java:172)
>         at
> jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPoo
> l.java:348)
>         at
> jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.j
> ava:451)
>         at
> jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.
> java:294)
>         at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
> [0]jrun.jsp.runtime.UncaughtPageException: Unhandled exception thrown from
> /adse
> tup/MaintainThemes.jsp:62
>         at jrun.jsp.runtime.Utils.handleException(Utils.java:57)
>         at
> jrun.jsp.runtime.JRunPageContext.handlePageException(JRunPageContext.
> java:381)
> <snip/>
>
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail:
<ma...@jakarta.apache.org>



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


DynaActionForm blowing away values...

Posted by James Krygowski <ja...@shaws.com>.
Hey all-

I'm trying to use DynaActionForm to send data from an action to my jsp.
I've got a setup something like:

MaintainThemesAction ---> MaintainThemes.jsp

I populate a the DynaActionForm associated with the action in the
MaintainThemesAction but when I try to access the values it contains from my
JSP I only get errors.  I've setup my form-bean and action mapping like the
following xml snippets (yes, they are in the right locations in my
struts-config.xml file ;))


        <form-bean      name="maintainThemesForm"
                        type="org.apache.struts.action.DynaActionForm">
          <form-property name="themes" type="java.lang.Object[]"/>
        </form-bean>



        <action    path="/adsetup/GetThemes"
           type="com.shaws.aps.action.AdSetupMaintenanceAction"
           name="maintainThemesForm"
           scope="request"
           validate="false">
          <forward name="success" path="/adsetup/MaintainThemes.jsp"/>
        </action>


Here's the errors i get.   The first few messages are system.out.println's
from my action class.  I kinda find this output confusing given that it
appears to run the action then map the action.  It also appears to blow away
my DynaActionForm right before giving it to the JSP.   Can anyone suggest
what is going wrong here?

got 170 themes from database.
dynaform name is maintainThemesForm
dynaform is a NOT NULL form
setting values to dynaform...
checking set values.... Got an array of size 170 from dynaactionform.
forwarding to jsp...
09/24 07:31:15 info [axis] Processing a 'GET' for path '/adsetup/GetThemes'
09/24 07:31:15 debug [axis]  Looking for ActionForm bean instance in scope
'requ
est' under attribute key 'maintainThemesForm'
09/24 07:31:15 debug [axis]  Creating new DynaActionForm instance of type
'org.a
pache.struts.action.DynaActionForm'
09/24 07:31:15 debug [axis]  Storing ActionForm bean instance in scope
'request'
 under attribute key 'maintainThemesForm'
09/24 07:31:15 debug [axis]  Populating bean properties from this request
09/24 07:31:15 debug [axis]
BeanUtils.populate(DynaActionForm[dynaClass=maintain
ThemesForm,themes=<NULL>], {})
09/24 07:31:15 debug [axis]  Looking for Action instance for class
com.shaws.aps
.action.AdSetupMaintenanceAction
09/24 07:31:15 error Unhandled exception thrown from
/adsetup/MaintainThemes.jsp:62
[1]javax.servlet.jsp.JspException: Cannot create iterator for this
collection
        at
org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:
337)
        at
jrun__adsetup__MaintainThemes2ejsp1b._jspService(jrun__adsetup__Maint
ainThemes2ejsp1b.java:103)
        at jrun.jsp.runtime.HttpJSPServlet.service(HttpJSPServlet.java:43)
        at jrun.jsp.JSPServlet.service(JSPServlet.java:106)
        at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
        at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
        at
jrun.servlet.JRunRequestDispatcher.invokeNext(JRunRequestDispatcher.j
ava:414)
        at
jrun.servlet.JRunRequestDispatcher.forwardInvoke(JRunRequestDispatche
r.java:387)
        at
jrun.servlet.JRunRequestDispatcher.forward(JRunRequestDispatcher.java
:172)
        at
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.
java:1014)
        at
org.apache.struts.action.RequestProcessor.processForwardConfig(Reques
tProcessor.java:417)
        at
org.apache.struts.action.RequestProcessor.processActionForward(Reques
tProcessor.java:390)
        at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:271)
        at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:129
2)
        at
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
        at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
        at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:
241)
        at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:
527)
        at jrun.servlet.http.WebService.invokeRunnable(WebService.java:172)
        at
jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPoo
l.java:348)
        at
jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.j
ava:451)
        at
jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.
java:294)
        at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
[0]jrun.jsp.runtime.UncaughtPageException: Unhandled exception thrown from
/adse
tup/MaintainThemes.jsp:62
        at jrun.jsp.runtime.Utils.handleException(Utils.java:57)
        at
jrun.jsp.runtime.JRunPageContext.handlePageException(JRunPageContext.
java:381)
<snip/>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>