zxingcore in tomcat web app

105 views
Skip to first unread message

XMing

unread,
Aug 3, 2016, 10:36:01 PM8/3/16
to zxing
Hi all,
I have barcode processing code in spring bean in tomcat.

I've added the following line to setenv.sh in tomcat bin directory.

export CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true"

The web app runs well at the first time. After some time,let me say 1 or 2 days, exception ocurrs. Any clue would be appreciated.

Env detail:
OS : Ubuntu 14.10
Server version: Apache Tomcat/7.0.63
Server built: Jun 30 2015 08:08:33 UTC
Server number: 7.0.63.0
OS Name: Linux
OS Version: 3.19.0-59-generic
Architecture: amd64
JVM Version: 1.7.0_79-b15
JVM Vendor: Oracle Corporation


Here is the exception message:
==========================================
HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=145E29B2CF34304B36EC686F20106B58; Path=/; HttpOnly
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 5261
Date: Wed, 03 Aug 2016 08:04:07 GMT
Connection: close

<html><head><title>Apache Tomcat/7.0.63 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class java.awt.image.BufferedImage</h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u>Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class java.awt.image.BufferedImage</u></p><p><b>description</b> <u>The server encountered an internal error that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class java.awt.image.BufferedImage
org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1303)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:977)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
</pre></p><p><b>root cause</b> <pre>java.lang.NoClassDefFoundError: Could not initialize class java.awt.image.BufferedImage
com.qqm.common.util.QRCodeUtil.createQRImage(QRCodeUtil.java:70)
com.qqm.api.service.business.app.v3.impl.V3InvitationBizServiceImpl.getQrcodeInfo(V3InvitationBizServiceImpl.java:389)
com.qqm.api.service.business.app.v3.impl.V3InvitationBizServiceImpl$$FastClassBySpringCGLIB$$78bdc775.invoke(&lt;generated&gt;)
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:649)
com.qqm.api.service.business.app.v3.impl.V3InvitationBizServiceImpl$$EnhancerBySpringCGLIB$$5ab5e2f0.getQrcodeInfo(&lt;generated&gt;)
com.qqm.api.action.app.app3.InvitationAction.getQrcodeInfo(InvitationAction.java:80)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
</pre></p><p><b>note</b> <u>The full stack trace of the root cause is available in the Apache Tomcat/7.0.63 logs.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.63</h3></body></html>
==========================================

Lachezar Dobrev

unread,
Aug 4, 2016, 7:09:26 AM8/4/16
to XMing, zxing
  Dig through the logs until you find the first error in the series. The few times I've seen errors like this one were an OOME followed by an incomplete attempt to recover from it. BufferedImage class has a native part, which once broken is not (to the best of my knowledge) fixable in Java.
  OOME can happen not only when the memory is insufficient, but also when other types of native resources are insufficient: threads on file/stream descriptors are common abused such resources.
  Keep in mind, that although ZXing Core *is* crashing it may very well *not* be the reason for the crash, but the victim of it.


--
You received this message because you are subscribed to the Google Groups "zxing" group.
To unsubscribe from this group and stop receiving emails from it, send an email to zxing+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages