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