>>> "Rob L'Estrange" <[EMAIL PROTECTED]> 24-Mar-01 4:43:12 PM >>>

>1. Does anyone know of a JSP/servlet engine
>provider who's product has the ability to detect
>changed support classes/beans and reload them
>dynamically (that is, without restarting the web
>server)? Or, is there a way of eliciting this behaviour
>from current products that we're overlooking?

Are you talking about service providers or software providers? Any
container conforming to API 2.3 should do auto-reloading if it's asked
to.

Whether individual ISPs providing servlet engines to their customers
turn that feature on or not is another question.


>2. Does anyone have any thoughts on whether this
>behaviour would actually be implementable by a vendor?
>Does anyone think that this behaviour would
>actually be undesirable? If there are issues that would
>make it difficult (one thing I can think of is that due to
>ongoing references to instances of the class in question

See the 2.3 spec.


>(from the session or application attributes lists, for
>example) that this may make reloading of the class a
>problem; does anyone have thoughts on that?), is there
>are way that the behaviour could be flagged to be turned
>on in the dev environment but turned off in the live
>environment? At least the multiple dev server restarts could
>be avoided.

The trouble is the problem of class mismatch is exacerbated in the
development environment. So it's probably not best there. Reloading
(of anything) works best when there are only small, incremental,
changes to a webapp.


>Note that we're NOT talking about the ability to
>dynamically reload changed JSP's or servlets. We're
>talking about the ability to dynamically reload
>changed support beans/classes.

The stuff about reloading in the spec talks about reloading war files
and not about individual jsp or servlet classes.

Any element contained within the WAR file that changes during the
lifetime of the server should be reloadable. So if you ship support
classes or jar files inside the WAR file the container *should* try
and reload them.

The spec is very clear that a container *should* try to maintain
session data across reloads. The way this is achieved is by
serialization though, so if you have a non-serializable object in your
session you're not going to get a result.

One way to handle that is to override or wrap non-serializable
objects going into the session so that they have some way of
serializing enough data so they can try and recreate themselves.

For example you might wrap a ResultSet with a class that writes out
the following details pertaining to the ResultSet:

- the JDBC driver
- the connection's url and username and password
- the SQL statement that created the result set

and then use that to recreate the ResultSet when the object is
deserialized.


Nic Ferrier

___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".

Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html

Reply via email to