에러 내용 :
java.lang.Throwable: java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
 at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
 at sun.awt.X11GraphicsEnvironment.access$000(X11GraphicsEnvironment.java:95)
 at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:184)
 at java.security.AccessController.doPrivileged(AccessController.java:192)
 at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:173)
 at java.lang.J9VMInternals.initializeImpl(Native Method)
 at java.lang.J9VMInternals.initialize(J9VMInternals.java:177)
 at java.lang.Class.forNameImpl(Native Method)
 at java.lang.Class.forName(Class.java:131)
 at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:99)
 at java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1174)
 at com.sun.media.jai.codecimpl.JPEGImage.<init>(JPEGImageDecoder.java:95)
 at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:49)
 at com.sun.media.jai.codec.ImageDecoderImpl.decodeAsRenderedImage(ImageDecoderImpl.java:148)
 at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:60)
 at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:52)
 at javax.media.jai.OperationRegistry.create(OperationRegistry.java:2956)
 at com.sun.media.jai.opimage.StreamRIF.create(StreamRIF.java:92)
 at com.sun.media.jai.opimage.FileLoadRIF.create(FileLoadRIF.java:102)
 at javax.media.jai.OperationRegistry.create(OperationRegistry.java:2956)
 at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:402)
 at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:414)
 at javax.media.jai.RenderedOp.getHeight(RenderedOp.java:1252)
 at jeus_jspwork._servlet_engine3._MyGroup2._site._WEB_5fINF._jsp._wap._main._500_M802_5fjsp._jspService(_500_M802_5fjsp.java:153)
 at jeus.servlet.jsp.HttpJspBase.service(HttpJspBase.java:53)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
 at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
 at jeus.servlet.servlets.JspServlet.executeServlet(JspServlet.java:423)
 at jeus.servlet.engine.RequestDispatcherImpl.processCommonRequestDispatcher(RequestDispatcherImpl.java:299)
 at jeus.servlet.engine.RequestDispatcherImpl.doForward(RequestDispatcherImpl.java:212)
 at jeus.servlet.engine.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:170)
 at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:236)
 at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:257)
 at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1183)
 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:902)
 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
 at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
 at jeus.servlet.engine.ServletWrapper.executeServlet(ServletWrapper.java:306)
 at jeus.servlet.filter2.FilterChainImpl.internalDoFilter(FilterChainImpl.java:139)
 at jeus.servlet.filter2.FilterChainImpl.doFilter(FilterChainImpl.java:91)
 at jeus.servlet.filter2.FilterChainImpl.internalDoFilter(FilterChainImpl.java:122)
 at jeus.servlet.filter2.FilterChainImpl.doFilter(FilterChainImpl.java:91)
 at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
 at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
 at jeus.servlet.filter2.FilterChainImpl.internalDoFilter(FilterChainImpl.java:122)
 at jeus.servlet.filter2.FilterChainImpl.doFilter(FilterChainImpl.java:91)
 at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:194)
 at jeus.servlet.engine.WebtobRequestProcessor.run(WebtobRequestProcessor.java:207)
