Česky   |  Deutsch   |  English   |  Español   |  Français   |  Indonesia   |  日本語   |  한글   |  Polski   |  Português (BR)   |  Türkçe   |  中文   |  正體中文   |  Your Language  
PlanetNetbeans
플래닛 NetBeans는 여러분들의 NetBeans 관련 Blog에 작성된 생각들을 모아 함께 공유하는 곳입니다.
피드
[RSS 1.0 Feed] [RSS 2.0 Feed]
[FOAF Subscriptions] [OPML Subscriptions]
NetBeans에 관해 블로그를 작성하시나요? 여러분의 Blog를 PlanetNetBeans에 추가하십시오.
피드 구독

Powered by:    Planet

Last updated:
July 02, 2009 10:47 PM
All times are UTC

sponsored by Sun Microsystems

visit NetBeans website
Netbeans-Korean by 강여사 - June 14, 2009 02:47 AM
솔라리스 OS 와 리눅스 환경에서 자바 SE 6 에 대한 문제 해결(Troubleshooting) 가이드 팁(Quick Guide)

본 문서는 "퀵 스타트 가이드"로 문제 해결(troubleshooting)을 위한 몇 가지 빠른 도움말을 제공합니다. 즉, 정보를 얻기 위해 작업을 수행하거나 하나 이상의 방법을 포함한 문제 해결에 도움이되는 몇 가지 일반적인 기능을 나열합니다.

이러한 요령으로 구성은 다음과 같습니다 : (해당 주제별)

  • 행(Hung), 데드락(Deadlocked), 또는 루핑(Looping) 프로세스
  • 사후 진단(Post-mortem Diagnostics), 메모리 누수(Leaks)
  • 모니터링
  • 원격 디버그 서버 상의 액션(Actions)
  • 기타 기능

행(Hung), 데드락(Deadlocked), 또는 루핑(Looping) 프로세스

  • 출력 쓰레드 모든 Java 쓰레드에 대한 스택 :
    • Control-\
    • kill-QUIT pid
    • jstack pid (또는 jstack -F pid , 만약 jstack pid가 응답하지 않으면)
  • 교착 상태를 감지 :
    • 교착 상태 감지 요청: JConsole 툴, 쓰레드 탭(tab)
    • 쓰레드 교착 상태에 정보 출력 : Control-\
    • 각각의 쓰레드가 소유한 동시 잠금 목록 출력: -XX:+PrintConcurrentLocks 세트, 그 후 Control-\
    • 프로세스에 대한 잠금 정보 출력 : jstack -l pid 명령
  • 프로세스에 대한 힙 히스토그램(heap histrogram) 가져오기 :
    • 자바 프로세스를 다음 옵션으로 시작 -XX:+PrintClassHistogram, 그 후 Control-\
    • jmap -histo 명령 (만약 pid 응답이 없으면 -F 옵션 추가)
  • 프로세스에 대한 자바 힙 덤프를 바이너리 형식의 파일에 덤프 뜨기:
    • jmap –dump: format=b,file=filename pid (만약 pid 응답이 없으면 -F 옵션 추가)
  • 프로세스를 위한 공유된 객체 매핑 출력
    • jmap pid
  • 프로세스를 위한 힙 요약정보 출력
    • Control-\
    • jmap -heap pid
  • 프로세스를 위한 종료자(finalization) 정보 출력
    • jmap -finalizerinfo pid
  • 프로세스에 명령어 디버거 붙이기(attach)
    • jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=pid jmap -histo 명령

사후 진단, (Post-mortem Diagnostics), 메모리 누수(Memory Leaks)

  • 치명적인 오류 로그 파일을 검사합니다. 기본 파일 이름은 hs_err_pidpid.log 로 작업 디렉토리에 들어있습니다.
  • 힙 덤프(heap dump) 생성 :
    • HPROF 활성시켜 응용 프로그램 시작: java -agentlib:hprof=file=file,format=b application; 그후 Control-Break파일
    • HPROF 활성시켜 응용 프로그램 시작: java -agentlib:hprof=heap=dump application
    • JConsole 툴에서 MBeans 탭
    • 다음 옵션으로 VM 시작 -XX:+HeapDumpOnOutOfMemoryError;; OutOfMemoryError 가 던져지면, VM은 힙 덤프(heap dump)를 자동 생성합니다.
  • 자바 힙 덤프 보기(Browse) :
    • jhat heap-dump-file
  • 프로세스에 대한 힙 히스토그램 가져오기:
    • 다음 옵션으로 자바 프로세스 시작: -XX:+PrintClassHistogram, 그후 Control-Break
    • jmap -histo pid (만약 pid 응답이 없으면 -F 옵션 추가)
  • 코어 파일로부터 힙 히스토그램 가져오기:
    • jmap -histo corefile
  • 코어 파일로부터 공유된 객체 매핑 출력:
    • jmap corefile
  • 코어 파일로부터 힙 요약정보 출력:
    • jmap -heap corefile
  • 코어 파일로부터 종료자(finalization) 정보 출력:
    • jmap -finalizerinfo corefile
  • 코어 파일로부터 자바 설정 정보 출력:
    • jinfo corefile
  • 코어 파일로부터 쓰레드 추적 출력:
    • jstack corefile
  • 코어 파일로부터 잠금 정보 출력:
    • jstack -l corefile
  • 같은 머신 상에서 코어 파일에 명령어 디버거 붙이기(attach):
    • jdb -connect sun.jvm.hotspot.jdi.SACoreAttachingConnector:javaExecutable=path,core=corefile
  • 서로 다른 머신상에서 코어 파일에 명령어 디버거 붙이기(attach):
    • 코어 파일을 가진 쪽: jsadebugd path corefile
    • 디버거를 가진 쪽: jdb -connect sun.jvm.hotspot.jdi.SADebugServerAttachingConnector:debugServerName=machine
  • libumem 은 메모리 누수를 디버그하기 위해 사용될 수 있다.


 

모니터링 (jstat 윈도우 98이나 윈도우 ME에서 사용할 수 없습니다.)

참고 : jstat 명령에 대한 인수는 가상 머신 vmID 식별자입니다. jstat man 페이지를 참조하십시오

자세한 설명

  • 클래스 로더에 통계 출력 :
    • jstat -class vmID
  • 컴파일러에 대한 통계 출력 :
    • 컴파일러 동작 : jstat -compiler vmID
    • 컴파일 메소드에 대한 통계 : jstat - printcompilation vmID
  • 가비지 컬렉션에 통계 출력 :
    • 요약 통계 : jstat -gcutil vmID
    • 오류 포함, 요약 통계 : jstat - gccause vmID
    • GC의 힙 동작(behavior) : jstat -gc vmID
    • 모든 generations 용량 : jstat -gccapacity vmID
    • new generation 동작: jstat -gcnew vmID
    • new generation 용량: jstat -gcnewcapacity vmID
    • old 와 permanent generations 동작: jstat -gcold vmID
    • old generations 용량 : jstat -gcoldcapacity vmID
    • permanent generations 용량: jstat -gcpermcapacity vmID
  • finalization를 기다리는 개체 모니터링:
    • JConsole 툴, VM 요약 탭
    • jmap -finalizerinfo pid
    • java.lang.management.MemoryMXBean 클래스 안에 있는 getObjectPendingFinalizationCount 메소드
  • 메모리 모니터 :
    • HPROF를 통해 힙 할당 프로필(profiles) : java -agentlib:hprof=heap=sites
    • JConsole 툴, 메모리 탭
    • Control – Break 는 generation 정보 출력
  • CPU 사용률 모니터 :
    • 쓰레드 스택 관련 : java -agentlib:hprof=cpu=samples application
    • 메소드 관련 : java -agentlib:hprof=cpu=times application
    • JConsole 툴, 개요 및 VM을 요약 탭
  • 쓰레드 활동 모니터 :
    • JConsole 툴, 쓰레드 탭
  • 클래스 액티비티 모니터 :
    • JConsole 툴, 클래스 탭

원격 디버그 서버 위의 액션(actions)

  • 우선,디버그 데몬 jsadebugd 부르고, 그 후 명령 실행: jmap -dump:format=b,file=filename hostID
    • 이진 포맷의 자바 힙을 파일에 덤프:
    • 공유된 객체 매핑 출력: jmap hostID
    • 힙 요약정보 출력 jmap -heap hostID
    • 종료자 정보 출력: jmap -finalizerinfo hostID
    • 잠금 정보 출력: jstack -l hostID
    • 쓰레드 추적 출력: jstack hostID
    • 자바 설정 정보 출력: jinfo hostID

기타 기능

  • instrumented 자바 가상 머신 인터페이스 :
    • instrumented VMs (Windows 98이나 Windows ME 불가) 생성 및 종료 모니터 : jstatd daemon
    • instrumented VMs (Windows 98이나 Windows ME 불가) 목록 : jps
    • 원격 모니터링 툴 및 로컬 VM 간 인터페이스 제공 (Windows 98 이나 Windows ME 불가) : jstatd daemon
    • 가비지 컬렉션 요청 : JConsole 툴, 메모리 탭
  • 프로세스의 특정 자바 VM 플래그(flags) 값 동적 설정, 해제, 또는 변경 :
    • jinfo -flag flag pid
  • 가상 머신에 Java VM 플래그(flag) 전달하기 :
    • jconsole -Jflag ...
    • jhat -Jflag ...
    • jmap -Jflag ...
  • 클래스 로더에 의한, 자바 힙의 영속 제너레이션 통계 출력
    • jmap -permstat
  • 모니터 경합 보고 :
    • java -agentlib:hprof=monitor=y application
  • 대화식(interactive) 모드 또는 일괄처리(batch) 모드로 스크립트 평가 또는 실행 :
    • jrunscript
  • MBean 동적 인터페이스, JConsole 툴 탭을 통해 MBean :
    • 트리 구조 보기.
    • 속성 값 설정.
    • 작업(operation) 호출.
    • 알림(notification) 설정(subscribe)
  • 대화식 명령 - 라인 디버거 실행 :
    • 클래스에 대한 새 VM이 : jdb class
    • 실행중인 VM에 디버거 첨부 : jdb –attach address

Netbeans-Korean by 강여사 - June 01, 2009 11:17 AM
윈도우 환경에서 자바 SE 6 에 대한 문제 해결(Troubleshooting) 가이트 팁(Quick Guide)

본 문서는 "퀵 스타트 가이드"로 문제 해결(troubleshooting)을 위한 몇 가지 빠른 도움말을 제공합니다. 즉, 정보를 얻기 위해 작업을 수행하거나 하나 이상의 방법을 포함한 문제 해결에 도움이되는 몇 가지 일반적인 기능을 나열합니다.

이러한 요령으로 구성은 다음과 같습니다 : (해당 주제별)

  • 행(Hung), 데드락(Deadlocked), 또는 루핑(Looping) 프로세스
  • 사후 진단(Post-mortem Diagnostics), 메모리 누수(Leaks)
  • 모니터링
  • 기타 기능

행(Hung), 데드락(Deadlocked), 또는 루핑(Looping) 프로세스

  • 출력 쓰레드 모든 Java 쓰레드에 대한 스택 :

    • Control-Break
    • jstack pid 명령
  • 교착 상태를 감지 :

    • 교착 상태 감지 요청: JConsole 툴, 쓰레드 탭(tab)
    • 쓰레드 교착 상태에 정보 출력 : Control-Break
    • 프로세스에 대한 잠금 정보 출력 : jstack -l pid 명령
  • 프로세스에 대한 힙 히스토그램(heap histrogram) 가져오기 :

    • 자바 프로세스를 다음 옵션으로 시작 -XX:+PrintClassHistogram, 그후 Control-Break
    • jmap -histo 명령
    • 프로세스에 대한 자바 힙 덤프를 바이너리 형식의 파일에 덤프 뜨기:
    • jmap –dump: format=b,file=filename pid

사후 진단, (Post-mortem Diagnostics), 메모리 누수(Memory Leaks)

  • 치명적인 오류 로그 파일을 검사합니다. 기본 파일 이름은 hs_err_pidpid.log 로 작업 디렉토리에 들어있습니다.
  • 힙 덤프(heap dump) 생성 :

    • HPROF 활성시켜 응용 프로그램 시작: java -agentlib:hprof=file=file,format=b application; 그후 Control-Break파일
    • HPROF 활성시켜 응용 프로그램 시작: java -agentlib:hprof=heap=dump application
    • JConsole 툴에서 MBeans 탭
    • 다음 옵션으로 VM 시작 -XX:+HeapDumpOnOutOfMemoryError;; OutOfMemoryError 가 던져지면, VM은 힙 덤프(heap dump)를 자동 생성합니다.
  • 자바 힙 덤프 보기(Browse) :

    • jhat heap-dump-file
  • 프로세스에 대한 힙 히스토그램 가져오기:

    • 다음 옵션으로 자바 프로세스 시작: -XX:+PrintClassHistogram, 그후 Control-Break
    • jmap -histo pid
  • 모니터링 (jstat 윈도우 98이나 윈도우 ME에서 사용할 수없습니다.)

참고 : jstat 명령에 대한 인수는 가상 머신 vmID 식별자입니다. jstat man 페이지를 참조하십시오

자세한 설명

  • 클래스 로더에 통계 출력 :

    • jstat -class vmID
  • 컴파일러에 대한 통계 출력 :

    • 컴파일러 동작 : jstat -compiler vmID
    • 컴파일 메소드에 대한 통계 : jstat - printcompilation vmID
  • 가비지 컬렉션에 통계 출력 :

    • 요약 통계 : jstat -gcutil vmID
    • 오류 포함, 요약 통계 : jstat - gccause vmID
    • GC의 힙 동작(behavior) : jstat -gc vmID
    • 모든 generations 용량 : jstat -gccapacity vmID
    • new generation 동작: jstat -gcnew vmID
    • new generation 용량: jstat -gcnewcapacity vmID
    • old 와 permanent generations 동작: jstat -gcold vmID
    • old generations 용량 : jstat -gcoldcapacity vmID
    • permanent generations 용량: jstat -gcpermcapacity vmID
  • finalization를 기다리는 개체 모니터링:

    • JConsole 툴, VM 요약 탭
    • java.lang.management.MemoryMXBean 클래스 안에 있는getObjectPendingFinalizationCount 메소드
  • 메모리 모니터 :

    • HPROF를 통해 힙 할당 프로필(profiles) : java -agentlib:hprof=heap=sites
    • JConsole 툴, 메모리 탭
    • Control – Break 는 generation 정보 출력
  • CPU 사용률 모니터 :

    • 쓰레드 스택 관련 : java -agentlib:hprof=cpu=samples application
    • 메소드 관련 : java -agentlib:hprof=cpu=times application
    • JConsole 툴, 개요 및 VM을 요약 탭
  • 쓰레드 활동 모니터 :

    • JConsole 툴, 쓰레드 탭
  • 클래스 액티비티 모니터 :

    • JConsole 툴, 클래스 탭

기타 기능

  • instrumented 자바 가상 머신 인터페이스 :

    • instrumented VMs (Windows 98이나 Windows ME 불가) 생성 및 종료 모니터 : jstatd daemon
    • instrumented VMs (Windows 98이나 Windows ME 불가) 목록 : jps
    • 원격 모니터링 툴 및 로컬 VM 간 인터페이스 제공 (Windows 98 이나 Windows ME 불가) : jstatd daemon
    • 가비지 컬렉션 요청 : JConsole 툴, 메모리 탭
  • 프로세스의 특정 자바 VM 플래그(flags) 값 동적 설정, 해제, 또는 변경 :

    • jinfo -flag flag pid
  • 가상 머신에 Java VM 플래그(flag) 전달하기 :

    • jconsole -Jflag ...
    • jhat -Jflag ...
  • 모니터 경합 보고 :

    • java -agentlib:hprof=monitor=y application
  • 대화식(interactive) 모드 또는 일괄처리(batch) 모드로 스크립트 평가 또는 실행 :

    • jrunscript
  • MBean 동적 인터페이스, JConsole 툴 탭을 통해 MBean :

    • 트리 구조 보기.
    • 속성 값 설정.
    • 작업(operation) 호출.
    • 알림(notification) 설정(subscribe)
  • 대화식 명령 - 라인 디버거 실행 :

    • 클래스에 대한 새 VM이 : jdb class
    • 실행중인 VM에 디버거 첨부 : jdb –attach address

Netbeans-Korean by 강여사 - June 01, 2009 07:17 AM
윈도우 환경에서 자바 SE 6 에 대한 문제 해결(Troubleshooting) 가이트 팁(Quick Guide)

본 문서는 This "Quick Start Guide" gives you some quick tips for troubleshooting. The subsections list some typical functions that can help you in troubleshooting, including one or more ways to get the information or perform the action."퀵 스타트 가이드"로 문제 해결(troubleshooting)을 위한 몇 가지 빠른 도움말을 제공합니다. 즉, 정보를 얻기 위해 작업을 수행하거나 하나 이상의 방법을 포함한 문제 해결에 도움이되는 몇 가지 일반적인 기능을 나열합니다.

These tips are organized as follows:이러한 요령으로 구성은 다음과 같습니다 : (해당 주제별)

행(Hung), 데드락(Deadlocked), 또는 루핑(Looping) 프로세스

사후 진단, (Post-mortem Diagnostics)Post-mortem Diagnostics, Memory Leaks, 메모리 누수(Memory Leaks)

모니터링 ( jstat is not available on Windows 98 or Windows ME.) (jstat 윈도우 98이나 윈도우 ME에서 사용할 수없습니다.)

Note: The vmID argument for the jstat command is the virtual machine identifier. See the jstat man page 참고 : jstat 명령에 대한 인수는 가상 머신 vmID 식별자입니다. jstat man 페이지를 참조하십시오 for a detailed explanation.

자세한 설명

  • Print statistics on the class loader: 클래스 로더에 통계 출력 :
    • jstat -class vmID jstat -class vmID
  • Print statistics on the compiler: 컴파일러에 대한 통계 출력 :
    • Compiler behavior: jstat -compiler vmID 컴파일러 동작 : jstat -compiler vmID
    • Compilation method statistics: jstat -printcompilation vmID 컴파일 메소드에 대한 통계 : jstat - printcompilation vmID
  • Print statistics on garbage collection: 가비지 컬렉션에 통계 출력 :
    • Summary of statistics: jstat -gcutil vmID 요약 통계 : jstat -gcutil vmID
    • Summary of statistics, with causes: jstat -gccause vmID 오류 포함, 요약 통계 : jstat - gccause vmID
    • Behavior of the gc heap: jstat -gc vmID GC의 힙 동작(behavior) : jstat -gc vmID
    • Capacities of all the generations: jstat -gccapacity vmID 모든 generations 용량 : jstat -gccapacity vmID
    • Behavior of the new generation: jstat -gcnew vmID new generation 동작: jstat -gcnew vmID
    • Capacity of the new generation: jstat -gcnewcapacity vmID new generation 용량: jstat -gcnewcapacity vmID
    • Behavior of the old and permanent generations: jstat -gcold vmID old 와 permanent generations 동작: jstat -gcold vmID
    • Capacity of the old generation: jstat -gcoldcapacity vmID old generations 용량 : jstat -gcoldcapacity vmID
    • Capacity of the permanent generation: jstat -gcpermcapacity vmID permanent generations 용량: jstat -gcpermcapacity vmID
  • Monitor objects awaiting finalization: finalization를 기다리는 개체 모니터링:
    • JConsole tool, VM Summary tab JConsole 툴, VM 요약 탭
    • getObjectPendingFinalizationCount method in java.lang.management.MemoryMXBean class java.lang.management.MemoryMXBean 클래스 안에 있는getObjectPendingFinalizationCount 메소드
  • Monitor memory: 메모리 모니터 :
    • Heap allocation profiles via HPROF: java -agentlib:hprof=heap=sites HPROF를 통해 힙 할당 프로필(profiles) : java -agentlib:hprof=heap=sites
    • JConsole tool, Memory tab JConsole 툴, 메모리 탭
    • Control-Break prints generation information. Control – Break 는 generation 정보 출력
  • Monitor CPU usage: CPU 사용률 모니터 :
    • By thread stack: java -agentlib:hprof=cpu=samples application 쓰레드 스택 관련 : java -agentlib:hprof=cpu=samples application By method: java -agentlib:hprof=cpu=times application
    • 메소드 관련 : java -agentlib:hprof=cpu=times application
    • JConsole tool, Overview and VM Summary tabs JConsole 툴, 개요 및 VM을 요약 탭
  • Monitor thread activity: 쓰레드 활동 모니터 :
    • JConsole tool, Threads tab JConsole 툴, 쓰레드 탭
  • Monitor class activity: 클래스 액티비티 모니터 :
    • JConsole tool, Classes tab JConsole 툴, 클래스 탭

Other Functions 기타 기능

Netbeans-Korean by 강여사 - April 29, 2009 02:40 AM
Sun SOA Suite- Java CAPS 6 2차 세미나
































































Netbeans-Korean by 강여사 - April 25, 2009 12:05 PM
넷빈 6.5 에서 profiler 사용하기 - 03

Live Profiling Results 창은 그때까지 수집된 프로파일링 데이터를 표시합니다. 표시된 데이터는 기본으로 몇 초마다 갱신되구요. CPU 성능을 분석할 때, Live Profiling Results 창은 각 메소드에 소요된 시간과 각각 메소드의 호출 수에 대한 정보를 표시하게 됩니다.

실시간 결과 분석 창(Live Profiling Results)에서 바로 프로젝트의 소스까지 직접 다이렉트하게 갈 수 있습니다. ^^ 그래야 프로파일링 툴답죠.

나타난 메소드 이름에서 오른쪽 마우스를 클릭하면 Go to Source 메뉴가 있는데 클릭하면 바로 소스코드의 해당 메소드로 갑니다.




프로젝트의 getDefault() 로...

그럼 마지막으로 메모리 분석을 위해 다시 프로파일링 세션을 종료합니다.
profile - stop profiling session 클릭



이번엔 Memory 박스를 누르고 메모리 분석을 하고자 합니다.



이때 기본적으로 선택된 사항으로 진행하면 오버헤드가 적습니다만, 스택 추적이나 GC 등을 위해 다른 방법을 진행하도록 하겠습니다.

객체생성과 GC 모두를 분석하기 위해 라디오 버튼을 2번째 걸로.
Record Both object creation and garbage collection 으로 클릭



이 옵션을 선택하게 되면, 어플리케이션 프로파일링은 어플리케이션 데이터 뿐만 아니라, 어떤 유형의 얼마나 많은 객체가 살아있는지, 그들의 사이즈나 평균 수명 등과 같은 객체의 생명에 관계된 정보를 제공해 줍니다.



또,
풀 콜 스택을 기록하기 위해 Record stack traces for allocation 을 선택 합니다. (체크박스에 체크)
이 옵션을 선택함으로써, 메모리 스냅샷을 취할 경우, 메소드가 할당된 객체를 호출하는 역 call tree를 볼 수 있습니다.

역시 프로그램을 자동 시작하고, 프로파일링 결과가 보여집니다.



실시간 결과를 보기 위해 Live Profiling Results 를 클릭하면, 결과창이 보여지는데,
프로젝트에 할당된 객체의 수와 사이즈 등에 대한 정보가 제시됩니다.



기본적으로 결과는 Live Bytes, 수에 의해 정렬되어 나타나는데, 각 칼럼을 선택하면 재정렬 할 수 있습니다.
또한 아래 filter 칸에 클래스 이름을 적어 결과를 필터링 할 수도 있습니다.

Netbeans-Korean by 강여사 - April 25, 2009 11:56 AM
넷빈 6.5 에서 profiler 사용하기 - 02

그럼 이번에는 다른 성능분석을 위해 세션을 종료하겠습니다.
profile- stop profiling session



이번에는 CPU 성능 측정을 해보도록 하겠습니다.

이러한 CPU 작업을 선택할 때에는 .어플리케이션의 메소드-수준 CPU 성능(실행 시간)을 프로파일하고 실시간으로 결과를 처리합니다. 당연히 오버헤드가 꽤 되게 때문에, 설정을 통해 전체 어플리케이션의 성능을 분석할 것인지, 아니면 어플리케이션 코드의 일부를 프로파일링 할 것인지, 심지어 특정 코드 조각(fragment)로 다운할 것인지 선택할 수 있습니다.

이때 나타나는 추정치(overhead)는 대략적으로 그린거라 눈금을 너무 자세히 들여다 볼 필요는 없습니다. --; (2개라고 20%는 아니라는 뜻 --;; )

전체 어플리케이션에 대한 CPU 성능분석을 하고자 하면 그냥 Entire Application 이 선택된 상태로 Run (실행)하면 됩니다.



오버헤드를 줄이기 위해 (또는 동시에 결과 범위를 줄이기 위해 ^^;) 부분만 프로파일링 하는 방법을 설명하도록 하겠습니다.

Part of application 으로 라디오 버튼을 바꾸고, 옆에 있는 define를 누릅니다.



주. 어플리케이션의 부분을 프로파일하기 위해, 우선 하나나 그 이상의 루트 메소드를 지정해야 합니다. 루트 메소드는 매개 루트로 지정될 소스 코드 안의 메소드, 클래스나 패키지로, 프로파일링 데이터는 어플리케이션 쓰레드 중 하나가 매개 루트를 들어오고 나갈 때 수집되게 됩니다. 어플리케이션 쓰레드 중 하나가 루트 메소드에 들어오기 전에는 어떠한 프로파일링 데이터도 수집되지 않습니다.

Select Root Method 팝업창이 뜨는데 여기서 Add project 를 클릭합니다.



프로젝트안의 쭈욱~~ 따라 들어가서 WordLibrary 를 선택합니다. 이 자바 클래스를 루트로 삼아 CPU 프로파일링을 분석할 계획이라는 뜻입니다.
Ok




그럼 자동적으로 저렇게 그림처럼 올라옵니다.
ok



그런 다음 필터를 사용할 수도 있는데, 필터는 매개된 클래스를 제한할 수 있습니다.



Show filter value 클릭하여 필터된 클래스의 목록을 볼 수 있는데, 미리 정의된 프로파일링 필터를 선택하거나 아니면 직접 사용자 정의 필터를 만들 지 선택할 수 있습니다.

profile only project classes 선택하고 실행 (run)



실행하게되면 다시 어플리케이션이 실행되고, 프로파일링 세션이(이번에는 CPU 분석)으로 시작되는데, 그림처럼 자동으로 프로파일링 후 Live Profiling Results 가 나타난다. (안 나타나면 Profiler 패널에서 Live Profiling Results를 클릭한다. 그리고 아래 그림처럼 차트를 보고자 하면 Live Profiling Result 창 오른쪽 위의 조그만 아이콘을 누르면 아래 그림처럼 나타난다. )



계속...

Netbeans-Korean by 강여사 - April 25, 2009 11:48 AM
넷빈 6.5 에서 profiler 사용하기 - 01

안녕하세요~ 강여사입니다. 요근래 제가 좀 바빠서리..--; (뭐 지금이라고 안 바쁜건 아니지만..ㅠㅠ 약속한게 있어서리 최우선으로~~ 오호홍~)

우선, 프로파일러(profiler)는 개발자들에게 어플리케이션 실행 동작에 대한 중요한 정보를 제공하면서, 손쉽게 쓰레드 상태, CPU 성능, 그리고 어플리케이션 메모리 상태 등을 모니터하면서 이에 대한 수정 작업을 제공하는 도구입니다.

넷빈도 이러한 프로파일러가 넷빈 6.x 이전에는 플러그인 상태로 지원되다가, 넷빈 6.x 이후에는 기본팩에 포함시켜 넷빈 프로젝트를 바로 프로파일링을 할 수 있도록 지원해주고 있습니다.

특히나 넷빈 6.X 의 세부 버전에서도 각각 조금씩 새로운 기능들이 추가되고 또 속도 등의 이슈는 나날이 버전업되고 있습니다. (자세한 사항은 항상 넷빈 홈 페이지의 releases 확인 요망 ㅋㅋ) 저야 늘~ 그러하듯 시작~ 스따아트~ 소개~를 목적으로 가비얍게 다루는~~

그리하야 이번 게시물에는 넷빈에서 프로파일러를 어떻게 시작하는 지 그리고 어떤 것들이 있는지 일단 1탄으로 이야기해보도록 하겠습니다.

우선 간단한 자바 어플리케이션을 올립니다. (여기서는 넷빈 안에 있는 sample 프로젝트로 하겠습니다)

new project


Samples 안의 java - Anagram Game 선택
next



적당한 경로에 넣기
finish



그럼 우선 정확한 프로파일링 결과를 얻기 위해서는 자바 플랫폼에 대한 측정 데이터가 있어야 합니다.

만약 처음으로 프로파일링 툴을 실행하거나, 아니면 이런 측정 데이터가 없다면, 일단 플랫폼을 위한 calibration 이 최우선적으로 진행되어야 합니다.

Profile - Advanced commands - Run Calibration

그럼 해당 프로젝트의 플랫폼이 선택됩니다. (당빠 이러한 작업은 JMX 등을 지원하는 JDK 5 이상에서만 가능합니다. 현재 작업중인 제 JDK 는 6 버전입니다.)
OK





프로젝트 프로파일링 시작하기

방법 1. Profile - Profile Main Project (아래그림참고)
방법 2. 프로젝트(AnagramGame) 에서 오른쪽 마우스 - profile



넷빈에서는 프로파일링을 진행하게되면 프로젝트와 프로파일링을 통합시키기도 합니다. 즉, 프로파일링 세션의 시작과 함께 어플리케이션을 시작하고, 프로파일링 세선이 종료되면 어플리케이션도 종료되게~

이러한 통합은 당연히 프로젝트의 구성파일(build.xml)을 수정해야하기때문에 이 작업에 대한 동의여부를 묻습니다. (팝업창)



이렇게 통합하게되면 기존 build.xml 은 build-before-profiler.xml 으로 바뀌고 새로운 build.xml 이 자동생성됩니다.



나중에 이일을 원래대로 복구하려면 Profile-advanced command 에서 unintegrate profile from the main menu 를 선택하면 됩니다.
ok

그럼 다음 그림이 보이는데 다음 3가지로 프로파일링을 진행할 수 있습니다.

즉,~

프로파일링 작업
결과

어플리케이션 모니터하기
쓰레드 액티비티와 메모리 할당을 포함, 대상 JVM의 등록정보에 대한 고-레벨정보를 얻기 위하여 이것을 선택하십시오

CPU 성능 분석하기
메소드를 수행하는데 대한 시간, 호출된 메소드 횟수를 포함한 어플리케이션 성능에 대한 자세한 정보를 얻기 위하여 이것을 선택하십시오.

메모리 사용량 분석하기
객체 할당과 가비지 컬렉션에 대한 자세한 데이터를 얻기 위하여 이것을 선택하십시오.

각각을 선택하면 선택된 박스가 조금 커집니다.

그럼 우선 Monitor ... 를 선택하고 실행해 보겠습니다.

Monitor 클릭 - run




통합으로 진행되기때문에 해당 어플리케이션(anagram game)이 실행되고 왼쪽에 새로이 profiler 패널이 추가됩니다.



실시간으로 모니터링 데이터의 개요를 재빨리 얻기 위해 Telemetry Overview (Control 메뉴들중 맨 오른쪽) 을 사용할 수 있다.
(output이 보이는 오른쪽 아래쪽에 3개의 내용이 한꺼번에 나타납니다).



계속..

Netbeans-Korean by 강여사 - April 09, 2009 02:21 AM
virtualbox2.1.4 에서 glassfish v2.1 설치 및 실행하기

음.. 고새 버박이 2.1.4로 업됐다..벗드..여전히 공유폴더 제한 및 기타 사항은 아직이라는거..vmware로 돌아가야 하나..쩝..아무튼~

정리용...

일단 글래스피시 다운로드부터.

사이트는 http://glassfish.dev.java.net
가운데 download 클릭



일단 glassfish v2.1 로 선택 (나중에 클러스터도 정리하기 위해)



각 버전별 빌드 선택
(버박에서 깔거라 solaris x86의 ml 시리즈로 선택)



적당한 곳에 다운로드 (현재 버박 2.1.4 에 만들어놓은 user 계정은 student 해서 그냥 거기다 다운로드)

/export/home/student 계정아래 다소곳이..쿄쿄



그런 다음 이걸 압축해제를 해야하는데 그러기위해 할일 JAVA_HOME 설정

vi .profile



에서 자바홈 설정(추가 및 확인)

export JAVA_HOME=/usr/jdk/jdk1.5.0_16



java -Xmx256m -jar glassfish-installer-v2.1-b60e-sunos_x86-ml.jar



저렇게 약관창이 뜨는데 스크롤을 내려야만 accept 버튼이 활성화됨. (이렇게해도 약관내용은 읽지 않는다는..쩝 --;)



그럼 glassfish라는 폴더가 생기고 그안에 풀림



cd glassfish



chmod -R +x lib/ant/bin
lib/ant/bin/ant -f setup.xml



설치가 다 완료되면 마지막 설정 작업



글래스피시 bin 도 PATH 변수에 추가해야 함
그러기 위해

cd ..
vi .profile (확인 및 수정)

...
export JAVA_HOME=/usr/jdk/jdk1.5.0_16
PATH=$JAVA_HOME/bin:$PATH:/export/home/student/glassfish/bin
export PATH
...

(GUI 인터페이스는 CDE 그림이 바뀐것 뿐 상관없슴 --; 왠지 이쪽이 더 빠른듯..기분탓인가..)



글래스피시 시작

asadmin start-domain domain1



웹브라우저로 확인
http://localhost:8080



어드민도 확인
http://localhost:4848
admin/adminadmin 으로 접속



음..잘되는군..조아~

Netbeans-Korean by 강여사 - February 27, 2009 03:07 AM
글래스피시 v2 vs. v3

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

Both GlassFish Server v2 and v3 Prelude are fully supported, production-ready distributions. Choosing one is mainly based on the features that you need for your particular deployment scenario. If you need clustering, high availability and complete Java EE 5 specification support, choose GlassFish Server v2. If you need leading edge web application technologies, web services and scripting, choose GlassFish Server v3 Prelude.

둘은 쓰임새가 완죤 틀리다는 거~

v2는 클러스터로

v3는 edge 웹앱으로

그럼 썬글래스피시포트폴리오의 엔터프라이즈 서버를 v2로 하느냐 v3로 하느냐에 따라 다른 쓰임새.. 오케이.. 슬슬 뭔가가 잡히는 듯..쿄쿄쿄..

힘들당..--;

Netbeans-Korean by 강여사 - February 27, 2009 03:07 AM
글래스피시(glassfish) 설치(install) 관련

https://glassfish.dev.java.net/downloads/v2.1-b60e.html

현재 다운로드 링크.

각 OS 선택에 2가지 버전이 공급되는데, ml 즉 (MultiLigual)과 영문판.

둘의 차이는 약 2M 정도.

영문판으로 진행하려면 처음부터 용량이 적은 영문판만 받아 설치할 것.

이 경우 예전 opensso 때 경험을 미루어보면 설치시 한글 OS와 로케일(ko관련 properties) 때문에 설치 진행이 안될수도 있다. opensso 때는 그랬슴. 글래스피시 영문판은 안해봐서 모름.. --;

Netbeans-Korean by 강여사 - February 27, 2009 03:07 AM
글래스피시 v3 prelude 설치(install) 관련

https://glassfish.dev.java.net/downloads/v3-prelude.html
관련링크.

이건 v2와는 다른 gui 기반 설치파일도 제공. (그외 기타 등등)

역시 영문판과 ML 판 2가지..차이는 2M 정도..

Multilingual support is available in French, German, Spanish, Japanese, Simplified Chinese, Traditional Chinese and Korean. (한국어포함이라는게 얼매나 다행인지..--; 으쌰으쌰)

단, 주의사항. JDK 최소 1.5.0_15 이상이어야 함

Note: all installations require J2SE 5.0. Recommended minimum version is 1.5.0_15.

음..조아~

Netbeans-Korean by 강여사 - February 26, 2009 12:59 PM
Where can I find a comparison between GlassFish and other open source Application Servers? - About GlassFish

Where can I find a comparison between GlassFish and other open source Application Servers?

글래스피시와 기타 오픈소스 어플리케이션 서버들과 비교점은 어데서?

This thread provides a good discussion. Comparisons are also made in this blog post, especially in the comments. Arun also lists key GlassFish differentiators in What's the big deal about GlassFish?

+

역시 아룬 굽타.. 제일 존경하는 아키텍트 중 한 사람.. 진짜 존경스럽다..ㅠㅠ

Netbeans-Korean by 강여사 - February 26, 2009 12:57 PM
How do I use just part of the GlassFish Application Server? I don't need or want everything. - About GlassFish

How do I use just part of the GlassFish Application Server? I don't need or want everything.

글래스피시 어플리케이션 서버의 일부분만 사용하려면? 난 다 필요한거는 아닌데?

This question was originally posed in this thread and the issue has been raised before.
The forum member who posed the question wants to use just some of the functionality in GlassFish, but doesn't need or want all of it (for instance, use just the SIP servlet container but not EJB support, etc.).
Jerome responded:

This is not possible with GlassFish v2 since it would have required that each container can be plugged out. This is however the bulk of the work we are doing in GlassFish v3, where you will be able to get the exact set of features you require. We are not expecting to have the SIP container working in v3 anytime soon, most likely after the summer (of 2008). In the meantime, I am afraid you have no choice but to carry the extra baggage.
NOTE: What's planned for GlassFish v3 in this area is also discussed in What is the difference between Tomcat and GlassFish?.

간단히~
글래스피시 v2 에서는 불가, 그러나 v3에서는 플러거블(pluggable) 가능 유도. 특히 이 사안은 SIP 컨테이너때문인듯 한데, v3에서는 배제한다고 혔으나..음.. v3 prelude 정리하면서 봐야겠군..

Netbeans-Korean by 강여사 - February 26, 2009 12:57 PM
Any Dos and Don'ts I should know about when using GlassFish in demos? - About GlassFish

Any Dos and Don'ts I should know about when using GlassFish in demos?

데모로 글래스피시를 사용할때 해도 되는 것, 하면 안되는 것?

This blog entry gives some recommendations on how to use GlassFish in demos. Some of these apply to every-day use of GlassFish.

+ 몇개만
글래스피시 v1보다는 v2를 사용하길. v1은 사실 v2/v3와는 기반부터가 다르다. --;


undeploy 하기전에 delete 하지 말것


설정 파일(domain.xml 등)들의 수동 편집시 주의 기타 등등

Netbeans-Korean by 강여사 - February 26, 2009 12:56 PM
Where can I get a GlassFish picture/logo to use on my web page? - About GlassFish

Where can I get a GlassFish picture/logo to use on my web page?

내 웹페이지에 사용할 글래스피시 그림/로고는 어데서?

Community buttons and logos are listed on this page.Sun GlassFish Partners need to request their logo from a Sun contact

Netbeans-Korean by 강여사 - February 26, 2009 12:56 PM
How do I know which release is the latest production release of GlassFish? - About GlassFish

How do I know which release is the latest production release of GlassFish?

글래스피시 최신 제품에 대해서는 어데서?

