98..Etc/GlassFish2009. 2. 23. 14:17
반응형
회사에서 GlassFish 를 다운받고 서버쪽에 GlassFish 를 추가했는데 안나오는 겁니다.
(플러그인이 재대로 설치가 안된 듯...)
https://glassfishplugins.dev.java.net/download/index.html << 여기서 플러그인을 다운받습니다.

일단 집에서와 비슷한 환경으로 설치를 하였습니다.... 만 WTP 에서 Server 설정을 하려 하는데
아래와 같은 화면이 반겨주었습니다.

Missing classpath entry ~~\appserv-rt.jar


GlassFish 설치경로에 lib 폴더를 가보았더니 appserv-rt.jar 파일은 없고 appserv-rt.jar.pack.gz 이런 파일만 있었습니다.
gz 파일인지 알고 압축을 풀어도 안되고... 찾아보니 pack.gz 라는 압축방식인가 그런가 봅니다.
역시 구글링을 해본 결과... setup 을 덜 한 것 같았습니다.

사람들이 말하는대로 lib\ant\bin\ant -f setup.xml 명령을 해주면....
먼가 설치가 쫘르르르르 진행됩니다.


다시 이클립스에서 서버를 설정하면.... 일단은 다음 단계로 넘어갈 수 있다는 것이지요..

GlassFish 삽질기는 계속됩니다....

[참고자료]
GlassFish 플러그인 - https://glassfishplugins.dev.java.net/download/index.html
GlassFish Plugins Forum Thread - http://forums.java.net/jive/thread.jspa?threadID=38230&tstart=0
Posted by 1010
98..Etc/GlassFish2009. 2. 23. 14:07
반응형
GlassFish Project - v2.1 FinalBuild
(also known as v2.1 b60e Promoted Build)

| New to GlassFish | FAQ |Resources | GlassFish Project Home | How-Tos |

This promoted build provides necessary infrastructure support for the SailFin Application Server (Telco app server). This release also contains fixes that did not make it into GlassFish V2 Update Release. Please refer to the GlassFish V2.1 Wiki Page for details on improvements that are going into this release. Note: Multilingual support available for French, German, Spanish, Japanese, Simplified Chinese, Traditional Chinese, and Korean.

Promoted builds are weekly builds of GlassFish which have passed a minimum level of testing which includes the quicklook tests, a sub-set of CTS tests (representative collection of 344 J2EE 1.4 tests) and a sub-set of SQE tests (22 in number). A build is not promoted unless it passes all quicklook, CTS smoke and SQE smoke tests. 

Note: This list offers files for different platforms. Please be sure to select the proper file for your platform. Carefully review the files listed below to select the one you want, then click the link to download.  Some browsers may require you to right-click/CTRL-click to save these files to your computer.

The majority of the GlassFish code is available under a dual license consisting of the Common Development and Distribution License ( CDDL) v1.0 and the GNU General Public License (GPL) v2.  The following page contains details about the components in GlassFish and the licenses under which they are covered.

Instructions to unbundle and configure GlassFish

To install and configure GlassFish you need to have JDK 5 or JDK 6 installed on your system. The configuration processing depends on Ant (1.6.5).  The bundle includes an Ant distribution that has been extended with tasks to facilitate developing Java EE 5 applications for the application server.

  1. Download one of the bundles to disk, set JAVA_HOME to the JDK you have installed on your system.
  2. Run:
       % java -Xmx256m -jar filename.jar
    This command will unbundle GlassFish and create a new directory structure rooted under a directory named 'glassfish'.
  3.  % cd glassfish
  4. If you are using a machine with an operating system that is a derivative of UNIX(tm), set the execute permission for the Ant binaries that are included with the GlassFish bundle.
    	% chmod -R +x lib/ant/bin
    	% lib/ant/bin/ant -f setup.xml 
    OR for Windows:
    	% lib\ant\bin\ant -f setup.xml 

For GlassFish V2 UR1 with Clustering supported installation, just change step 4 from the above installation

% lib/ant/bin/ant -f setup-cluster.xml 
OR  for Windows:
% lib\ant\bin\ant -f setup-cluster.xml 

To get started with GlassFish, see the quick start guide.

See Configuring the Cluster/Load Balancer with GlassFish V2 for how to do the load balancing after creating Clusters on GlassFish V2.

Binary builds

The Open Sourcing Clustering features are included in this promotion.

Solaris SPARC Platform

Solaris x86 Platform

Windows Platform

Linux Platform

MacOS Platform

AIX Platform


Source bundle


Source code for GlassFish is available in the bundle below. Some technologies are developed in other projects and only a binary version is available in the GlassFish project source tree. To find more information on where to find sources see this page.

Build Information

Bugs fixed in this build. 
Posted by 1010
98..Etc/GlassFish2009. 2. 23. 14:04
반응형
Glassfish는 J2EE 5를 따르는 오픈소스 애플리케이션 서버를 말한다.
참고로 J2EE 5 는
-JavaServer Pages(JSP) 2.1
-JavaServer Faces(JSF) 1.2
-Servlet 2.5
-Enterprise JavaBeans 3.0
-Java API for Web Services(JAX-WS) 2.0
-Java Architecture for XML Binding(JAXB) 2.0
-Web Services Metadata for the Java Platform 1.0
라는 여러 표준의 버젼을 따른다.

다운로드는 아래의 링크에서 맘에 드는 버젼으로 선택한다.
https://glassfish.dev.java.net/public/downloadsindex.html

Glassfish 설치하기
Jar를 다운로드 했다면, jar파일이 있는 위치에서 다음의 명령어를 친다.
java -Xmx256m -jar jar파일명
그러면 동의하라는 반 강제적 화면이 나타나고,
스크롤을 아래로 주루룩 내린 후 동의를 하면,
파일들의 압축이 풀릴것이다.


Glassfish를 설치하고 나서 가장 황당했던것이, bin 디렉토리에 아무것도 실행파일이 없다는 것이다.

관련 문서도 눌러 보면 Glassfish에 대한 문서가 아니라, Sun Java System Application Server 에 대한 문서고... - -;

Glassfish의 압축을 푼 root 디렉토리를 보면 setup.xml과 setup-cluster.xml 두개의 파일이 존재한다.
클러스터 구성할 것이 아니라면 setup.xml을 사용하면 된다.

Ant를 이용하여 설치하기
그래서, 가장 먼저 ant를 설치해야 한다. (그런데 친절하게도 glassfish\lib\ant 디렉토리가 포함되어 있으며, 여기의 실행파일을 사용해도 된다.)
ant의 bin 디렉토리를 갖고 있는 장비의 path에 등록을 하고,
setup.xml 파일이 있는 위치에서 다음의 명령을 수행한다.
ant -buildfile setup.xml

아니면 귀찮으면 다음과 같이 해도 된다.

lib\ant\bin\ant -f setup.xml

그러면 아래와 같은 결과가 떨어지면서 필요한 파일들이 생성된다.

아래의 내용을 펼치면 된다. ^^;

내용 닫기

D:\glassfish>ant -buildfile setup.xml
Buildfile: setup.xml

all:

get.java.home:

setup.init:

check-java:

get.java.home:

setup.init:

validate-java:
     [echo] Current Java Version 1.6.0_11

get.java.home:

setup.init:

glassfish-jarunpack:
     [echo] Applying UnPack200 on Packed jars using JDK1.5
     [echo] D:\glassfish/lib/Pack200Task.jar

get.java.home:

setup.init:

nonmac-jarunpack:

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\appserv-ext.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\appserv-ext.jar
   [delete] Deleting: D:\glassfish\lib\appserv-ext.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\toplink-essentials.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\toplink-essentials.jar
   [delete] Deleting: D:\glassfish\lib\toplink-essentials.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\appserv-rt.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\appserv-rt.jar
   [delete] Deleting: D:\glassfish\lib\appserv-rt.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\appserv-cmp.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\appserv-cmp.jar
   [delete] Deleting: D:\glassfish\lib\appserv-cmp.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\appserv-jstl.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\appserv-jstl.jar
   [delete] Deleting: D:\glassfish\lib\appserv-jstl.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\appserv-tags.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\appserv-tags.jar
   [delete] Deleting: D:\glassfish\lib\appserv-tags.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\endorsed\activation.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\endorsed\activation.jar
   [delete] Deleting: D:\glassfish\lib\endorsed\activation.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\endorsed\webservices-api.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\endorsed\webservices-api.jar
   [delete] Deleting: D:\glassfish\lib\endorsed\webservices-api.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\webservices-rt.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\webservices-rt.jar
   [delete] Deleting: D:\glassfish\lib\webservices-rt.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\webservices-tools.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\webservices-tools.jar
   [delete] Deleting: D:\glassfish\lib\webservices-tools.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\com-sun-commons-launcher.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\com-sun-commons-launcher.jar
   [delete] Deleting: D:\glassfish\lib\com-sun-commons-launcher.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\j2ee-svc.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\j2ee-svc.jar
   [delete] Deleting: D:\glassfish\lib\j2ee-svc.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\jsf-impl.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\jsf-impl.jar
   [delete] Deleting: D:\glassfish\lib\jsf-impl.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\sun-appserv-ant.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\sun-appserv-ant.jar
   [delete] Deleting: D:\glassfish\lib\sun-appserv-ant.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\javaee.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\javaee.jar
   [delete] Deleting: D:\glassfish\lib\javaee.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\appserv-admin.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\appserv-admin.jar
   [delete] Deleting: D:\glassfish\lib\appserv-admin.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\admin-cli.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\admin-cli.jar
   [delete] Deleting: D:\glassfish\lib\admin-cli.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\appserv-deployment-client.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\appserv-deployment-client.jar
   [delete] Deleting: D:\glassfish\lib\appserv-deployment-client.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\appserv-se.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\appserv-se.jar
   [delete] Deleting: D:\glassfish\lib\appserv-se.jar.pack.gz

jarpack-tasks:

jar-unpack:
[unpack200] Unpacking with Unpack200
[unpack200] Source File :D:\glassfish\lib\admin-cli-ee.jar.pack.gz
[unpack200] Dest.  File :D:\glassfish\lib\admin-cli-ee.jar
   [delete] Deleting: D:\glassfish\lib\admin-cli-ee.jar.pack.gz

get.java.home:

setup.init:

-do.copy.common:
     [copy] Copying 1 file to D:\glassfish\config

do.copy.windows:
     [copy] Copying 1 file to D:\glassfish\config
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\bin
     [copy] Copying 1 file to D:\glassfish\updatecenter\bin

do.copy.unix:

do.copy:

get.java.home:

setup.init:

-do.tokenrep.common:

do.token.windows:

do.token.unix:

do.token.jdic.windows:

do.token.jdic.solaris-sparc:

do.token.jdic.solaris-x86:

do.token.jdic.linux:

do.token.jdic.mac:

do.token.jdic:

do.token.enable.uc:

do.token:

get.java.home:

setup.init:

do.chmod.unix:

do.chmod:

create-local-registry:

setup.reg:
     [echo] Creating the service registry file..
     [java] From Local service registry  ..

get.java.home:

setup.init:

set.env.win:

set.env.unix:

set.env:

create.domain:
     [exec] 포트 4848을(를) Admin에 대해 사용합니다.
     [exec] 포트 8080을(를) HTTP Instance에 대해 사용합니다.
     [exec] 포트 7676을(를) JMS에 대해 사용합니다.
     [exec] 포트 3700을(를) IIOP에 대해 사용합니다.
     [exec] 포트 8181을(를) HTTP_SSL에 대해 사용합니다.
     [exec] 기본 포트 3820을(를) IIOP_SSL에 대해 사용합니다.
     [exec] 기본 포트 3920을(를) IIOP_MUTUALAUTH에 대해 사용합니다.
     [exec] 기본 포트 8686을(를) JMX_ADMIN에 대해 사용합니다.
     [exec] 프로필을 사용하여 도메인을 만드는 중입니다: developer(구성 파일의 변
수 AS_ADMIN_PROFILE로에 지정)
     [exec] 지정된 로켈[ko_KR]의 파일을 [D:\glassfish\lib\install\templates\loca
les\ko_KR\index.html]에서 찾지 못했습니다. 대신 기본 (en_US) index.html을 사용합
니다.
     [exec] 보안 저장소 사용: JKS
     [exec] 도메인 domain1이(가) 만들어졌습니다.
     [exec] 이 도메인 [domain1]의 관리자 이름 [admin]에 관련된 로그인 정보를 [C:
\Documents and Settings\smlee\.asadminpass]에 성공적으로 저장했습니다.
     [exec] 이 파일은 계속 보호되어야 합니다. 이 파일에 저장된 정보는 asadmin 명
령에서 이 도메인을 관리하는 데 사용됩니다.
   [delete] Deleting: D:\glassfish\passfile

BUILD SUCCESSFUL
Total time: 29 seconds
D:\glassfish>



ant 스크립트를 수행한 이후에 몇가지 설정을 마치면 서버를 기동할 수 있다.

http://docs.sun.com/app/docs/doc/819-3193/aboaa?a=view

링크를 보면 몇몇가지 설정할 게 있으니 참조하기 바란다.
간단하게 정리하면(윈도우용)
1. bin 디렉토리를 path에 추가
2. AS_ADMIN_USER 라는 것을 환경 변수에 추가하고, 설치할때의 PC나 서버 계정을 추가한다.

서버를 다음의 명령어로 시작할 수 있다.

asadmin start-domain domain1


정상적으로 수행되었다면 다음과 같은 메시지가 나타난다.

도메인 domain1을(를) 시작합니다. 잠시 기다려 주십시오.
로그가 D:\glassfish\domains\domain1\logs\server.log(으)로 리디렉션되었습니다.
마스터 비밀번호를 입력하십시오>
출력을 D:/glassfish/domains/domain1/logs/server.log(으)로 리디렉션하는 중
도메인 domain1에서 클라이언트 요청을 받을 준비가 되었습니다. 백그라운드에서 추가
 서비스를 시작하는 중입니다.
다음에서 해당 구성 및 로그를 사용하여 도메인 [domain1]이(가) [Sun Java System Ap
plication Server 9.1_02 (build b04-fcs)]을(를) 실행하는 중입니다: [D:\glassfish\
domains].
관리 콘솔은 [http://localhost:4848]에서 사용할 수 있습니다.
"asadmin" 명령에도 같은 포트 [4848]을(를) 사용합니다.
사용자 웹 응용 프로그램은 다음 URL에서 사용할 수 있습니다:
[http://localhost:8080 https://localhost:8181 ].
다음 웹 내용을 사용할 수 있습니다:
[/web1  /__wstx-services ].
표준 JMX 클라이언트(예, JConsole)는 도메인 관리를 위해 JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://smlee:8686/jmxrmi]에 연결될 수 있습니다.
도메인은 최소한 다음 포트에서 연결을 수신합니다:
[8080 8181 4848 3700 3820 3920 8686 ].
도메인이 Application Server 클러스터 및 다른 독립 실행형 인스턴스를 지원하지 않
습니다.


설치시 유의사항
서버를 수행할때 리눅스는 상관 없겠지만,
PC 이름이 한글일 경우 서버가 정상적으로 뜨지 않을 수 있다.
이 경우 domain1/logs 디렉토리의 server.log 파일에 다음과 같은 메시지가 나타난다.

com.sun.appserv.server.ServerLifecycleException
 at com.sun.enterprise.admin.server.core.JmxConnectorLifecycle.onStartup(JmxConnectorLifecycle.java:153)
 at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:442)
 at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:120)
 at com.sun.enterprise.server.PEMain.run(PEMain.java:411)
 at com.sun.enterprise.server.PEMain.main(PEMain.java:338)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at com.sun.enterprise.server.PELaunch.main(PELaunch.java:412)
Caused by: java.lang.NullPointerException
 at javax.management.remote.JMXConnectorServerFactory.newJMXConnectorServer(JMXConnectorServerFactory.java:283)
 at com.sun.enterprise.admin.jmx.remote.server.rmi.JmxConnectorServerDriver.startConnectorServer(JmxConnectorServerDriver.java:215)
 at com.sun.enterprise.admin.server.core.JmxConnectorLifecycle.onStartup(JmxConnectorLifecycle.java:134)
 ... 9 more
Posted by 1010
98..Etc/GlassFish2008. 12. 10. 11:32
반응형

대부분의 엔터프라이즈 애플리케이션은 안전한 환경에서 실행할 필요가 있습니다. TLS(Transport Layer Security)/SSL(Secure Sockets Layer)은 포인트 투 포인트 보안 전송 메커니즘으로, 클라이언트 및 서버 간에 교환되는 메시지를 인증하고 메시지의 무결성 및 기밀성(confidentiality) 보장을 위해 사용할 수 있습니다. TLS/SSL(이 팁에서는 간단히 "SSL")은 대부분의 엔터프라이즈 애플리케이션 환경의 보안 요구사항을 충족하며 널리 채택되고 있습니다.

그러나 SSL에 의해 보호된 메시지 교환을 위해서는 서버가 SSL 서버로서 작동할 수 있어야 합니다. 이 팁에서는 GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키는 방법을 제시합니다.

각 단계별 설명으로 나아가기 전에, 키와 인증서와 같은 SSL의 기본 개념 몇 가지를 이해해야 하며 프로파일이라는 GlassFish v2의 개념도 이해할 필요가 있습니다.

키와 인증서

SSL에서 두 가지 중요한 개념은 키와 인증서입니다. 키는 클라이언트와 서버 사이의 트랜잭션에서 개인 정보 보호(privacy)와 신뢰(trust)를 구축하는 데 사용됩니다. SSL은 공개 키 암호화를 사용하며 이는 키 페어(key pairs)를 기반으로 합니다. 키 페어에는 하나의 공개 키와 하나의 개인 키가 포함됩니다. 데이터가 하나의 키로 암호화된 경우, 그것은 오직 그 페어의 나머지 한 키로만 해독될 수 있습니다.

인증을 위해서는 인증서가 사용됩니다. SSL을 사용하기 위해서는 서버에 연결할 수 있는 각 클라이언트의 IP 주소에 대해 각기 연관된 인증서가 있어야 합니다. 인증서는 서버 사이트의 소유자를 식별하며 관련 정보를 제공합니다. 인증서는 소유자에 의해 디지털로 암호화한 서명이 포함됩니다. 인증이 증요한 사이트의 경우, 인증서는 잘 알려진 신뢰성 있는 인증 기관으로부터 구입할 수 있습니다. 그러나 인증이 크게 중요하지 않은 사이트의 경우에는 자가 서명 인증서(self-signed certificate)를 사용할 수도 있습니다.

GlassFish v2 프로파일

GlassFish v2는 다양한 용도의 프로파일을 지원합니다. 각 프로파일은 애플리케이션 서버에 대한 구성 매개변수를 미리 설정하여 특정 유형의 용도로 최적화합니다. 세 가지 프로파일에는 개발자(developer), 클러스터(cluster) 및 엔터프라이즈(enterprise)가 있습니다.

개발자 프로파일은 개발 환경에서 사용하기 위해 GlassFish v2를 최적화합니다. 이는 구성 매개변수가 빠른 구동(fast startup)과 같은 목표는 지원하지만 로깅 또는 세션 복제와 같은 기능은 지원하지 않는다는 의미입니다. 클러스터 프로파일은 클러스터 생성 및 세션 복제를 가능하게 하는 구성 매개변수를 설정합니다. 클러스터는 GlassFish v2 인스턴스의 그룹으로 단일 논리 개체로서 관리하고 모니터할 수 있습니다. 엔터프라이즈 프로파일은 프로덕션 환경으로 GlassFish v2를 최적화합니다. 또한 로깅 및 기타 보안 관련 기능을 지원합니다.

GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키기

GlassFish v2를 SSL 서버로 작동시키는 단계는 애플리케이션 서버를 위해 사용된 프로파일에 따라 결정됩니다. 먼저 개발자 프로파일이 사용되는 경우의 프로세스를 살펴본 다음 엔터프라이즈 프로파일이 사용될 때의 프로세스를 검토합니다.

개발자 프로파일이 사용되는 경우

GlassFish v2 프로파일이 특정 유형의 용도를 위해 구성 매개변수를 미리 설정한다는 점을 상기하십시오. 이들 매개변수 중 하나가 Security Store인데 이것은 인증서와 키와 같은 보안 및 신용 관련 정보가 어떻게 저장되는지를 나타냅니다. 개발자 프로파일의 경우 Security Store 값은 JKS로 설정됩니다. 이 경우 서버에 대한 인증서와 키는 자바 키스토어 파일(keystore.jks)에 저장되며 인증서는 신뢰할 수 있는 CA에 의해 발행되며 인증서 파일(cacerts.jks)에 저장됩니다.

GlassFish v2를 설치할 때 서버 인증서로 자가 서명 인증서가 기본적으로 생성됩니다. 그러나 인증이 사용자의 사이트에서 중요한 경우라면, 자가 서명 인증서를 CA로부터의 디지털 서명 인증서로 교체할 필요가 있습니다. 이 섹션에서는 자가 서명 인증서를 대체하는 방법, CA에서 서버 인증서를 확득하는 방법 및 서버 인증서를 키스토어로 가져오는 방법을 설명합니다.

아래에 기술된 단계에서는 키 및 인증서 관리 툴인 keytool을 사용합니다. Keytool은 여러 버전의 자바 플랫폼, 스탠다드 에디션(자바 SE) 개발 킷(jdk)에서 사용 가능합니다. 한편 자바 SE 6에서는 keytool.에 몇 가지 필수 기능이 추가되었습니다. 아래의 명령은 jdk 6 버전의 keytool을 기반으로 합니다. keytool에 대한 자세한 정보는 JDK 툴 및 유틸리티를 참조하십시오.

다음은 애플리케이션 서버가 개발자 프로파일로 구성될 때 GlassFish v2를 SSL 서버로 작동시키기 위한 명령문입니다.

  1. 다음 명령을 수행하여 기본적으로 설치된 자가서명 인증서를 삭제하십시오(참고: 이 단계와 이후의 단계의 명령문은 포맷을 위해 여러 줄에 걸쳐 표시되었음).        keytool -delete -alias s1as -keystore keystore.jks
           -storepass <store_passwd>

    이 때 <store_passwd>는 키스토어에 대한 비밀번호(예: "mypass")입니다. s1as는 GlassFish v2 키스토어의 디폴트 alias입니다.

  2. 다음 명령을 수행하며 애플리케이션 서버를 위한 새로운 키 페어를 생성하십시오.       keytool -genkeypair -keyalg <key_alg>
          -keystore keystore.jks -validity <val_days> -alias s1as

    이 때 <key_alg>는 키 페어 생성을 위해 사용되는 알고리즘(예: RSA)이며 <val_days>는 인증서의 유효일 수(예: 365)입니다.

    키 페어 생성 외에도 해당 명령문은 공개 키를 자가 서명 인증서로 보호하고 인증서와 비밀 키를 alias에 의해 식별되는 새로운 키스토어 엔트리에 저장한다는 점에 유의하십시오.

    인증서의 이름이 사용자 사이트의 완전한 호스트 이름과 일치하도록 보장하는 것이 중요합니다. 그 이름이 일치하지 않으면 서버에 연결하는 클라이언트는 인증서의 이름이 사이트의 이름과 일치하지 않는다는 보안 경고를 받게 될 것입니다. 기본적으로 설치된 자가서명 인증서의 이름이 완전한 호스트 이름과 일치하는지 알고 있어야 합니다.

  3. 다음 명령을 수행하여 CSR(Certificate Signing Request)을 생성하십시오.       keytool -certreq -alias s1as -file <certreq_file>
          -keystore keystore.jks -storepass <store_passwd>

    여기서 <certreq_file>은 CSR이 저장되는 파일(예: s1as.csr)이며 <store_passwd>는 키스토어에 대한 비밀번호(예: changeit)입니다.

  4. VeriSign과 같은 CA에 CSR을 제출하십시오. 그러면 사용자는 응답으로 서명된 서버 인증서를 받게 될 것입니다. CA의 CA 인증서뿐만 아니라 응답에서 CA가 식별한, 중간에 발생한 모든 인증서를 브라우저로 가져와야 합니다.
  5. CA로부터 받은 서명된 서버 인증서를 마커 -----BEGIN CERTIFICATE-----와 -----END CERTIFICATE----- 를 포함하여 s1as.cert와 같은 파일에 저장하십시오. CA 인증서 및 모든 중간 CA 인증서를 다운로드하고 로컬 파일에 저장하십시오. CA 및 중간 CA 인증서를 브라우저로 가져오는 방법에 대해서는 브라우저 문서를 참조하십시오. Mozilla 및 Internet Explorer와 같은 다양한 브라우저로 CA 인증서를 가져오는 방법에 대한 정보는 CA에서 제공할 수도 있습니다.
  6. 원래의 자가 서명 인증서를 CA로부터 획득한 인증서(s1as.cert와 같은 파일에 저장)로 대체하십시오. 이를 위해 keytool 을 사용할 수 있으나 여러 단계를 필요로 합니다. 다음 자바 프로그램을 수행하면 더 쉽게 대체할 수 있습니다.

          import java.io.*;
          import java.security.Key;
          import java.security.KeyStore;
          import java.security.cert.Certificate;
          import java.security.cert.CertificateFactory;
          import java.security.cert.X509Certificate;
         
           
          public class Main {
              public static void main(String[] args) throws Exception {
                //args[] error checking logic omitted
                //file containing signed cert reply from CA
                String csrReplyFromCA = args[0];    
                //Path to GlassFish keystore.jks
                String keystoreLocation = args[1];  
                //Password for GlassFish keystore.jks
                String keystorePassword = args[2];  
                //The keyalias to be replaced : s1as in our example
                String selfSignedKeyEntry = args[3];
                 
                //create the signed Cert
                Certificate cert = null;
                FileInputStream fis =
                   new FileInputStream(csrReplyFromCA);
                CertificateFactory cf =
                   CertificateFactory.getInstance("X.509");
                cert = cf.generateCertificate(fis);
                 
                //now replace the original entry
                char[] passwordChars =
                   keystorePassword.toCharArray();
                KeyStore keystore = KeyStore.getInstance("JKS");
                keystore.load(new FileInputStream(keystoreLocation),
                   passwordChars);
                Key key = keystore.getKey(selfSignedKeyEntry,
                   passwordChars);
                keystore.setKeyEntry(selfSignedKeyEntry, key,
                   passwordChars, (new Certificate[]{cert}));
                keystore.store(new FileOutputStream(
                   keystoreLocation), passwordChars);
              }
          }

프로그램을 수행한 후에, GlassFish 키스토어 내의 인증서 s1as가 더 이상 원래의 자가 서명 인증서가 아니라 CA로부터 받은 인증서(response certificate)라는 것을 확인해야 합니다. 다음은 VeriSign으로부터 획득한 새 s1as 인증서와 원래의 s1as 인증서를 비교한 예입니다.

원래의 s1as (자가 서명):

Owner: CN=KUMAR, OU=Sun Java System Application Server, O=Sun
Microsystems, L=Santa Clara, ST=California, C=US
Issuer: CN=KUMAR, OU=Sun Java System Application Server, O=Su
n Microsystems, L=Santa Clara, ST=California, C=US
Serial number: 472acd34
Valid from: Fri Nov 02 12:39:40 GMT+05:30 2007 until: Mon Oct
30 12:39:40 GMT+05:30 2017

새로운 s1as (CA로부터 서명된 인증서 포함):

Owner: CN=KUMAR, OU=Terms of use at www.verisign.com/cps/test
ca (c)05, OU=Sun Java System Application Server, O=Sun Micros
ystems, L=Santa Clara, ST=California, C=US
Issuer: CN=VeriSign Trial Secure Server Test CA, OU=Terms of
use at https://www.verisign.com/cps/testca (c)05, OU="For Test
Purposes Only. No assurances.", O="VeriSign, Inc.", C=US
Serial number: 1375de18b223508c2cb0123059d5c440
Valid from: Sun Nov 11 05:30:00 GMT+05:30 2007 until: Mon Nov
26 05:29:59 GMT+05:30 2007

이러한 단계를 수행한 후에 GlassFish v2를 다시 시작하고 CA에 의해 발행된 서명된 서버 인증서를 사용할 수 있습니다.

클러스터 프로파일이 사용되는 경우

애플리케이션 서버가 클러스터 프로파일로 구성되는 경우, GlassFish v2를 SSL 서버로 작동시키려면 개발자 프로파일에 대해 수행했던 것과 동일한 단계를 수행합니다. 그러나 이 경우에 동일한 서버 키가 클러스터 내의 모든 애플리케이션 서버 인스턴스에 복제된다는 것을 확실하게 알아 둘 필요가 있습니다.

엔터프라이즈 프로파일이 사용되는 경우

엔터프라이즈 프로파일을 위한 Security Store 매개변수는 NSS이며 이는 네트워크 보안 서비스(Network Security Services)를 나타냅니다. NSS 보안 인프라에는 JKS 키스토어가 없으며 따라서 디폴트 GlassFish 키스토어가 없습니다.

GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키는 단계는 개발자 프로파일이 사용될 때와 엔터프라이즈 프로파일이 사용될 때가 대체로 유사합니다. 그러나 두 가지의 차이점이 있습니다. 첫 번째 차이는 프로세스의 첫 단계와 관계가 있습니다. JKS 키스토어가 없기 때문에 사용자는 비어 있는 키스토어(keystore.jks)로 프로세스를 시작합니다. 두 번째 차이는 프로세스의 마지막 단계와 관련이 있습니다. 결과로 얻은 서명 인증서를 JKS 키스토어로 가져오는 대신 사용자는 그것을 NSS 스토어로 가져옵니다. 즉, GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키려면 위에서 설명한 개발자 프로파일이 사용되는 경우와 동일한 단계를 수행하지만 비어 있는 키스토어로 시작하고 6단계를 다음으로 대체합니다.

  1. 다음 명령을 사용하여 키스토어로부터 서버 인증서를 위한 비밀키를 PEM(Privacy Enhanced Mail) 포맷으로 보내십시오.       keyexport.bat -keyfile serverkey.pem
          -keystore keystore.jks -storepass changeit -alias s1as

    이 명령문은 keyexport 유틸리티를 호출합니다. keyexport 패키지에 keyexport가 있습니다. 이 패키지는 Project Metro의 XWSS 다운로드 페이지에서 다운로드할 수 있습니다.

    위 명령에 대한 응답으로 키스토어 비밀번호 입력 프롬프트가 나타날 것입니다. 키스토어 비밀번호는 키 비밀번호와 동일하므로 리턴키를 누르면 됩니다.

    이것은 serverkey.pem 파일을 생성하며 이 파일에는 마커 -----BEGIN PRIVATE KEY----- 와 -----END PRIVATE KEY----- 아래에 서버 비밀 키가 포함됩니다.

  2. CA로부터 응답으로 온 서명 인증서(signed certificate reply)를 마커 -----BEGIN CERTIFICATE----- 와 -----END CERTIFICATE----- 를 포함하여 servercert.pem 파일에 추가하십시오. 마커 END PRIVATE KEY 아래에 그 응답을 추가하십시오.
  3. serverkey.pem 파일을 PKCS#12 파일(확장자가 .pfx인 파일)로 변환하십시오. "PKCS"는 RSA Security에 의해 고안 및 발행된 공개 키 암호화 표준의 그룹을 가리킵니다. PKCS#12는 비밀키와 그에 수반되며 비밀번호 기반의 대칭 키로 보호되는 공개 키 인증서를 저장하는데 흔히 사용되는 파일 형식을 정의합니다.

    serverkey.pem 파일을 PKCS#12 파일로 변환하는데 사용할 수 있는 툴은 여러가지가 있습니다. openssl 툴은 그러한 것 중 하나입니다. 다음은 openss1을 사용하여 파일을 변환하는 명령문입니다.

          openssl pkcs12  -export  -in serverkey.pem -out s1as.pfx

    위 명령에 대한 응답으로 익스포트 비밀번호 입력 프롬프트가 나타날 것입니다. "changeit"과 같은 비밀번호 또는 GlassFish 마스터 비밀번호를 입력하십시오.

    s1as.pfx 파일에는 이제 서명이 있는 서버 인증서 및 비밀 키가 포함될 것입니다.

  4. 원래의 s1as 자가서명 항목이 있으면 다음 명령을 수행하여 삭제하십시오.       certutil -D -n s1as -d $AS_NSS_DB

  5. pk12util 유틸리티를 사용하여 새 s1as.pfx 파일을 NSS 스토어로 가져오는 명령문은 다음과 같습니다.       pk12util -i s1as.pfx -d $AS_NSS_DB

    pk12util은 엔터프라이즈 프로파일을 위한 GlassFish 설치 임시 디렉토리 내에서 이용 가능한 NSS 유틸리티입니다. 그 유틸리티는 PCKS#12 파일을 NSS 스토어로 가져오거나 스토어에서 내보내는 데 사용됩니다.

    명령문에 대한 응답으로, NSS 소프트 토큰 및 PKCS#12 파일에 대한 비밀번호 입력 프롬프트가 나타날 것입니다. 적절한 비밀번호를 입력하십시오. 그러면 가져오기가 성공적으로 수행되었다는 다음과 같은 메시지를 볼 수 있을 것입니다.

          pk12util: PKCS12 IMPORT SUCCESSFUL  

고려해야 할 두 가지 경우가 있습니다.

  • 애플리케이션 서버 프로파일이 엔터프라이즈 프로파일이며 서버 키 페어가 이미 PKCS#12 파일에 있습니다. 스토어 내에 alias가 s1as인 항목이 이미 있는 경우에는 "엔터프라이즈 프로파일이 사용되는 경우"에서 설명한 대로 4단계를 수행하여 원래의 항목을 삭제하기만 하면 됩니다.      certutil -D -n s1as -d $AS_NSS_DB

    그리고 나서 5단계를 수행하여 새로운 s1as.pfx 파일을 NSS 스토어로 임포트합니다.

          pk12util -i s1as.pfx -d $AS_NSS_DB

    alias가 s1as인 항목이 스토어에 없으면 5단계만 수행하십시오.

  • 애플리케이션 서버 프로파일이 개발자 프로파일이며 서버 키 페어가 이미 PKCS#12 파일에 있습니다. 이러한 경우에 엔터프라이즈 프로파일이 사용되는 경우 에서 설명한 대로 5단계를 수행하여 원래의 s1as 항목을 삭제하기만 하면 됩니다. 그 후 pkcs12import 유틸리티를 사용하여 PCKS#12 파일을 GlassFish 키스토어로 가져오십시오.      pkcs12import.sh -file s1as.pfx -alias s1as
         -keystore keystore.jks -storepass changeit
         -pass <exp_password>

    이 때 <exp_password>는 PKCS#12 파일이 보내졌을 때 사용되었던 비밀번호(예: changeit)입니다.

    pkcs12import 패키지에 pkcs12import 유틸리티가 있으며 이 패키지는 Project Metro의 XWSS 다운로드 페이지에서 다운로드할 수 있습니다.

자세한 정보

GlassFish와 SSL에 대한 더 자세한 정보는 GlassFish v2로 SSL 및 CRL 확인(SSL and CRL Checking with GlassFish v2)를 참조하십시오.

또한 다음 리소스도 참조하십시오.


저자 정보

Kumar Jayanti는 썬마이크로시스템즈의 공학자 직원이며 웹 기술 및 표준 팀에서 일하고 있습니다. 현재 Kumar는 XML과 웹 서비스 보안 구현 부문에서 주역을 맡고 있으며 또한 최근에는 GlassFish 보안 모듈도 책임지게 되었습니다. 그는 2004년 초반부터 썬에서 웹 서비스 보안 분야에 관여해 왔으며 인도 Mumbai의 IIT에서 Computer Science 공학석사(M.Tech) 학위를 취득했습니다. 그의 관심 영역은 분산 컴퓨팅, CORBA, XML, 웹 서비스 및 보안 분야입니다.



이 글의 영문 원본은
http://java.sun.com/mailers/techtips/en ··· v07.html
에서 보실 수 있습니다.

"Java EE" 카테고리의 다른 글

Posted by 1010
98..Etc/GlassFish2008. 12. 9. 18:37
반응형

https://glassfishplugins.dev.java.net/eclipse33/

 

1. GlassFish V2를 받는다.

https://glassfish.dev.java.net/public/downloadsindex.html

(GlassFIsh 중 최근에 나온 안정버전)

 

2. Eclipse 3.3을 받는다.

http://www.eclipse.org/downloads/

 

3. GlassFIsh V2를 설치한다.

다운 받은 glassfish-installer-v2ur1-b09d-windows.jar 를 설치하려면
시스템에
자바가 설치되어 있어야 한다.

(JDK5 나 그 이상의 버전)

 

그리고 자바가 설치된 곳이 JAVA_HOME으로 설정되어 있어야 한다.

예) E:\java\jdk1.6.0_05\

 

실행에서 cmd로 콘솔을 띄운 후

jar파일이 있는 곳에서 다음을 실행한다.

java -Xmx256m -jar glassfish-installer-v2ur1-b09d-windows.jar 
cd glassfish
lib\ant\bin\ant -f setup-cluster.xml 
(다운 받은 GlassFish V2 UR1 버전이 Clustering 지원 버전일 때)
4. 이클립스 플러그인을 받는다.
다운 받은 이클립스는 압축을 풀면 설치가 끝난다.
자세한 그림과 영문으로 된 설명이 아래 주소에 있다.
https://glassfishplugins.dev.java.net/eclipse33/index.html
1) perspective를 "Java EE"로 바꾼다.
2) Server Tab에서 오른쪽 단추로 "New Server"마법사를 실행한다.
3) "Download addtional server adapters" 링크를 클릭한다.
4) GlassFish Java EE 5 Server를 선택한다.
5) License에 동의하고 GlassFish Adaptor를 받는다.
6) OK를 눌러 다운받는다.
7) 다 받은 후에 이클립스를 재시작한다.
8) 재시작후에 "New Server"마법사에서 GlassFish를 찾을 수 있다.
9) 자신의 원하는 GlassFIsh버전을 선택한다.
GlassFish V2를 선택해보겠다.
10) "Browse..." 버튼을 클릭해서 GlassFish가 설치된 곳을 정해준다.
11) 서버설정을 해 준다.
기본값은 다음과 같다. 나중에 자기가 원하는 값으로 바꿔준다.
Address : localhost
Server port Number : 8080
Admin Server Port Number : 4848
Domain Name : domain1
Administrator Id : admin
Administrator Password : adminadmin
12) new Server (GlassFish V2) 가 Servers 탭에 생겼다.
팝업메뉴에서 서버를 실행시킬 수 있다.
13) 서버를 실행하면 Started로 status가 바뀐다.
Console 탭에서 server log를 볼 수 있다.
14) 이제 Java EE5 Web Application을 만들어보자.
"Dynamic Web Project"를 만들자.
15) 프로젝트 이름을 쓰고,  Target runtime 을 GlassFish V2 Java EE 5로 정한다.
16) 다음단계에서 Web Application을 위한 Servelt 2.5(java EE 5 호환가능) 버전을 확인할 수 있다.
그리고 기본적으로 sun-web.xml을 배치 기술자로 사용하고 싶으면, 선택해라.(기본값이다)
17) 아주 간단한 index.jsp를 만들자.(이클립스에서 기본적으로 만들어주지 않는다.)
18) "Run on Server"를 클릭하면 Web Application이 deploy된다.
그리고 index.jsp 페이지를 브라우저에서 볼 수 있다.
 
만약 다음과 같은 에러가 난다면 eclipse plug-in을 업데이트 해야한다.
--------------------------------------------------------------------------------------------
Publishing to GlassFish V2...(Time of error: March 2, 2008 7:19:57 AM EST)
Reason:
java.lang.NullPointerException.
--------------------------------------------------------------------------------------------
관련 Forum
http://forums.java.net/jive/thread.jspa?messageID=265331&tstart=0
https://bugs.eclipse.org/bugs/show_bug.cgi?id=219627
wst 2.0.2 플러그인이 문제가 있다고 한다.
[Software Updates]-[Find and Install] - [Search for Updates of the currently installed features]
에서 업데이트 하면 자연스럽게 문제가 해결된다.

이 문제로 계속 삽질했음...ㅡ.ㅡ/
Posted by 1010
98..Etc/GlassFish2008. 12. 9. 11:52
반응형

GlassFish Community


GlassFish is an enterprise-quality Java EE 5 application server that offers advanced clustering, centralized administration, and best-in-class performance built by the GlassFish community. The Java EE SDKs contain Sun GlassFish Enterprise Server, previously named Sun Java System Application Server. Read the overview article, The GlassFish Community Delivering a Java EE Application Server.

Sun GlassFish Enterprise Server
Sun GlassFish Enterprise Server and SDKs
Sun GlassFish Enterprise Server v3 Prelude
 

For More Information

 
About the GlassFish Community
 About the GlassFish Community
Learn all about the GlassFish project, why Sun created it and answers to other common questions. Also see the Related GlassFish Technologies page.
» Read more
 
Use the Technology
 Use the Technology
Learn how to use the technology developed by the GlassFish community.
» Read more
 
Get It!
 Get It!
This is the place to download general distribution releases related to Project GlassFish.
» Read more
 
Improve It!
 Improve It!
Help to improve the Java EE 5 application server built by the GlassFish community, or discover how the GlassFish community is implementing technologies and features such as Grizzly, EJB 3.0 and Persistence, admin tools and more.
 
Also see GlassFish documentation, the GlassFish FAQ, the GlassFish Developers Spotlight page, and The Basics of GlassFish article. Use and contribute to Samples for Project GlassFish. And be sure to visit the Project GlassFish Quality page for information about getting and running Quicklook tests, links to bug stats and the latest test reports, details about TestNG, and more.
 

Support and Training

 
 Sun GlassFish Enterprise Server Subscriptions
A subscription is ideal for production deployments. Sun GlassFish Enterprise Server subscriptions offer a one-stop shop for product and service with immediate web access to software support, updates and upgrades, production and code support, training, and much more. Subscriptions are only valid for Sun GlassFish Enterprise Server installations.
 
 Sun GlassFish Enterprise Server: Introduction
Take this training course to learn about Sun GlassFish Enterprise Server's significant new features for ease of development and improved developer productivity, performance, monitoring, administration, clustering, and more.
 
