자바 웹 스타트 구축하기

순서는 먼저 배포할 자바 애플리케이션 프로그램을 만들고 이 프로그램을 로딩할 JNLP 파일을 만든다. 마지막으로 JNLP 파일을 링크할 HTML 문서를 작성하면 된다.
 

1. 웹 스타트 응용 애플리케이션 작성

기본적으로 웹 스타트 응용프로그램은 JAVA2 개발 방법론을 사용하여 작성된다. 하지만 이러한 응용프로그램을 웹 스타트와 같이 네트워크를 통한 배포환경에서 사용하려면 보안 및 공유환경으로 인해 다음과 같은 몇가지 고려할 사항이 있다.

  • 자바 class 파일들은 다운로드가 용이하도록 모두 JAR 파일로 묶어야 한다.
  • 그림 파일이나 추가적인 파일 및 자원을 사용한다면 이 모든 것 역시 JAR 파일로 묶어야 한다.
  • SandBox 보안 모델을 사용함으로써 다음과 같이 Local 시스템 자원을 사용하지 못한다.
    - local Disk를 사용하지 못한다.
    - Network 자원은 자신이 다운로드된 서버만이 사용가능하다.
    - Security Manager를 설치할 수 없으며 시스템 프로퍼티를 제한적으로 사용한다.
  • 이러한 보안상 제약점을 넘으려면 signedJAR 파일을 이용하여야 한다.

1.1 JAR 파일 생성

먼저 소스파일을 컴파일 한후 해당 클래스 파일들을 jar 파일로 생성한다.

prompt> jar cvf Calculator.jar Calculator.class
위와 같은 형태로 JAR 커맨드를 이용하여 .jar 파일로 묶게 되면 배포할수 있는 .jar 파일이 생성이 되는데 이러한 프로그램이 클라이언트 시스템에 접근할수 있도록 서명을 해줘야 한다.

J2SE가 설치된 디렉토리의 bin 폴더를 살펴보면 keytool 과 jarsigner 라는 프로그램이 있다. 이 두개의 프로그램은 JDK 1.2 이상 버젼에는 포함되어있는 툴이다.
keytool 은 공개키 생성 프로그램이다. 여기에 지정된 옵션은 다음과 같다.

- genkey : 키생성 , alias : 키별칭 , keystore : 저장할 키, keypass : 키의 비밀번호 ,dname :키 문자열 ,storepass :저장 비밀번호

[root@s2clinux JavaWebStart]# keytool -genkey -keystore notepad -alias SignedNotepad
Enter keystore password: ***** What is your first and last name? [Unknown]: juhui park What is the name of your organizational unit? [Unknown]: s2clinux
What is the name of your organization? [Unknown]: s2clinux
What is the name of your City or Locality? [Unknown]: chonju
What is the name of your State or Province? [Unknown]: chonbuk
What is the two-letter country code for this unit? [Unknown]: kr
Is CN=juhui park, OU=s2clinux, O=s2clinux, L=chonju, ST=chonbuk, C=kr correct? [no]: y
Enter key password for <SignedNotepad>
(RETURN if same as keystore password):
[root@s2clinux JavaWebStart]#
 
그럼 생성된 keystore 파일과 그 파일에 생성된 키를 통해 자체 signed 인증서를 생성하고 확인한다.
  [root@s2clinux JavaWebStart]# keytool -selfcert -alias SignedNotepad -keystore notepad
Enter keystore password: *****
[root@s2clinux JavaWebStart]# keytool -list -keystore notepad
Enter keystore password: *****
Keystore type: jks
Keystore provider: SUN
Your keystore contains 1 entry
signednotepad, Jul 28, 2003, keyEntry,
Certificate fingerprint (MD5): *6:5A:AF:78:CD:49:D3:F4:24:BB:EC:90:2E:E8:C3:1*
[root@s2clinux JavaWebStart]# 

최종적으로 만들어진 인증서를 통해 다음과 같이 jarsigner를 이용하여 jar 파일에 sign한다. 암호를 물으면 notepad 생성시 사용돈 암호를 입력한다.

jarsigner -keystore notepad Notepad.jar SignedNotepad
Enter passphrase for keystore : 

이렇게 하여 만들어진 signed-jar 파일인 Notepad.jar는 최종적으로 웹 스타트를 통해 배포할 수 있는 파일이 되었다. 웹 스타트를 통해 배포되는 파일이 로컬 자원이나 네트워크 자원을 이용하려면 모두 이렇게 singed-jar 를 만들어야 한다.

그럼 이 파일이 어떻게 배포될지를 기술하는 xml 문법으로 이루어진 jnlp 파일을 작성하고 웹서에 올려보도록 한다.

2. JNLP 파일 설정

<?xml version="1.0" encoding="utf-8"?> 
<!-- JNLP File for Calculator Application -->
<jnlp spec="0.2 1.0"
codebase="http://s2clinux.chonbuk.ac.kr/seminar/summer2003/JavaWebStart"
href="SignedNotepad.jnlp">
<information>
<title>s2clinux</title>
<vendor>Sun Microsystems, Inc.</vendor>
<homepage href="http://s2clinux.chonbuk.ac.kr/"/>
<description>Java Web Start Demo Program</description>
<description kind="short">JavaWebStart Calculator Program ver1.0</description>
<offline-allowed/>
</information>
<security> <all-permissions/>
</security>
<resources> <j2se version="1.4+"/>
<jar href="Notepad.jar"/>
</resources>
<application-desc main-class="Notepad"/>
</jnlp> 

- jnlp tag : 이 내용이 jnlp에 관련된 것임을 기술하고 있으며 <jnlp ...> </jnlp>로 닫힌다.
- spec : jnlp 버젼을 나타낸다.
- codebase : 이 문서의 기본 URL을 정의한다.
- href : 이 문서의 이름을 정의한다.
- information : 프로그램에 대한 설명을 정의하고 있다.
- security : 프로그램이 실행될때 로컬 자원에 대한 권한을 기술한다.
- resources : j2se 버젼 및 실행환경에 대한 정보를 담고 있다.
- application-desc : 프로그램 실행시 필요한 사항을 기술하며 main-class 는 반드시 지정되어야 할 속성으로 자바 프로그램의 메인 메소드가 있는 클래스를 지정한다.

이제 jar 파일과 jnlp 파일을 웹 서버의 배포 디렉토리에 위치 시켜 놓는다.

 

 

 

+ Recent posts