timebetweenevictionrunsmillis maxactive conexiones java tomcat7 apache-commons apache-fop

java - maxactive - tomcat shared libraries



Verifique el error en el servidor de producción Tomcat 7 probablemente causado por Apache Commons Logging 1.0.4 (2)

¿Por qué se produce este error (java.lang.VerifyError)?

java.lang.VerifyError sería el resultado cuando haya compilado contra una biblioteca diferente de la que está usando en tiempo de ejecución (en su servidor de producción).

Sugerencia # 1:

Puede usar commons-logging-1.1.1.jar lugar de commons-logging-1.0.4.jar . Luego reconstruye tu proyecto y comprueba.

Enlace de recursos: http://www.java-samples.com/showtutorial.php?tutorialid=674

Sugerencia # 2:

Si está utilizando maven, agregue esta dependencia en su pom.xml,

<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency>

y elimine la siguiente dependencia de su pom.xml

<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.0.4</version> </dependency>

Enlace de recursos: Obtención de la excepción java.lang.ClassNotFoundException: excepción de org.apache.commons.logging.LogFactory

Sugerencia # 3:

templatetypedef ha cavado el problema y dar 2 soluciones

Un VerifyError generalmente significa que usted cargó en un archivo de clase que está mal formado o que hace referencia a otro archivo de clase que ha cambiado de una manera que hace que el código en otro archivo de clase ya no sea válido. Por ejemplo, si compiló un archivo de clase que hizo referencia a un método en alguna otra clase, luego modificó y recompiló independientemente la segunda clase después de modificar la firma de ese método, obtendría este tipo de error.

Yo sugeriría hacer una construcción limpia y ver si este problema desaparece. De lo contrario, verifique si está utilizando archivos JAR y de origen actualizados.

Enlace de recursos: https://stackoverflow.com/a/5411528/2293534

Sugerencia # 4:

Si su versión JDK no coincide entre el servidor local y el de producción, entonces haga lo mismo si es posible. También puede intentar compilar con una versión diferente de JDK y en una máquina diferente.

Enlace de recursos: Causas de obtener un java.lang.VerifyError

Esperemos que te ayude.

Estoy desarrollando la aplicación web en Tomcat 7. Todo funciona bien en mi versión local de Tomcat, pero cuando lo implemento en el servidor de producción, se produce esta excepción.

java.lang.VerifyError: (class: org/apache/commons/logging/impl/Log4JLogger, method: fatal signature: (Ljava/lang/Object;Ljava/lang/Throwable;)V) Incompatible object argument for function call at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2595) at java.lang.Class.getConstructor0(Class.java:2895) at java.lang.Class.getConstructor(Class.java:1731) at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:410) at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529) at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235) at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:209) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351) at org.apache.fop.apps.FopFactory.<clinit>(FopFactory.java:68) at cz.soma.tomcat.generator.DokumentaceUtils.createPdfDocument(DokumentaceUtils.java:818) at cz.soma.tomcat.generator.FileFactory.createPdfDocument(FileFactory.java:58) at cz.soma.tomcat.generator.Generator.doPost(Generator.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

El error se produce cuando intento FopFactory.newInstance(); (de Apache FOP 1.0). Después de eso, intenta LogFactory.getLog(FopFactory.class); . Hace que, logClass.getConstructor(logConstructorSignature); se llama, donde logConstructorSignature contiene un String.class. (al menos en mi máquina local)

try { logConstructor = logClass.getConstructor(logConstructorSignature); return (logConstructor); } catch (Throwable t) { throw new LogConfigurationException ("No suitable Log constructor " + logConstructorSignature+ " for " + logClassName, t); }

Después de esto se llaman las funciones java.lang.Class y la excepción lanzada. ¿Tiene alguna idea, por qué el error solo se produce en el servidor de producción, pero no en mi máquina local?


Probablemente tenga una versión diferente de los archivos jar de registro en el directorio lib común en el servidor Tomcat de producción. Pídale a alguien que revise el directorio / lib y vea si hay archivos de registro en el directorio lib. Quite esos archivos jar para que se utilicen los archivos jar de su aplicación local o asegúrese de que la misma versión de las dependencias esté definida en su aplicación.

Si desea intentar reproducir de forma local, replique el conjunto de archivos jar en el directorio de producción lib en su instalación local.