Java CGI HOWTO by David H. Silber javacgi-document@orbits.com 1998년 12월 1일 버전 0.5 옮긴이:박주희(jhpark@osnn.hanyang.ac.kr) 이 HOWTO 문서는 어떻게 자바로 작성된 CGI 프로그램이 서버에서 사용가능 하도록 설정 하며 또 CGI 프로그램을 작성하기 위해 어떻게 자바를 사용하는지를 설명한다. HOWTO 문서들은 리눅스 운영체제에서의 사용을 목적으로 작성되지만, 특정한 유닉스 버전에 상관 없이 적용된다. ______________________________________________________________________ 목차 1. 소개 1.1 사전 지식 1.2 본 문서에 관하여 1.3 패키지 1.4 메일링 리스트 AID CDATA mailing-list(LABEL)LABEL 2. 자바 CGI프로그램을 실행하기 위해 서버 셋팅하기 (설명 첨부) AID CDATA install-long(LABEL)LABEL 2.1 시스템 요구사항 2.2 Java CGI 애드-온 소프트웨어 2.3 소스 압축 풀기 2.4 지역 경로(local path)에 관한 방침을 정하라 AID CDATA make-programs(LABEL)LABEL 2.5 인스톨 테스트하기 AID CDATA install-test(LABEL)LABEL 3. Java CGI 프로그램을 실행시키기 위하여 서버 세팅하기(요약형태) AID CDATA install-short(LABEL)LABEL 4. Java CGI 프로그램 실행하기 4.1 CGI 모델 상에서 자바 프로그램의 실행을 막는 장애물 4.1.1 자바 프로그램을 보통 실행파일처럼 실행시킬 수 없다. 4.1.2 자바는 환경(변수)에 대해 일반적인 액세스할 수 없다. 4.2 Java CGI프로그램을 실행할 때의 문제점 극복 4.2.1 java.cgi 스크립트 4.2.2 HTML form으로 부터 java.cgi 호출하기 5. Java CGI클래스 사용하기 5.1 CGIAID CDATA cgi-class(LABEL)LABEL 5.1.1 클래스 문법 5.1.2 클래스 설명 5.1.3 멤버 요약 5.1.4 참조 5.1.5 CGI() 5.1.6 getNames() 5.1.7 getValue() 5.2 CGI_TestAID CDATA cgi-test-class(LABEL)LABEL 5.2.1 멤버요약 5.2.2 참조 5.2.3 main() 5.3 EmailAID CDATA email-class(LABEL)LABEL 5.3.1 클래스 문법 5.3.2 클래스 문법 5.3.3 멤버 요약 5.3.4 참고 5.3.5 Email() 5.3.6 send() 5.3.7 sendTo() 5.3.8 subject() 5.4 Email_TestAID CDATA email-test-class(LABEL)LABEL 5.4.1 멤버 요약 5.4.2 참조 5.4.3 main() 5.5 HTMLAID CDATA html-class(LABEL)LABEL 5.5.1 클래스 문법 5.5.2 클래스 설명 5.5.3 멤버 요약 5.5.4 참조 5.5.5 HTML() 5.5.6 author() 5.5.7 definitionList() 5.5.8 definitionListTerm() 5.5.9 endList() 5.5.10 listItem() 5.5.11 send() 5.5.12 title() 5.6 HTML_TestAID CDATA html-test-class(LABEL)LABEL 5.6.1 멤버 요약 5.6.2 참조 5.6.3 main() 5.7 TextAID CDATA text-class(LABEL)LABEL 5.7.1 클래스 문법 5.7.2 클래스 설명 5.7.3 멤버 요약 5.7.4 참고 5.7.5 add() 5.7.6 addLineBreak() 5.7.7 addParagraph() 6. 향후 계획 7. 변화 7.1 0.4에서 0.5간의 변화 7.2 0.3에서 0.4간의 변화 7.3 0.2에서 0.3간의 변화 7.4 0.1에서 0.2간의 변화 ______________________________________________________________________ 1. 소개 자바가 디자인된 방식 때문에 프로그래머는 시스템의 환경 변수들을 쉽게 액세스할 수 없다. Java Development Kit (JDK)가 셋업된 방식 때문에, 프로그램을 호출하기 위해서는 여러 개의 토큰을 이용해야 하며, 이것도 표준 HTML폼/CGI 작동방식과 잘 맞지 않는다. 이러한 한계에 대한 몇 가지 방법이 있으며, 필자가 그 중 하나를 구현하였다.자세한 것은 뒤를 더 읽어보길 바란다. 이전의 문단을 1996년에 작성한 이래로 자바의 기술에도 많은 변화가 있어왔다. 서버-측(server-side) 자바 프로그램을 실행시키는 것이 더 나은 방법일 수 있으며 -- 서브릿쪽을 살펴보아도 괜찮을 것이다. 1.1. 사전 지식 필자는 독자들이 HTML과 CGI 개념들에 관한 일반적 지식과 최소한의 HTTP서버에 관하여 기본적인 지식을 갖고 있다고 가정한다. 물론 자바로 프로그램을 작성하는 법을 알아야 하며 그렇지 못하면 이 문서는 이해하기 힘들다. 1.2. 본 문서에 관하여 본 문서의 최근 판은 http://www.orbits.com/software/Java_CGI.html에서 읽을 수 있다. 1.3. 패키지 본 문서에서 설명하는 패키지는 다음의 anonymous FTP에서 엑세스할 수 있다. ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz. 패키지에는 본 문서의 SGML 소스도 포함되어 있다. 본 패키지는 GNU Library General Public License 조항에 의거해 배포된다. 본 문서는 리눅스 HOWTO 판권(copyright) 주의사항에 의거해서 배포된다. 만약 본 소프트웨어를 사용한다면, 다른 사람들이 Java CGI클래스를 찾을 수 있도록 http://www.orbits.com/software/Java_CGI.html를 참조하기 바란다. 필자가 본 패키지를 유지하고 지원하는데 사용할 시간이 없어서 본 문서가 아마 마지막 판이 될 것이다. 아무라도 본 소프트웨어를 아끼어 유지보수를 인수하려 한다면, javacgi-document@orbits.com으로 연락 바란다. 1.4. 메일링 리스트 사람들이 본 소프트웨어를 인스톨하고 사용하는데 있어서의 상호의 문제점들을 서로 돕고자 필자가 majordomo (역자주:메일링 리스트 메니저의 하나) 리스트를 만들었다. subscribe라는 말을 적어서 javacgi- request@orbits.com로 메시지를 보내기 바란다. 2. 자바 CGI프로그램을 실행하기 위해 서버 셋팅하기 (설명 첨부) 이 부분은 설치 작업이 어떤 영향을 끼치는지 여러분 자신이 알게 하기 위해 풍부한 설명과 함께 필자의 Java CGI 패키지를 인스톨 할 것이다. 만약 본 프로그램을 인스톨만 하고 왜인지 그리고 왜 그래야만 하는지에 대한 것은 신경 쓰 지 않는다면, 다음으로 넘어가라. ``자바 CGI프로그램을 실행하기 위해 서버 셋팅하기 (요약)''. 2.1. 시스템 요구사항 본 소프트웨어는 Java Development Kit이 인스톨된 대부분의 유닉스 형태의 웹 서버에서 작동할 것이다. 필자는 apache를 HTTP 데몬으로 실행시키며 Debian Linux를 사 용하고 있다. 만약 실행되지 않으면, 메일링 리스트를 찾아보길 바란다. 자세한 것은 ``메일링 리스트''를 참조하라. 불행히도 자바 런타임 인터프리터는 메모리를 많이 필요로 하는 것 같다-- Java CGI 프로그램들을 여러 번 실행한다면 램이 더 필요할 것이다. 2.2. Java CGI 애드-온 소프트웨어 본 문서에서 설명하려는 소프트웨어는 Java CGI라고 한다. ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz에서 얻을 수 있다. 버전이 변했을지도 모른다. 2.3. 소스 압축 풀기 본 패키지를 풀어 둘 적당한 디렉토리를 찾는다. (다른 패키지를 풀어 둔 일정한 곳이 없다면, /usr/local/src를 사용하라.) 다음의 명령으로 배포판을 푼다. gzip -dc java_cgi-0.5.tgz | tar -xvf - java_cgi-0.5디렉토리가 생성될 것이다.. 거기에 이 다음 단계부터 참조 파일이 있을 것이다. (버전이 바뀌었다면, 지금부터는 그 배포판의 설명을 참고하라) 2.4. 지역 경로(local path)에 관한 방침을 정하라 Java CGI프로그램들을 어디에 둘지 결정한다. 보통, cgi-bin디렉토리에 같이 둘 것이다. 필자의 apache 서버는 cgi-bin 디렉토리로써 /var/www/cgi-bin을 사용하게 설정되어 있어서, Java CGI 프로그램들을 넣어둘 디렉토리로는 /var/www/javacgi를 사용한다. 지정된 CLASSPATH 디렉토리에 Java CGI 프로그램들을 깔고 싶지 않을 지도 모른다. 시스템 설정을 반영하기 위해 Makefile을 편집한다. root로 로그인 한 것을 확인하고 make install 을 실행한다. 이 명령이 자바 프로그램들을 컴파일하고, java.cgi 스크립트를 시스템에 맞게 변경하고 적당한 곳에 그 프로그램들을 인스톨한다. 추가로, 본 문서의 HTML 버전이나 HTML테스트 문서를 원한다면, 대신 make all 을 실행한다. 2.5. 인스톨 테스트하기 배포판으로부터 인스톨된 것은 javacgitest.html, javaemailtest.html 와 javahtmltest.html이라는 HTML문서들이다. 앞장에서 all로 인스톨했다면, Makefile에서 WEBDIR로 설정된 디렉토 리에 이 문서들이 있을 것이다. 그렇지 않다면 javacgitest.html-dist, javaemailtest.html-dist 와 javahtmltest.html-dist로부터 빌드(build)하기 위해make test를 실행해 도 된다. 인스톨한 것이 정확하게 동작할 때, JAVACGI 디렉토리로부터 CGI_Test.class, Email_Test.class와 HTML_Test.class를, WEBDIR 디렉토리로 부터는 javacgitest.html, javaemailtest.html 와 javahtmltest.html을 지우고 싶을지도 모른다. 보통 서버에게만 사용 가능한 사용자 정보를 보여주기 때문이다. 3. Java CGI 프로그램을 실행시키기 위하여 서버 세팅하기(요약형태) o ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz로부터 Java CGI패 키지를 얻는다. (버전이 변했을지도 모른다) o 다음 명령어로 배포판을 푼다: gzip -dc java_cgi-0.5.tgz | tar -xvf - (버전이 바뀌었다면, 지금부터는 그 배포판의 설명을 참고하라) o 새로이 생성된java_cgi-0.5 디렉토리에서 시스템에 맞게Makefile을 편집한다. o root로써 make install을 실행한다. 이 명령이 자바 프로그램을 컴파일하고, 여러분의 시스템에 관련된 정보들을 적용(apply)시키고 다양한 파일들을 인스톨 한다. 만약 HTML로된 본 문서와 HTML테스트 문서를 원한다면, 대신 make all을 실행한다. o 이제 준비가 되었다. 4. Java CGI 프로그램 실행하기 4.1. CGI 모델 상에서 자바 프로그램의 실행을 막는 장애물 웹 서버에서 자바 프로그램을 실행시키는데 있어서 두 가지 문제점이 있다: 4.1.1. 자바 프로그램을 보통 실행파일처럼 실행시킬 수 없다. 커멘드 라인상에서 자바 런타임 인터프리터를 실행하고 (프로그램이 실행될 수 있도록) 초기화 클래스가 있어야 한다. HTML 형태로는 커멘드 라인을 웹 서버에 보낼 수 없다. 4.1.2. 자바는 환경(변수)에 대해 일반적인 액세스할 수 없다. 자바 프로그램이 필요로 하는 개개의 환경변수는 정확이 넘겨져야(pass) 한다. C 에서의 getenv() 함수 같은 메소드는 없다. 4.2. Java CGI프로그램을 실행할 때의 문제점 극복 위의 장애물을 처리하기 위해, 자바 인터프리터에게 필요한 정보를 제공하는 쉘 CGI프로그램을 작성하였다. 4.2.1. java.cgi 스크립트 이 쉘 스크립트는 사용하고자 하는 Java CGI프로그램과 HTTP데몬 사이의 상호작용(interaction)을 관리한다. 이 스크립트는 실행하고자 하는 프로그램의 이름을 서버가 제공하는 데이타로부터 뽑아내며 임의의 임시 파일 안에 환경 데이타(environment data) 모두를 모은다. 그리고나서 커멘드 라인에 덧붙여진 환경 정보 파일의 이름과 프로그램 이름을 가지고 자바 런타임 인터프리터를 실행시킨다. java.cgi스크립트는 ``지역 경로에 관한 방침을 정하라'' 에서 구성되었으며 인스톨되었다. 4.2.2. HTML form으로 부터 java.cgi 호출하기 Java CGI 프로그램을 사용하는 필자의 폼은 다음과 같이 form action을 명시한다: