Shapira, Yoav wrote:

Howdy,
On the subject of AccessLogValve: I hadn't thought of the things Tim
suggested, but I have a different suggestion, part of a more general
suggestion:

1. Convert AccessLogValve to be a servlet specification 2.3 filter, i.e.
something portable.  We can define it in $CATALINA_HOME/conf/web.xml,
commented out by default perhaps, and users can move the definition
around as they need just like they do with the servlets defined
conf/web.xml.

Furthermore, people can then extend/customize AccessLogFilter much more
easily, without needing to touch any tomcat classes.  And finally, this
will allow the full power of filter-mapping to be applied to access
logging. (I imagine the default in conf/web.xml would be the /*
url-pattern mapping, but I know I and other users have different use
cases).

If you think this is useful, I'd like to start working on it myself ;)
If you think it's not useful/bad/stupid, please let me know ;)

Interesting. The pitfall is that optimizations could be harder, but otherwise, it could be a good idea. I think a significant amount of stuff did exist in TC 4.0 because of the fact that many things weren't there in the servlet API. A massive refactoring could be a good idea.


2. As an extension of the above idea, I would propose converting more of
the tomcat non-standard features into portable implementations.  This
includes the other filters, e.g. RemoteAddressFilter, RemoteHostFilter,
RequestDumperValve, and others you think are appropriate.

Then I have other ideas, of varying degrees of radicality and I'm sure
stupidity ;)  I'm proposing them for discussion, as I think they're all
interesting.

1. Logging: use commons-logging throughout.  Eliminate tomcat logger
implementation classes (FileLogger, SystemErrLogger, SystemOutLogger).
Eliminate catalina.out file, instead having swallowOutput=true always
without option to change.  Default logging configuration should still
rotate nightly.

Migration to commons-logging can IMO be restarted in 5.0, since the issues with commons-logging have been fixed. I think per instance loggers, with category names including the full component name, are needed.


2. Eliminate the shared and common classloader repositories.  Unless
these are required by the spec?  Force webapps to be self-contained by
putting all their classes in WEB-INF/lib or WEB-INF/classes of their
webapp.  Have the WEB-INF/clases -> WEB-INF/lib -> endorsed -> system
classloader hierarchy, much simpler than current.

I believe many people won't like that one. It's quite radical :) It is true that it would be much simpler to run only "straight" webapps, without exceptions.


I think this kind of classloading structure can be configured in TC 5 using the catalina.properties.

3. Provide a complete working configuration example for a cluster of
tomcat servers with a front-end tomcat as well, i.e. a pure tomcat-only
solution.  We already have the jvmRoute mechanism, but I think it needs
more examples/documentation so that people start using it.

So you want to do a HTTP load balancer ? I think this would be a really good project for the commons.


4. Have no default objects created at runtime.  That means no default
session manager if one is not configured, no default context if one is
not configured, etc.  Ship tomcat with an example server.xml containing
all the default settings, and nothing more.

Is that useful ? I don't really see how. (ex: if you have no loader for a webapp, it won't work) I think you should elaborate more.


Of course, I'm willing to help on all of the above if we decide to do
any of them.


That should be enough to get some talk going ;)

Let's see :)


Remy



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



Reply via email to