Java EE Training and Certification
Find out about Java EE certification programs and additional Java EE training courses.
 
 
Spotlight

Download GlassFish v2  Download GlassFish v2
Sun GlassFish Enterprise Server v2, previously named Sun Java System Application Server 9.1, has been released as part of Java EE 5 SDK and Java Application Platform SDK. Download either of those SDKs.

» Read more spotlight stories
 
 
What's New

Daily news from the GlassFish Community is available at The Aquarium.
 
November 21, 2008
GlassFish and MySQL, Part 2: Building a CRUD Web Application With Data Persistence Learn how to use the NetBeans IDE with GlassFish and MySQL to build a create, read, update, and delete (CRUD) application.
 
November 21, 2008
Screencast: Build a Simple Web Application Using Eclipse and GlassFish v3 Prelude This screencast shows you how to create a simple Web application using JavaServer Pages and servlets in Eclipse 3.4, debug it, and rapidly deploy it directly on GlassFish v3 Prelude. Watch other Java EE screencasts too.
 
 
November 14, 2008
GlassFish and MySQL, Part 1: A Perfect Combination for Web Applications Learn why the combination of GlassFish and MySQL is a perfect choice for developing and deploying web applications.
 
November 14, 2008
GlassFish Update Center Find and install additional applications for GlassFish v2. View all modules or see the most popular or most recent modules.
 
November 12, 2008
Multilingual Java EE SDKs Now Available Update 6 versions of the Java EE 5 SDKs and Java Application Platform SDKs now offer multilingual support. Documentation for the SDKs is available in Japanese and Simplified Chinese and in several languages for the application server. Download the SDKs now.
 
November 6, 2008
GlassFish v3 Prelude Released Sun GlassFish Enterprise Server v3 Prelude improves productivity with rapid deployment technology and modular architecture based on OSGi. Read the overview and download it now.
 
November 6, 2008
GlassFish v3 Prelude Videos Learn more about GlassFish v3 Prelude in these three videos: Introducing GlassFish v3 Prelude, What's New in GlassFish v3 Prelude?, and Java EE 6 and GlassFish.
 
Posted by 1010
98..Etc/GlassFish2008. 11. 12. 17:04
반응형

대부분의 엔터프라이즈 애플리케이션은 안전한 환경에서 실행할 필요가 있습니다. TLS(Transport Layer Security)/SSL(Secure Sockets Layer)은 포인트 투 포인트 보안 전송 메커니즘으로, 클라이언트 및 서버 간에 교환되는 메시지를 인증하고 메시지의 무결성 및 기밀성(confidentiality) 보장을 위해 사용할 수 있습니다. TLS/SSL(이 팁에서는 간단히 "SSL")은 대부분의 엔터프라이즈 애플리케이션 환경의 보안 요구사항을 충족하며 널리 채택되고 있습니다.

그러나 SSL에 의해 보호된 메시지 교환을 위해서는 서버가 SSL 서버로서 작동할 수 있어야 합니다. 이 팁에서는 GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키는 방법을 제시합니다.

각 단계별 설명으로 나아가기 전에, 키와 인증서와 같은 SSL의 기본 개념 몇 가지를 이해해야 하며 프로파일이라는 GlassFish v2의 개념도 이해할 필요가 있습니다.

키와 인증서

SSL에서 두 가지 중요한 개념은 키와 인증서입니다. 키는 클라이언트와 서버 사이의 트랜잭션에서 개인 정보 보호(privacy)와 신뢰(trust)를 구축하는 데 사용됩니다. SSL은 공개 키 암호화를 사용하며 이는 키 페어(key pairs)를 기반으로 합니다. 키 페어에는 하나의 공개 키와 하나의 개인 키가 포함됩니다. 데이터가 하나의 키로 암호화된 경우, 그것은 오직 그 페어의 나머지 한 키로만 해독될 수 있습니다.

인증을 위해서는 인증서가 사용됩니다. SSL을 사용하기 위해서는 서버에 연결할 수 있는 각 클라이언트의 IP 주소에 대해 각기 연관된 인증서가 있어야 합니다. 인증서는 서버 사이트의 소유자를 식별하며 관련 정보를 제공합니다. 인증서는 소유자에 의해 디지털로 암호화한 서명이 포함됩니다. 인증이 증요한 사이트의 경우, 인증서는 잘 알려진 신뢰성 있는 인증 기관으로부터 구입할 수 있습니다. 그러나 인증이 크게 중요하지 않은 사이트의 경우에는 자가 서명 인증서(self-signed certificate)를 사용할 수도 있습니다.

GlassFish v2 프로파일

GlassFish v2는 다양한 용도의 프로파일을 지원합니다. 각 프로파일은 애플리케이션 서버에 대한 구성 매개변수를 미리 설정하여 특정 유형의 용도로 최적화합니다. 세 가지 프로파일에는 개발자(developer), 클러스터(cluster) 및 엔터프라이즈(enterprise)가 있습니다.

개발자 프로파일은 개발 환경에서 사용하기 위해 GlassFish v2를 최적화합니다. 이는 구성 매개변수가 빠른 구동(fast startup)과 같은 목표는 지원하지만 로깅 또는 세션 복제와 같은 기능은 지원하지 않는다는 의미입니다. 클러스터 프로파일은 클러스터 생성 및 세션 복제를 가능하게 하는 구성 매개변수를 설정합니다. 클러스터는 GlassFish v2 인스턴스의 그룹으로 단일 논리 개체로서 관리하고 모니터할 수 있습니다. 엔터프라이즈 프로파일은 프로덕션 환경으로 GlassFish v2를 최적화합니다. 또한 로깅 및 기타 보안 관련 기능을 지원합니다.

GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키기

GlassFish v2를 SSL 서버로 작동시키는 단계는 애플리케이션 서버를 위해 사용된 프로파일에 따라 결정됩니다. 먼저 개발자 프로파일이 사용되는 경우의 프로세스를 살펴본 다음 엔터프라이즈 프로파일이 사용될 때의 프로세스를 검토합니다.

개발자 프로파일이 사용되는 경우

GlassFish v2 프로파일이 특정 유형의 용도를 위해 구성 매개변수를 미리 설정한다는 점을 상기하십시오. 이들 매개변수 중 하나가 Security Store인데 이것은 인증서와 키와 같은 보안 및 신용 관련 정보가 어떻게 저장되는지를 나타냅니다. 개발자 프로파일의 경우 Security Store 값은 JKS로 설정됩니다. 이 경우 서버에 대한 인증서와 키는 자바 키스토어 파일(keystore.jks)에 저장되며 인증서는 신뢰할 수 있는 CA에 의해 발행되며 인증서 파일(cacerts.jks)에 저장됩니다.

GlassFish v2를 설치할 때 서버 인증서로 자가 서명 인증서가 기본적으로 생성됩니다. 그러나 인증이 사용자의 사이트에서 중요한 경우라면, 자가 서명 인증서를 CA로부터의 디지털 서명 인증서로 교체할 필요가 있습니다. 이 섹션에서는 자가 서명 인증서를 대체하는 방법, CA에서 서버 인증서를 확득하는 방법 및 서버 인증서를 키스토어로 가져오는 방법을 설명합니다.

아래에 기술된 단계에서는 키 및 인증서 관리 툴인 keytool을 사용합니다. Keytool은 여러 버전의 자바 플랫폼, 스탠다드 에디션(자바 SE) 개발 킷(jdk)에서 사용 가능합니다. 한편 자바 SE 6에서는 keytool.에 몇 가지 필수 기능이 추가되었습니다. 아래의 명령은 jdk 6 버전의 keytool을 기반으로 합니다. keytool에 대한 자세한 정보는 JDK 툴 및 유틸리티를 참조하십시오.

다음은 애플리케이션 서버가 개발자 프로파일로 구성될 때 GlassFish v2를 SSL 서버로 작동시키기 위한 명령문입니다.

  1. 다음 명령을 수행하여 기본적으로 설치된 자가서명 인증서를 삭제하십시오(참고: 이 단계와 이후의 단계의 명령문은 포맷을 위해 여러 줄에 걸쳐 표시되었음).        keytool -delete -alias s1as -keystore keystore.jks
           -storepass <store_passwd>

    이 때 <store_passwd>는 키스토어에 대한 비밀번호(예: "mypass")입니다. s1as는 GlassFish v2 키스토어의 디폴트 alias입니다.

  2. 다음 명령을 수행하며 애플리케이션 서버를 위한 새로운 키 페어를 생성하십시오.       keytool -genkeypair -keyalg <key_alg>
          -keystore keystore.jks -validity <val_days> -alias s1as

    이 때 <key_alg>는 키 페어 생성을 위해 사용되는 알고리즘(예: RSA)이며 <val_days>는 인증서의 유효일 수(예: 365)입니다.

    키 페어 생성 외에도 해당 명령문은 공개 키를 자가 서명 인증서로 보호하고 인증서와 비밀 키를 alias에 의해 식별되는 새로운 키스토어 엔트리에 저장한다는 점에 유의하십시오.

    인증서의 이름이 사용자 사이트의 완전한 호스트 이름과 일치하도록 보장하는 것이 중요합니다. 그 이름이 일치하지 않으면 서버에 연결하는 클라이언트는 인증서의 이름이 사이트의 이름과 일치하지 않는다는 보안 경고를 받게 될 것입니다. 기본적으로 설치된 자가서명 인증서의 이름이 완전한 호스트 이름과 일치하는지 알고 있어야 합니다.

  3. 다음 명령을 수행하여 CSR(Certificate Signing Request)을 생성하십시오.       keytool -certreq -alias s1as -file <certreq_file>
          -keystore keystore.jks -storepass <store_passwd>

    여기서 <certreq_file>은 CSR이 저장되는 파일(예: s1as.csr)이며 <store_passwd>는 키스토어에 대한 비밀번호(예: changeit)입니다.

  4. VeriSign과 같은 CA에 CSR을 제출하십시오. 그러면 사용자는 응답으로 서명된 서버 인증서를 받게 될 것입니다. CA의 CA 인증서뿐만 아니라 응답에서 CA가 식별한, 중간에 발생한 모든 인증서를 브라우저로 가져와야 합니다.
  5. CA로부터 받은 서명된 서버 인증서를 마커 -----BEGIN CERTIFICATE-----와 -----END CERTIFICATE----- 를 포함하여 s1as.cert와 같은 파일에 저장하십시오. CA 인증서 및 모든 중간 CA 인증서를 다운로드하고 로컬 파일에 저장하십시오. CA 및 중간 CA 인증서를 브라우저로 가져오는 방법에 대해서는 브라우저 문서를 참조하십시오. Mozilla 및 Internet Explorer와 같은 다양한 브라우저로 CA 인증서를 가져오는 방법에 대한 정보는 CA에서 제공할 수도 있습니다.
  6. 원래의 자가 서명 인증서를 CA로부터 획득한 인증서(s1as.cert와 같은 파일에 저장)로 대체하십시오. 이를 위해 keytool 을 사용할 수 있으나 여러 단계를 필요로 합니다. 다음 자바 프로그램을 수행하면 더 쉽게 대체할 수 있습니다.

          import java.io.*;
          import java.security.Key;
          import java.security.KeyStore;
          import java.security.cert.Certificate;
          import java.security.cert.CertificateFactory;
          import java.security.cert.X509Certificate;
         
           
          public class Main {
              public static void main(String[] args) throws Exception {
                //args[] error checking logic omitted
                //file containing signed cert reply from CA
                String csrReplyFromCA = args[0];    
                //Path to GlassFish keystore.jks
                String keystoreLocation = args[1];  
                //Password for GlassFish keystore.jks
                String keystorePassword = args[2];  
                //The keyalias to be replaced : s1as in our example
                String selfSignedKeyEntry = args[3];
                 
                //create the signed Cert
                Certificate cert = null;
                FileInputStream fis =
                   new FileInputStream(csrReplyFromCA);
                CertificateFactory cf =
                   CertificateFactory.getInstance("X.509");
                cert = cf.generateCertificate(fis);
                 
                //now replace the original entry
                char[] passwordChars =
                   keystorePassword.toCharArray();
                KeyStore keystore = KeyStore.getInstance("JKS");
                keystore.load(new FileInputStream(keystoreLocation),
                   passwordChars);
                Key key = keystore.getKey(selfSignedKeyEntry,
                   passwordChars);
                keystore.setKeyEntry(selfSignedKeyEntry, key,
                   passwordChars, (new Certificate[]{cert}));
                keystore.store(new FileOutputStream(
                   keystoreLocation), passwordChars);
              }
          }

프로그램을 수행한 후에, GlassFish 키스토어 내의 인증서 s1as가 더 이상 원래의 자가 서명 인증서가 아니라 CA로부터 받은 인증서(response certificate)라는 것을 확인해야 합니다. 다음은 VeriSign으로부터 획득한 새 s1as 인증서와 원래의 s1as 인증서를 비교한 예입니다.

원래의 s1as (자가 서명):

Owner: CN=KUMAR, OU=Sun Java System Application Server, O=Sun
Microsystems, L=Santa Clara, ST=California, C=US
Issuer: CN=KUMAR, OU=Sun Java System Application Server, O=Su
n Microsystems, L=Santa Clara, ST=California, C=US
Serial number: 472acd34
Valid from: Fri Nov 02 12:39:40 GMT+05:30 2007 until: Mon Oct
30 12:39:40 GMT+05:30 2017

새로운 s1as (CA로부터 서명된 인증서 포함):

Owner: CN=KUMAR, OU=Terms of use at www.verisign.com/cps/test
ca (c)05, OU=Sun Java System Application Server, O=Sun Micros
ystems, L=Santa Clara, ST=California, C=US
Issuer: CN=VeriSign Trial Secure Server Test CA, OU=Terms of
use at https://www.verisign.com/cps/testca (c)05, OU="For Test
Purposes Only. No assurances.", O="VeriSign, Inc.", C=US
Serial number: 1375de18b223508c2cb0123059d5c440
Valid from: Sun Nov 11 05:30:00 GMT+05:30 2007 until: Mon Nov
26 05:29:59 GMT+05:30 2007

이러한 단계를 수행한 후에 GlassFish v2를 다시 시작하고 CA에 의해 발행된 서명된 서버 인증서를 사용할 수 있습니다.

클러스터 프로파일이 사용되는 경우

애플리케이션 서버가 클러스터 프로파일로 구성되는 경우, GlassFish v2를 SSL 서버로 작동시키려면 개발자 프로파일에 대해 수행했던 것과 동일한 단계를 수행합니다. 그러나 이 경우에 동일한 서버 키가 클러스터 내의 모든 애플리케이션 서버 인스턴스에 복제된다는 것을 확실하게 알아 둘 필요가 있습니다.

엔터프라이즈 프로파일이 사용되는 경우

엔터프라이즈 프로파일을 위한 Security Store 매개변수는 NSS이며 이는 네트워크 보안 서비스(Network Security Services)를 나타냅니다. NSS 보안 인프라에는 JKS 키스토어가 없으며 따라서 디폴트 GlassFish 키스토어가 없습니다.

GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키는 단계는 개발자 프로파일이 사용될 때와 엔터프라이즈 프로파일이 사용될 때가 대체로 유사합니다. 그러나 두 가지의 차이점이 있습니다. 첫 번째 차이는 프로세스의 첫 단계와 관계가 있습니다. JKS 키스토어가 없기 때문에 사용자는 비어 있는 키스토어(keystore.jks)로 프로세스를 시작합니다. 두 번째 차이는 프로세스의 마지막 단계와 관련이 있습니다. 결과로 얻은 서명 인증서를 JKS 키스토어로 가져오는 대신 사용자는 그것을 NSS 스토어로 가져옵니다. 즉, GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키려면 위에서 설명한 개발자 프로파일이 사용되는 경우와 동일한 단계를 수행하지만 비어 있는 키스토어로 시작하고 6단계를 다음으로 대체합니다.

  1. 다음 명령을 사용하여 키스토어로부터 서버 인증서를 위한 비밀키를 PEM(Privacy Enhanced Mail) 포맷으로 보내십시오.       keyexport.bat -keyfile serverkey.pem
          -keystore keystore.jks -storepass changeit -alias s1as

    이 명령문은 keyexport 유틸리티를 호출합니다. keyexport 패키지에 keyexport가 있습니다. 이 패키지는 Project Metro의 XWSS 다운로드 페이지에서 다운로드할 수 있습니다.

    위 명령에 대한 응답으로 키스토어 비밀번호 입력 프롬프트가 나타날 것입니다. 키스토어 비밀번호는 키 비밀번호와 동일하므로 리턴키를 누르면 됩니다.

    이것은 serverkey.pem 파일을 생성하며 이 파일에는 마커 -----BEGIN PRIVATE KEY----- 와 -----END PRIVATE KEY----- 아래에 서버 비밀 키가 포함됩니다.

  2. CA로부터 응답으로 온 서명 인증서(signed certificate reply)를 마커 -----BEGIN CERTIFICATE----- 와 -----END CERTIFICATE----- 를 포함하여 servercert.pem 파일에 추가하십시오. 마커 END PRIVATE KEY 아래에 그 응답을 추가하십시오.
  3. serverkey.pem 파일을 PKCS#12 파일(확장자가 .pfx인 파일)로 변환하십시오. "PKCS"는 RSA Security에 의해 고안 및 발행된 공개 키 암호화 표준의 그룹을 가리킵니다. PKCS#12는 비밀키와 그에 수반되며 비밀번호 기반의 대칭 키로 보호되는 공개 키 인증서를 저장하는데 흔히 사용되는 파일 형식을 정의합니다.

    serverkey.pem 파일을 PKCS#12 파일로 변환하는데 사용할 수 있는 툴은 여러가지가 있습니다. openssl 툴은 그러한 것 중 하나입니다. 다음은 openss1을 사용하여 파일을 변환하는 명령문입니다.

          openssl pkcs12  -export  -in serverkey.pem -out s1as.pfx

    위 명령에 대한 응답으로 익스포트 비밀번호 입력 프롬프트가 나타날 것입니다. "changeit"과 같은 비밀번호 또는 GlassFish 마스터 비밀번호를 입력하십시오.

    s1as.pfx 파일에는 이제 서명이 있는 서버 인증서 및 비밀 키가 포함될 것입니다.

  4. 원래의 s1as 자가서명 항목이 있으면 다음 명령을 수행하여 삭제하십시오.       certutil -D -n s1as -d $AS_NSS_DB

  5. pk12util 유틸리티를 사용하여 새 s1as.pfx 파일을 NSS 스토어로 가져오는 명령문은 다음과 같습니다.       pk12util -i s1as.pfx -d $AS_NSS_DB

    pk12util은 엔터프라이즈 프로파일을 위한 GlassFish 설치 임시 디렉토리 내에서 이용 가능한 NSS 유틸리티입니다. 그 유틸리티는 PCKS#12 파일을 NSS 스토어로 가져오거나 스토어에서 내보내는 데 사용됩니다.

    명령문에 대한 응답으로, NSS 소프트 토큰 및 PKCS#12 파일에 대한 비밀번호 입력 프롬프트가 나타날 것입니다. 적절한 비밀번호를 입력하십시오. 그러면 가져오기가 성공적으로 수행되었다는 다음과 같은 메시지를 볼 수 있을 것입니다.

          pk12util: PKCS12 IMPORT SUCCESSFUL  

고려해야 할 두 가지 경우가 있습니다.

  • 애플리케이션 서버 프로파일이 엔터프라이즈 프로파일이며 서버 키 페어가 이미 PKCS#12 파일에 있습니다. 스토어 내에 alias가 s1as인 항목이 이미 있는 경우에는 "엔터프라이즈 프로파일이 사용되는 경우"에서 설명한 대로 4단계를 수행하여 원래의 항목을 삭제하기만 하면 됩니다.      certutil -D -n s1as -d $AS_NSS_DB

    그리고 나서 5단계를 수행하여 새로운 s1as.pfx 파일을 NSS 스토어로 임포트합니다.

          pk12util -i s1as.pfx -d $AS_NSS_DB

    alias가 s1as인 항목이 스토어에 없으면 5단계만 수행하십시오.

  • 애플리케이션 서버 프로파일이 개발자 프로파일이며 서버 키 페어가 이미 PKCS#12 파일에 있습니다. 이러한 경우에 엔터프라이즈 프로파일이 사용되는 경우 에서 설명한 대로 5단계를 수행하여 원래의 s1as 항목을 삭제하기만 하면 됩니다. 그 후 pkcs12import 유틸리티를 사용하여 PCKS#12 파일을 GlassFish 키스토어로 가져오십시오.      pkcs12import.sh -file s1as.pfx -alias s1as
         -keystore keystore.jks -storepass changeit
         -pass <exp_password>

    이 때 <exp_password>는 PKCS#12 파일이 보내졌을 때 사용되었던 비밀번호(예: changeit)입니다.

    pkcs12import 패키지에 pkcs12import 유틸리티가 있으며 이 패키지는 Project Metro의 XWSS 다운로드 페이지에서 다운로드할 수 있습니다.

자세한 정보

GlassFish와 SSL에 대한 더 자세한 정보는 GlassFish v2로 SSL 및 CRL 확인(SSL and CRL Checking with GlassFish v2)를 참조하십시오.

또한 다음 리소스도 참조하십시오.


저자 정보

Kumar Jayanti는 썬마이크로시스템즈의 공학자 직원이며 웹 기술 및 표준 팀에서 일하고 있습니다. 현재 Kumar는 XML과 웹 서비스 보안 구현 부문에서 주역을 맡고 있으며 또한 최근에는 GlassFish 보안 모듈도 책임지게 되었습니다. 그는 2004년 초반부터 썬에서 웹 서비스 보안 분야에 관여해 왔으며 인도 Mumbai의 IIT에서 Computer Science 공학석사(M.Tech) 학위를 취득했습니다. 그의 관심 영역은 분산 컴퓨팅, CORBA, XML, 웹 서비스 및 보안 분야입니다.



이 글의 영문 원본은
http://java.sun.com/mailers/techtips/en ··· v07.html
에서 보실 수 있습니다.

"Java EE" 카테고리의 다른 글

Posted by 1010
98..Etc/GlassFish2008. 11. 12. 17:03
반응형
오픈 소스 소프트웨어는 점점 더 많은 기업과 사내 개발자들의 관심을 끌고 있습니다. 이는 커뮤니티에서 오픈 소스 소프트웨어의 소스 코드를 자유롭게 획득하고 업그레이드할 수 있기 때문입니다. 즉, 이 소프트웨어를 사용하면 상용 소프트웨어보다 빠르게 작업을 처리하고, 기업 및 개발자에게 실제로 필요한 사항에 맞게 업그레이드할 수 있습니다. 또한 일반적으로 오픈 소스 소프트웨어는 무료로 사용할 수 있기 때문에 비용을 절감할 수 있습니다. 따라서 많은 관심이 집중되고 사용 범위가 빠르게 확장되고 있는 추세입니다.

그러나 기업들은 오픈 소스 소프트웨어가 업무에 중요한 애플리케이션을 관리하고 로드 및 트랜잭션이 많은 환경을 처리하는 데에는 적합하지 않다고 생각하고 있습니다. 이는 오픈 소스 소트프웨어가 지원되지 않는 경우가 있으며, 상용 소프트웨어 보다 작동 용이성, 안정성 및 성능면에서 떨어지는 경우가 있기 때문입니다. 특히, 애플리케이션 서버와 같이 중요한 엔터프라이즈 구성요소의 경우 IT 결정자가 위험 수준이 낮고 애플리케이션에 적합하도록 오픈 소스를 다양하게 분류합니다.

기업에서는 오픈 소스 애플리케이션 서버를 사용할 것인지 또는 강력하고 안정적인 기업용 애플리케이션 서버를 사용할 것인지 더 이상 선택할 필요가 없습니다. 두 서버에서 모두 GlassFish v2를 사용할 수 있습니다.

그러나 GlassFish v2를 사용하려면 기업에서는 오픈 소스로 운영되며, 업무에 중요한 애플리케이션과 척박한 프로덕션 환경에 맞는 특성을 갖춘 애플리케이션 서버가 필요합니다. 기업에서는 오픈 소스 애플리케이션 서버를 사용할 것인지 또는 강력하고 안정적인 기업용 애플리케이션 서버를 사용할 것인지 더 이상 선택할 필요가 없습니다. 두 서버에서 모두 GlassFish v2를 사용할 수 있습니다.

이 기사에서는 GlassFish v2를 사용하여 중요한 비즈니스 애플리케이션 및 프로덕션 환경의 요구 사항을 처리하는 기능에 대해 집중적으로 설명합니다.


목차

- GlassFish란 무엇입니까?
- GlassFish v2 및 상용 배포판
- 고가용성 및 확장성
- 엔터프라이즈급 성능
- 중앙 집중화된 관리 및 모니터링
- 프로파일에서의 간단한 구성
- .NET과의 상호 운용성
- JBI 준비
- 뛰어난 메시지 처리 기능
- 매력적인 가격 지원 정책
- 요약
- 자세한 정보
- 저자 정보


GlassFish란 무엇입니까?

사용자 삽입 이미지
썬은 2005년 6월에 Java Platform, Enterprise Edition 5 (Java EE 5)와 호환되는 애플리케이션 서버를 개발하기 위해 자바 커뮤니티에 공개하여 GlassFish 프로젝트를 출시했습니다. 그 후, GlassFish 커뮤니티 라는 적극적인 개발자들의 커뮤니티가 프로젝트에 참여하게 되었습니다. 초창기에 많은 노력을 기울인 결과 첫 번째 오픈 소스이자 Java EE 5 호환 애플리케이션 서버이며 Java EE 5의 참조 구현인 GlassFish v1을 개발했으며, GlassFish 커뮤니티에서는 Java Persistence API의 참조 구현인 Toplink Essentials를 발표했습니다. 또한 커뮤니티에서는 Metro, jMaki, Open Message Queue(Open MQ) , Hudson Grizzly와 같은 다양한 하위 프로젝트의 개발을 촉진합니다.

GlassFish v2에는 GlassFish v1의 기능이 모두 포함되어 있으며, 애플리케이션 서버에서 중요한 프로덕션 환경 문제를 수행할 수 있는 기능이 추가되어 있습니다.

GlassFish v1은 개발자를 위해 만들어졌으며, 개발자가 Java EE 5 애플리케이션을 배포하고 테스트할 수 있는 완전한 Java EE 5 호환 애플리케이션 서버 및 오픈 소스를 제공할 목적으로 만들어졌습니다. 목표는 간단한 배포 즉, GlassFish의 단일 인스턴스에서 애플리케이션을 배포하는 것이었습니다. GlassFish v1은 공공 개발 및 배포 라이센스(CDDL) 하에 사용할 수 있으며, 연간 다운로드 횟수가 3백만 건 이상으로 매우 많이 사용되어 왔습니다. 이는 전 세계에 보급되어 썬에서 지원하는 상용 배포판인 Sun Java System Application Server Platform Edition 9.0을 포함하여 여러 배포판에 사용할 수 있으며, 솔라리스, 윈도우 및 리눅스 운영 체제를 비롯한 여러 플랫폼에서도 사용할 수 있습니다.

2007년 9월, GlassFish 커뮤니티에서 GlassFish v1에서의 모든 기능이 포함되고, 애플리케이션 서버에서 중요한 프로덕션 환경 문제를 수행할 수 있는 기능이 추가된 GlassFish v2를 발표했습니다. 이 기사에서는 이러한 기능에 대해 설명합니다.


GlassFish v2 및 상용 배포판

사용자 삽입 이미지
앞서 설명한 대로, GlassFish v1에는 썬에서 지원하는 상용 배포판이 포함되어 있으며, 이는 GlassFish v2의 경우에도 마찬가지입니다. GlassFish v2에 포함된 썬에서 지원하는 상용 배포판은 Sun Java System Application Server 9.1입니다. GlassFish v2와 Sun Java System Application Server 9.1에서는 동일한 코드 베이스를 사용합니다. 또한, 썬에서 Sun Java System Application Server 9.1에 대한 지원 서비스를 구매할 수 있습니다. 지원 서비스에 대한 자세한 내용은 매력적인 가격 지원 정책을 참조하십시오.