The GlassFish For Business blog is a good source of release information, as is the downloads page (anything with "build" in its title means it hasn't been officially released yet).

덧.
음.. 3월에 하는 웨비나에서는 ESB에 대해 한다니 꼬옥 들어야지.. 오늘 webinar도 재미있었당~
음.. sun fire 장비를 어데서 구해서 glassfish 튜닝 해봐야 하는데.. 뭐..어캐 되겠지..--;

Netbeans-Korean by 강여사 - February 26, 2009 12:38 PM
Where can I get GlassFish? - About GlassFish

Where can I get GlassFish?
글래스피시는 어데서 구하나?

GlassFish releases and technology previews can be downloaded from the GlassFish downloads page.

글래스피시 릴리즈 및 기술 프리뷰는 다음에서 다운로드 (위 다운로드 페이지 링크) 참조

Netbeans-Korean by 강여사 - February 26, 2009 12:36 PM
What is the difference between Tomcat and GlassFish? - About GlassFish

What is the difference between Tomcat and GlassFish?

톰캣과 글래스피시와 차이점은?

Tomcat is a servlet container that can host JSP and servlets. GlassFish is a Java EE 5-compliant application server that includes implementation for a Web services stack (Metro), EJBs, Java Persistence, and many others included in the Java EE 5 specification. GlassFish also provides the out-of-the-box clustering, centralized administration, high availability, and load balancing capabilities required for enterprise applications. The GlassFish web container is a fork of Tomcat 5.5. Why a fork? The Tomcat folks were making incompatible interface changes while GlassFish was trying to stabilize the code base (not a complaint, just reality). This GlassFish and Tomcat Comparison page also lists differences. (이 비교페이지 꼭 볼것..기타 웹로직과 웹스피어와도 비교이나..아마 위키 작성자가 이 둘은 잘 모르는 듯. ㅋㅋ ???의 연속이군..)

톰캣은 JSP와 서블릿을 중재하는 서블릿 컨테이너. 글래스피시는 웹 서비스 스택(메트로), EJBs, 자바 퍼시스턴스, 그리고 기타 많은 Java EE 5 스펙을 구현하는 Java EE 5-호환 어플리케이션 서버.

Think GlassFish is too big, and forces you to run more than you really need? The "all-or-nothing" nature of GlassFish goes away in GlassFish v3. The modular architecture of GlassFish v3 will provide lightweight, more "Tomcat-like" distribution options and enable you to roll out as much or as little of the GlassFish server as you need. Item A on the GlassFish v3 Themes page (Modularity and Extensibility) describes what's planned.
NOTE: This "What is the difference..." question was one of many questions answered in the following blog posts from Arun, which might also be of interest:
http://blogs.sun.com/arungupta/entry/glassfish_delhi_universityhttp://blogs.sun.com/arungupta/entry/glassfish_bangalore_chennai_and_pune
All of Arun's Q & A blog entries are available here.

+

발표자료 중 톰캣과 글래스피시에서의 request 처리 퍼포먼스 비교가 있었다.. 음.. request 건 수 많아지면 톰캣하면 안되겠군.. 쩝.. 역시 괜히 WAS 가 아녀... 헐

Netbeans-Korean by 강여사 - February 26, 2009 12:25 PM
What's GlassFish market share compared to other app servers? - About GlassFish

What's GlassFish market share compared to other app servers? 다른 App 서버들과 비교하여 글래스피시 시장 점유도는?

Eduardo's answer:

There a number of surveys and they all are showing improvements. The tricky part is that there is a substantial lag in the surveys. By the time ZDNet or Evans Surveys show the result they are at least 6 months old. To boot, Evans Surverys NAD (North American Developer Survey) changed the format and it is extra old. I'm very much looking forward to the updated percentages to see where we are.

In the meantime, check out these...
http://blogs.sun.com/theaquarium/entry/what_a_difference_18_months http://blogs.sun.com/theaquarium/entry/zdnet_glassfish_validating_sun_s http://blogs.sun.com/theaquarium/entry/from_#8_to_#2_- http://blogs.sun.com/theaquarium/entry/another_month_another_glassfish_geo http://blogs.sun.com/theaquarium/tags/adoption

자세한건 해당 링크에..ㅋ

Netbeans-Korean by 강여사 - February 26, 2009 12:23 PM
What is the Roadmap? - About GlassFish

What is the Roadmap?

로드맵?

The General Information section on the main page of the GlassFish Wiki provides roadmap information.

+

현재 글래스피시 v3 prelude 까지 진행중. v2와 v3은 서버 instance에 차이가 있슴

Netbeans-Korean by 강여사 - February 26, 2009 12:22 PM

Where do I go to access the GlassFish project?
글래스피시 프로젝트는 어데서?

Visit the community site at http://glassfish.org/. Nightly builds and the source code for the application server are available on this site, as are e-mail lists, discussion forums, news, feedback, licensing information, and extensive help resources.

커뮤니티 사이트는 여기 http://glassfish.org/ . 각종 빌드와 소스 코드 및 이메일 리스트, 포럼, 뉴스, 피드백, 라이센스 정보 및 도움 리소스 등 제공

The GlassFish Wiki at http://wiki.glassfish.java.net/ complements the community site and serves as another valuable, collaborative resource for the GlassFish community.

글래스피시 위키는 저기 참조

Netbeans-Korean by 강여사 - February 26, 2009 12:22 PM

Is GlassFish really free to use?

글래스피시는 정말 사용하는데 공짜?

Yes! The GlassFish Application Server is open source and totally free to use. Sun GlassFish Enterprise Server (previously named Sun Java System Application Server) is Sun's commercial version of GlassFish with a different installer and is also totally free to use.

네~! 글래스피시 어플리케이션 서버는 오픈 소스이자 완전히 사용하는데 무료. 썬 글래스피시 엔터프라이즈 서버(이전 이름은 썬 자바 시스템 어플리케이션 서버)는 다른 인스톨러(설치 프로그램)을 가진 글래스피시의 썬의 상용 버전으로 이역시 사용하는데 완전히 무료.

So how does Sun make money if GlassFish and Sun's commercial offering are open source? In a word, services. Sun makes money selling services under the Sun GlassFish Enterprise Server brand, namely support, consulting and training.

그럼 글래스피시와 썬의 상용 제공 버전은 어떻게 수익을 창출하는지? 간단히 말하면, 서비스~로. 썬은 썬 글래스피시 엔터프라이즈 서버 브랜드, 즉 지원, 컨설팅 그리고 교육 등을 통해 각종 서비스를 수익 모델로 제시.

This FAQ provides a good comparison between GlassFish v2 and Sun's commercial offering. Whether you are using GlassFish or Sun GlassFish Enterprise Server, the bits are free for development and production. After installation, the bits laid down on disk by the GlassFish v2 installer are the same as when you install the base Sun GlassFish Enterprise Server 9.1 bundle. The Sun GlassFish Enterprise Server w/HADB bundle adds HADB, Mozilla, NSS libraries, and 3rd-party Data Direct drivers. If you look at the table in the FAQ, you can see that there are no major differences between GlassFish and Sun GlassFish Enterprise Server. That's by design. Eduardo has a good writeup about how Sun productizes open source.

If you plan to go into production and want to purchase support (or purchase support in the future), Sun recommends installing Sun GlassFish Enterprise Server on production systems. Alexis has an excellent writeup about the benefits of support. The most important points are timely and accurate responses to questions with an SLA, access to the sustaining branch, and indemnification. Indemnification is a benefit of the support contract, not the Sun GlassFish Enterprise Server bits themselves. Arun also writes about the benefits of subscription in 3 Steps for Successful GlassFish Deployment.

Netbeans-Korean by 강여사 - February 26, 2009 12:22 PM
How often can I get an update of GlassFish? - About GlassFish

How often can I get an update of GlassFish?

글래스피시 업데이트는 얼마나 자주?

Updated builds for GlassFish are posted every night to glassfish.dev.java.net (click Download to access the main download page). These code pushes have undergone very basic testing to ensure they will build and execute but have not been tested as thoroughly as the production releases. Additionally, you have read access to the same CVS tree as the developers, so you always see the latest versions of the code there. Occasionally, typically weekly or so, a "promoted" build is pushed that has been more thoroughly tested and will contain many more documented features than the regular nightly builds.

업데이트된 글래스피시 빌드는 glassfish.dev.java.net 에 매일 밤 포스트됨.

Netbeans-Korean by 강여사 - February 26, 2009 12:09 PM
What is Project GlassFish? - About GlassFish

What is Project GlassFish?
프로젝트 글래스피시는 뭐?

The GlassFish community is building open source, production-quality, enterprise software. The main deliverables are an Application Server, the Java EE 5 Reference Implementation, and the Java Persistence API Reference Implementation, TopLink Essentials.

글래스피시 커뮤니티는 오픈소스, 제품 퀄리티, 엔터프라이즈 SW 구축. 글래스피시 커뮤니티의 메인 실행 가능 제품들로는 어플리케이션 서버, Java EE 5 레퍼런스 구현, Java Persistence API 레퍼런스 구현, TopLink Essentials 구현물 등이 있다.

The mature code base is a result of Sun donating the Sun Java System Application Server 8.x to the community. As such, the community is led by Sun with Governance currently being defined. Oracle and Ericsson are also major contributors, donating Toplink Essentials and SIP Servlet technology respectively.

글래스피시 커뮤니티에 도움(소스 등 기여)을 준 협력체 (contributors)

썬의 썬 자바 시스템 어플리케이션 서버 8.X
오라클의 TopLink Essentials
에릭슨의 SIP Servlet Technology 등.

Enterprise-ready features delivered by GlassFish v2 include: (글래스피시 v2에 포함)

Clustering (클러스터링)

In-memory session replication for scaling applications deployments to meet demand. Clusters can be grown (or reduced) dynamically to meet customer demand.
High availability offers continuous service availability in event of server failure
Advanced Centralized Management
Manage cluster (and individual instance) lifecycle. Create, start, stop, delete clusters and instances dynamically.

Centralized cluster configuration (중앙집중화된 클러스터 설정)

Centralized application lifecycle management. Deploy/undeploy applications from a centralized location.
Centralized monitoring (here) (here(here), also exposed via JMX for 3rd party tools
Call flow monitoring to detail where a transaction is spending time in the application server

Best-in-class performance (퍼포먼스)

Web Services interoperability with Microsoft .NET 3.0 (닷넷 3.0 과 웹 서비스 호환)

Netbeans-Korean by 강여사 - February 26, 2009 11:59 AM
What is an Application Server? - About GlassFish

What is an Application Server?
어플리케이션 서버란?

An application server is a piece of software that serves applications through the internet to provide a service. Java EE Application Servers do this by implementing the Java EE Specification. Glassfish is a Java EE Application Server.

어플리케이션 서버란 인터넷을 통해 서비스를 제공하는 어플리케이션을 공급하는(serve) 하나의 소프트 웨어. Java EE 어플리케이션 서버는 Java EE 스펙을 구현하여 앞서 설명한 일을 함. 글래스피시가 바로 Java EE 어플리케이션 서버임.

Netbeans-Korean by 강여사 - February 26, 2009 11:54 AM
Why the name GlassFish? - About GlassFish

Why the name GlassFish?

왜 이름이 유리물고기(이하 글래스피시)인지?

One of the founders, Eduardo, says it means "transparent development". Another member of the team said, "It's see-through :-)". So the name "glassfish" is intended to depict the transparency of open source development, where everything is visible. This page (revision-1) was last changed on 19-Sep-07 12:40 PM, -0700 by Tom Amiro.

창립자중 한사람, Eduardo 가 말하길 "투명한 개발". 팀의 또다른 멤버왈, "안이 다 들여다 보이네 그랴..:-)" 하야~, "유리물고기"라는 말은 모든 게 적나라하게 보여지는 오픈 소스 개발의 투명성을 묘사했다는 의도로 만들어짐.


썬 홈피에 영문을 강여사 맘대로 번역. 딴지사절. 복사금지. --+

Netbeans-Korean by 강여사 - February 18, 2009 02:08 PM
넷빈6.5에서 톰캣(tomcat) 5.5.27/6.0.18 설치(install) 및 등록하기(add server)

정리합니다. 뭐 이미 많이들 아시는 내용이겠지만.

우선 넷빈 6.5 에는 설치용 파일안에 톰캣 6.0.18 이 들어있습니다. (하지만 채택되어 있지는 않습니다. 이게 뭔 소리인고 하니..그림을 보시죠)

넷빈 6.5 설치시 최초화면입니다.
여기에 customize 버튼을 누르면 현재 설치시 설치하고자 설정된 메뉴들이 나타납니다.


그중 아래에서 2번째 tomcat 6.0.18 은 사실 디폴트 진행시 체크되어 있지 않습니다. 따라서
톰캣을 설치시 설치하고자 한다면 아래 그림처럼 체크후 진행하시면 넷빈 6.5 설치시 번들처럼 설치됩니다.



(이러한 세팅은 넷빈 6.X 시리즈가 그렇습니다. 넷빈 5.X 시리즈는 번들용 톰캣이라는 이름으로 자동 설치가 유도됐죠.)

이렇게 하면 설치경로 즉, CATALINA_HOME 은 대개 시스템드라이브(예를들어 C:)의 C:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.18 아래에, 그리고 CATALINA_BASE 는 대개 로그인한 계정의 넷빈 경로 (예를 들어) C:\Documents and Settings\로그인한계정\.netbeans\6.5\apache-tomcat-6.0.18_base 이곳에 설정됩니다.
(물론 2번째 경로는 한번이라도 톰캣을 구동해야 생깁니다. 넷빈 설치후 최초에는 없죠)

이렇게 세팅된 CATALINA_BASE 안에 톰캣 서버의 기본설정파일 server.xml , tomcat-users.xml 그리고 web.xml 등이 있습니다.

자 그럼 수동 설치 및 등록을 보도록 하겠습니다.

일단 홈페이지로 가서 톰캣 하위버전 (tomcat 5.5.27)을 다운 받도록 하겠습니다.

http://tomcat.apache.org/



여기서 왼쪽 download 메뉴에서 tomcat 5.5 를 누릅니다.



그럼 아래쪽에 5.5.27 버전이 보이는데 여기서 잘~

1.
왜냐하면 톰캣 5.5 버전은 이전버전과 달리 admin을 core에 가지고 있지 않습니다.
따라서 받으셔야 하는 파일은 core 와 admin 2개를 따로 다운로드 받아야하고~!!

2.
만약 이러한 톰캣을 그냥 윈도우 서비스로 쓴다면야 window service installer (소위 .exe 파일)을 받으셔서 진행하셔도 됩니다만, 이 톰캣을 넷빈에 등록시켜 쓴다면 시작(catalina.bat)과 환경설정(setclasspath.bat) 등의 스크립트 파일들이 필요한데 위의 window service installer 에는 이게 빠져있기 때문에 다른데서 빌려와야 합니다.
해서~~
그런 목적(넷빈에 등록)이라면 core의 zip을 받아서 압축풀기(가 바로 설치) 방법이 더 권장.

뭐 zip이야 아무데나 풀면 그게 설치경로라 c:\ 에 풀었습니다. 풀면 아래 bin 이 보이고 bin 이 보이는 현재 경로가 HOME



그리고 admin 작업을 위해 역시 zip 을 받고 같은 c:\ 폴더에 풉니다.
열어보면 위의 core 와 겹쳐지는 폴더및 파일들이 있습니다.



admin 설치는 딴게 아니라 이 겹쳐지는 폴더 및 파일을 core 에 겹쳐쓰기 하시면 됩니다. (그게 admin 설치)

그럼 admin까지 겹쳐쓰기된 tomcat 5.5.27을 넷빈에 등록시킬 겁니다. (아래 그림은 아까 말했던 여러 스크립트 파일들이 bin 안에 있는 걸 보실 수 있으십니다. 뭐 스크립트파일이라 이게 없으면 직접 작성하시거나 어데 딴데서 빌려오셔도 됩니다 ^^;)



넷빈의 Services 메뉴에서 오른쪽 클릭
add server




올릴수 있는 서버 메뉴 중 tomcat 5.5 선택
next



catalina home 은 설치경로
만약 번들설치처럼 home 과 base를 분리하고자 하면 아래 use private configuration folder(catalina base) 체크후 적정 경로를 주면 됩니다. (귀차니즘으로 그냥 패수~ --;)



manager role 세팅은 여기서 입력하면 xml 에 반영되죠

그냥 임의로 admin/pass 로 줬습니다.

finish


추가된 tomcat 5.5 시작
(오른쪽 클릭 - start)



한가지 점검할 사항은 tomcat 5.5 의 세팅 (역시 오른쪽 마우스 - properties)에 보면

현재 기본으로 세팅되어 있는 port 가 8080

해서 glassfish 와 동시에 띠우면 포트충돌.. 따라서 어느 한쪽을 바꿔주시면 동시에 띠우는게 가능하죠.
물론 http server 포트 수정시 shutdown 포트도 함께 고려 ..역시 충돌날테니까네.. --;

아무튼, 현재 저는 glassfish 가 안떠있는 관계로 그냥 진행


오른쪽 마우스의 view admin console 메뉴이거나 아니면 톰캣이 구동된 상태에서
http://localhost:8080/admin 을 하면 관리자 화면이 뜹니다.

admin/pass 로 접속하면 관리자 화면으로 전환됩니다.




관리자가 아닌 일반 ROOT 점검은
http://localhost:8080/



그럼 고양이를 부탁해~ (여전히 호랑이가 아니라 고양이로 보인다는..--;ㅋㅋ) 그림이 뜨죠.

(아, 고양이를 부탁해 영화제목입니다. 걍 수업할때 심심해서.. ^^ ㅋㅋ 맨날 입버릇으로 쓰면서 정작 그 영화는 안봤다는..--;)

아무튼 그렇습니다.

그리고 이외 기타 설정 및 자세한 상황(DBCP , CONTEXT , REALM 등등은 모.두. 해당 톰캣의 documentation 에 자세히 나와있습니다.)

잘 찾아보시면 한글화 작업도 되어 있다는..

수고~

Netbeans-Korean by 강여사 - February 08, 2009 02:15 AM
VirtualBox 2.1.2 + solaris 10 에서 JDK6u10 설치

이건 솔텐(solaris 10)에서 jdk 설치이지만 아무튼 나한테는 버박시리즈 정리..ㅋ

일단 버박(VirtualBox 2.1.2.)의 솔텐(solaris 10)에서 인터넷으로 http://java.sun.com/ or currently direct site like (https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter ) jdk 파일 다운로드 받을 것

2중 아무거나 받으면 되지만, 편한 방법으로 self-extracting : jdk-6u12-solaris-i586.sh 받기로 낙찰. (sh 파일은 어느 사용자건 어느 폴더건 설치가능. 그러나 package 형식은 root 만 가능에 tar(zcat) 풀고 등등 귀차나서리 패스~~ 헐..이노무 귀차니즘이란.. 해가 가도 안 낫는군. 6--;)

그런 다음 나중에 jdk7 할꺼 생각해서 이걸 /export/home/jdk6 폴더안으로 저장.

#mkdir /export/home/jdk6

#cd (받은 곳)/jdk-6u12-solaris-i586.sh /export/home/jdk6/jdk-6u12-solaris-i586.sh

#cd /export/home/jdk6

#chmod +x jdk-6u12-solaris-i586.sh

#./jdk-6u12-solaris-i586.sh



yes



enter키 클릭



다 끝나면 done 이라고 나옴



그럼 자바 설치 완료!

이제 이걸 쓰는 사용자 계정을 만들어야 할 차례 (아무래도 계속 root 로 쓰긴 뭐하니까네..어차피 어느 사용자던 오케이 인지라... --;)

# useradd -u 100 -g 10 -d /export/home/user1 -m -s /bin/bash user1
# grep user1 /etc/passwd
# passwd user1
새암호 설정

그리고는 로그아웃 다시 접속



user1 로 로그인,
bash를 써서 그렇게 설정됨 (나중에 편집)

$ cd /export/home/user1
$ vi .profile



(추가)
PATH=/export/home/jdk6/jdk1.6.0_12/bin:$PATH
export PATH



바로 프로파일 실행
$ . .profile



프로파일 설정 확인은 자바 버전으로

$ java -version



Tip 이왕이면 좀더 편하게 프로파일 수정

$ vi .profile



(추가)
PS1='$LOGNAME: $PWD]$'
umask 022
set -o vi



재적용

$ . .profile



끝~

자 이제 netbeans 설치 및 glassfish was 설정만 정리하면 1단계는 다 되는군.. 끙

Netbeans-korean by 강여사 - February 07, 2009 05:18 AM
넷빈 6.5에서 Script.aculo.us 를 이용한 Ajax 어플리케이션 만들기(autocomplete) 01

이번 게시물에서는 Script.aculo.us 를 이용한 ajax 어플리케이션이 넷빈 6.5 에서는 어떻게 또 만들어지는 지 보도록 하겠습니다. (자바스크립트, JPA , servlet, 등등 사용)


 


일단 작업환경은


------------------------------------------------------------


넷빈 6.5


JDK 는 version 6 이거나 version 5


글래스피시 v2 (UR2)


그리고 데이터베이스는 mysql 를 사용하도록 하겠습니다.


------------------------------------------------------------


그럼 프로젝트 만들기부터 시작해보도록 하겠습니다.


 


최종 프로젝트가 웹이니 만큼 웹 어플리케이션 선택


 


new project - java web - web application


next


 



 


프로젝트 이름은 Autocomplete


경로는 알아서


 


next


 



 


서버는 glassfish v2 로


나머지는 디폴트로


 


finish


 



 


그럼 일단 index.jsp 페이지가 보이는 데 그냥 두시고


 


Services 탭으로 가서 Databases 를 확장시킨 다음 mysql 에서 데이터베이스를 새로 만들도록 하겠습니다.


 


(이 작업에 있어 넷빈 6.5 설치 이전에 mysql 이 해당 컴퓨터에 설치되어 있다면 자동으로 잡힙니다. mysql 은 당연 따로 설치하는 거구요- 썬의 공급파일들중에는  mysql 포함버전도 있습니다만 대개는 포함되어 있지 않습니다. http://www.mysql.com 에 가셔서 다운받은후 설치한 다음 진행하시면 됩니다. 뭐 아니면 다른 데이터베이스를 선택하여 진행하셔도 됩니다. (예를 들어, JavaDB 나 oracle 등등)


 


MySQL Server ... 에서 오른쪽 마우스를 클릭하면 Create Database 메뉴가 나옵니다. 클릭


 



 


새로운 데이터베이스 이름을 states 로 줍니다.


ok


 



 


그러면 잠시후 해당 커넥션이 자동작업됩니다.


 


jdbc:mysql://localhost:3306/states ...


 


여기서 오른쪽 마우스를 클릭해서 connect 를 시킨 다음 메뉴 중의 execute command 를 클릭합니다.


 


그럼 SQL 편집기가 보여지는데 거기에 다음과 같이 쿼리를 적습니다.


 


--------------------------------------------------------------------

<PRE>CREATE TABLE STATES (
id INT,
abbrev VARCHAR(2),
name VARCHAR(50),
PRIMARY KEY (id)
);</PRE>

--------------------------------------------------------------------


 


그런 다음 RUn.  아이콘을 눌러 쿼리를 수행합니다. (run query)


 



 


그런 다음 states 커넥션(jdbc:mysql://....states...) 을 확장시켜 Tables 노드를 누른다음 states 에서 다시 오른쪽 마우스를 클릭하여 Execute Command 메뉴를 누릅니다.


 


다시 SQL 편집창에서 다음을 붙여넣습니다.


 


--------------------------------------------------------------------------------------

<PRE>INSERT INTO STATES VALUES (1, "AL", "Alabama");
INSERT INTO STATES VALUES (2, "AK", "Alaska");
INSERT INTO STATES VALUES (3, "AZ", "Arizona");
INSERT INTO STATES VALUES (4, "AR", "Arkansas");
INSERT INTO STATES VALUES (5, "CA", "California");
INSERT INTO STATES VALUES (6, "CO", "Colorado");
INSERT INTO STATES VALUES (7, "CT", "Connecticut");
INSERT INTO STATES VALUES (8, "DE", "Delaware");
INSERT INTO STATES VALUES (9, "GL", "Florida");
INSERT INTO STATES VALUES (10, "GA", "Georgia");
INSERT INTO STATES VALUES (11, "HI", "Hawaii");
INSERT INTO STATES VALUES (12, "ID", "Idaho");
INSERT INTO STATES VALUES (13, "IL", "Illinois");
INSERT INTO STATES VALUES (14, "IN", "Indiana");
INSERT INTO STATES VALUES (15, "IA", "Iowa");
INSERT INTO STATES VALUES (16, "KS", "Kansas");
INSERT INTO STATES VALUES (17, "KY", "Kentucky");
INSERT INTO STATES VALUES (18, "LA", "Louisiana");
INSERT INTO STATES VALUES (19, "ME", "Maine");
INSERT INTO STATES VALUES (20, "MD", "Maryland");
INSERT INTO STATES VALUES (21, "MA", "Massachussetts");
INSERT INTO STATES VALUES (22, "MI", "Michigan");
INSERT INTO STATES VALUES (23, "MN", "Minnesota");
INSERT INTO STATES VALUES (24, "MS", "Mississippi");
INSERT INTO STATES VALUES (25, "MO", "Missouri");
INSERT INTO STATES VALUES (26, "MT", "Montana");
INSERT INTO STATES VALUES (27, "NE", "Nebraska");
INSERT INTO STATES VALUES (28, "NV", "Nevada");
INSERT INTO STATES VALUES (29, "NH", "New Hampshire");
INSERT INTO STATES VALUES (30, "NJ", "New Jersey");
INSERT INTO STATES VALUES (31, "NM", "New Mexico");
INSERT INTO STATES VALUES (32, "NY", "New York");
INSERT INTO STATES VALUES (33, "NC", "North Carolina");
INSERT INTO STATES VALUES (34, "ND", "North Dakota");
INSERT INTO STATES VALUES (35, "OH", "Ohio");
INSERT INTO STATES VALUES (36, "OK", "Oklahoma");
INSERT INTO STATES VALUES (37, "OR", "Orgeon");
INSERT INTO STATES VALUES (38, "PA", "Pennsylvania");
INSERT INTO STATES VALUES (39, "RI", "Rhode Island");
INSERT INTO STATES VALUES (40, "SC", "South Carolina");
INSERT INTO STATES VALUES (41, "SD", "South Dakota");
INSERT INTO STATES VALUES (42, "TN", "Tennessee");
INSERT INTO STATES VALUES (43, "TX", "Texas");
INSERT INTO STATES VALUES (44, "UT", "Utah");
INSERT INTO STATES VALUES (45, "VT", "Vermont");
INSERT INTO STATES VALUES (46, "VA", "Virginia");
INSERT INTO STATES VALUES (47, "WA", "Washington");
INSERT INTO STATES VALUES (48, "WV", "West Virignia");
INSERT INTO STATES VALUES (49, "WI", "Wisconsin");
INSERT INTO STATES VALUES (50, "WY", "Wyoming");</PRE>

--------------------------------------------------------------------------------------


 


역시 그런 다음 Run query 수행


 



 


작업을 마친다음 Tables 아래 states 에서 마우스 오른쪽을 클릭한 후 view data 메뉴를 클릭하면 테이블이 조회됩니다. (확인)


 



 


이제 데이터베이스 준비 작업이 완료되었습니다.


 


그럼 이 데이터베이스 자료들을 가지고 Entity classes 를 만들도록 하겠습니다.


 


다시 projects 탭으로 와서 프로젝트(autocomplete)에서 오른쪽 마우스 클릭


 


new - Entity Classes from Database... 클릭


 



 


그럼 Database Tables 창에서 데이터 소스 선택이 있는데


 


New Data Source... 클릭


 


나타난 create data source 팝업창에서 다음과 같이 입력합니다.


 


jndi name:  jndi/states


커넥션은 드롭다운메뉴에서 states 커넥션을 선택합니다.


 


ok


 



 


그럼 available tables 에 states 테이블이 올라오는데 add 버튼을 눌러 선택쪽으로 옮겨줍니다.


 


next


 



 


해당 프로젝트에 persistence unit 이 없으므로 새로 생성합니다.


 


create persistence unit 버튼 클릭 - 디폴트 세팅대로 create 클릭


 



 


패키지 이름은 server 로 주겠습니다.


 


next


 



 


그럼 persistence.xml 파일이 그래픽으로 제시되는데 여기서 마우스 위치에 있는 Include All Entity Classes in "Autocomplete" Module 체크는 해제합니다.


 



 


그리고는 Add Class 버튼을 클릭하여 server.States 를 선택한후 ok


 


(만약, 자동 생성시의 EntityManagerFactory 와의 인식여부 관계 등에 대해 살펴보시기 바랍니다.)


 



 


아무튼~ 그렇게 해서 확인한 후


XML 탭을 누릅니다.


 



 


소스코드 편집기에서 원래 있던 <properties /> 대신
다음 사항을 작업합니다. 이때 각 value 는 각 mysql 등의 데이터베이스 접속시의 user 와 pass 를 말합니다. 아까 states 데이터베이스 생성시의 user/password. (게시물에서는 예를 들어 걍 duke 라고 표현했을 뿐입니다. 실제 내용은 다르죠 ^^;; 이 대목은 똑같이 따라하시지 마시기를..--;)


 


---------------------------------------------------------------------------

<PRE><properties>
<property name="toplink.jdbc.user" value="duke"/>
<property name="toplink.jdbc.password" value="duke"/>
</properties></PRE><PRE>

---------------------------------------------------------------------------

</PRE>

 



 


 


계속...


 


 


 


 


 

Netbeans-Korean by 강여사 - February 06, 2009 02:31 PM
VirtualBox 2.1.2 에서 solaris 10 설치 - 03 (on Windows XP)

추가 iso 설치를 위한 작업

장치-게스트 확장 설치 클릭
그럼 자동적으로 시디 이미지 호출 및 파일 열림





터미널에서 다음과 같이 입력

# cd cdrom/vbox...설치경로까지 이동
# pkgadd -d ./VBoxSolarisAdditions.pkg





디폴트(all)로 그냥 클릭(enter)



y 엔터(enter)





설치 종료후 reboot

이건 별개로 인터넷 확인 (firefox 브라우저를 열어 http://www.google.co.kr)



중요팁!

현재 solaris guest 에서는 공유폴더가 지원안됨!! (이걸 모르고 얼마나 며칠은 삽질을 했던지 원.. pdf 문서안에 only windows and linux 만 folder sharing 지원이라고 되어 있슴. 뭐 방법은 vmware때랑 비슷하거나 더 쉬웠던듯. 문제는 솔라리스는 아예 지원 안된다는게..으으..매뉴얼 읽기 귀차나!!)

게다가 썬의 ftp 에서조차 vmware 로 되어 있는 이미지로 공급하던데..음..버박..더 두고 볼걸 그랬나..아무튼..일단 오늘은 여기까지 정리끝~

아우..이제 슬슬 jdk 랑 was도 깔아야하는데..그건 또 캡처하려면 얼매나 귀찮으려나..쩝..

javacaps 랑 glassfish 는 또 언제..헐 6--;

이건 필시 전생에 분명 공부 못해 죽은 귀신이 붙은겨..훠~이~

Netbeans-Korean by 강여사 - February 06, 2009 01:51 PM
VirtualBox 2.1.2 에서 solaris 10 설치 - 02 (on Windows XP)

일단 이미지를 빼야하니까 cd/dvd 에서(클릭) 시디이미지가 아닌 다른쪽으로 select - 확인



solaris 클릭



계속 진행







사용자이름 : root



비밀번호: ****







터미널을 열어 솔라리스 네트워킹 작업을 한다.



우선
# vi /etc/hosts
에서 ip 세팅 확인

/etc/hosts
#
# Internet host table
#
127.0.0.1 localhost
10.0.2.15 kj loghost

[ IP Address ] hostname loghost
위 파일은 자신의 컴퓨터의 IP 주소와 이름(hostname)을 지정해 준다. 각각의 구분은 공백으로 구분하므로 반드시 공백을 띄워준다.
파일을 열어 [ IP Address ] 란에 자신의 IP 주소를 적어준다.



2. /etc/defaultrouter
기본 Gateway를 지정하는 파일이다. 기본적으로 생성되어 있지 않기 때문에 새로 만들어 준다.

# vi /etc/defaultrouter
10.0.2.2






3. /etc/nsswitch.conf
Nameserver를 지정하는 파일이다. nameserver로 DNS를 사용할 것이기 때문에 다음과 같이 추가해 준다.
#
# /etc/nsswitch.files:
#
# An example file that could be copied over to /etc/nsswitch.conf; it
# does not use any naming service.
#
passwd: files
group: files
hosts: files dns
ipnodes: files
networks: files
....
....
위와 같이 "hosts: files" 줄의 마지막에 칸을 띠고 dns를 추가해 준다.





4. /etc/resolv.conf
이번에는 DNS를 사용하기로 하였으므로 실제적으로 DNS 서버를 지정해 준다.
# vi /etc/resolv.conf
domain [domain name]
nameserver xxx.xxx.xxx.xxx(DNS server IP)

domain kornet.net
nameserver 168.126.63.1
nameserver 168.126.63.2
nameserver 10.0.2.3





5. /etc/netmasks
위 파일을 열어 자신의 Netmask 값을 넣어 준다.
#
# The netmasks file associates Internet Protocol (IP) address
# masks with IP network numbers.
#
# network-number netmask
#
# The term network-number refers to a number obtained from the Internet Network
# Information Center.
#
#
# Both the network-number and the netmasks are specified in
# "decimal dot" notation, e.g:
#
# 128.32.0.0 255.255.255.0
10.0.2.15 255.255.255.0

xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
[네트워크 주소][서브넷 마스크]





6. Reboot
reboot 명령을 이용해 시스템을 재부팅하거나 다음과 같이 네트워크를 재시작한다.
#reboot

Netbeans-Korean by 강여사 - February 06, 2009 01:31 PM
VirtualBox 2.1.2 에서 solaris 10 설치 - 01 (on Windows XP)

우선 시간 넉넉할 때 할것..무진장 오래걸림..--; 게다가..하면서 한장한장 캡처..다신 안하고파! --+
(머 그래서 블로그에 적어놓는 건지도..쿄쿄)

일단..하나씩~

virtualbox 를 실행하면 만들어둔 sol10 환경이 보여진다. - 확인



그럼 솔라리스설치를 위한 dvd 이미지를 버박에 삽입.
그러기위해서는 cd/dvd 를 눌러 이미지선택을 선정(라디오버튼 select), 썬에서 다운로드 받은 솔라리스 10 update 8의 dvd 이미지를 끌어다 놓는다. - 확인



이왕하는 김에 그래픽카드쪽도 변경 수정 - 24MB 로 - 확인



요약확인 - 확인



시작버튼을 클릭하면 다른 팝업창이 뜨고 솔라리스 설치가 시작된다. Enter



1 을 타이핑 쳐 진행한다.











기본설정대로 클릭





네트워크에 연결되어 있슴으로 변경





컴퓨터 이름...kj 로 줬슴 ㅋ



IP : 여기서 ip는 10.0.2.15 (본인 컴퓨터의 인터넷주소와 무관!)



255.255.255.0



ipv6 - 아니오 (기본)













지역찾기에서 Asia - 대한민국 찾아 진행



시간대 확인















설치후 자동으로 설치이미지를 배출할 수도 있는데, 이건 버박이라 수동으로..그래서 아니오 선택



그러거나 어쩌거나(자동선택해도) 일단 무조건 수동으로라도 이미지빼야한다고 팝업창 뜸. 확인하고 진행















원래 reboot 를 하고 이미지를 빼야하는데(자동으로 진행할 수도 있다)
버박(virtualbox)이라 일단 시스템을 중지시키고 수동으로 이미지 배출.

Netbeans-korean by 강여사 - February 06, 2009 12:58 PM
VirtualBox 2.1.2 설치 (on Windows XP)

음.. 설치부텀 적자..--;

일단 버박(VirtualBox)을 다운로드 받아야할테고..

다운로드 사이트는 여기 http://www.virtualbox.org/wiki/Downloads

현재(2009/02/06)로 올라와있는 버전은 2.1.2 시리즈다.

-------------------------------------------------------------
VirtualBox binaries
The binaries in this section are all released under the VirtualBox Personal Use and Evaluation License (PUEL). By downloading, you agree to the terms and conditions of that license.

VirtualBox 2.1.2 for Windows hosts x86 | AMD64 (only on Windows x64!)
VirtualBox 2.1.2 for OS X hosts Intel Macs
VirtualBox 2.1.2 for Linux hosts
VirtualBox 2.1.2 for Solaris and OpenSolaris hosts x86/amd64
VirtualBox 2.1.2 Software Developer Kit (SDK) All platforms
VirtualBox older builds
See the changelog for what has changed.

Note: After upgrading VirtualBox it is recommended to upgrade the guest additions as well.
-------------------------------------------------------------

근데 이상한거..지난번 설치하면서 캡처해놓은 화면보니까 설치중 버전은 2.1.0 으로 버전표시가 되던데 그래서 혹시 옛날꺼 깔았나..하고 지금 쓰고 있는거 등록정보를 보니 2.1.2 다..음..심오해..지우고 다시 깔긴 싫고..귀차나!!!! 혹시 이거보면서 하는 사람은 확인 답글 달아주시면 감사~

현재 메인은 Windows XP Professional 서비스팩2 이고,

여기에 solaris x86 10 update 8 (오늘날짜로 최신)과,
Windows vista enterprise 를 깔았다.
(다 해놓고 블로그 작성중..--;)

일단 위 사이트에서 다운 다 받았으면 더블클릭 부텀..



next



약관에 동의 - next



next



next



install



finish




다음 (음..여기서부텀은 한글지원이군...조아조아)



이름은 sol10 (솔텐)
운영체제 solaris
버전도 solaris

다음



음..여기는 그림과 좀 다름..처음에 기본설정대로 메모리를 512 로 줬는데 그랬더니 설치중 윈도우 찾는데 무진장 오래(long, long time~~~) 걸려 나중에 다시 1024 로 바꿨슴. 현재도 1024로 진행중.

참고로 본좌의 피지컬 메모리는 4G일쎄..1024쯤준다고 컴터가 신경질내지는 않음..3G 이상 주니 경고메시지는 나오던데..ㅋㅋ 아무튼 결론 1024.



부팅용어쩌구가 없다니 새로만들기 클릭



다음



동적 확장 저장소로 오케이(예전에 vmware 쓸때는 이게 문제시되는 적도 많아서 주로 고정으로 썼는데 동적으로 써도 현재까지는 별문제없슴. 모르지 또 이따 오라클 깔고 어쩌고하면 어캐될지..음..심오해..--;)



잡아주는 크기가 16M 이어서 그냥 씀 - 다음



요약정리..조아조아.. - 다음



지금 만든거가 올라와있고, - 다음



완료..하면 오케이..

그럼 이것으로 버박에서 솔텐을 위한 작업장은 준비끝~

이제부터 본격 솔텐설치가 남았다는..두둥.. (그건 캡처를 안해서리..쩝..밥부터 먹구 하자..끙..)

chao~

Netbeans-Korean by 강여사 - February 06, 2009 12:57 PM
Installation & System Requirement : Summary

인스톨은 OS 별로..

Solaris OS Installation 의 경우는 2종류 (self-extracting installation 과 package-based installation)

Microsoft windows 의 경우는 self-extracting installation )

Linux 의 경우는 2종류 (self-extracting installation 과 RPM Package Manager (RPM) package-based installation)

시스템 요구사항..이게 중요한 데

음..표로 하렸더니 꽤 귀찮은 지라..걍 링크..

http://java.sun.com/javase/6/webnotes/install/system-configurations.html

시스템요구사항 문서에서 가장 중요한 거는 바로바로바로바로~~

안되는 건 안되는 거.
없는 것도 안되는 거.

음..심오해..

itanium 이 현재는 지원 된다는 거지(jdk6u7부터).. 하위버전도 꼼꼼히..체크 또 체크

Netbeans-korean by 강여사 - February 06, 2009 03:42 AM
버추얼박스...--;

첨나왔을때 후딱해보고 vmware 이미지때문에 접었다가, 다시 스을쩍 시작..
궁극은 솔텐에 글래시피시 클러스터링에 오라클 클러스터링까지가 목표인데..
음..뭔가 심오한..(여기서 심오란 디폴트로 쉽게 진행이 안되었다는 소리..--;끙)
그렇다는 건 어덴가 적어둬야할듯 싶어...연습장 찾다가 걍 블로그에 적기로 했다...--; 이노무 귀차니즘이란..쩝..
뭐 구글이 없어지기 전까지 날라가지야 않겠지..그럼 올해는 블로그에 투자좀 할까나..
아무튼 시~작~ comming soon

Netbeans-korean by 강여사 - October 17, 2008 01:31 AM
썬블로그 기고글: 썬테크데이 세션 발표: 자바 플랫폼의 신기능-에세이 ^^

어제 썬블로그 기고글로 쓸 에세이를 부탁받아서 밤새 썼습니다(이번주 정말 잠잔 시간이 하루치가 안되는 군요..쩝.. 하긴 저는 야행성이라 밤에 일하는 게 능률면에서 좋습니다만..그건 낮에 잤을 경우인데 요새는 참으로.. 으..이러케라도 살좀 빠지면 나으려나..헐..) 아무튼~



에세이로 쓴 거라 재미있게 봐주시면 좋겠습니다. (메일만 보내놓고 아직 올라가지도 않았는데 카페는 제꺼라도 맘놓고 팍팍 올리네요..ㅋㅋㅋ)

자 그럼 오늘도 화이팅해서! 좋은 하루 되세요~~




썬 테크 데이 2008 서울 코리아, 자바플랫폼의 신기능



지난 15일 2년만 에 다시 열린 썬 테크 데이 2008 서울 코리아에서 자바 플랫폼의 신 기능이라는 세션을 맡아 발표를 하게 되었다.

사실 이번 세션은 지난 9월 29 - 10월 1일에 걸쳐 진행된 사웅 파울로, 브라질에서 처음 선보였던 세션 주제였던 만큼 나 역시 설레임 반 기대 반으로 공식 주제들을 기다렸었다.



주제 선정은 기대 이상! 현재 가장 궁금해할 - 사실 원래 썬의 연초 발표에 따르자면 이미 자바 7 이 출시되었을 타이밍이지만(올해 여름에 출시하겠다고 했었다 --;) 10월이 반이나 넘어가는 오늘 현재도 발표 안하고 있다. 그래서 인지 아마 더욱 더 이런 저런 스토리가 많은 - 자바 7 과 자바의 새 비전을 제시하는 데 부족함이 없던 6 버전을 절묘 히 결합시킨 주제들이었다.



맡은 주제에 충실을 다하는 건 스피커의 본분, 주제들에 대해 어떻게 모두 전달해드릴 수 있을 지 꼬박 3일은 밤샘작업을 한 거 같다. 현재도 정신은 백지 상태다. 게다가 아직 발표 후 가슴 벅찬 흥분도 가라앉지 않은 상태라 아마 지금 누가 와서 과자 줄 께 따라 가자 하면 진짜 따라갈지도.



자 그럼 이쯤 해서 조금 심도 있게 이번 세션에 대해 이야기해보자면 자바 플랫폼의 신기능은 한마디로 "고객이 요구하는 모든 것"이라고 말하고 싶다.



오늘날 고객은 맞춤형 서비스를 원한다. 그렇다면 VM(Java Virtual Machine)도 맞춤형으로 내가 원하는 사항만 선택할 수 있어야 하지 않을 까.(JDK6u10) 그건 프로그램을 개발해서 배포할 때도 역시 같은 요구 조건이 될 수 있다.(Java Module Systems) 이왕에 맞춤형을 지원하는 거라면 개발 단계에서도 예전 처럼의 하드코딩(일명 날코딩)은 이제 그만 졸업해야 하지 않나. 남들은 컴퓨터로 디자인하는 데(Swing Application Framework), 본인은 종이 냅킨 한구석에 스케치하고 있다면 이거야 말로 시대를 역행하는 일이지 않을 까 싶다.



나의 첫 사수는 모든 편집기는 vi 로 통한다고 신앙으로 믿고 계신 분이었다. 모든 코드를 손으로, 모든 키워드는 본인의 머리 속에서 라고 철저히 믿었던 그 분조차 어느 날 홈페이지는 나모 에디터를 쓰시는 걸 보고 아, 시대가 변하면 사람도 변하는 구나. 라고 웃었던 기억이 있다.



어차피 바뀔 세상이라면 두려워하지 말고 과감히 돌진하는 게 오히려 맘 편하지 않나, 더구나 나의 이야기를 적극적으로 들어주겠다는 커뮤니티 들이 있는 데.



자바 6 버전과 7 버전이 모두 OpenJDK (http://openjdk.java.net/) 로 진행하며 썬의 자바 SE 구현이 과연 어떻게 진화해야 하는 지를 보여주고 있다고 해도 과언이 아니다. 보다 많은 자발적 참여자들로 인해 서로의 의견이 조율되어 가며 그들이 원하는 요구사항들을 긍정적으로 반영하는 이러한 개발 커뮤니티와의 공조야 말로 웹 2.0 이라고 하는 현재 시장 요구에 기본부터 철저히 부합한 접근법이라고 할 수 있을 것이다.



썬의 이러한 오픈화 정책은 오픈솔라리스(OpenSolaris), 오픈 데이터베이스(Mysql), 오픈스토리지, xVM, 오픈IDE인 넷빈(NetBeans) 등 그 분야는 그야말로 방대하다고 하겠다.



이번 썬 테크 데이 2008을 위해 방한한 리치 그린(Rich Green) 썬 소프트웨어 부문 수석 부사장의 인터뷰에서도 보여지듯 "기업은 심플한 인프라 관리를 위해 오픈 소스 소프트웨어에 더욱 관심을 가지게 될 것"이며, "이를 위해 썬은 소프트웨어 개발자 지원을 강화하고 오픈 소스 소프트웨어 커뮤니티를 더욱 육성해나가겠다"고 강조했었다.



그리 크지 않던, 그래서 항상 썬의 세미나 전 준비 동영상에서 Garage(왜 모두들 창고에서 시작하는 지 모르겠지만)에서 시작했던 썬의 자그마한 태동이 태풍이 될 수 있었던 가장 큰 이유가 바로 이러한 과감한 개방(open)에 대한 긍정적인 기업 마인드 때문이지 않을 까 싶기도 하다.



커뮤니티를 통한 오픈화 정책은 개발자의 가장 가까운 자리에서 직접 소리를 듣고자 하는 썬의 전략이고 이런 수많은 오픈 프로젝트들은 썬과 글로벌 환경하의 개발자들이 한자리에 모여 협력을 통해 기술을 발전시키는 장을 마련해주고 있다.

언어와 플랫폼의 날카로운 경계가 나날이 무뎌지고 있는 요즘, 이런 것(예를 들어 '클로저' :-))까지 자바가 하냐는 비판도 일부 없지는 않지만, 그거 역시 시장의 요구라면, 기꺼이 제공해야 하지 않을 까 하는 의견 역시 커뮤니티를 통해서였다.



커뮤니티의 강국, 인터넷의 대국, 전세계 유래를 찾아볼 수 없을 만큼 뛰어난 인프라와 전세계 자바 개발자 마켓 쉐어에 있어 결코 빠지지 않는 뛰어난 개발자들이 포진한 한국이야말로 이런 썬과 가장 잘 맞는 나라가 아닐까 싶다.



오픈(open)은 나의 노하우를 잃어버리는 게 아니다.
오픈은 나의 최고(best)를 보다 다양한 시각에서 봐줄 수 있는 또 다른 참여자를 이끌어오는 일이며, 이 멋진 친구들과의 나눔을 통해,
오픈은 나만의 최고가 아닌 진정한 최고, 즉 best of best 를 만들어 낼 수 있는 가장 근사한 방법이다.



끝~

Netbeans-korean by 강여사 - September 17, 2008 05:45 AM
Sun Tech Days 2008 Seoul!

Sun Tech Days 2008 Seoul!

공지 및 행사안내 2008/09/11 15:21

썬마이크로시스템즈의 전세계 개발자 컨퍼런스인 Sun Tech Days가 서울에 상륙합니다.
국내 개발자들의 Java와 OpenSolaris를 비롯한 오픈 소스 기술을 개발시켜 주는 Sun Tech Days 2008 Seoul!
전문가들로부터 최신 지식과 기술을 습득하고, 다른 개발자들과 네트워크를 만들고,
커뮤니티 안에서 정보를 공유함으로서 귀하의 능력을 향상시킬 수 있는 최고의 기회입니다.




Sun Tech Days 2008 본 행사에 참석하신 분들께는
메신저백, 티셔츠, 듀크 스트레스 토이, 열쇠고리 등 다양한 기념품을 드립니다.
또한 행사 종료 후에는 경품 추첨을 통해 다양하고 푸짐한 선물을 드립니다.

Netbeans-korean by 강여사 - September 07, 2008 11:47 AM
넷빈 6.1에서 JavaFX 사용하기 (basic) - blue box

JavaFX... ㅋㅋ

RIA 구현을 위한 썬 쪽의 공략책이랄까요..ㅎ
어느 세미나에서 JavaFX 의 타겟이 아도비의 FLEX냐, 아니면 실버라이트냐 라고 묻던 분이 계시던데..
답변은 둘다 아니다 였습니다만..ㅎㅎ

아무튼 아직 한국에선 모바일쪽에서 가장 관심이고 데스크탑쪽에서는 이제 슬슬 인듯하지만 요근래 본사 사이트쪽 작업들은 활발해 지는 걸 보면 이것도 손을 대야 하나..싶은거이..쩝.. 뭐 원래 저는 이런 화려한 거 좋아라 합니다. 플래시 자체도 어지간한 디자이너 저리가라 할만큼 해볼만큼 해봤으니..완죤 노가다..--;

각설하고 JavaFX 홈사이트는 여기 입니다. 관련내용은 사이트에서 함 보시고 http://javafx.com/
javaFX 관련 넷빈 사이트는 여기 http://javafx.netbeans.org/

뭐 아시는 분들은 아시겠지만 아직 책이나 튜토리얼들도 그닥 맘에 드는게 없다는..--; 쩝 차츰 나아지겠죠.

해서 이번에 해볼거는 일단 넷빈 6 IDE 에 JavaFX 관련 플러그인 설치하고 베이직한 거 만들어 보고 이벤트까지 걸어보고 정도를 다뤄볼 까 합니다. 그리고 데모로 제시되는 날씨 정보 (야후 웹 서비스 사용)로 javaFX 현황도 보고.. 정도

그럼 시작합시다.

우선 플러그인 설치를 위해 다음을 선택합니다.
위의 Tools - Plugin 클릭



팝업창이 뜨고 잠시후(인터넷으로 불러오기 때문에 시간 걸립니다) 메뉴들이 보이면, 위의 탭을 Available Plugins 으로 선택합니다.
그중 JavaFX 관련 사항을 받습니다. 현재(2008.09.06 일자)로는 3개군요.
모두 체크후 아래 Install 버튼을 눌러 진행합니다.



제시되는 대로 진행시키시면 됩니다.
next



동의 (체크) next


넷빈 재 시작 finish



자동으로 새로 시작된 넷빈 IDE 에서 새로운 프로젝트 카테고리를 보면 JavaFX 가 있습니다.
File - New Project - JavaFX
javaFX Script 어플리케이션을 선택하고 진행
next



이름은 적당히 (그냥 나타나는 대로 줬습니다. 다시 귀차니즘의 발현인가..헐..)
경로는 알아서
메인체크되어 있어서 Main.fx 로 뜨겠네요.
Finish



그럼 왼쪽에 Main.fx 가 가운데 창에 Main.fx 모습이 그리고 오른쪽에 JavaFX 관련 컴포넌트들이 보입니다.



여기서 중간에 view 가 보이는 제 그림은 마우스의 위치에 있는 Preview 를 Enable 해서 그렇습니다. (눌러보시면 압니다 ^^;)
JavaFX 작업은 이렇게 Preview를 거의 실시간처럼 보면서 진행할 수도 있습니다. (에러나면 바로 프리뷰대신 에러메시지가 뜨죠..--;)

그럼 아래 편집창에 와서.. 편집창에서 하나씩 코드 작성을 하셔도 됩니다. (매뉴얼로 javaFX를 짜는 방식).

벗드..최대한 노가다를 안하고픈 강여사..--;

오른쪽의 파레트에 보시면 작성하실 수 있는 컴포넌트 어지간한건 다 있습니다.
우선 Applications 카테고리의 Frame 를 선택하고 마우스로 클릭해서 왼쪽 주석 아래(//place your code here) 놓습니다.
그럼 일련의 코드 작업이 진행됩니다.



말그대로 JavaFX 창(프레임) 작업입니다.
만들어진 코드를 부분부분 원하시는대로 수정하시면 됩니다.
저는 타이틀을 "MyApplication" 대신 "Blue Box" 라고 줬습니다.

그럼 내용을 채워넣어야 하는데 아래 state의 content 안에 넣으시면 됩니다.
(이 작업시 바로 엔터키가 안 먹더군요. 왜그런지는 아직 파악안해봤고 처음 묶여지는게 stage 단위였던지라 그 아래
} 의 칸을 띠우고 다시 하나씩 } 칸 띠우고 ] 칸 띠우니 되더군요. (뭐 해보시면 무슨 말인지 아실듯)

덧. 이유를 아시는 분은 답글 부탁드립니다~~ ㅎㅎ

일단 content : [ ] 안에 넣고자 하는 내용을 역시 파레트에서 드래그해서 넣을 예정입니다.
선택한 내용은 Basic Shapes 카테고리의 Rectangle
파레트에서 선택한후 마우스로 드래그해서 [ ] 안에 넣습니다. 그림 참조



그런 다음 Color.BLACK 을 Color.BLUE 로 바꿨습니다. 이러한 칼러 참조는 역시 파레트에 보시면 Colors 카테고리를 열어 보시면 있습니다.

이제 Preview를 다시 켜보면 (위의 Preview 버튼 클릭)
지금 작성한 파란 박스가 보입니다.



그럼 파란 박스에 글씨도 첨가해보죠.
아까 content 가 배열로 처리되어 있기 때문에 Rectangle 뒤에 , (쉼표) 를 주고 이번엔 text 요소를 추가 합니다.



역시 오른쪽 파레트에 Basic Shapes 의 Text 를 마우스 드래그해서 쉼표 아래 놓습니다.
색은 원래 BLACK 인것을 아쿠아마린 으로 줬습니다.
아쿠아마린 색으로 HelloWorld 가 보이는 군요..흠..^^



그럼 이제 이 게시물의 마지막인 이벤트 상황을 주도록 하겠습니다.



이거할때 느낀건데 하도 fix import 에 익숙해져서리 이 자동임포트가 안되니 엄청 불편하더군요..--;



현재 javafx 플러그인으로는 아직 자동 임포트 메뉴는 없습니다. 파레트에서 끌고 오면 해당 임포트는 알아서 해줍니다만, 소스 작업을 수동으로 하게되면 필요한 임포트는 반드시 직접 명시해야 합니다.



다음 작업은 핑크색 박스를 하나 만들고 그게 마우스에 따라 움직이도록 할 예정입니다. 해서 필요로 하는 임포트는 다음과 같습니다.



import javafx.input.MouseEvent;
import javafx.scene.transform.Translate;
import javafx.scene.Group;


그리고 마우스의 x y 좌표 관련 변수 세팅



var mouseX : Number = 100;
var mouseY : Number = 100;

파레트의 Actions 카테고리에 보면 onMouseMoved 가 있습니다.

클릭해서 드래그한후 fill: Color.BLUE 아래 놓습니다.

그럼 코드가 만들어지는데 여기다 직접 작업을 합니다. 작업할 내용은 다음,
-------------------------------------------------------------------------
onMouseMoved: function( e: MouseEvent ):Void {
mouseX = e.getX();
mouseY = e.getY();
}
-------------------------------------------------------------------------
파란 박스안에서의 마우스 움직임에 따라 x y 좌표를 가져옵니다.

그런 다음 이 파란 박스의 마우스 x y 좌표를 따라 움직이는 분홍 박스를 만듭니다.
역시 모두가 content 의 배열처리되니까 각각 쉼표(,)로 분리하시고
-------------------------------------------------------------------------
,

Group {
transform : Translate { x : bind mouseX - 25, y : bind mouseY - 25 }
content :
Rectangle { width : 50, height : 50, fill : Color.PINK }
} ,

-------------------------------------------------------------------------
작성이 완료되면 저장(save all) 하고 실행합니다. (뭐 실행하기전에 preview 에서 해보셔도 되지만)

실행 결과, 파란 박스에서 마우스를 움직임에 따라 분홍색 박스가 움직이는 걸 보실 수 있습니다.




(그럼 이 예제를 직접 하신 분들께 아주 간.단.한 질문을 드리겠습니다. ^^

질문 1.

현재 마우스의 체크 범위는 파란 박스가 경계입니다. 그럼 fx 창 전체로 분홍색 박스를 움직이게 하려면 어떻게 하면 될까요?

질문 2.

프리뷰와 실행창에는 엄연히 차이가 있습니다. 현재 파란 박스 경계 밖은 하얀색입니다.
그럼 파란 박스 경계 밖의 색을 노란색으로 채우려면 어떻게 하면 될까요?

답은 해결하고 보면 의외로 쉽습니다. ^^

여러분은 에러에 대해 얼만큼 투자 하십니까?



시간적 측면이나 노력 측면이나..



폰트 세팅시 보이지도 않는 빈공백(null) 에러에 일주일을 보낸적도 있습니다.

하지만 그게 낭비라고 생각하진 않습니다.

그러한 에러에 대한 시간들이 저의 오늘날의 밑바탕이 된 건 분명하니까요.



세상에 공짜는 없습니다.



수고하셨습니다. ^^

Netbeans-korean by 강여사 - September 02, 2008 02:15 PM
JDK 6 - 09: Splash Screen : HelloSplash

JDK 6 - 09: Splash Screen (스플래시 스크린) 사용하기 - 01: HelloSplash

JDK 6 버전의 new feature 중 하나입니다. 시리즈 별로 올라갈 텐데.. 언제 다 올라갈지는 오직 신만이 아신다는... ^^;;

스플래시 스크린은 간단히 말하면 넷빈 시작하면 중간에 퍼억~ 뜨는 그림 보셨을 겁니다. 그겁니다. ^^
간단히는 그림만 띠우는 수준부터 프로그래시브(상태바) 표시까지도 가능하지요. ^^

자바 프로그램을 완벽 로딩하기까지 멀뚱~히 있던 지루함을 달래주기엔 딱입니다. ㅋ

뭐 언제나 그러하듯이 저의 접근법은 넷빈을 최대한으로..(인즉은 '노가다를 최대로 줄여보자'..--;) 입니다.

그럼 시작하죠.
new project - java - java application
next



프로젝트 이름은 splash_test 로 줬습니다. (뭐 적당히 알아서 주시면 됩니다)
경로도 역시 적당히 알아서
finish



최종 결과 프로그램 화면이 GUI 이기 때문에 JFrame Form 을 이용해서 최종 프로그램 샘플을 만들겠습니다.
프로젝트에서 오른쪽 클릭 - new - JFrame Form



클래스 이름은 HelloSplash
패키지 이름은 test
finish



그럼 디자인 창이 나오는데 이 JFrame 에 제목을 넣고 싶으면 오른쪽 중간에 JFrame- Properties 에 보시면 title 이 있습니다.
거기에 적당히 넣으시면 됩니다.
저는 Splash Test 라고 줬습니다.



이제 디자인을 할 차례인데 뭐 간단히 라벨 작업만 할 예정입니다.
파레트에서 Label 를 선택하고 디자인창의 적당한 곳에 놓습니다.



그런 다음 적당한 문구를 넣고.. 저는 Did you see Splash Screen? :-) 이라고 줬습니다.
그런 다음 JFrame 사이즈를 적당히 줄여 그림과 같이 만들었습니다.
저게 나중에 최종 프로그램으로 뜰 모습입니다.



자 그럼 이제 스플래시를 동작시키기 위해 소스부분에 적절한 처리를 하겠습니다.
Source 탭을 눌러 아래 run() 메소드 아래에다 적절한 타이밍 작업을 합니다.

======================================================================

try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}

======================================================================


라고 줬습니다. 저 시간만큼 지연되겠군요. ^^

그런 다음 스플래시로 사용할 이미지를 프로젝트 폴더에 탐색기를 사용하여 넣습니다. (넣고난후 넷빈의 Files 탭을 눌러 확인해 보실 수도 있습니다.)

이때 그림의 경로가 문제인데, 그림을 넷빈에서 실행시키고자 할 때에는 프로젝트 바로 아래 두셔야 정상동작합니다. 그러나 이것만 하게되면 나중에 배포판(dist)를 만들경우 그림이 들어가질 않죠. 해서 src 폴더 아래에도 두시게 되면 배포판을 만들 경우 그림이 자동으로 들어갑니다. src 에 넣을 경우 그림은 default package 아래 놓이게 되겠죠.





그럼 이제 스플래시를 구동시킬 vm 옵션처리를 하겠습니다.
프로젝트에서 오른쪽 마우스 클릭 - properties 클릭



Run 카테고리에서 메인 클래스를 찾아 넣고(작업한 클래스: test.HelloSplash 가 되겠군요) browse 버튼을 누르면 팝업창이 뜨고 찾아 OK 하면 됩니다.



VM 옵션에 다음과 같이 적습니다.

-splash:splashtest_350W.gif

OK



그럼 이제 해당 파일을 실행(Run file)하겠습니다. (파일차원으로 실행하시거나 아니면 프로젝트 run 하셔도 됩니다)



아래 그림에 있는 DUKE 이미지가 바로 스플래시 스크린으로 지정한 이미지 파일입니다. 저게 한참을 보이다 최종 프로그램이 보여지면 자동 없어집니다.



아까 작성한 최종 GUI 프로그램입니다.



이게 스플래시의 베이직입니다.

수고하셨습니다. ^^

Netbeans-korean by 강여사 - September 02, 2008 01:37 PM
넷빈 6.1에서 웹서비스보안(usename auth and symmetric key) 적용하기 - 01

음..세미나때 핸즈온랩으로 구성했는데 결과가 음.. ^^;;

나중에 하면서도 이야기하겠지만 글래스피시(glassfish v2)에 버그들이 드글드글 합니다요..에혀.. 그래서 glassfish v3로 빨리 옮겨가는 건가..원.. 아무튼.. 버그최대한 무시하고 사는데 웹서비스 보안쪽으론 특히나 이노무 버그들이 문제도 되는군요..--+

우짰든 하는 방법이야 뭐..알고 있다가 버그 수정된 거에서 돌리면 되죠..--; (그러면서 버그 리포트에는 글 안올린다는..쿠헐헐..뭐 버그 리포트 중 선정되면 예전에 워크스테이션 준적도 있었습니다. 벗드..전 조용히 사는게 낙인 사람인지라..)

일단 게시물의 시나리오는 다음과 같습니다.

웹 서비스 HelloWS를 만들고 거기에 username authentication and symmetric key 암호 알고리즘을 적용시킬 예정이고 이때 전송되는 request 와 response를 보도록 하겠습니다.

시작하죠.

new project - web - web application



프로젝트 이름: HelloServer
경로는 알아서
next



서버는 GlassFish v2
나머지 기본으로
finish



이제 만들어진 프로젝트에서 웹서비스를 만듭니다.

프로젝트에서 마우스 오른쪽 클릭
new - web service 클릭



웹서비스 이름은 HelloWS 로 줬습니다.
패키지는 server 로.
finish



그럼 metro 의 작업으로 디자인 창이 보입니다 (뒤에 파란색으로 보이는 거)
거기서 add operation 버튼을 누르면 팝업창이 뜹니다.
팝업창에서 웹서비스 메소드에 대한 작업을 진행합니다.

오퍼레이션 이름: sayHello
리턴값은 그냥 스트링 그대로
파라미터의 오른쪽 add 버튼을 눌러 매개변수를 입력합니다.
이름은 name 으로 (그림 참조)
OK



일련의 코드는 위의 설정으로 자동 생성되지만 코드에서 처리할 부분이 있습니다. Design 옆의 Source 탭을 눌러 소스부분을 편집기에 보이도록 한 후 return null 대신 다음 내용을 작성합니다.

return "Hello " + name;



그럼 나중에 sayHello 메소드 결과가 Hello 와 인자로 넘어간 name 이 찍히면 정상입니다.

프로젝트의 웹 서비스 디렉토리 안에 HelloWS 에서 마우스 오른쪽을 클릭하면 Edit Web Service Attributes 를 클릭합니다.




다음과 같은 팝업창이 뜨는데 여기서 웹 서비스 보안 알고리즘을 처리합니다.

Secure Service 를 체크하고
보안 알고리즘을 선정하면되는데 (드랍다운메뉴를 누르면 여러 알고리즘이 있습니다) 그 중 username authentication and symmetric key 를 선택하도록 하겠습니다.
그리고 키저장소 등등을 위해 다른 세팅도 가능한데 그냥 Use Development default 체크된대로 쓰도록 하겠습니다. (원래 썬 엔지니어 시연에서는 이걸 바꾸라고 했는데 바꾸니 오히려 더 안되더군요..쩝...되는 쪽으로 진행합니다. 6--;;)



그림처럼 하고(체크2개) OK

웹서비스 서버 프로그래밍이 끝났습니다. 서버에 올려야죠.
deploy



그럼 다음은 웹 서비스 클라이언트 프로그래밍을 하도록 하겠습니다.

계속...

Netbeans-korean by 강여사 - September 02, 2008 01:37 PM
넷빈에 대해서 (About Netbeans) 정리 - 2















Netbeans-korean by 강여사 - September 02, 2008 01:37 PM
넷빈 6.1에서 웹서비스보안(usename auth and symmetric key) 적용하기 - 02

그럼 웹서비스 클라이언트 프로그래밍을 시작하도록 하겠습니다.

new project - web - web application
next



프로젝트 이름 : HelloClient
next



서버는 glassfish v2
다른 건 기본값 그대로
finish



그럼 만들어진 HelloClient 에서 웹 서비스 클라이언트 프로그램을 합니다.
프로젝트에서 마우스 오른쪽 new - web service client 클릭



WSDL 위치를 선정하는데 현재 HelloServer 가 deploy 되어 있기 때문에 Project 에서 browse 버튼을 눌러 적용시키도록 하겠습니다.
browse 버튼을 눌러 팝업창에서 HelloServer 안의 HelloWS 를 선택합니다.
OK



다음 그림처럼 나오면 Finish



아마 아래쪽에 진행도가 계속 창으로 제시됩니다. wsimport 등등..



그럼 불러와진 웹서비스 메소드를 코드작성을 위해 index.jsp 페이지의 Hello World 아래 적당히 칸을 비우고..

왼쪽의 Web Service References 아래 HelloWSService - HelloWSPort - sayHello 를 선택하여 그대로 Hello World 아래 드래그 하면 일련의 코드가 자동생성됩니다. (또는 편집기 Hello World 아래 빈칸에서 마우스 오른쪽을 누르면 web service client references - call web service operation 을 클릭하셔도 같습니다)

자동생성된 코드를 보면 name 이 비어있습니다. 거기에 적당히 단어를 입력하겠습니다. JAVA 라고 줬습니다.



이제 클라이언트 보안 설정을 유도할 차례입니다. 역시 아까와 동일하게 HelloWSService 에서 마우스 오른쪽을 누르면 Edit Web Service Attributes 메뉴가 있습니다. 클릭하면 팝업창이 뜹니다.



팝업창에 보시면 Quality Of Service 탭의 Security 가 있습니다. 맨처음 상태는 텍스트필드에 아무것도 없는 상태입니다.



여기서 Use Development default 를 체크하면 (간혹 체크가 안되는 버그가 있더군요.. 체크만 안나타날뿐 아래 wsituser 와 비밀번호가 들어가는 건 보입니다만..--; 아무튼~) 됩니다.
OK



이제 클라이언트 프로젝트를 deploy 하고 실행하면 됩니다.
deploy



run(실행)



웹브라우저에 result = Hello JAVA 가 나타나면 정상적으로 동작하고 있는 상황입니다.



다른 보안 알고리즘등도 비슷한 방법으로 적용하시면 됩니다. 그건 시간 나는대로 캡처해서 다음 기회에..^^;;

수고하셨습니다.

Netbeans-korean by 강여사 - September 02, 2008 01:37 PM
넷빈에 대해서 (About Netbeans) 정리 - 4











Netbeans-korean by 강여사 - September 02, 2008 01:37 PM
넷빈에 대해서 (About Netbeans) 정리 - 3















Netbeans-korean by 강여사 - September 02, 2008 01:37 PM
넷빈 6.0 에서 DataSource, ConnectionPool 사용하기

음.. 넷빈 5.5 와는 달라져서리..정리차 캡처 이미지 올립니다.
(넷빈 5.5 때가 오히려 더 편했는데..ㅠㅠ 저는 자동이 좋습니다.. 쩝.. 이건 다시 안 만드려나..혹시 넷빈 5.5 때처럼 register 하는 방법 아시는 분 답글 달아주십시오)

일단 이번 예제는 DataSource 와 Connection Pool 그리고 SQL 쿼리(파레트에 있던 거) 물어보신 2분 모두에게 도움이 되겠네요.

게시물 진행을 보시면 아시겠지만 저야 넷빈을 최대한 활용이 모토인지라 DataSource와 Connection Pool 부분은 glassfish 를, 그리고 SQL 쿼리는 JSTL 를 사용하고자 합니다. 이 이외의 방법은 각자 알아서..




우선 웹프로젝트를 만듭니다.

New Project - Web Application

Next



이름은 각자..

서버는 glassfish 로 선택

Finish





그럼 이제 glassfish 에 적용할 Datasource 와 connectionPool 관련사항을 만들어 봅시다.

new - other




카테고리에 보시면 GlassFish 가 있습니다.

(넷빈 5.* 에서는 Sun Resources 항목입니다)

에서 File Types 는 JDBC Resource 로 선택합니다.

Next

Create New JDBC Connection Pool 을 선택하고

아래에 적당한 JNDI 이름을 줍니다.

오라클 디비를 선택할 예정이고해서 jdbc/oracle 이라는 이름으로 만들었습니다.

Next





프로퍼티는 그냥 패스~

커넥션 풀에 대한 이름역시 오라클을 반영 oraclePool 이라는 이름으로 만들었습니다.

그리고 Services 에 미리 만들어서 연결해놓은 오라클 커넥션을 잡습니다.

(이부분은 이미 여러번 설명했던 지라 각자 알아서..)

Next

오라클의 데이터소스 클래스 이름 세팅하고 (알아서 잡아줬던가..아무튼..계속)

Next



역시 변경하고픈 사람은 하고 귀찮으면 그냥 그대로..Finish



그럼 project - Server Resources 아래에 sun-resource.xml 파일이 생성됩니다.

(넷빈 5.* 에서는 이 대목에 2개의 파일이 만들어지고 그 상태에서 서버가 실행되어 있다면 바로 register 가 가능했습니다만..
메뉴가 없어졌습니다. ㅠㅠ)

그럼 서버로 가서 직접 하는 수 밖에..

Services 창으로 와서

Server - Glassfish 를 실행시키고 난후

view admin 을 택해서 어드민을 동작시킵니다



비밀번호를 넣고..
Login



Resources 에 보면 JDBC 가 있습니다.

거기서 좀전에 작업한 내용을 맞춰 등록시킵니다.



Conection Pool 메뉴를 가서 현재 작성된 내용 리스트 위에 있는 New 를 선택합니다.

이름은 아까 oraclePool 로 줬으니 그걸로..

Resource Types 은 javax.sql.DataSource

vendor 는 oracle 로

Next



그럼 역시 여러 해당사항의 설정이 뜨고 아래 보시면 properties 가 있습니다.

여기서 필요한 건

URL
user
password

URL 에는 JDBC URL 을
user 에는 scott
password 에는 tiger

나머지는 알아서 채우시고..



Finish




그럼 이제 JDBC Resource 를 등록하죠.

역시 JDBC Resources 를 누르면 현재 있는 데이터리소스 리스트와 함께 new 메뉴가 있습니다.

이름은 jdbc/oracle 로 주고 진행

이 데이터소스의 pool 이름은 oraclePool 선택

위의 save 버튼을 눌러 해당사항을 모두 저장합니다.





그러면 현재 세팅한 내용을 jsp 에서 불러오면 되겠군요..

index.jsp 에서 다음의 내용을 추가합니다.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>

url="jdbc:oracle:thin:@localhost:1521:XE"
driver="oracle.jdbc.pool.OracleDataSource"
user="scott" password="tiger"/>

그후 SQL 태그를 쓰면 되죠.




Hello World! 아래 적당히 글을 적고..

데이터소스, 커넥션풀, 앤드 SQL 쿼리들..이라고 적었습니다. 6--; (참 멋대가리 없기는..쩝)

그런 다음 파레트 아래의 Database 에 있는
DB Report 를 써봅시다.

적은 글 아래쪽으로 DBReport 를 드래그하면 팝업창이 뜨는데

DataSource 에다 위에 이미 세팅한 데이터소스의 var 를 변수처리 하고 ${datasource}

아래에 원하는 쿼리를 적습니다.

select * from emp

그럼 그 내용을 리포트 해주는 쿼리가 자동생성되죠.

이제 실행하면 됩니다.

Run




웹브라우저에 표가 보이시면 맞습니다.



머 일단 여기까지..

이외 다른 응용 방법들도 많습니다.

수고하셨습니다. ^^

Netbeans-korean by 강여사 - September 02, 2008 01:37 PM
넷빈에 대해서 (About Netbeans) 정리 - 1

원 저작물은 썬 에반젤리스트 조인영 씨의 2005-6 Seoul, group meeting PDF 와 기타 세미나 자료들을 조합해 넷빈에 대해 정리해봤습니다.

내용은 넷빈의 정의 및 package 특성, 그리고 넷빈(netbeans)과 이클립스(eclipse) 비교 입니다.















Netbeans-korean by 강여사 - September 02, 2008 01:37 PM
넷빈 6.0 에서 자바빈(JavaBean: DAO) 만들때 TIP (fix import , refactor, insert code ..)

사실 이걸 게시물로 만들 생각은 없었는데 의외로 모르시는 분들이 많더군요..^^;;

해서..사용법 팁 차원에서..

DAO 의 자바빈은 대개 setter/getter 가 주인 자바클래스 입니다.

만들때 여러가지 편리한 도구들을 이용하시면 보다 손쉽게 만들어지죠.

이미 알고 계신 refactor의 encapsulation fields 외에 기타도 알아봅시다.

그럼 일단 자바클래스 만들기

new - java class

이름은 UserBean 으로 패키지는 angel 로 줬습니다.

next




넷빈 6.0 의 기본 템플릿에는 이전과는 달리 default constructor 를 만들지 않더군요.. 왜 없앴는지 원.. 뭐 템플릿을 수정하면 전처럼 만들어집니다만, 일단 없는 상태(기본상황)라고 가정하고 진행합니다.

사용할 여러 변수들 세팅.. 일부러 여러 자료형을 선택했습니다

int id;
String name;
String pass;
Double balance;
Date regDate;

그럼 Date 때문에 에러가 뜨죠.

뭐 앞에 빨강 버튼을 눌러서 해결해도 되고, 오른쪽 마우스를 눌러 해결해도 됩니다.

저는 오른쪽 마우스를 눌러 fix imports 선택




Date는 여러 클래스가 있기때문에 팝업창으로 개발자에게 선택권이 주어집니다. (만약 하나뿐인 클래스면 안물어보고 바로 코드에 import 반영을 하죠)

ok




그럼 setter/getter 를 만들어야 하니 역시 마우스 오른쪽

refactor - encapsulated fields 선택




원하는 변수들을 클릭으로 잡아줍니다.

그럼 해당 변수로 naming convention 을 반영한 setter/getter 가 제시됩니다.

아래에는 해당 변수에 대한 private 처리와 메소드에 대한 public 처리가 역시 제시되구요.

refactor 버튼을 누르면 이전과는 달리 바로 코드에 반영됩니다.




그럼 이글을 올리게된 생성자를 만들어 보겠습니다.

생성자의 자동 생성은 insert code 라는 메뉴를 이용합니다.

위쪽에 보시면 source 항목아래에도 제시되고,

마우스 오른쪽을 누르시면 insert code 라는 메뉴가 보입니다. (단축키는 Alt+INsert)




그럼 Generate 항목아래

Constructor 가 보입니다.

누르시면 코드에 작성된 변수들이 보이는 팝업창이 뜹니다.

이떄 어떠한 클릭없이 바로 ok 하면 디폴트 생성자가 만들어 집니다.

디폴트 생성자외에 다른 생성자를 만들때에는 다시 한번 insert code 를 진행후

해당 변수들을 클릭하면 반영된 생성자가 만들어집니다.




해당 변수들을 클릭하면 반영된 생성자가 만들어집니다.
모두 클릭후 만들어진 생성자를 확인하겠습니다.




디폴트 생성자와
모든 변수를 인자로 받아들이는 생성자를 각각 만들었습니다.




그럼 이만 ^^

Netbeans-korean by 강여사 - September 02, 2008 11:48 AM
JDK 6 - 08: Scripting : MultiScopes

스크립트 변수 예제에서, 스크립트 전역 변수로 어플리케이션 객체를 표현하는 방법을 봤었다. 스크립트를 위한 다중 전역 “영역”을 표현할 수 있다. 단일 영역은 javax.script,Bindings의 인스턴스다. 이 인터페이스는 java.util.Map에서 파생되었다. A scope a set of name-value pairs where name is any non-empty, non-null String. 다중 영역은 javax.script,SriptContext 인터페이스에 의해 지원된다. 디폴트로, 각 스크립트 엔진은 기본 스크립트 context를 가진다. 기본 스크립트 context는 소위 “ENGINE_SCOPE” 라고 불리는 적어도 하나의 영역을 가진다. 스크립트 context에 의해 지원되는 다양한 영역은 getScopes 메소드를 통해 사용가능하다.

=================================================================================
package test;

import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.SimpleScriptContext;

public class MultiScopes {

public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");

engine.put("x", "hello");
// print global variable "x"
engine.eval("println(x);");
// the above line prints "hello"

// Now, pass a different script context
ScriptContext newContext = new SimpleScriptContext();
Bindings engineScope = newContext.getBindings(ScriptContext.ENGINE_SCOPE);

// add new variable "x" to the new engineScope
engineScope.put("x", "world");

// execute the same script - but this time pass a different script context
engine.eval("println(x);", newContext);
// the above line prints "world"
}
}
=================================================================================

Netbeans-korean by 강여사 - September 02, 2008 11:37 AM
JDK 6 - 07: Scripting : RunnableImplObject

만약 스크립팅 언어가 객제 기반이거나 객체 지향이라면, 스크립트 객체에 스크립트 메소드에 의한 자바 인터페이스를 구현할 수 있다. 인터페이스 메소드를 위한 전역 함수 호출을 회피할 수 있다. 스크립트 객체는 인터페이스 구현자에 의한 “상태” 를 저장할 수 있다.

====================================================================================
package test;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class RunnableImplObject {

public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");

// JavaScript code in a String
String script = "var obj = new Object(); obj.run = function() { println('run method called'); }";

// evaluate script
engine.eval(script);

// get script object on which we want to implement the interface with
Object obj = engine.get("obj");

Invocable inv = (Invocable) engine;

// get Runnable interface object from engine. This interface methods
// are implemented by script methods of object 'obj'
Runnable r = inv.getInterface(obj, Runnable.class);

// start a new thread that runs the script implemented
// runnable interface
Thread th = new Thread(r);
th.start();
}
}
====================================================================================

