There are several Java's on the IBM machine. Yesterday I performed tests by 
changing JAVA_HOME in the catalina startup script to Sun's Java 1.5 and Sun's 
java 1.6. Previously it was IBM's J9 1.5.0. The results were the same with the 
various JVM's.

The reason why there's a problem when the application gets reloaded is due to 
we are loading a JNI native library that the application requires. According to 
the following link, section 11.2.4, the JVM does not allow a JNI native library 
to be loaded by more than one class loader. When the application is shut down 
by tomcat, the native library does not get unloaded from the class loader. This 
only happens when the JVM is brought down. Thus when the application starts up 
after tomcat reloads it, we get an UnsatisfiedLinkError.

http://java.sun.com/docs/books/jni/html/design.html

Thanks.

-Jane   

-----Original Message-----
From: André Warnier [mailto:a...@ice-sa.com] 
Sent: Thursday, October 07, 2010 3:26 AM
To: Tomcat Users List
Subject: Re: Disable class monitoring for reloading container classes

Jane Muse wrote:
> André - you are correct. We actually modified "autoDeploy" attribute 
> on the <Host> element to false,
  and not "reloadable" in the application context xml, and then it worked on 
IBM I V7R1.
  Your 3rd point below is probably the key to why it works on one version of 
the O/S and not the other.
  The version where it does not work is Java 1.5.0, and where it does is Java 
1.6.0.
  I have a question into IBM to see if I can change the Java used by the O/S.

I believe that if you phrased the question like that, they may not understand 
what you mean, as the OS itself probably does not use Java.

 > Do you know how I could change the JVM used by tomcat on a machine?

To change the JVM used by Tomcat is easy, but first you need to install a 1.6 
JVM on that machine.  You should be able to install the JVM 1.6 "in addition 
to" the existing 1.5, if you have any concern about the possibility of breaking 
other applications.
For the exact way to do that, you will need help from an OS specialist for that 
machine.

Once you have installed this 1.6 JVM, having Tomcat use it instead of the 1.5 
JVM is easy.
Basically, it consists of setting the environment value "JAVA_HOME" to point to 
the new JVM before starting Tomcat.  That's all there is to it.
That needs to be done somewhere in the scripts which are used at Tomcat start, 
but I cannot tell you where exactly on that platform.  If Java and Tomcat are 
IBM "packages" on that platform, then you will probably also need an OS 
specialist to help you with that.

> 
> re: your fourth point I test this by changing the system time on the O/S.
>
Right. But my point was : since in reality, on a productive system, this is 
happening only 
twice a year, does it matter if those times the application(s) get reloaded ?
(In fact, I strongly suspect that it may happen only /at most/ once a year, and 
then only 
in very specific circumstances.  It is your changing of the system time which 
triggers the 
reloading, but it would probably never happen in reality on a production 
system).

> I couldn't figure out how to test your last guess because the context element 
> in tomcat's context.xml wouldn't accept the reloadable attribute.
> 

That was only a wild unsubstantiated guess.
I expect someone else more qualified to shoot down that suggestion, just 
about... now.

> Thanks,
> 
Welcome.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to