GlassFish v2와 Sun Java System Application Server 9.1는 모두 무료로 배포 및 재배포할 수 있습니다. 그러나 GlassFish v2와 달리, Sun Java System Application Server 9.1에서는 코드를 바이너리 형식으로만 사용할 수 있기 때문에 수정이 불가능합니다. GlassFish v2 소스 코드는 CDDL 또는 클래스 경로 예외가 포함된 GNU 일반 공개 라이센스(GPL) v2에 따라 수정할 수 있습니다.

이 기사에서는 주로 GlassFish v2라는 용어를 사용하여 오픈 소스 애플리케이션 서버, GlassFish v2와 해당 상용 배포판인 Sun Java System Application Server 9.1에 대해 설명합니다. 두 배포판 간의 내용이 다른 경우에 한해 GlassFish v2 또는 Sun Java System Application Server 9.1로 각각 언급합니다.

고가용성 및 확장성

애플리케이션 서버에서 중요한 비즈니스 애플리케이션을 처리하는 경우 해당 애플리케이션을 항상 사용할 수 있어야 합니다. 애플리케이션 서버를 프로덕션 환경의 요구 사항에 맞게 사용하려면 증가된 작업 부하에 맞춰 조정해야 합니다. GlassFish v2는 클러스터링 및 고가용성 데이터베이스(HADB) 기술을 통해 고가용성 및 확장성을 보증합니다.


클러스터링

클러스터는 GlassFish v2 애플리케이션 서버 인스턴스의 그룹으로 단일 논리 개체로서 관리하고 모니터할 수 있습니다. 클러스터를 생성하려면 먼저 클러스터링을 위해 GlassFish v2 도메인을 사용할 수 있어야 합니다. GlassFish v2 도메인 또는 보다 정확하게 관리 도메인은 관리자에 의해 모든 GlassFish v2 엔터티가 제어되는 논리 경계입니다. 런타임 시 도메인은 GlassFish v2 애플리케이션 서버 인스턴스 또는 클러스터와 동일합니다. 따라서 GlassFish v2를 설치할 때 도메인에 대한 클러스터링을 쉽게 수행할 수 있습니다. 예를 들어, GlassFish v2를 설치한 후 다음 명령을 사용하여 도메인을 생성하고 클러스터링을 수행할 수 있습니다.

lib/ant/bin/ant -f setup-cluster.xml

GlassFish v2 관리 콘솔에서 기존 도메인에 대한 클러스터링을 수행할 수도 있으며, 해당 내용은 이 기사의 뒷 부분에 설명되어 있습니다.

클러스터링을 수행하도록 도메인을 설정하면 해당 도메인에 클러스터 프로파일을 지정해야 합니다. 프로파일에 대한 자세한 내용은 프로파일에서의 간단한 구성을 참조하십시오. 도메인에서 클러스터를 유연하게 제거하거나 추가하고 특정 클러스터에서 GlassFish v2 인스턴스를 제거하거나 추가할 수 있습니다. 클러스터에 인스턴스를 추가하거나 도메인 내에 클러스터를 추가하여 증가된 애플리케이션 서버 용량과 속도에 대한 요구 사항에 맞게 조정할 수 있습니다. 클러스터 관리 및 모니터링에 대한 자세한 내용은 중앙 집중화된 관리 및 모니터링을 참조하십시오.

클러스터에서 하나의 애플리케이션 서버 인스터스가 실패한 경우 계속해서 세션을 처리하도록 해당 인스턴스와 상호 작용하는 세션이 클러스터의 다른 인스턴스로 다시 라우팅됩니다.

클러스터링의 가장 중요한 측면은 메모리 복제 입니다. 메모리 복제 시 GlassFish v2 인스턴스에서 배포된 애플리케이션이 있는 사용자 세션의 상태에 대한 정보가 클러스터의 동등 인스턴스로 복제됩니다. 클러스터의 각 GlassFish v2 인스턴스가 클러스터의 다음 인스턴스 즉, 복제 파트너에 세션 상태 정보를 보냅니다. 클러스터에서 인스턴스 순서는 인스턴스의 이름을 기반으로 합니다. 모든 인스턴스에서 배포된 애플리케이션의 세션 상태 정보가 업데이트되면 클러스터 주위에 복제됩니다.

GlassFish v2에서 플러그인으로 사용할 수 있는 로드밸런서는 메모리 복제에서 중요한 역할을 수행합니다. 로드밸런서는 여러 GlassFish v2 인스턴스 간의 작업 부하를 분산시키고, 인스턴스에 실패하면 세션을 다시 라우팅합니다. 클러스터에서 GlassFish v2 인스턴스가 실패한 경우 로드밸런서가 해당 인스턴스와 상호 작용하는 세션을 클러스터의 다른 인스턴스로 다시 라우팅합니다.

사용자 삽입 이미지
그림 1. 클러스터의 장애 조치 처리


그림 1에 표시된 대로, 인스턴스 1이 실패하면 로드밸런서가 인스턴스 1과 상호 작용하는 세션을 다른 인스턴스(그림에서 인스턴스 2)로 라우팅합니다. 라우팅할 대상 인스턴스가 실패한 GlassFish v2 인스턴스의 복제 파트너인 경우 해당 위치에서 세션이 처리됩니다. 그러나 라우팅 대상 인스턴스가 복제 파트너가 아닌 경우에는 복제 파트너가 복제된 세션 데이터를 라우팅 대상 인스턴스에 전송합니다. 다시 말해서, 로드 밸런서가 세션을 복제 파트너가 아닌 인스턴스 3으로 라우팅하면 세션을 처리하기 위해 복제 파트너인 인스턴스 2가 상태 데이터를 인스턴스 3으로 보냅니다.

메모리 복제를 사용하면 GlassFish v2에서 배포된 애플리케이션을 항상 사용할 수 있기 때문에 해당 애플리케이션과의 상호 작용에 방해가 있는 경우에도 사용자는 거의 인지하지 못합니다.

클러스터 인스턴스 및 해당 복제 파트너를 다른 시스템에 배치하여 가용성을 더욱 높일 수 있습니다. 이러한 방식으로 수행하면 시스템 중 하나가 실패하는 경우에도 세션 데이터가 손실되지 않습니다.


고가용성(HADB) 기술


매우 높은 수준의 가용성이 필요한 엔터프라이즈에서는 이전 버전의 썬 자바 시스템 애플리케이션 서버에서 사용되고 버전 9.1에서도 사용할 수 있는 기능인 고가용성 데이터베이스(HADB) 기술을 이용할 수 있습니다. HADB는 99.999%("5-9(five-nines)")의 가용성을 제공하고 세션 상태 정보를 유지관리할 수 있는 영구 데이터베이스 저장소를 제공합니다. HADB는 오픈 소스가 아니지만 작업 시 무료로 사용할 수 있습니다.

그러나 GlassFish v2의 클러스터링 기능을 통해 제공되는 강력한 메모리 내 복제를 수행하는 경우 대부분의 설치에 필요한 고가용성 요건을 충족해야 합니다. 또한 메모리 내 복제를 수행하려면 HADB 또는 해당 오픈 소스보다 설치 및 관리 작업을 줄여야 합니다. 이 외에도 메모리 내 복제를 수행하면 HADB를 능가하는 여러 성능 최적화 기능을 활용할 수 있습니다. 그러나 현재 HADB를 사용하는 작업이 있는 경우 또는 5-9(five-nines) 가용성이 필요한 경우 HADB에서 Sun Java System Application Server 9.1을 선택할 수 있습니다.

클러스터링 및 HADB에 대한 자세한 내용은 GlassFish 버전 2에서의 클러스터링을 참조하십시오.


엔터프라이즈급 성능


사용자 삽입 이미지
조정 범위에 상관없이 애플리케이션 서버를 올바르게 작동할 수 있습니다. 뛰어난 처리량과 응답 시간을 제공하므로 애플리케이션 서버에서 프로세싱 부하를 처리할 수 있습니다. GlassFish v2는 이러한 목표를 충족합니다. 사실, GlassFish v1의 상용 버전인 Sun Java System Application Server 9.0은 SPECjAppServer2004 벤치마크 결과를 공개한 첫 번째 오픈 소스 애플리케이션 서버였습니다.

SPECjAppServer2004(1)는 호환 애플리케이션 서버에서 구현된 모든 주요 Java EE 기술이 실행되는 종단간 애플리케이션으로, 복잡한 애플리케이션 및 엔터프라이즈 환경에서 일반적인 대용량 트랜잭션 처리를 반영하는 방식으로 수행됩니다.

GlassFish v2는 업계 최고의 상용 애플리케이션 서버를 능가하는 성능을 가진 가장 빠른 오픈 소스 애플리케이션 서버입니다.

GlassFish v2는 업계 최고의 상용 애플리케이션 서버를 능가하는 성능을 가진 가장 빠른 오픈 소스 애플리케이션 서버입니다. 2007년 7월에 GlassFish v2는 경쟁자들보다 20% 우수한 SPECjAppServer에서 단일 Sun Fire T2000 서버에 대한 최고 점수를 (2) 기록했습니다.

최근 GlassFish v2의 측정 결과는이 벤치마크에 공개된 점수 중 3위를 (3) 차지했습니다. GlassFish v2는 벤치마크 생산 경쟁 결과에 사용된 것보다 훨씬 적은 하드웨어, 공간 및 전력을 사용하지만 공개된 최고 점수와의 격차는 20% 내입니다.

애플리케이션 서버의 성능은 실행되는 애플리케이션의 조합에 따라 달라집니다. 따라서 사용자의 결과가 SPECjAppServer2004 벤치마크의 결과와 다를 수 있습니다.
 
GlassFish v2에서 크게 성능이 향상된 부문은 웹 서비스 기술입니다. GlassFish v2에서 웹 서비스 기술의 컬렉션을 Metro라고 합니다. Metro에는 Java EE와 Windows .NET 환경 간의 웹 서비스 상호 운용성을 지원하는 기술뿐만 아니라 XML 기반 웹 서비스(JAX-WS)용 Java API 2.1과 같은 핵심 웹 서비스 기술이 포함되어 있습니다. JAXB(Java Architecture for XML Binding)라는 자매 기술과 제휴한 JAX-WS 2.1을 정확한 웹 서비스 벤치마크 에서 테스트했으며, 그 결과 초당 처리 요청 수에 있어 뛰어난 성능을 나타냈습니다.

GlassFish v2 성능에 대한 자세한 내용은 SJSAS 9.1(Glassfish V2)에서 새 SPECjAppServer 2004 결과 게시 및 측정 가능한 SPECjAppServer 2004 제출을 참조하십시오.
 

중앙 집중화된 관리 및 모니터링

관리 콘솔에서는 엔터프라이즈에서 GlassFish 인스턴스 및 클러스터를 제어할 수 있는 중간 지점을 제공합니다.

공식적으로 썬 자바 시스템 애플리케이션 서버 관리 콘솔이라고 하는 단일 GlassFish v2 관리 콘솔 또는 GlassFish v2 명령행 인터페이스(CLI)에서 GlassFish v2 인스턴스 또는 클러스터를 관리하고 모니터할 수 있습니다. 이를 통해 엔터프라이즈에서 GlassFish 인스턴스를 제어할 수 있는 중간 지점을 제공할 뿐만 아니라 각 클러스터를 개별적으로 관리하거나 모니터할 수 있습니다.


사용이 용이한 관리 콘솔

관리 콘솔의 중요한 측면 중 하나는 쉽게 사용할 수 있다는 점입니다. 관리 콘솔에 로그인하면 사용의 용이성에 대해 직접 알 수 있습니다. 표시되는 첫 번째 페이지는 일반 운영 작업이 함께 표시되는 일반 작업 페이지입니다. 그림 2에 클러스터링에 사용할 수 있는 도메인에 대한 일반 작업 페이지가 표시됩니다.

사용자 삽입 이미지
그림 2. 클러스터링에 사용할 수 있는 도메인에 대한 일반 작업 페이지


새 클러스터 생성, 엔터프라이즈 애플리케이션 배포 및 데이터 모니터링과 같은 작업에 대한 버튼이 표시됩니다. 관리 작업을 수행할 수 있는 대체 경로를 제공하는 탐색 트리에 이러한 버튼이 추가됩니다. 운영 작업을 시작하려면 페이지에서 해당 버튼을 클릭하거나 트리에서 노드를 클릭합니다. 예를 들어, 클러스터링에 사용할 수 있는 도메인에 클러스터를 생성하려면 페이지에서 새 클러스터 만들기 버튼을 클릭하거나 탐색 트리에서 클러스터 노드를 클릭합니다.
또는 관리 작업에 대한 지원 문서를 일반 작업 페이지에서 직접 사용할 수 있습니다. 이러한 문서는 썬마이크로시스템즈 문서 페이지에서 사용할 수 있는 광범위한 참조 문서 라이브러리의 일부입니다.

일반 작업 페이지와 관리 콘솔의 여러 기타 요소는 동적입니다. 이러한 요소는 Project Woodstock에서 개발된 차세대 사용자 인터페이스 구성요소 집합의 일부로, Ajax 기능을 활용하여 빠르게 엔트리에 응답하고 디스플레이 간에 부드럽게 전환할 수 있습니다.


포괄적인 모니터링

관리 콘솔을 사용하면 광범위한 애플리케이션 서버 관련 데이터를 쉽게 모니터할 수도 있습니다. 일반 작업 페이지에서 모니터링 데이터 보기 버튼을 클릭하여 각 탭에 애플리케이션 서버의 다른 측면 또는 해당 운영 체제에 대한 데이터가 표시되는 탭 페이지를 표시합니다. 예를 들어, 그림 3에 표시된 대로 호출 플로우 탭에 호출 플로우 데이터가 표시됩니다.

사용자 삽입 이미지
그림 3. 호출 플로우 모니터링 


지정된 트랜잭션의 호출 플로우를 모니터링하여 그림 4에 표시된 대로 다양한 애플리케이션 서버 컨테이너를 통해 이동하는 트랜잭션을 추적할 수 있습니다.
사용자 삽입 이미지

그림 4. 트랜잭션에 대한 호출 플로우 세부사항

