Mantis - Resin
Viewing Issue Advanced Details
197 minor always 05-19-05 00:00 11-30-05 14:43
ferg  
 
urgent  
closed 3.0.13  
3.0.13 fixed  
none    
none 3.0.14  
0000197: jar reload issue
RSN-201
(rep by Shane Cruz)


We recently tried to upgrade to Resin Professional 3.0.13 (from 3.0.12) because there appeared to be an access logging bug in 3.0.12 that was giving us inaccurate visitor statistics. We are using JDK 1.4.2_08 and running on RedHat ES 3.0.

When uploading a new JAR file into Resin's lib directory and restarting the app server, we started getting the following error over and over in our error logs:

[2005-05-17 16:57:37] javax.servlet.ServletException: java.lang.InternalError: jzentry == 0,
[2005-05-17 16:57:37] jzfile = 2096232880,
[2005-05-17 16:57:37] total = 26,
[2005-05-17 16:57:37] name = /com/home/resin/common/lib/norvax/norvax-3ps.jar,
[2005-05-17 16:57:37] i = 6,
[2005-05-17 16:57:37] message = invalid LOC header (bad signature)
[2005-05-17 16:57:37] at com.caucho.server.dispatch.ServletConfigImpl.createServlet(ServletConfigImpl.java:631)
[2005-05-17 16:57:37] at com.caucho.server.dispatch.ServletManager.init(ServletManager.java:152)
[2005-05-17 16:57:37] at com.caucho.server.webapp.Application.start(Application.java:1604)
[2005-05-17 16:57:37] at com.caucho.server.host.HostContainer.getErrorApplication(HostContainer.java:445)
[2005-05-17 16:57:37] at com.caucho.server.host.HostContainer.buildInvocation(HostContainer.java:327)
[2005-05-17 16:57:37] at com.caucho.server.resin.ServletServer.buildInvocation(ServletServer.java:643)
[2005-05-17 16:57:37] at com.caucho.server.dispatch.DispatchServer.buildInvocation(DispatchServer.java:198)
[2005-05-17 16:57:37] at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:254)
[2005-05-17 16:57:37] at com.caucho.server.port.TcpConnection.run(TcpConnection.java:341)
[2005-05-17 16:57:37] at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490)
[2005-05-17 16:57:37] at com.caucho.util.ThreadPool.run(ThreadPool.java:423)
[2005-05-17 16:57:37] at java.lang.Thread.run(Thread.java:534)

I assumed that the JAR file was not corrupt because using 'jar' from the command line we could successfully view the contents of the file. The classes were compiled and packaged with JDK 1.4.2_06, so I tried another workaround by unpackaging the JAR and then repackaging it with 1.4.2_08. Doing so seemed to get rid of this error in the logs.

Unfortunately, the contents of the JAR were still unable to be read because we are now getting ClassNotFoundExceptions when the classloader tries to load any of the classes in this JAR file. Switching nothing except moving back to Resin 3.0.12 (same configuration, same JAR files, same JDK, same environment) fixes this problem.

Any suggestions on what might cause this error? Obviously, my next plan of attack is to try to compile and package everything with 1.4.2_08, but I just thought I would bring this to your attention. It seems that this must be a bug in 3.0.13 since the exact same application does not get this error in 3.0.12.


Notes
(0000226)
ferg   
05-19-05 00:00   
Jar.getSafeJarEntry needs to close a changed jar file and reload the new ZipEntry.