일전에 저는 MySQL 데이터베이스로 부터 대규모의 이미지를 생성하려고, 윈도우상에서 Java 코드를 작성했습니다. 이 Java 코드는 Frame안에 Panel을 만들고, DB에서 좌표값을 받아와서 이 Panel안에 그림을 그리게 됩니다. 이렇게 만들어진 Java Frame을 통째로 이미지 파일로 만드는 아주 간단한 코드입니다.

//Java 프레임을 만듭니다.
Frame f = new Frame("Frame");
f.setBounds(0, 0, 400, 400);
f.setTitle("Component Testing");

//노란색 패널을 만듭니다.
JPanel BasePanel = new JPanel();
BasePanel.setLayout(null);
BasePanel.setBounds(0, 0, 400, 400);
BasePanel.setBackground(Color.yellow);

//프레임에 패널을 착 붙이고, 보여줍니다.
f.add(BasePanel);
f.setVisible(true);

//2D 그래픽 객체에 패널을 내용을 구겨 넣고, 이를 hello.png에 출력합니다.
BufferedImage image = new BufferedImage(350, 350,BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
BasePanel.paint(g);

try{
ImageIO.write(image,"png",new File("hello.png"));
}catch(Exception e){}

이젠 이 코드를 90여대의 리눅스 클러스터에서 실행하기 위해 각각의 노드(90여대의 클러스터를 이루는 1대의 컴퓨터)에 적당히 일을 나누어 주고 실행하면 엄청난 양의 이미지를 빠르게 만들어 낼 수 있게 된다는 즐거운 마음으로 코드를 실행했는데, 그만 각 클러스터의 노드들이 에러를 내뱉으면서 실행을 거부를 해버리는 상황이 발생했습니다. 물론 콘솔상에서입니다.

K-20080421-581088
나 에러 나온 콘솔이야~

그 이유는 Java의 그래픽 관련 코드를 실행하기 위해서는 리눅스의 GUI 환경인 X 상에서 실행이 되어야 하기 때문이었습니다. 따라서 X가 설치되어 있지 않은 리눅스 클러스터의 노드들에서는 당연히 에러가 발생하게 되고 PBS나 LoadLeveler와 같은 배치 작업을 수행할 수도 없는 상황이 벌어지게 된것입니다.

"자바코드 + PBS(배치스크립트) = 대량의 이미지 파일 생성"의 꿈이 휙하니 날아가버리는 소리가 ㅜㅜ 분산된 각각의 컴퓨터 노드에서 Java의 그래픽을 사용할 수 있는 방법은 우선 뭐가 되었던지 X 가 가능해야 합니다. 그런 후 리눅스의 DISPLAY를 적절히 사용해서 Java를 실행해야 한다는 소린데,,, 이것 때문에 머리가 좀...

참고 : Using Headless Mode in the Java SE Platform
         HeadlessException in JComponent.paint() when java.awt.headless=true

물론 awt를 쓰지 않고 그래픽을 객체를 생성하고 이미지 파일을 만드는 작업은 -Djava.awt.headless=true 옵션을 통해서 가능한데, Frame이나 Panel등이 나오기만 하면 안되니,,, 누가 Java를 Write once Run anywhere(맞나??)라고 했던가...


Posted by hongiiv

2008/04/21 15:39 2008/04/21 15:39
, , , , ,
Response
No Trackback , 5 Comments
RSS :
http://socmaster.homelinux.org/~hongiiv/rss/response/386

Trackback URL : http://socmaster.homelinux.org/~hongiiv/trackback/386

Comments List

  1. lordmiss 2008/04/23 13:53 # M/D Reply Permalink

    글 내용과 관련없는 코멘트여서 죄송합니다만.... 이 블로그에서 사파리로 글을 쓰면 코멘트에 한글을 입력할 수가 없어요. 한영 전환이 안되네요. WebKit의 경우에는 문제가 없는걸로 보입니다. 혹시 직접 코멘트 다실 때 사파리를 이용하시나요? 제 경우에는 아무리 해 봐도 사파리에서는 코멘트창에 한글을 입력할 수가 없습니다.

  2. hongiiv 2008/04/23 17:16 # M/D Reply Permalink

    맥에서도 사파리 대신 파이어폭스만 사용하는 바람에,,, lordmiss님이 지적하신 문제점을 미처 인식하고 있지 못했습니다. css를 조금 수정했더니, 적어도 제 사파리에서는 한글입력이 이젠 잘됩니다. 한번 다시 확인해 주시면 고맙겠습니다. 지금 사파리에서 쓰고 있는데,, ^^;;

    참고로 css의 textarea를 담당하는 부분에 font-style이 두번 정의 되어 있는걸 하나 지워버렸습니다.

    문제점 지적해주셔서 감사합니다. 덕분에 사파리로 제 블로그도 들어와보는군요 ㅋㅋㅋ

  3. leejangwon 2008/12/16 13:20 # M/D Reply Permalink

    자바를설치하시면되지않나?

  4. leejangwon 2008/12/16 13:20 # M/D Reply Permalink

    x도올리시고

    1. OpenID Logohongiiv 2008/12/16 16:51 # M/D Permalink

      그렇죠 모든 노드에 자바와 X를 올리면 되긴합니다. ^^;; 그러다가 xcat 명령어가 일부 나가 떨어져 버렸죠,,,ㅎㅎㅎ

Leave a comment
[로그인][오픈아이디란?]
« Previous : 1 : ... 199 : 200 : 201 : 202 : 203 : 204 : 205 : 206 : 207 : ... 543 : Next »


야후 블로그 벳지


Site Stats

Total hits:
291665
Today:
69
Yesterday:
203