JMX(Java Management Extensions) 기술에 GlassFish v2를 사용할 수 있습니다. 이는 기업에서 이미 JMX를 사용하여 리소스를 모니터하고 관리하는 경우 접근 방법을 쉽게 확장할 수 있을 뿐만 아니라 GlassFish v2 리소스를 관리하고 모니터할 수 있습니다. 또한 GlassFish v2를 썬 관리 센터와 할시온의 썬 애플리케이션 서버용 PrimeAlert를 통해 구현된 모니터링 접근 방법 및 종단간 관리로 통합할 수 있습니다.


지능형 명령행 인터페이스(CLI)

CLI를 통해 GlassFish v2와 연관된 관리 작업을 전체적으로 수행할 수도 있습니다. 일반적으로 관리 콘솔 또는 CLI를 통해 거의 모든 GlassFish v2 관련 관리 작업을 수행할 수 있습니다. 예를 들어, CLI를 사용하여 GlassFish v2 도메인을 시작 및 중지하거나 클러스터를 생성하거나 호출 플로우 데이터 수집을 설정 또는 해제할 수 있습니다. 또한 CLI에는 명령을 입력할 때 오류가 발생하는 경우 대체 엔트리를 제안하는 "가장 일치하는 항목" 기능이 포함되어 있습니다. 예를 들어, 다음과 같이 asadmin 명령에 domain 키워드를 잘못 입력하는 경우가 있습니다.

asadmin start-domian

CLI에서 다음과 같이 대체 항목을 제안합니다.

Closest matching command(s):
asadmin start-domain


대규모 배포 관리

GlassFish v2에서 제공하는 관리 콘솔 및 CLI는 단일 인스턴스 또는 클러스터를 배포하고 구성할 수 있는 우수한 도구입니다. 대규모 기업 배포에 썬 N1 서비스 프로비저닝 시스템(N1SPS)을 사용할 수 있습니다. 썬 자바 시스템 애플리케이션 서버용 N1SPS 플러그인을 사용하면 기업 전체에 Sun Java System Application Server 9.1을 쉽게 설치, 구성 및 관리할 수 있습니다. 플러그인을 사용하여 기존 GlassFish v2 설치를 구성하고 관리할 수 있지만 이를 설치할 수는 없습니다. N1SPS에 대한 자세한 내용은 N1SPS을 통한 썬 자바 시스템 애플리케이션 서버 프로비저닝을 참조하십시오.

GlassFish v2의 관리 콘솔에 대한 자세한 내용은 GlassFish 프로젝트 - 관리 콘솔(GUI) 홈 페이지를 참조하십시오. GlassFish v2의 모니터링 기능에 대한 자세한 내용은 GlassFish 버전 2 모니터링 기능을 참조하십시오.


프로파일에서의 간단한 구성

최적화는 애플리케이션 서버의 중요한 요건이며, 각 서버에 각각 다른 유형의 최적화가 필요할 수 있습니다. 예를 들어, 애플리케이션을 빌드하고 테스트하는 개발자는 보안에 관계없이 애플리케이션 서버가 애플리케이션 요청에 응답하는 속도를 최적화하려고 할 수 있습니다. 그에 반해, 프로덕션 환경에서는 보안이 매우 중요하므로 애플리케이션을 배포하는 사람에게 보안은 가장 중요한 문제입니다.

애플리케이션 서버 도메인을 생성할 때 적절한 프로파일을 지정하여 간단하게 특정 유형의 용도를 위한 GlassFish v2를 구성하고 최적화할 수 있습니다.

구성 매개변수를 설정하여 특정 요구사항을 충족하도록 애플리케이션 서버를 수동으로 조정할 수 있지만, 이렇게 하면 시간과 노력이 많이 소비됩니다. 또는 특정 유형의 용도를 위해 미리 구성되어 있는 애플리케이션 서버의 특정 에디션을 사용할 수 있습니다. 사실, 이전 릴리스의 썬 자바 시스템 애플리케이션 서버를 여러 에디션에서 사용할 수 있었습니다. 예를 들어, 플랫폼 에디션은 개발자를 겨냥해 만들어졌으며 엔터프라이즈 에디션은 대기업을 겨냥한 제품입니다. 그러나 각각의 용도에 맞게 사용하기 위해 여러 에디션의 애플리케이션 서버를 설치하고 관리하는 것은 비현실적입니다.

보다 나은 솔루션은 단일 에디션의 애플리케이션 서버를 제공하면서 특정 사용 패턴을 위해 미리 설정된 구성을 제공하는 것입니다. 실제로 이러한 방법으로 GlassFish v2를 배포합니다. 이는 하나의 적절한 크기의 배포 번들에서 사용할 수 있으며, 다양한 사용 프로파일을 지원합니다. 각 프로파일은 특정 유형의 용도를 위해 구성 매개변수를 미리 설정합니다. GlassFish v2에서는 개발자, 클러스터 및 기업과 같은 세 가지 프로파일을 지원합니다.

개발자 프로파일은 개발 환경에서 사용하기 위해 GlassFish v2를 최적화합니다. 이는 구성 매개변수가 빠른 구동(fast startup)과 같은 기능은 지원하지만 로깅 또는 세션 복제와 같은 기능은 지원하지 않는다는 의미입니다. 클러스터 프로파일은 클러스터 생성 및 세션 복제를 가능하게 하는 구성 매개변수를 설정합니다. 엔터프라이즈 프로파일은 프로덕션 환경으로 GlassFish v2를 최적화합니다. 또한 로깅 및 기타 보안 관련 기능을 지원합니다.

표 1에 세 가지 프로파일의 일부 특성에 대해 요약되어 있습니다.

표 1: GlassFish v2 프로파일 특성 및 설정
특징
설명
개발자
프로파일 값
클러스터
프로파일 값
기업
프로파일 값
보안 저장
키 및 인증서와 같은 보안 아티팩트에 사용되는 저장 유형입니다. 두 가지 주요 유형은 썬에서 제공하는 키스토어 구현의 독점 유형인 JKS(Java Key Store)와 보안 설정 클라이언트 및 서버 애플리케이션의 크로스플랫폼 개발을 지원하기 위해 설계된 라이브러리 집합인 NSS(Network Security Services)입니다. 저장 유형은 형식 및 구성하는 데 사용할 수 있는 도구에 따라 다릅니다. NSS는 엔터프라이즈 솔루션에 일반적으로 사용되는 보안 유형입니다.
JKS
JKS
NSS
빠른 시작

애플리케이션 서버를 빠르게 시작할 수 있는 옵션입니다. 빠른 시작은 온 디맨드 서비스 프레임워크의 일부인 자바 NIO 기반 구현을 통해 수행됩니다.
true (사용)
false (사용안함)
false (사용안함)
JVM

자바 가상 머신 구성 매개변수입니다.
핫 스폿 VM 구성 매개변수
핫 스폿 VM 구성 매개변수
JDK에서 확인
세션 복제 메커니즘
세션 복제 메커니즘
없음
메모리 내 복제
HADB
 

도메인을 생성할 때 프로파일을 지정합니다. 예를 들어, 다음 명령은 도메인을 생성하고 해당 도메인에 대한 엔터프라이즈 프로파일을 지정합니다.

asadmin create-domain --user admin --adminport 4848 --profile enterprise

이상, 특정 유형의 용도(이 경우 프로덕션 환경)를 위해 GlassFish v2 애플리케이션 서버 인스턴스를 구성하고 최적화하는 데 필요한 모든 내용에 대해 설명했습니다.

프로파일에 대한 자세한 내용은 자료(One Pager): 애플리케이션 서버용 사용 프로파일 지원을 참조하십시오.


.NET과의 상호 운용성

상호 운용성은 엔터프라이즈에서 중요한 요건입니다. 일반적으로 운영 환경 전체에 엔터프라이즈의 애플리케이션 리소스가 배포되기 때문입니다. 예를 들어, Java EE와 같은 하나의 환경에 애플리케이션의 클라이언트 부분이 있을 수 있고, 웹 서비스에서 해당 클라이언트가 Microsoft의 .NET 프레임워크와 같은 다른 환경에 있어야 할 수 있습니다. GlassFish v2를 사용하면 웹 서비스 기반 애플리케이션에서 Java EE와 .NET 환경 간에 상호 운용할 수 있습니다.


Metro 및 웹 서비스 상호 운용성

GlassFish v2를 사용하면 웹 서비스 기반 애플리케이션에서 안전하고 안정적으로 메시징 및 트랜잭션을 지원하는 동시에 Java EE와 .NET 환경 간에 상호 운용할 수 있습니다.

GlassFish v2에는 웹 서비스에 대한 강력한 기술을 제공하는 Metro가 포함되어 있으며, 이는 Java EE에서 실행되는 웹 서비스에 대한 기술 스택을 능가합니다. 또한 Metro를 사용하면 웹 서비스에서 Microsoft .NET 프레임워크의 웹 서비스 스택인 WCF(Windows Communication Foundation)와 상호 운용할 수 있습니다. Metro와 WCF 모두 일반적으로 WS* 규격(모두 "WS"로 시작)이라는 웹 서비스 규격의 집합을 구현하며, 이를 통해 안전하고 안정적인 트랜잭션 지향 웹 서비스 상호 작용을 수행할 수 있습니다. Metro에서는 WS* 규격의 구현을 WSIT(Web Services Interoperability Technology)라고 합니다. 그림 5에 표시된 대로, WSIT를 사용하여 GlassFish v2의 웹 서비스 클라이언트가 .NET 3.0의 웹 서비스 끝점과 상호 작용하고 .NET 3.0 웹 서비스 클라이언트가 GlassFish v2의 웹 서비스 끝점과 상호 작용할 수 있습니다. GlassFish v2 클라이언트와 GlassFish v2 끝점 간의 통신도 지원됩니다.

사용자 삽입 이미지

그림 5. .NET과 Metro의 상호 운용성

Metro와 WCF가 안전하고 안정적인 트랜잭션 지향 웹 서비스 상호 작용을 지원하므로 웹 서비스 클라이언트가 커밋하거나 롤백할 수 있는 트랜잭션 또는 조합으로 처리되거나 안전하게 수신되는 웹 서비스와 교환하도록 요청할 수 있습니다.


웹 서비스 상호 운용성 구성을 위한 간단한 인터페이스

GlassFish v2의 웹 서비스 끝점에 대한 상호 운용성 특성은 WSIT 구성 파일이라는 XML 파일에서 지정됩니다. 웹 서비스 개발자가 파일의 필수 XML을 코드화할 수 있습니다. 그러나 XML이 장황해지고 WSIT 구성 파일의 컨텐츠가 광범위해질 수 있습니다. 상호 운용 가능한 웹 서비스를 개발하는 보다 간단한 방법은 NetBeans IDE 버전 5.5.1 또는 6.0을 사용하는 것입니다. WSIT에 NetBeans IDE 5.5.1을 사용하려면 WSIT 플러그인 모듈을 설치합니다. NetBeans IDE 6.0에는 플러그인 모듈이 이미 패키징되어 있습니다. 사용 가능한 경우, IDE에 안전한 메시징, 안정적인 메시징 및 트랜잭션 지원과 같은 WSIT 특성과 함께 웹 서비스를 구성할 수 있는 간단한 확인란 인터페이스가 표시됩니다. 그림 6에 NetBeans IDE 6.0에서의 이 인터페이스가 표시됩니다.

사용자 삽입 이미지

그림 6. 상호 운용 가능한 웹 서비스의 안전한 메시지 전달 지정

그림 6에 안전한 메시지 전달 및 정확한 순서로 메시지 전달 확인란이 선택되어 있습니다. 이러한 확인란을 선택하면 웹 서비스에서 안전하게 메시지를 전달할 수 있으며, 클라이언트가 보낸 메시지를 보낸 순서대로 웹 서비스 끝점에 전달할 수 있습니다.
 
NetBeans IDE를 사용하여 GlassFish v2에 웹 서비스를 배포할 수 있습니다. 진행 중에 IDE에서 구성 선택 항목에 적절한 모든 XML 코드와 구성 파일을 포함하여 적절한 아티팩트를 생성합니다.

Java EE 플랫폼과 .NET 프레임워크 간의 웹 서비스 상호 운용성을 구현하는 데 소요되는 시간, 비용 및 난이도를 고려하십시오. 이를 수행하려면 일반적으로 고가의 메시징 인프라뿐만 아니라 많은 사용자 정의 코드가 필요합니다. Metro에서는 추가 비용 없이 이러한 지원을 받을 수 있으며 GlassFish v2에 이미 내장되어 있습니다.

Metro에서 .NET과의 웹 서비스 상호 운용성 지원에 대한 자세한 내용은 Project Tango: 개요(PDF)Metro Project를 참조하십시오.


JBI 준비

GlassFish v2에서는 JBI(Java Business Integration)가 구현된 Open ESB에 대한 지원이 기본적으로 제공됩니다. JSR 208에 지정된 대로 JBI는 서비스 지향 아키텍처(SOA)에 따라 비즈니스 시스템을 구성할 수 있는 자바 표준입니다. SOA 접근 방식에서는 별도의 서비스에서 애플리케이션이 조합될 수 있으며, 각 서비스는 하나 이상의 비즈니스 관련 프로세스를 수행합니다. SOA에서는 하나의 애플리케이션에 사용된 데이터 및 서비스를 다른 애플리케이션에서 공유하고 재사용할 수 있기 때문에 엔터프라이즈에서 이러한 복합 애플리케이션을 매우 빠르게 빌드할 수 있습니다. 새 애플리케이션을 만들기 위해 서비스와 데이터를 통합하는 것과 같은 접근 방법을 통합 애플리케이션 시스템이라고 하는 경우도 있습니다. 이전에는 통합 애플리케이션 시스템을 구현하려면 많은 사용자 정의 코드를 사용하거나 독점적인 시스템에 투자해야 했습니다. JBI은 통합 애플리케이션 시스템을 구성하는 방법을 표준화고 특수 코드화 또는 독점 솔루션을 수행할 필요를 없애줍니다.

