Hello again,

Thank you very much for your quick response.

I read your answer and tried to refresh classes in the web-inf/lib.

Nevertheless, when I override an already existing myxxx.jar file (in
web-inf/lib) with a newer version tomcat 3.3 gets crazy.

Our application is loading a class from myxxx.jar using Class.forName and
activates some methods in it.
Everything is going well until we override myxxx.jar with a newer jar (class
interface hasn't been changed).
Tomcat is refreshed well (although, losing session), however, when accessing
again the class in the jar,
I get the following exception:

2002-02-14 20:45:34 - Ctx(/movious) : Exception in R( /movious + /portlet +
null
) - java.lang.ClassFormatError: com/movious/NivPortlet (Truncated class
file)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:495)
        at
org.apache.tomcat.util.depend.DependClassLoader12.defineClassCompat(U
nknown Source)
        at
org.apache.tomcat.util.depend.DependClassLoader.loadClassInternal1(Un
known Source)
        at org.apache.tomcat.util.depend.DependClassLoader12$1.run(Unknown
Sourc
e)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.apache.tomcat.util.depend.DependClassLoader12.loadClass(Unknown S
ource)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:260)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:130)
        at
com.movious.api.portlets.PortletManager.getClass(PortletManager.java:
578)
        at
com.movious.api.portlets.PortletManager.createClip(PortletManager.jav
a:532)
        at
com.movious.api.portlets.PortletManager.getData(PortletManager.java:2
88)
        at
com.movious.api.portlets.PortletServlet.doPost(PortletServlet.java:11
9)
        at
com.movious.api.portlets.PortletServlet.doGet(PortletServlet.java:37)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java)
        at org.apache.tomcat.facade.ServletHandler.doService(Unknown Source)
        at org.apache.tomcat.core.Handler.invoke(Unknown Source)
        at org.apache.tomcat.core.Handler.service(Unknown Source)
        at org.apache.tomcat.facade.ServletHandler.service(Unknown Source)
        at org.apache.tomcat.core.ContextManager.internalService(Unknown
Source)

        at org.apache.tomcat.core.ContextManager.service(Unknown Source)
        at
org.apache.tomcat.modules.server.Http10Interceptor.processConnection(
Unknown Source)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(Unknown Source)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Unknown
 Source)
        at java.lang.Thread.run(Thread.java:579)


Am i doing something wrong Dear Guru ???
Tnx



-----Original Message-----
From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
Sent: Thursday, February 14, 2002 6:22 PM
To: Tomcat Users List
Subject: Re: reloading classes - rephrase




On Thu, 14 Feb 2002, tamir wrote:

> Date: Thu, 14 Feb 2002 10:54:15 +0200
> From: tamir <[EMAIL PROTECTED]>
> Reply-To: Tomcat Users List <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> Subject: reloading classes - rephrase
>
> Hi there,
> I've a simple question, hope there's a simple answer.
>
> Is it possible to do autoreload for classes not found in WEB-INF/classes
or
> WEB-INF/lib
> without restarting tomcat or reloading my web-app classes ?
> (I mean i put my classes OUTSIDE the web-app).
>
> I'm using tomcat 3.3, but can do the advance to 4.02 if needed.
>
> Tnx Alot
> for any information!!!!!
>

The answer is simple:  no.

Java provides no mechanism for unloading a class that has already been
loaded.  The way that reloading is implemented for a webapp is to throw
away the entire class loader used to load that webapp, and starting over
again.  If we did that for shared classes, however, you'd have to restart
*all* webapps because they would all need to be thrown away.

If you want to take advantage of the auto-reload capability to update
classes in a webapp, you *must* put those classes in /WEB-INF/classes, or
in a JAR file in /WEB-INF/lib.

Craig McClanahan



--
To unsubscribe:   <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>

--
To unsubscribe:   <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>

Reply via email to