Netbeans-korean by 강여사 - September 02, 2008 09:48 AM
JDK 6 - 05: Scripting : InvokeScriptMethod

만약 스크립팅 언어가 객체 기반(자바 스크립트와 같은) 혹은 객체 지향이라면, 스크립트 객체에 스크립트 메소드를 호출할 수 있다.

===================================================================================
package test;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class InvokeScriptMethod {

public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");

// JavaScript code in a String. This code defines a script object 'obj'
// with one method called 'hello'.
String script = "var obj = new Object(); obj.hello = function(name) { print('Hello, ' + name); }";
// evaluate script
engine.eval(script);

// javax.script.Invocable is an optional interface.
// Check whether your script engine implements or not!
// Note that the JavaScript engine implements Invocable interface.
Invocable inv = (Invocable) engine;

// get script object on which we want to call the method
Object obj = engine.get("obj");

// invoke the method named "hello" on the script object "obj"
inv.invokeMethod(obj, "hello", "Script Method !!");
}
}
===================================================================================

Netbeans-korean by 강여사 - September 02, 2008 09:41 AM
JDK 6 - 04: Scripting : InvokeScriptFunction

스크립트 함수와 메소드 호출하기

때때로 특정 스크립트 함수를 반복하여 호출하고자 할 때가 있다 – 예를 들어, 스크립트로 구현된 어플리케이션 메뉴 기능 등등. 여러분의 메뉴 액션 이벤트 핸들러 안에, 특정 스크립트 함수를 호출하길 원할 경우, 다음 예제의 자바코드로부터 특정 스크립트 함수를 호출하는 방법으로 사용하면 된다.