JBI는 플러그인 구성요소를 정의하며, 각 플러그인 구성요소는 특정 유형의 서비스를 실행하거나, 서비스가 실행되는 순서를 조정하거나, 데이터 형식 변환과 같은 기타 비즈니스 프로세스 관련 작업을 수행할 수 있는 기술을 제공합니다. 예를 들어, 하나의 JBI 구성요소가 Java EE 엔터프라이즈 아카이브(EAR) 파일로 배포된 서비스를 실행하는 EJB 서비스 엔진일 수 있습니다. 다른 구성요소는 SQL 쿼리를 실행하는 SQL 서비스 엔진일 수 있습니다. 세 번째 구성요소는 비즈니스 프로세스를 조정하는 BPEL 문을 실행하는 비즈니스 프로세스 실행 언어(BPEL) 서비스 엔진일 수 있습니다. 일부 플러그인 구성요소는 서비스를 제공하거나 사용하기 위해 다른 환경과 통신하는 구성요소를 바인딩합니다. 예를 들어, 하나의 바인딩 구성요소에서 SOAP over HTTP를 사용하여 신용 조사를 수행하는 원격 서비스를 실행할 수 있으며, 다른 바인딩 구성요소에서 SMTP를 사용하여 신용 조사에 대한 전자 메일 알림을 보낼 수 있습니다.

즉, 해당 복합 애플리케이션에 통합할 수 있는 광범위한 서비스 유형의 선택 범위를 엔터프라이즈에 제공하고 JBI 기반 시스템을 구성하는 구성요소에 많은 유연성을 제공하는 것입니다. JBI를 구현할 때, Open ESB를 사용하여 서비스를 느슨하게 결합된 복합 애플리케이션에 통합할 수 있습니다.

GlassFish v2에서는 Open ESB의 런타임 환경을 제공합니다. 이는 특정 유형의 서비스를 실행하는 다양한 서비스 엔진 및 서비스를 제공하거나 사용하기 위해 다른 환경과 통신하는 바인딩 구성요소를 제공합니다.


Open ESB 런타임 환경

GlassFish v2에서는 Open ESB의 런타임 환경을 제공합니다. 이는 다양한 서비스 엔진과 바인딩 구성요소를 제공합니다. Open ESB는 JBI를 기반으로 하기 때문에 GlassFish v2에서 제공하는 환경에 JBI 호환 서비스 엔진 및 바인딩 구성요소를 추가할 수 있습니다.

그림 7에 표시된 대로 GlassFish v2 애플리케이션 서버에 배포된 웹 서비스는 Sun Java EE 엔진이라고 하는 구성요소와 JAX-WS를 통해 JBI 런타임 환경과 통신합니다. 일반적으로 기타 JBI 구성요소의 경우 Sun Java EE 엔진에서 표준화된 메시지 라우터(NMR)라고 하는 경량 메시징 인프라를 사용하여 다른 서비스 엔진 및 바인딩 구성요소와 통신합니다. 그림 7에서 SE는 서비스 엔진을 의미하고 BC는 바인딩 구성요소를 의미합니다.

사용자 삽입 이미지

그림 7. GlassFish v2에서 JBI 런타임 환경


Open ESB 구성요소 관리

관리 콘솔 또는 CLI를 사용하여 GlassFish v2에서 기타 Open ESB 구성요소뿐만 아니라 Sun Java EE 엔진을 관리할 수 있습니다. 예를 들어, 일반 작업 페이지에서 JBI(Java Business Integration) 서비스 어셈블리 배포 버튼을 클릭하기만 하면 관리 콘솔을 사용하여 복합 애플리케이션의 일부 또는 전체가 포함되어 있는 JBI 서비스 어셈블리를 배포할 수 있습니다. 관리 콘솔 또는 CLI에서 Sun Java EE 엔진을 시작, 중지, 종료 또는 제거할 수 있습니다. 예를 들어, CLI에 다음 명령을 입력하여 Sun Java EE 엔진을 시작할 수 있습니다.

asadmin start-jbi-component sun-javaee-engine


복합 애플리케이션 구축 도구


개발 측면에서 NetBeans IDE 6.0은 Open ESB 환경에서 실행되는 복합 애플리케이션을 구축할 수 있는 다양한 도구를 제공합니다. 이러한 도구에는 BPEL 설계 도구, 그래픽 WSDL(Web Services Description Language) 편집기, CASA(Composite Application Service Assembly) 편집기 및 스키마와 XSLT 변환을 관리할 수 있는 도구가 포함되어 있습니다.

NetBeans IDE 6.0을 사용하여 복합 애플리케이션을 구축합니다. 그런 다음 GlassFish v2에서 해당 애플리케이션을 배포, 실행 및 관리합니다.

GlassFish v2에서의 Open ESB 지원에 대한 자세한 내용은 Sun Java EE 엔진: Java EE 웹 서비스와 JBI 구성요소 브리징 Open ESB 프로젝트를 참조하십시오.


뛰어난 메시지 처리 기능

효율적인 메시징 서버는 효율적인 엔터프라이즈를 구성하기 위해 비즈니스 소프트웨어를 연결하는 데 있어 매우 중요합니다. GlassFish v2에서는 메시지 지향 시스템 통합을 위한 완전한 JMS(Java Message Service) 구현인 Open Message Queue(Open MQ)를 제공합니다. JMS는 Java EE 기반 애플리케이션 구성요소에서 메시지 작성, 전송, 수신 및 읽기를 수행할 수 있는 메시징 표준입니다. JMS를 구현할 때 Open MQ에서 완전한 메시징 서버를 제공하며, 이는 오픈 소스 버전의 썬 자바 시스템 메시지 대기열 제품 입니다. Open MQ에는 자체 관리 도구 집합이 포함되어 있어 자체적으로 실행하거나 GlassFish v2에 완전히 통합할 수 있습니다.

GlassFish v2에서는 메시지 지향 시스템 통합을 위한 완전한 JMS(Java Message Service) 구현인 Open MQ를 제공합니다.

GlassFish v2와 함께 사용하면 클라이언트에 JMS 기반 메시지 전달 서비스를 제공하는 Open MQ 구성요소인 메시지 브로커가 GlassFish v2와 동일한 프로세스에 있을 수 있습니다. 즉, 둘 모두 동일한 자바 가상 머신에서 실행됩니다. 이러한 애플리케이션 서버에 대한 Open MQ의 관계를 EMBEDDED 모드라고 합니다. 또한 LOCAL 모드에서는 메시지 브로커가 GlassFish v2와 동일한 수명 주기를 공유할 수 있으며, REMOTE 모드에서는 별도로 실행될 수 있습니다.
 

효율적이고 안전한 메시지 전달

Open MQ를 사용하면 안전한 메시지 전달을 보증하면서 기존 및 새 애플리케이션을 연결할 수 있습니다. 메시지 전달이 보장되며 보낸 순서대로 메시지가 전달됩니다. Open MQ에서는 비동기 메시징을 지원합니다. 즉, 애플리케이션에서 메시지를 전송한 후 메시지를 수신하는 동안 기다리지 않고 계속해서 처리할 수 있습니다. 메시지는 게시-구독(Publish-Subscribe) 방식으로 전송됩니다. 이러한 접근 방식에서는 그림 8에 표시된 대로 게시자(publisher)라고 하는 메시지를 발신인이 제목(topic)이라고 하는 중간 대상에 메시지를 전송합니다. 해당 제목을 구독하는 구독자(subscriber)라고 하는 여러 애플리케이션에서 제목에서 메시지를 제거하여 메시지를 사용합니다. 게시자는 구독자와 완전히 독립적입니다. 대신 메시지를 지점 간 즉, 특정 수신자에게 전송할 수 있습니다. 이러한 경우 메시지가 대기열에 전송되고 수신자는 대기열에서 메시지를 제거하여 메시지를 사용합니다.

사용자 삽입 이미지

그림 8. Open MQ에서의 게시-구독 메커니즘

처리 기능 외에도 Open MQ는 쉽게 설치하고 관리할 수 있습니다.openInstaller를 기반으로 하는 GUI 기반 설치 프로그램을 사용하여 이를 설치할 수 있습니다. 또는 아카이브 배포의 압축을 푸는 파일 기반 설치를 수행한 다음 설치 스크립트를 실행하여 사용할 Open MQ를 구성할 수 있습니다. Open MQ에서는 메시지 브로커를 시작하는 것과 같은 Open MQ 관련 작업을 수행할 수 있는 자체 관리 콘솔 및 CLI를 제공합니다. 또한 Open MQ에서는 JAAS(Java Authentication and Authorization Service)를 통해JMX(Java Management Extensions) 기반 모니터링, 클러스터링 및 인증을 지원합니다.


고성능 및 가용성

Open MQ는 독립 실행형 애플리케이션으로 테스트되거나 뛰어난 성능이 포함된 GlassFish와 통합되었습니다. 또한 Open MQ에서는 데이터와 메시지 브로커 모두에 고가용성을 지원합니다. 고가용성 JDBC 공급자와 함께 Open MQ를 사용하면 고가용성 기능이 실행됩니다. Open MQ는 mySQL, Oracle RAC(Real Application Clusters) 및 Sun Java System Application Server 9.1의 HADB 기능으로 테스트되었습니다.

Open MQ에 대한 자세한 내용은 Open Message Queue 프로젝트를 참조하십시오.


매력적인 가격 지원 정책

Sun Java System Application Server 9.1에는 다양한 구독 옵션 집합을 사용할 수 있습니다. 완전한 보증, 온 디맨드 소프트웨어 업데이트 및 업그레이드, 썬 개발 전문가 지원 등이 포함된 서비스를 지원받을 수 있습니다. 소켓 4개에 대한 구독 가격은 연 4500 달러부터 저렴하게 시작합니다. 자세한 내용은 자바 시스템 애플리케이션 서버 구독을 참조하십시오.


요약

고가용성, 확장성, 엔터프라이즈급 성능, 중앙 집중화된 관리, 간단한 구성 및 효율적이고 안전한 메시지 전달과 같은 특성을 가진 GlassFish v2는 프로덕션 환경의 요구를 처리할 수 있는 견고성과 비즈니스 위험 애플리케이션을 처리할 수 있는 안전성이 포함된 엔터프라이즈 품질의 애플리케이션 서버입니다. 웹 서비스 상호 운용성 및 JBI 호환 런타임에 대한 지원을 추가할 경우 엔터프라이즈에 애플리케이션 처리 요구에 맞는 많은 유연성을 제공하는 애플리케이션 서버의 역할을 수행합니다. 오픈 소스로서, GlassFish v2는 GlassFish v2 또는 GlassFish v2의 썬 지원 상용 배포판인 Sun Java System Application Server 9.1인지에 관계없이 비즈니스에 개방되어 있습니다.

(1) SPEC 및 벤치마크 이름인 SPECjAppServer 2004는 Standard Performance Evaluation Corporation의 등록 상표입니다. Sun Java System Application Server 9.0은 521.42 JOPS@Standard(1 Sun Fire T2000 [코어 8개, 칩 1개] 애플리케이션 서버 및 1 Sun Fire T2000 [코어 6개, 칩 1개] 데이터베이스 서버)를 확보했습니다. 최신 SPECjAppServer 2004 벤치마크 결과는 SPEC 웹 사이트를 방문하십시오.

(2) 2007년 7월 10일을 기준으로 단일 Sun Fire T2000을 애플리케이션 서버로 사용하는 모든 SPECjAppServer 2004 점수를 기반으로 비교합니다. 참조 점수: Sun Java Application Server 9.1은 883.66 JOPS@Standard(1 Sun Fire T2000 [칩 1개, 코어 8개] 애플리케이션 서버 및 1 Sun Fire T2000 [칩 1개, 코어 6개] 데이터베이스)을 확보하고, BEA Weblogic 9.1은 801.70 JOPS@Standard(1 Sun Fire T2000 [칩 1개, 코어 8개] 애플리케이션 서버 및 1 Sun Fire T2000 [칩 1개, 코어 6개] 데이터베이스)을 확보했으며, Sun Java Application Server 9.0은 521.42 JOPS@Standard(1 Sun Fire T2000 [칩 1개, 코어 8개] 애플리케이션 서버 및 1 Sun Fire T2000 [칩 1개, 코어 6개] 데이터베이스)을 확보하고, IBM WebSphere는 616.22 JOPS@Standard(1 Sun Fire T2000 [칩 1개, 코어 8개] 애플리케이션 서버 및 1 Sun Fire X4200 [칩 2개, 코어 4개] 데이터베이스 서버)을 확보했으며, BEA Weblogic 9.0은 615.64 JOPS@Standard(1 Sun Fire T2000 [칩 1개, 코어 8개] 애플리케이션 서버 및 1 Sun Fire V490 [칩 4개, 코어 8개] 데이터베이스)을 확보했습니다.

(3) 2007년 11월 23일을 기준으로 공개된 모든 SPECjAppServer 2004 점수를 기반으로 비교합니다. 참조 점수: Sun Java Application Server 9.1은 8439.36 JOPS@Standard(6 Sun SPARC Enterprise T2150 애플리케이션 서버[칩 6개, 코어 48개] 및 1 Sun Fire E6900 데이터베이스[칩 24개, 코어 48개])를 확보하고, Oracle Application Server 10.1은 10519.43 JOPS@Standard(12 HP BL860c 애플리케이션 서버 [칩 24개, 코어 48개] 및 2 HP Superdome 데이터베이스 서버 [칩 40개, 코어 80개])를 확보했으며, Oracle Application Server 10.1은 9459.19 JOPS@Standard(11 HP BL860c 애플리케이션 서버 [칩 22개, 코어 44개] 및 2 HP Superdome 데이터베이스 서버 [칩 40개, 코어 80개])를 확보했습니다.


자세한 정보


GlassFish 커뮤니티 - Java EE 애플리케이션 서버 전달 (PDF)
GlassFish 커뮤니티
Sun Java System Application Server 9.1
GlassFish v2 - 엔터프라이즈 기능 및 오픈 소스
아쿠아리움(The Aquarium)
기사: 실행 중인 썬 기술


저자 정보

Ed Ortjava.sun.com 소속이며 관계형 데이터베이스 기술, 프로그래밍 언어, 웹 서비스 및 Ajax에 대해 폭넓게 저술했습니다.

이 글의 영문 원본은
http://java.sun.com/developer/technicalArticles/glassfish/GFv2OpenforBusiness/index.html

에서 보실 수 있습니다.

"Java EE" 카테고리의 다른 글

Posted by 1010