<<__!Exception__>>
javax.servlet.ServletException: sun.awt.X11GraphicsEnvironment (initialization failure)
 at jeus.servlet.jsp2.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:859)
 at jeus.servlet.jsp2.runtime.PageContextImpl.handlePageException(PageContextImpl.java:789)
 at jeus_jspwork._servlet_engine3._MyGroup2._site._WEB_5fINF._jsp._wap._main._500_M802_5fjsp._jspService(_500_M802_5fjsp.java:201)
 at jeus.servlet.jsp.HttpJspBase.service(HttpJspBase.java:53)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
 at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
 at jeus.servlet.engine.RequestDispatcherImpl.processCommonRequestDispatcher(RequestDispatcherImpl.java:299)
 at jeus.servlet.engine.RequestDispatcherImpl.doForward(RequestDispatcherImpl.java:212)
 at jeus.servlet.engine.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:170)
 at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:236)
 at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:257)
 at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1183)
 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:902)
 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
 at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
 at jeus.servlet.engine.ServletWrapper.executeServlet(ServletWrapper.java:306)
 at jeus.servlet.filter2.FilterChainImpl.internalDoFilter(FilterChainImpl.java:139)
 at jeus.servlet.filter2.FilterChainImpl.doFilter(FilterChainImpl.java:91)
 at jeus.servlet.filter2.FilterChainImpl.internalDoFilter(FilterChainImpl.java:122)
 at jeus.servlet.filter2.FilterChainImpl.doFilter(FilterChainImpl.java:91)
 at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
 at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
 at jeus.servlet.filter2.FilterChainImpl.internalDoFilter(FilterChainImpl.java:122)
 at jeus.servlet.filter2.FilterChainImpl.doFilter(FilterChainImpl.java:91)
 at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:194)
 at jeus.servlet.engine.WebtobRequestProcessor.run(WebtobRequestProcessor.java:207)
[2009.12.24 11:08:06][1][0_299] [container3-43] [WEB-3456] [_MyGroup2/site] fail to execute servlet : action
<<__Exception__>>


설정 방법 :
# 먼저 X11 관련 라이브러리가 설치되어있는지 확인합니다.
   - /usr/bin/X11

1. Window 로컬 환경 일경우 java -Djava.awt.headless=true Test(자바클래스파일)
   위와 같은 방법으로 시스템 속성을 설정과 함께 클래스를 실행시켜줍니다.


2. 톰켓일경우 이용할때는 catalina.sh 파일에
CATALINA_OPTS=-Djava.awt.headless=true 를 추가하고 재구동합니다.

3. 제우스일경우 /jeus/config/JEUSMain.xml
<engine-container> 부분에 -Djava.awt.headless=true 설정을 넣어줍니다.

# JEUSMain.xml
<?xml version="1.0" encoding="utf-8"?>
<jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    <node>
        <name>test</name>
        <engine-container>
            <name>container3</name>
            <id>123</id>
            <base-port>10981</base-port>
            <command-option>-Xms128m -Xmx512m -Djava.awt.headless=true</command-option>
            <engine-command>
                <type>servlet</type>
                <name>engine3</name>
            </engine-command>
            <invocation-manager-action>AutoClose</invocation-manager-action>
        </engine-container>



################### 에러 관련 추가 내용 - 펌글 ######################

이것은 일종의 JDK의 버그이다. 원인은 자바가 BufferedImage 를 생성하고 실제로 Graphics 객체를 얻어오기 위해 getGraphics나 createGraphics 메소드를 부를때, 실제로 display하거나 mouse, keyboard 자원을 하나도 쓰지 않을 것임에도 불구하고 내부적으로 AWT Toolkit이 그것들에 대한 자원을 얻어오게 되어있었기 때문이다. 

Sun에서는 이걸 버그로 취급하며 해결 방법은 2가지가 있다.

1. JRE 1.3 이하 일경우 www.x.org 에서 다운로드 받을 수 있는 Xvfb 라는 것을 사용하는 방법이다. 이것은 X-server 에뮬레이터이다.

참고

1.1. 가상 xwindow실행하기

1.1.1 리눅스

리눅스의 경우 XFree86-Xvfb-4.1.0-3.i386.rpm 을 설치해야 합니다.
XFree86-Xvfb-4.1.0-3.i386.rpm 패키지는 아래의 패키지가 최소한 설치되어 있어야 합니다.
XFree86-4.1.0-3.i386.rpm
Mesa-3.4.2-7.i386.rpm
Xaw3d-1.5-10.i386.rpm

