In J2EE, the container provides services. (As per any J2EE book).
JNDI, DataSourcePool, Security, etc. etc. So no need to have JDBC related jars in war file.
Newbies don't use these services, but re-implement a home grown exiotic and buggy versions. (Sometimes that is good, becuase I used to make money by just fixing "connection" leaks)
A pro just uses the J2EE services.... that are debuged and working allready.
They do this for exactly the same reason you said. In order to do less configuration. If emplyees is removed, and security is LDAP or JDBC realms or what ever, no impact on the war file.
If the DataSource needs to be changed to have a database fail over, no need to change the war file, or bother the developers. The unix admin just changes the xml file. Or deploy war file from stageing to production, no changes.
You can even change containers from Tomcat to Resin... and not change the WAR file. The is modular. Any scaling of data source pooling is a container toonable.
This has nothing to do with Struts, this is J2EE container services. You do not have to use them, you can write your own security (that tags do not then see) or your own buggy connection pooling thing from JDBC 1.0.
Sturts is data layer agnostic, that's all. If you go out of the way to lock it... you can, no sign will pop up, the code will compile.
But you are not on a main road, and not many people will help you (unless you pay hourly)
If you remvoe a jar file, you need to regression test.
Are you suggesting that the Unix admin un-tars (nzips) the war file to get to the jar files for some good reason?
Untill you leverage J2EE container services, you will have stability issues, scalability issues, modular issues, etc. (maybe write your own socket server? )
I know the fault. People have OLD jdbcs books, where the hello exaple is how to write a connection pool. This was OK in '95 and '96 when we used AWT. But things have advanced a bit since then.
Also, you will gain huge producitivity by using a DAO... which all realy on container services.
But again... this is a J2EE discussion, not Struts. Like if you used Spring, or WebWork, or Tapestry, or Sofia or ...
Same thing. Use a DAO! Use container services provided for you for free and working.
If the conatiner does not give you good scallability or is to messed up... you can pick another (again J2EE options)
.V
Robert H. Tran wrote:
Point taken. But there is an option to modularize (and scale too), which is currently missing. It's like adding (or removing) an employee phone number at a firm usually doesn't mean having to update the listing at the phone company, especially not by the employee himself going to the phone company to do that. Yet the employee's phone can still be found and served up. That's the job of the firm. It should be self-contained under the firm's management to interface with the phone company through some protocols. Any one firm added or removed shouldn't incur changes to the phone company's configuration. A more practical example is: I want to remove this one jar file that contains one (possibly multiple) independent unit(s) of many actions and pages, what entries in Struts's configuration file do I need to remove? The other option allows me to just remove the jar file (or a corresponding directory) worry-free.
- Robert.
----- Original Message ----- From: "Vic Cekvenich" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, December 04, 2003 3:20 PM
Subject: Re: Advantages of Struts?
FAQ #2:
I would say this about Struts:
Sturts is like a kindergarden, we put our boots here, our books here; thus they allow people to know where to find things on a project. Presnetation here, Data Layer here; And also people know generaly what they should be doing: Once you have a form (html) mock up, you know what the formbean should be (it mapps). Just get the form bean to CRUD via DAO.
Also a few consider dynambeans a bad practice. http://sixlegs.com/blog/java/death-to-dynabeans.html I consier them a not as good as form beans, they are harder to unit test among other things.
.V
McClung, Brian wrote:
Robert,
I've gone to the opposite extreme as you. I don't want the action to be responsible for where it goes, only for telling users which forward
states
it supports. I've removed the forward from both the Action and the struts-config.xml file. The action still returns the forward, but the forward is dynamically created based on what the page has passed to the action. In my situation I resorted to this because I was using a single action to handle multiple applications on the same site. This meant
that my
path would not be the same between each application. Resorting to
multiple
mappings in the configuration file would rapidly get out of control for
me
as some of these applications can be created and removed rather quickly.
I
do have separate pages per application and this is why the page drives
the
actions result.
I know this bends the MVC pattern, but it allows me to concentrate on developing actions, form beans, and all the back end business logic,
while
letting the Creative Designers develop pages and GUI workflow.
Is anyone else doing something similar? I posted my DynaAction class
that I
use to do this with a couple of weeks ago. It really surprises me that there hasn't been a greater need for something like this in the
community.
I'd be curious to hear how others have solved this problem.
Brian McClung Senior Programmer Belo Interactive 214-977-4083
-----Original Message----- From: Vic Cekvenich [mailto:[EMAIL PROTECTED] Sent: Thursday, December 04, 2003 2:18 PM To: [EMAIL PROTECTED] Subject: Re: Disadvantages of Struts?
I disagree with you as well Robert. Having a confgiration nudges you toward design and separation, and everyone on the team know where to find things.
In fact, when not doing Web apps, I use HiveMind, just so that I can have the structure.
Anyway, there a lot of MVC compeitoris.
.V
Robert H. Tran wrote:
My point was not against configuration altogether, but rather against
the
current rigid and centralized configuration. There should be options. If there is configurations in a component, it should be self-contained by
the
component. It is no framework's business. If there is an api in Struts,
this
can be done nice and easy, as I said with Eclipse.
- Robert.
----- Original Message ----- From: "Martin Cooper" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, December 04, 2003 11:51 AM
Subject: Re: Disadvantages of Struts?
"Robert H. Tran" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
I think an action's mapping is a decision by the action itself. Like I
said
earlier, when an application development finishes, that decision will
become
static. At that point, when an Action's mapping changes, its code will
have
to change too (unless the new mapping is kind of a synonym to the old mapping, which doesn't bear any shift in the semantics). As such,
there
is
almost no point in keeping the decision and the code separate (i.e.
making
the decision's configuration a loose end of the code). Or at least, configuration shouldn't be the only way to add or modify an Action.
I disagree with this almost completely. If actions are written
properly,
you
should be able to reconfigure the application, to some extent at least,
by
changing the config alone and not touching the Java code. This is
immensely
useful when an app needs to be customised after the fact, and when the source code is not available (e.g. by a customer, in their own
environment).
-- Martin Cooper
Even though each Action's configuration may be small, the
configurations
for
all the Actions need to be kept track of and maintained (for
integrity).
That may be a significant but unnecessary side work. To view the
mappings,
there can be a tool to traverse the structure by api calls and display
it.
That can be done after the fact and doesn't have to be before it. In addition to that, when the decision (or configuration if any) goes
where
the
code lives, modularity increases.
IMHO,
- Robert.
----- Original Message ----- From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, December 04, 2003 6:55 AM
Subject: RE: Disadvantages of Struts?
I have to disagree with you on the first point. I find that there is just a small amount of necessary configuration required to build an Action class (most of my Action configurations have about a half dozen lines, even less if there is no associated ActionForm). I'm not really sure what you mean by "paddle back and forth between the code and the configuration", could you explain?
Thanks.
Robert H. Tran wrote:
I am not sure that is true. Struts seems to lack of an API. IMO,
there
are
more required configurations than necessary. Take Action for example,
to
write an Action, one has to paddle back and forth between the code
and
-------------------------------------------------------------------------the
configuration. It is like an executable having to configure each of
its
dlls. The visibility of the mappings is nice to have but the mappings
can
be generated after the fact as in a debugging view. When the
application is
finished, configurations become static. But since configurations are required, they will be like loose ends of the application. Another
issue:
how can one componentize his code and deploy it in a self-contained
plug-in,
as with Eclipse? Please forgive my novice.
- Robert.
----- Original Message ----- From: "Rick Hightower" <[EMAIL PROTECTED]>
To: "'Struts Developers List'" <[EMAIL PROTECTED]>
Sent: Wednesday, December 03, 2003 6:24 PM
Subject: RE: Disadvantages of Struts?
Don't be silly. Struts is perfect.
-----Original Message----- From: Robert H. Tran [mailto:[EMAIL PROTECTED] Sent: Wednesday, December 03, 2003 2:10 PM To: Struts Developers List Subject: Disadvantages of Struts?
I just wonder if Struts comes with any significant drawback. I mean
not in
terms of when to use Struts and when not to use it necessarily, but
more
in
the line of anyone's wishes that it had been better. Any advice is
very
appreciated.
-
--
----
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]