링크를 보면 몇몇가지 설정할 게 있으니 참조하기 바란다.
간단하게 정리하면(윈도우용)
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
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 파일이 있는 위치에서 다음의 명령을 수행한다.
-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>
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 라는 여러 표준의 버젼을 따른다.
Glassfish 설치하기 Jar를 다운로드 했다면, jar파일이 있는 위치에서 다음의 명령어를 친다. java -Xmx256m -jar jar파일명 그러면 동의하라는 반 강제적 화면이 나타나고, 스크롤을 아래로 주루룩 내린 후 동의를 하면, 파일들의 압축이 풀릴것이다.
회사 나가기 전에 같이 일하던 사람들에게 줄 선물로...
(책 써야하는데, 이런거나 맹글고 있으니 - -)
이게 뭘 하는 거냐면,
-성능 테스트를 하거나
-시스템을 운영하거나
-WAS의 문제로 장애가 났을때
개발자의 실수로 다른 Thread에 Lock(Block)을 발생시켰을 때
어떤 프로그램에서 발생했는지를 확인할 수 있는 그런 프로그램이다.
(뭐 똑똑하신 고급 개발자 분들께선 이미 이런거 만들어서 사용하고 계실테니 Pass...)
설치의 단순화를 위해서 JSP 딸랑 하나로 만들었으며,
JSP 하나에 넣기 위해서
HTML 노가다 + CSS 노가다 + JavaScript 노가다를 병행해서 개발했다.
두가지 버젼이 있는데, 하나는 메모리 정보를 보여주는 버젼, 다른 하나는 메모리 정보를 안보여 주는 버젼이다.
혹시라도 메모리 정보를 보여주면 서버에 부하가 발생할 수 있으니....
그림을 보면 알겠지만, 만약 다른 쓰레드를 잡고 있는 범인 쓰레드에 찐하게 표시를 해 주도록 해 놓았다.
원래 엄청나게 우울한 UI 였지만, 울팀 디자이너에게 별다방 커피 한잔 사준다고 꼬셔서 화면도 약간 이쁘게 포장했다.
이 프로그램을 왜 만들었냐면,
지난주 금요일에 성능 테스트를 하는데, XXXXXXXX 라는 프레임웍에서 사용하는 한 프로그램의 메소드에
Synchronized라는 블록을 써서 해당 메소드를 사용하는 다른 쓰레드의 응답속도가 엄청나게 증가하는 현상이 발생을 해서,
이런 문제를 제니퍼나 다른 모니터링 툴을 못 쓰는 사람들이 어떻게 잡을 수 있을까?
해서 만들게 되었다.
뭐 어찌보면, JConsole(이게 뭔지 모르는 분들은 제 책 보세욤...)을 써서 볼수 있겠지만,
서버에 부하가 많이 갈 수도 있고, 방화벽으로 막혀있는 상황이라면,
사용하기가 쉽지 않다.
아직 성능 테스트할 때 사용한 적은 없어서
(내 PC에서는 부하를 발생시켜서 테스트는 해 봤지만...)
해당 JSP를 아직은 공개하진 않을 예정이다.
뭐 소스가 이따구야~~
라는 분도 있을 수가 있고... ㅎㅎㅎ
혹~~ 써보고 싶은 분들은 저에게 이멜 보내주시면, 보내드리도록 하겠다.
메일 주소는 "자바 성능을 결정짓는 코딩 습관과 튜닝 이야기"에 있는 주소를 참조~~~ ㅎㅎ