===============================================================================
package test;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class InvokeScriptFunction {

public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");

// JavaScript code in a String
String script = "function hello(name) { print('Hello, ' + name); }";
// evaluate script
engine.eval(script);

// javax.script.Invocable is an optional interface.
// Check whether your script engine implements or not!
// Note that the JavaScript engine implements Invocable interface.
Invocable inv = (Invocable) engine;

// invoke the global function named "hello"
inv.invokeFunction("hello", "Scripting!!");
}
}
===============================================================================

Netbeans-korean by 강여사 - September 02, 2008 09:41 AM
JDK 6 - 03: Scripting : ScriptVars

스크립트 변수(Script Variables)

여러분의 자바 어플리케이션에 스크립트 엔진과 스크립트를 embed 했을 때, 스크립트에 전역변수(global variables)로써 어플리케이션 객체를 원할 때가 있다. 이번 예제에서는 스크립트에 전역변수로써 어플리케이션 객체를 제시하는 방법에 대해 알아보자. 우선, 어플리케이션에 java.io.File 을 생성하고, 같은 이름의 “file”을 전역 변수로 처리할 수 있다. 스크립트는 변수(“file”)에 접근 가능하다 – 예를 들어, public 메소드 호출이 가능하다. 자바 객체, 메소드, 그리고 필드를 액세스하는 문법은 스크립트 언어에 의해 달라지는데, 자바스크립트는 대부분 “natural” 자바와 비슷한 문법을 가지고 있다.

