Friday, July 4, 2008

java.lang.InternalError: Can't connect to X11 window server using 'web62-node2:0.0' as the value of the DISPLAY variable.

This error, which has stacktrace showed below, occurred when using JAI api to generate thumbnails of simulation result.

It worked perfectly on my local machine, but not on web server (web62-node2). Obviously, JAI was trying to call some X windows functions. But there isn't X server on web server at all.

And because there isn't any java GUI in my web app. So I tried to set JAVA_OPTS="-Djava.awt.headless=true" to avoid calling X windows stuff. But it still didn't work. I tried to "export DISPLAY='blablabla'". It didn't work either.

Finally, it worked after "unsetenv DISPLAY".

So solution is:
1. export JAVA_OPTS="-Djava.awt.headless=true"
2. unsetenv DISPLAY

java.lang.InternalError: Can't connect to X11 window server using 'web62-node2:0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$100(X11GraphicsEnvironment.java:52)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:155)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.(X11GraphicsEnvironment.java:131)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
at sun.awt.X11.XToolkit.(XToolkit.java:89)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at java.awt.Toolkit$2.run(Toolkit.java:836)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:828)
at javax.swing.ImageIcon.(ImageIcon.java:81)
at javax.swing.ImageIcon.(ImageIcon.java:107)
at uk.ac.ebi.compneur.image.ThumbnailUtil.resize(ThumbnailUtil.java:35)
at uk.ac.ebi.biomodels.SimulationsDatabase.generateThumbnail(SimulationsDatabase.java:278)
at uk.ac.ebi.biomodels.ModelBean$Part5.doConditionIsTrue(ModelBean.java:3471)
at uk.ac.ebi.biomodels.ModelBean$DefaultPlainBean.conditionIsTrue(ModelBean.java:3226)
at uk.ac.ebi.compneur.jsp.ConditionBean.processRequest(ConditionBean.java:65)
at uk.ac.ebi.biomodels.DefaultBean.processRequest(DefaultBean.java:272)
at uk.ac.ebi.compneur.jsp.WholePartBean.processRequest(WholePartBean.java:141)
at uk.ac.ebi.compneur.jsp.WholePartBean.processRequest(WholePartBean.java:117)
at uk.ac.ebi.compneur.jsp.BaseBean.processRequest(BaseBean.java:81)
at org.apache.jsp.publ_002dmodel_002dtab_jsp._jspService(publ_002dmodel_002dtab_jsp.java:52)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)

No comments: