Leon Rosenberg wrote:
I think they 'de facto' are stateless singletons? I mean the controller only
creates one instance, and you shouldn't create another :-)

That is how it currently works, and Craig has in the past explained the decision. It made perfect sense 4+ years ago when he first wrote Struts, on the basis of performance. Modern JVMs make those concerns no longer true though.

If an Action was created per request, you could do some things that you can't do now, like non-static class members. This would not be a huge change to the Struts codebase (at least, that was my conclusion when I thought about it some months ago and looked at the code), but would open up a lot of nice possibilities.

One could go even further and quite easily add the ability to specify scope for an Action, so you could put them in session if you wanted. Then, combining your ActionForms and your Actions would be trivially easy... and hey, that starts to look a lot more like JSF/Shale, doesn't it?!? ;)

* Totally dependent on Servlet API objects, making (a) unit tests hard, and (b) implementations on portlet difficult


I think it's the nature of a http framework?

Not to speak for Craig, but if I understood this point correctly, the idea is that right now there are a number of places where request/response/session are passed around directly and accessed directly. A layer of abstraction between those places and those underlying objects would make unit testing easier. I can't speak on the portlet point, but I take his word for it.

In 1.3, at least as far as the request processor chain commands go, you get a single Context object (ActionContext I think?) If your Actions also recieved that object only, and there were methods that you called instead of directly accessing request/response/session, you'd have that abstraction.

As per my previous post, you could do all of this with the current Struts code base... well, the single Context thing would be a little more difficult because you couldn't replace what an Action looks like now without breaking backwards compatibility, but probably it can be done *in adddition* to how it is now.

Regards
Leon

Frank


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to