==================================================================
package test;

import java.io.File;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class ScriptVars {

public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");

File f = new File("test.txt");
// expose File object as variable to script
engine.put("file", f);

// evaluate a script string. The script accesses "file"
// variable and calls method on it
engine.eval("print(file.getAbsolutePath())");
}
}
==================================================================

Netbeans-korean by 강여사 - September 02, 2008 09:05 AM
JDK 6 - 02: Scripting : EvalFile

스크립트 파일(File) 사용(Evaluate)

이번 예제에서는, java.io.Reader로 입력 소스를 읽어오는(accept) eval 메소드를 호출한다. Reader에 의해 읽혀진 스크립트가 실행된다. 이 방법은 파일, URLs 그리고 readers 로써 입력 스트림 객체로 랩핑된 자원들로부터 스크립트를 실행 가능케 한다.

------------------------------------------------------------------------------------
package test;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class EvalFile {

public static void main(String[] args) throws Exception {
// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code from given file - specified by first argument
engine.eval(new java.io.FileReader(args[0]));
}
}

------------------------------------------------------------------------------------

파일이름 "test.js" 로 주어진 스크립트 소스는 다음 내용으로 작성:

println("This is hello from test.js");

터미널에서 실행

java EvalFile test.js

Netbeans-korean by 강여사 - September 02, 2008 07:47 AM
JDK 6 - 01: Scripting : EvalScript