설치과정중에 에러가 발생하면 아래 커맨드를 이용하여 의존성을 검사하면 됩니다.
rpm -ivh --nodeps ./Mesa-3.4.2-7.i386.rpm
rpm -ivh ./XFree86-4.1.0-3.i386.rpm
rpm -ivh ./Xaw3d-1.5-10.i386.rpm
rpm -ivh ./XFree86-Xvfb-4.1.0-3.i386.rpm

Xvfb는 100dpi 및 75dpi용 폰트도 설치되어 있어야 합니다.
폰트와 관련하여 간단하게 작업하려면 아래와 같이 하세요
wget http://www.psoft.net/downloads/X11.tgz
tar xfz ./X11.tgz -C /usr/X11R6/lib/

이제 모든 설치가 완료되면 아래 커맨드로 Xvfb를 활성화 시킵니다.
/usr/X11R6/bin/Xvfb ':0' -screen 0 100x100x8 &

이제 서버가 시작할 때 마다 이 기능을 활성화 시키려면
/etc/rc.d/rc.local에 추가하면 됩니다.

1.2.1  Solaris :

다운로드 : X11R6_bin.tar.gz

1.2.2 설치 :
% su -
# mkdir /usr/X11R6
# cp X11R6_bin.tar.gz /usr/X11R6
# cd /usr/X11R6
# gunzip X11R6_bin.tar.gz
# tar xvf X11R6_bin.tar
# rm X11R6_bin.tar


1.2.3. 자동실행
실행 스크립트 : xvfb.server 다운로드
자동 실행 설정 스크립트 : install.xvfb다운로드
xvfb.server에서 RUN_AS_USER=tomcat 을 적절히 수정 후 install.xvf 만 실행하면 끄~읕

참조 :
http://www.x.org/
http://developers.sun.com/solaris/articles/solaris_graphics.html#3
http://www.idevelopment.info/data/Unix/General_UNIX/GENERAL_XvfbforSolaris.shtml
http://chartworks.com/support/server/XvfbonUnix.html
 

2. JRE 1.4 이상에서  Headless AWT Toolkit을 이용해서 이 문제를 해결한다. 파일을 실행할때 간단히 -Djava.awt.headless=true 옵션을 주는것만으로 가능하다.
 

[참고]

java 1.4 버전 이상에서는 자바 자체에서 처리 가능하게 할수 있습니다.

리눅스에서 굳이 x-window나 xvf 깔기 귀찮다고 아니면 할줄 모르시는 분들은 간단하게 이문제를 해결하는 방법이 있습니다.

<!--
Note: If true, the system property, java.awt.headless, will be set to true.
This should be used with JDK 1.4+ on servers without graphics cards and
monitors. Otherwise, the property is not set.
-->
<!-- <headless-server>true</headless-server> -->

/WEB-INF/flex/flex-config.xml에서 이부분의 주석을 제거 해주시면 됩니다.

<headless-server>true</headless-server>


그리고 자바 구동시에(톰켓이나 레진) JVM 파라메터를 적는 부분이 있을 것입니다.

레진 같은 경우 걍 뒤에 자바 파라메터 적으면 작동됩니다.

resin start -Djava.awt.headless=true

즉 flex-config에서 headless-server 수정하고 jsp 엔진 구동시에 파라 메터 Djava.awt.headless=true 를 넣어주면 에러없이 잘 해결된다.


톰캣에서 이용할때는 catalina.sh 파일에
CATALINA_OPTS=-Djava.awt.headless=true를 추가하고 재구동하면 된다.


※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
12 24, 2009 19:54 12 24, 2009 19:54


Trackback URL : http://develop.sunshiny.co.kr/trackback/363

Leave a comment


Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. chatbots chatbots %M
  2. london relocation agents london relocation agents %M
  3. how to build chatbot how to build chatbot %M
  4. advanced chatbot advanced chatbot %M
  5. facebook ai chatbot facebook ai chatbot %M

Calendar

«   08 2019   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2660972 HIT
TODAY 1288 HIT
YESTERDAY 1540 HIT