|
AWT스윙GUI |
[1] |
|
등록일:2008-04-22 11:26:27 (0%) 작성자: 제목:예제프로그램 웹스타트로 실행하기 - Web Start - 웹에서 스윙 사용하기 |
|
VI. 예제프로그램 웹스타트로 실행하기
---------------------------------------
웹스타트 응용프로그램 개발 과정을 다시한번 정리해보면 다음과 같다.
1. 실행될 응용프로그램을 AWT/Swing으로 개발한다.
2. 개발된 응용프로그램을 배포할 수 있도록 jar로 묶는다.
3. Local 자원을 사용할 수 있도록 jar에 sign을 하여 signed-jar를 만든다.
4. 배포 실행될 응용프로그램에 대한 내용을 jnlp 화일을 만들어 xml로 기술한다.
5. web 서버에 JNLP mime type을 설정한다.
6. web 서버의 적절한 디렉토리에 singed-jar, jnlp 화일 및 이미지 화일을 복사한다.
여기까지의 사항이 완료되었다면 일단 웹브라우져에서 웹스타트 응용프로그램을
실행할 수 있는 웹서버 환경이 갖추어진 것이다.
실제 예제로 만들어진 editor.jar 와 simple.jnlp를 브라우져에서 실행하려면
웹서버를 실행하고 단순히 다음과 같이 simple.jnlp를 호출하는 URL을 치면 된다.
http://www.javanuri.com/jaws/apps/simple.jnlp
브라우져에 jre1.4가 정상적으로 설치되었으면 먼저 "Web Start Logo"화면이 뜨고
보안을 위해 jar에 sign된 내용이 나타나면서 승인 여부를 묻는 화면이 나온다.
여기에서 "예"를 선택하면 즉시 editor 프로그램이 실행될 것이다.
그리고 두번째로 웹에서 실행할 때는 바탕화면에 아이콘 생성 여부를 물을 것이다.
여기에서 "예"를 선택하면 바탕화면에 아이콘이 생성되면서 다음 부터는 웹브라우져를
통하지 않고 바탕에 있는 아이콘을 단순히 클릭함으로써 응용프로그램이 시작될 것이다.
이제까지 만들어왔던 SimpleEditor 예제에 대한 관련 jar, jnlp, jpg 화일들은
example.zip에 묶어 첨부되어 있다. 이를 다운로드 받아 압축을 풀고 웹서버에 설치하고
실행시켜보기 바란다. 단 실행시 jnlp화일에 있는 codeBase 속성은 여러분의 웹서버 주소에
맞도록 수정해야 한다.
서버 설정은 이제까지 설정한데로 하면 보통은 이상없이 환경이 설정된다. 하지만
클라이언트 즉 브라우져 환경은 사용자에 따라 웹스타트가 설정되어 있을 수도 있고, 아닐수
도 있다. 따라서 이러한 브라우져 환경을 통제하려면 html 및 javascript를 이용할 필요가
있다.
사용자 브라우져를 체크해 웹스타트를 실행할 수 있는 방법은 여러가지가 있을 수 있지만
대체로 다음 세가지 방법이 있다.
1. 자바스크립트를 이용해 웹스타트 설치여부를 체크한 다음 설치돼지 않았을 경우
설치하라는 메시지 링크를 주는 방법
2. 웹스타트 버젼1.2의 자동 설치 기능을 이용하는 방법
3. 간단한 JRE1.4를 이용한 Applet을 이용하는 방법
첫번째 방법인 자바웹스타트 설치여부를 체크하는 방법은 우선 웹브라우져 종류를 파악해야 하는데,
이방법은 "Java Web Start Developers's Guide"에서 사용한 자바스크립트인 xbDetectBrowser()를 사용하여
할 수 있다. xbDetectBroser.js는 본 글에 첨부 하였다.
다음 예제는 "Java Web Start Developers's Guide"에 나오는 예제를 응용하여 이해하기 쉽게 변경한
것으로서 스크립트를 실행시키면 Java Web Start 가 설치되었을 경우는 해당 프로그램을 실행할 수 있는
URL 링크가 나오고, 설치되어 있지 않을 경우는 Java Web Start를 설치하라는 메시지가 나오는 예제이다.
Simple1.html
=====================================================================================================
<HTML>
<HEAD><TITLE>Java Web Start Page</title>
<!----------------------------------------------------------------
xbDetectBrowser() 함수를 이용하여 브라우져 환경에 관한 정보 생성
------------------------------------------------------------------>
<SCRIPT LANGUAGE="JavaScript" SRC="xbDetectBrowser.js"></SCRIPT>
<!----------------------------------------------------------------
Web Start 설치 여부, 브라우져가 IE 인지 여부 설정
------------------------------------------------------------------>
<SCRIPT LANGUAGE="JavaScript">
var javawsInstalled = 0;
isIE = "false";
if (navigator.mimeTypes && navigator.mimeTypes.length) {
x = navigator.mimeTypes['application/x-java-jnlp-file'];
if (x) javawsInstalled = 1;
} else {
isIE = "true";
}
</SCRIPT>
<!----------------------------------------------------------------
브라우져가 IE일 경우 Web Start 설치 여부 결정하는 VBScript
------------------------------------------------------------------>
<SCRIPT LANGUAGE="VBScript">
on error resume next
If isIE = "true" Then
If Not(IsObject(CreateObject("JavaWebStart.IsInstalled"))) Then
javawsInstalled = 0
Else
javawsInstalled = 1
End If
End If
</SCRIPT>
<!----------------------------------------------------------------
insertLink 함수 정의 :
웹스타트가 설치되었을 경우는 응용 프로그램 실행 링크를 보여주고
그렇지 않을 경우는 설치 필요 메시지 보여줌
(설치 필요 메시지를 수정하여 download URL 링크로 만들 수 있음)
------------------------------------------------------------------>
<SCRIPT LANGUAGE="JavaScript">
function insertLink(url, name) {
if (javawsInstalled || navigator.family == 'gecko') {
document.write("<a href=" + url + ">" + name + "</a>");
} else {
document.write("Java Web Start 설치가 필요합니다.");
}
}
</SCRIPT>
<!----------------------------------------------------------------
웹스타트 응용프로그램 실행 링크를 insertLink 함수를 통하여 만듬
------------------------------------------------------------------>
<SCRIPT LANGUAGE="Javascript">
insertLink("http://www.javanuri.com/jaws/apps/simple.jnlp", "웹스타트 응용프로그램 시작");
</SCRIPT>
<BODY>
</BODY>
</HTML>
=====================================================================================================
두번째 방법인 자동 설치 기능을 이용하는 방법은 썬의 자바 사이트에서 제공하는 Web Start자동 설치
기능을 수행하는 ActiveX를 호출하는 것이다. Java Web Start만을 자동 설치하는 OBJECT 테그 및 URL은
<OBJECT CODEBASE="http://java.sun.com/products/javawebstart/autodl/jinstall_javaws-1_2-windows-i586.cab"
CLASSID="clsid:5852F5ED-8BF4-11D4-A245-0080C6F74284" HEIGHT=0 WIDTH=0>
이며
자바 1.4 버전을 자동 설치할 수 있는 OBJECT 테그 및 URL은
<OBJECT CODEBASE="http://java.sun.com/products/plugin/autodl/jinstall-1_4_1-windows-i586.cab"
CLASSID="clsid:5852F5ED-8BF4-11D4-A245-0080C6F74284" HEIGHT=0 WIDTH=0>
이다.
이왕 자동 설치 기능을 사용하려면 web start만 설치하는 것 보다는 응용프로그램 환경이 더 좋은
자바 1.4버전을 설치하는 것이 좋다.
다음 예제는 위의 예제와 같이 기존에 web start설치 여부를 체크하고 없으면 자동설치 되도록 자바
스크립트 및 HTML을 작성 예를 보여주고 있다. ( Developer's Guide 참조 )
Simple2.html
=====================================================================================================
<!----------------------------------------------------------------
브라우져가 Netscape일때 web start 설치 여부를 설정한다.
------------------------------------------------------------------>
<SCRIPT LANGUAGE="JavaScript">
var javawsInstalled = 0;
var javaws12Installed = 0;
isIE = "false";
if (navigator.mimeTypes && navigator.mimeTypes.length) {
x = navigator.mimeTypes['application/x-java-jnlp-file'];
if (x) {
javawsInstalled = 1;
javaws12Installed=1;
}
} else {
isIE = "true";
}
</SCRIPT>
<!----------------------------------------------------------------
브라우져가 IE일때 web start 설치 여부를 설정한다.
------------------------------------------------------------------>
<SCRIPT LANGUAGE="VBScript">
on error resume next
If isIE = "true" Then
If Not(IsObject(CreateObject("JavaWebStart.isInstalled"))) Then
javawsInstalled = 0
Else
javawsInstalled = 1
End If
If Not(IsObject(CreateObject("JavaWebStart.isInstalled.2"))) Then
javaws12Installed = 0
Else
javaws12Installed = 1
End If
End If
</SCRIPT>
<!----------------------------------------------------------------
xbDetectBrowser.js를 이용하여 navigator.family를 설정한다.
------------------------------------------------------------------>
<SCRIPT LANGUAGE="JavaScript"
SRC="xbDetectBrowser.js">
</SCRIPT>
<!----------------------------------------------------------------
gecko 방식이거나 이미 web start가 설치된 경우는
http://www.yyy.zzz/app.jnlp를 실행할 수있는 link를 보여준다.
그렇지 않다면
썬에서 제공하는 PluginBrowserCheck를 실행시킬수 있는 link를 제공한다.
PluginBrowserCheck는 브라우져가 IE일 경우 "pass"파라미터에 있는
자동 설치 URL인 http://www.yyy.zzz/download.html로 가고 아닐경우는
플랫폼에 따라 설치 안내문이 나오도록 "fail"파라미터에 있는
http://java.sun.com/cgi-bin/javawebstart-platform.sh로 간다.
------------------------------------------------------------------>
<SCRIPT LANGUAGE="JavaScript">
if (javawsInstalled || navigator.family == 'gecko') {
document.write("<a href=http://www.yyy.zzz/app.jnlp>프로그램 실행</a>");
} else {
document.write("<a href=http://dlres.java.sun.com/PluginBrowserCheck?");
document.write("pass=http://www.yyy.zzz/download.html&");
document.write("fail=http://java.sun.com/cgi-bin/javawebstart-platform.sh>");
document.write("설치 및 응용프로그램 실행</a>");
}
</SCRIPT>
=====================================================================================================
download.html
=====================================================================================================
<!----------------------------------------------------------------
웹스타트 자동 설치 ActiveX프로그램을 호출하고 설치후에는
http://www.yyy.zzz/app.jnlp로 링크되도록 한다.
만일 이미 설치돼었다면 곧바로 웹스타트가 실행된다.
------------------------------------------------------------------>
<HTML>
<BODY>
<OBJECT CODEBASE="http://java.sun.com/products/javawebstart/autodl/jinstall_javaws-1_2-windows-i586.cab"
CLASSID="clsid:5852F5ED-8BF4-11D4-A245-0080C6F74284" HEIGHT=0 WIDTH=0>
<PARAM NAME="app" VALUE="http://www.yyy.zzz/app.jnlp">
<PARAM NAME="back" VALUE="true">
<!-- Alternate HTML for browsers which cannot instantiate the object -->
<A HREF="http://java.sun.com/cgi-bin/javawebstart-platform.sh?">
Download Java Web Start</A>
</OBJECT>
</BODY>
</HTML>
=====================================================================================================
이 방법은 결국 썬에서 제공하는 설치 ActiveX를 이용하는 것이고 그렇기 때문에 IE에서만 작동한다.
그리고 설치가 않될 경우는 플랫폼에 따라 설치 메뉴얼이 있는 페이지로 이동하게 된다. 이 방법을
잘 파악하려면 다음과 같이 썬에서 제공하는 각종 URL을 잘 이해하고 있어야 한다.
- http://dlres.java.sun.com/PluginBrowserCheck
pass와 fail파라미터가 있어 브라우져가 IE일 경우 pass에서 준 URL로 링크되고 아닐 경우는
fail에서 준 URL로 링크된다. 파라미터가 없을 경우 플랫폼에 따라 JRE를 설치할 수 있는
메뉴얼 페이지로 간다.
- http://java.sun.com/cgi-bin/javawebstart-platform.sh
플렛폼에 따라 자바 웹스타트를 설치할 수 있는 메뉴얼 페이지로 이동한다.
- <OBJECT CODEBASE="http://java.sun.com/products/javawebstart/autodl/jinstall_javaws-1_2-windows-i586.cab"
CLASSID="clsid:5852F5ED-8BF4-11D4-A245-0080C6F74284" HEIGHT=0 WIDTH=0>
자바 웹스타트를 자동 다운로드 및 설치하는 ActiveX를 구동한다. "app"파라미터는 설치후 자동 링크되는
URL 값이다.
- <OBJECT CODEBASE="http://java.sun.com/products/plugin/autodl/jinstall-1_4_1-windows-i586.cab"
CLASSID="clsid:5852F5ED-8BF4-11D4-A245-0080C6F74284" HEIGHT=0 WIDTH=0>
JRE1.4를 자동 다운로드 및 설치하는 ActiveX를 구동한다. 웹스타트는 자바 1.4버젼에 포함되어 있다.
자동 설치 및 실행의 세번째 방법은 간단하게 시작 버튼을 가진 Applet을 만들고 Applet실행을
JRE 1.4로 할 수 있도록 요구하는 것이다. 이렇게 하면 Applet이 실행되면서 JRE 설치 버젼을
체크해 자동으로 JRE1.4가 설치되며 자바웹스타트도 자동 설치된다.
Applet을 조금더 응용하면 Applet에 실행버튼을 만들어 웹스타트 응용 프로그램을 바로 실행할 수 있도록
하는 것이다. 다음은 그러한 버튼을을 갖은 예제 Applet 및 실행 HTML이다.
StartApplet.java
=====================================================================================
import java.awt.*;
import java.awt.event.*;
import java.net.*;
/**
* StartApplet
*
*/
public class StartApplet extends java.applet.Applet implements ActionListener {
// start button
Button btStart = new Button("응용프로그램 시작");
// url
String url;
//--------------------------------
// init
//--------------------------------
public void init() {
btStart.addActionListener(this);
add(btStart);
url = getParameter("url");
}
//----------------------------------------
// action performed
//----------------------------------------
public void actionPerformed(ActionEvent e) {
try {
getAppletContext().showDocument(new URL(url));
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
==============================================================================
StartApplet.html
==============================================================================
<html>
<body>
<OBJECT name="StartApplet" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" WIDTH=150 HEIGHT=30
codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_0-win.cab#Version=1,4,0,0">
<PARAM NAME=CODE VALUE="StartApplet.class">
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.4">
<PARAM NAME="url" VALUE="<a href=http://www.yyy.zzz/app.jnlp>">
<COMMENT>
<EMBED type="application/x-java-applet;jpi-version=1.4" CODE="StartApplet.class" WIDTH=150 HEIGHT=30
pluginspage="http://java.sun.com/products/plugin/index.html#download">
scriptable=false
<NOEMBED></NOEMBED>
</EMBED>
</COMMENT>
</OBJECT>
</body>
</html>
================================================================================
StartApplet은 url 파라미터를 받아들이고 시작 버튼을 누르면 브라우져의 링크를 url 파라미터가
지정한데로 가도록 되어 있다. 따라서 실행하고 싶은 JNLP 파일을 url 파라미터에 주면 웹스타트가
자동 실행된다.
StartApplet.html은 StartApplet 클레스를 자바 플러그인 형태로 실행 시키며, 자바 플러그인이
설치되어있지 않으면 자동 설치되도록 되어 있다. 위의 예제에서 <a href=http://www.yyy.zzz/app.jnlp> 부분만
원하는 URL로 바꾸어주면 자동 설치 및 웹스타트 시작페이지로 사용할 수 있을 것이다.
이 방법은 간단한 Applet이 필요하기는 하지만 가장 간단하고 쉬운 방법이 아닌가 생각한다. |
[본문링크] 예제프로그램 웹스타트로 실행하기 - Web Start - 웹에서 스윙 사용하기
|
[1]
|
|
|
|
|
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=7477 |
|
|
|
|
|
|
|
|
|
Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.
|
|
|