Examples - 01 : Hello World

ScriptEngineManager 인스턴스로 부터, getEngineByName 메소드를 사용, 자바 스크립트 엔진 인스턴스 요청. 스크립트 엔진에, eval 메소드는 자바스크립트 코드로 주어진 문장(문자열)을 수행하기 위해 호출된다. 예제엔 단순화하기 위해 Exception 핸들링은 하지 않았다. Javax.script API에 의해 컴파일 시/실행 시 오류 처리가 되며, 물론 원래 Exceptions은 적절히 핸들링되야 한다.
-----------------------------------------------------------------------------------
package test;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class EvalScript {

public static void main(String[] args) throws Exception {
// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code from String
engine.eval("print('Hello, World')");
}
}
-----------------------------------------------------------------------------------

Netbeans-korean by 강여사 - November 19, 2007 01:18 AM
넷빈 6.0 에서 Maven 사용하기 - install, basic - 01

음 저도 Maven 에 관심이 있던 터라 넷빈에서 사용하는 방법에 대해 올려보겠습니다.

일단 Maven 은 apache 프로젝트(http://maven.apache.org/)로 현재에는 버전이 2.0.7 인가 그렇던데,

넷빈이랑 붙이고 또 잘 돌아가려면 거기서 받아서 두루두루 연결하는 것도 하나의 방편이겠지만 걍 쓰려면 역시나 넷빈의 업데이트~ ㅋ

넷빈 6.0 에서는 기존의 update center 가 plug-in 이라는 메뉴로 바꿨으니 그것도 함 보도록 하죠. 겸사겸사.

(넷빈 5.0 이상부터 지원됩니다만 넷빈 6.0 대와 방법이 틀리기 때문에 여기 게시물에서는 넷빈 6.0의 방법으로 설명하겠습니다.

아래버전꺼는 다음에..)

넷빈 6.0 에서 Maven 을 쓰는 방법은 무진장 쉽습니다. 걍 업데이트만 해주면 끝~

Tools - Plugins 클릭



Plugin Manager 창에 두번째 탭을 보시면 New Plugins 가 있습니다.
거기서 Maven 을 클릭하고 아래 Install 버튼을 누르시면 됩니다.




설치하는 과정 그림입니다.

Next




약관에 동의..

I accept *** 에 클릭하고 Install 버튼 클릭




설치가 완료되면 Finish



이럼 넷빈 6.0 에서의 Mavel 플러그인이 추가 설치 됐습니다. --;

예전때와는 마~~니~~ 틀리죠. 6--;

그럼 계속해서 베이직 자바 프로젝트 부터 만들어 보겠습니다.

New Project




Maven 카테고리에서 Maven Project 를 선택

Next




우선 일반 자바 프로젝트부터 시작하죠.

맨 위의 Maven Quickstart Archetype 을 선택하고 Next



프로젝트의 이름을 정해주고( 역시나 걍 잡힌대로 썼습니다 저는..이노무 귀차니즘은..헐..)

Finish




그럼 뭔가가 두륵두륵 만들어지고 난 후 Source packages 를 열어보면 App.java 가 들어 있습니다.

Hello World 를 찍는 녀석이네요.

그럼 이걸 실행하면 되는데 이떄 메인 클래스 인식을 위해 프로젝트의 프로퍼티에서 작업을 하셔야 합니다.

프로젝트 - 마우스 오른쪽 - Properties - Run

으로 가시면 Main class 가 비어있습니다. 그 옆에 browser 버튼을 눌러서 지금 App (com.mycompany.mavenproject.App)를 선택하신 후(Select Main classes) OK




머 그냥 Run 해도 빌드하겠지만 build 해주고 Run 했습니다.




Run 하시면 아래 출력창으로 Hello World 가 보입니다.

물론 Maven의 일련의 절차를 다~~ 거친 후에. ^^;




결과화면




일단 그림이 더 안 올라가서 여기까지.

웹 어플리케이션은 다음 게시물에..

Maven 에 대해 알고 싶으신 분은 IBM 문서나 기타 서핑하시면 자세히 나옵니다.

그럼 나머지 연휴 시간 잘 보내세요~ ^^

Netbeans-korean by 강여사 - November 19, 2007 01:17 AM
넷빈 6.0 에서 Maven 사용하기 - web application - 02

아래에 이어서 올립니다.

역시 방법은 비슷~

New project




역시 Maven 에서 Maven Project 선택후 Next




이번엔 웹어플리케이션이니 두번째인 Maven WebApp Archetype 선택후 Next




프로젝트 이름 적당히 주시면 됩니다. (이번엔 모처럼 귀차니즘 탈피 끝에다 web 이라고 적어줬습니다. 오호호. 머 걍 놔두고 1,2, 이렇게 이름 붙이는 대로 써도 됩니다)

Finish




역시 뭔가 두룩두룩 돌아가고 나중에 index.jsp 가 나타납니다.

(첫줄에 서블릿 패키지가 없다고 징징 거리던데..음.. 머 걍 돌렸는데 돌아가길래 왜 그런지 안 찾아봤습니다. --; 아시는 분은 답글~)

Run 하시면 브라우저가 뜨고 역시 Hello World! 가 출력됩니다.





결과화면




이상입니다.

Maven 을 넷빈에서 쓰시고자 할때에는 버전에 주의하시면 더 편합니다.

넷빈 6.0 인 경우는 지금처럼 이렇게~ 샤방샤방.

벗드 넷빈 5.* 인 경우 넷빈 모듈 파일을 받아 사용자 설치후에 다시 부족한 모듈들은 원격으로 업데이트 하고

그런 다음에도 여러가지 pom 파일들에 대한 추가 작업을 직접 해줘야 합니다.

쪼매 귀찮더군요..--;

머~ 나름 다 장단점이 있겠습니다만..

아무튼 전 최대한 타이핑 안 치는게 좋아서리... *^^*

그럼 이만 ~

Netbeans-korean by 강여사 - November 18, 2007 12:36 PM
Warriors of The .Net

제가 젤루 좋아하는 동영상중 하나입니다.

기초 네트워크로 배우기로는 딱이죠.^^

원 사이트는 여기

Warriors of the Net- Warriors of the Net Describing:TCP/IP, animation, Internet, 3dgraphics, educational,101 Networking,free.

www.warriorsofthe.net/

저기에는 한국말이 없습니다.

해커스랩에서 한국말 자막을 넣은거..링크는 다음과 같습니다.

http://www.hackerslab.org/images/tech/goodwarriors.wmv

Netbeans-korean by 강여사 - November 18, 2007 12:07 PM
jMaki Basic - korean(한글) pdf 자료

jMaki 세미나 자료입니다.

파일로 올릴까 하다가 걍 한눈에 화악 보시라고 jpg로..--;

원 저작은 썬의 AJAX Architect 인 Greg Murray 와 Carla Mott 가 작성한 내용을 한국말로 옮기고 몇개 수정하고..

어데 세미나 할 예정은 아니고, 공부차 1차로(jMaki에 대한 가장 기초적인 내용입니다. 나중에 2탄 3탄이 계속 업글 될지는 모르겠습니다.--; 이것도 하다보니 귀차니즘이..쿨럭 --;) 정리하면서 카페식구들도 걍 jMaki 를 아셨으면 하는 바람에 올리는 거니 공부하시는데 도움되시기 바랍니다.

자료만이라 이걸 세미나로 했을때 떠들 내용이 안 들어가는군요.. 예를들어 jMaki가 2시간 만에 작명이 됐다라던가.. 넷빈에 깔려지는 플러그인에 약간의 버그가 어데 숨겨져 있다거나..ㅎㅎ 등등.. (사실 12월에 또 뭔 시험이 있어서리 그 공부중에 셤 공부가 지겨워서 심심풀이로 만든거라..--;)

아 데모는 넷빈 게시판에 보시면 jMaki의 간단한 데모가 있습니다. (바탕으로 본인이 직접 해보시면 됩니다. 달력이랑 탭뷰 등등도 함 만들어보세요. 피쉬아이던가..)

마지막으로 저의 모든 게시물이 그렇듯이 퍼가시지 마시고 걍 본인이 공부하시는 걸로 보십시오. 카페식구들 공부하시라고 올리는 거지 넷상에 널리널리 돌아댕기는 거 별로인지라..부탁드립니다. ^^

아 jMaki 는 대부분 '제이마키' 라고 읽습니다. *^^* (내용에도 있듯이 자바스크립트의 j 와 일본어의 Maki (마키)를 합성한거라 ^^;)

이거 pdf 가 필요하신 분들은 답글로 메일 달아주시면 보내드리겠습니다.

그럼 다음 시리즈는 뭐가 될지 기대하시고.. 아무튼 열심히 공부하세요~ ^^*






















Netbeans-korean by강여사 - November 18, 2007 12:07 PM
jMaki, An Interview With Greg Murray

Netbeans-korean by강여사 - November 18, 2007 12:07 PM
넷빈 6.0 B 에서 simple SOA 만들기 - 01

넷빈 6 * 에서 특히나 SOA 팩에 CASA Editor(Configuring Composite Applications) 가 있는데 그걸 이용해서, Composite Application 에서 file binding component 방법에 대해 보겠습니다.

(머 언제나 그러하듯 필요지식- SOA, BPEL, WSDL, 기타 등등 은 각자 서핑..--; 저는 주로 넷빈에서의 사용법만,..)

일단 준비사항부터 점검하도록 하겠습니다.

CASA 에디터를 쓸 예정이므로 이게 지원되는 넷빈 6.0 Beta 2 버전(SOA pack 이 포함되어 있어야 합니다)과 어플리케이션 서버로는 GlassFish V2 를 쓰겠습니다.

1. 어플리케이션 서버(GlassFish V2) 설정 및 시작.

이전의 Runtime 대신 Services 탭을 누르시면 Servers 가 보입니다.

(머 제 경우 톰캣도 깔아놔서 보이는 거고 대개 기본으로 설치하셨다면 GlassFish V2 만 보이십니다)

그럼 오른쪽 마우스 - start 클릭


아래의 output 창에 보시면

Application Server startup completely.

가 보이시면 서버가 정상적으로 켜져 있다는 뜻입니다.



그럼 이제 본격 프로젝트를 만들어 보겠습니다.

1. BPEL Module 프로젝트 만들기

프로젝트 탭을 눌러 프로젝트 창이 보여지는 환경에서...

New Project - SOA 카테고리 - BPEL Module 선택

Next



프로젝트 이름에 HelloSample 로 타이핑 했습니다.

Finish





2. 자 그럼 이제 WSDL 문서를 만들 차례입니다.

Process Files - New - WSDL Document 클릭



WSDL 문서 이름도 HelloSample 로 타이핑 했습니다.

(그리고 여기서 Next 를 누르면 일련의 일이 수행되는데 그렇게 하지 않고 그냥 Finish 를 눌러 수동으로 진행할 예정입니다)

바로 Finish



그럼 편집기창에 WSDL 탭이 눌러진 상태로 이 아래 그림 처럼 보입니다.

메시지를 추가 하기 위해 WSDL 탭 옆에 있는 Partner 탭을 누릅니다.




그럼 오른쪽에 파레트와 함께 편집기 창이 다음과 같이 보입니다.



메시지를 추가하는 방법은 오른쪽 파레트의 WSDL Components 에서 Message 아이콘을 선택한 후

선 아래쪽 영역으로 드래그 합니다. (그럼 마우스를 놓으시면 그림처럼 박스가 나타납니다. )




디폴트로 part1 이라고 적혀있는데, 그 부분을 더블클릭하시면 편집이 가능합니다.

inputType 으로 타이핑 하고, 오른쪽 부분의 ... 버튼을 누르면 element 나 타입을 선택할 수 있는 팝업창이 뜹니다.

그럼 string 을 찾아 선택후 OK 를 합니다.



같은 방법으로 오른쪽 파레트에서 Message 를 드래그해서 하나를 더 만든후,

이번에는 part1 대신 resultType 으로 바꿔주고 타입은 역시 string 을 선택해서 OK 합니다.




ok 후 그림입니다.



계속...