'분류 전체보기'에 해당되는 글 2491건

  1. 2009.07.09 제우스 로그월별로 백업하기
  2. 2009.07.09 원도우에서 tail 사용하기 ( 원격지의 파일실시간 확인하기)
  3. 2009.07.09 Eclipse와 Jeus서버간의 디버깅
  4. 2009.07.09 eclipse was 별 원격 디버깅 하기 1
  5. 2009.07.09 WAS에서 동작하는 프로그램 원격 디버깅하기
  6. 2009.07.09 원격지의 소스 디버깅 하기 Eclipse Debugging
  7. 2009.07.09 [MyEclipse] 디버깅
  8. 2009.07.09 웹사이트 개발용 디버깅 컨트롤 - iDebugX (Client, Server-Side)
  9. 2009.07.09 일반 프로그램을 NT 서비스로 실행 - ezSVC
  10. 2009.07.09 [JEUS] Jeus 시작하기,개요 및 구성내용 등
  11. 2009.07.09 JEUS 레퍼런스
  12. 2009.07.09 jeusadmin 사용법
  13. 2009.07.09 sc 명령어로 서비스 등록하기. 4
  14. 2009.07.09 배치 파일 윈도우 서비스에 등록하기
  15. 2009.07.09 배치화일 bat 화일 자동처리 1
  16. 2009.07.09 이클립스 소스비교
  17. 2009.07.08 개인 컴퓨터의 파일 정보를 Excel 저장
  18. 2009.07.08 JSP 페이지 이동 4가지 방법 및 특성
  19. 2009.07.08 JEUS 6.0에서 JSP/Servlet에 작성된 한글이 웹 브라우저에 출력되지 않는 문제
  20. 2009.07.08 JEUS 운영 및 관리 1
  21. 2009.07.07 자바스크립트 라이브러리 Jquery 플러그인
  22. 2009.07.07 MyEclipse의 설치목적과 설치방법
  23. 2009.07.07 MyEclipse 프로젝트를 갈릴레오로 변환하기
  24. 2009.07.07 Installing MyEclipse 6.6 from an Update Site - Linux and Mac
  25. 2009.07.07 MyEclipse을 활용한 효율적인 개발 방법
  26. 2009.07.07 [펌] Eclipse + myEclipse + Flex 1
  27. 2009.07.07 MyEclipse 를 통한 struts 개발 방법론
  28. 2009.07.07 MyEclips 를 이용한 개발방법론
  29. 2009.07.07 solaris 10 에 tomcat 설치하기
  30. 2009.07.07 solaris 10 에 oracle 11g 설치
98..Etc/70.JEUS2009. 7. 9. 21:00
반응형



윈도우에서 로그를 자동으로 백업하기 위해 ANT를 사용하여

백업로직을 만들었습니다.

 

비교적 간단하게 작업이 되더군요.

 

작업순서는

 

1> 백업내역을 저장할 디렉토리 생성

 

2> 백업할 로그중 당일 분을 제외한 나머지를 JAR로 압축

    (매월 1일에 돌리면, 전월 분을 모두 백업할 수 있겠네요.)

    ----> 윈도우에서는 제어판->예약된 작업을 클릭하신후 작업을 추가하시면 됩니다.

             (매월 1일로 해야 겠지요)

 

3> 백업한 로그의 원본을 삭제

 

의 흐름으로 진행됩니다.

 

실행은 ant -buildfile logbackup.xml 로 하시면 됩니다.

 

!!!! 주의할 점은 그냥 돌리시면 로그가 삭제되므로 조심하셔야 합니다. !!!!!

 

※ 네이버 블로그의 파일첨부 로직으로 인해 dolbyman이 붙어 있으니

    dolbyman은 삭제하신 후 돌리시기 바랍니다.

Posted by 1010
반응형


사용법은 다운받은 파일을 c:\windows\system32\안에 넣어주시고
cmd 모드로 들어가서..

c:\> tail -f \\192.0.0.1\log.txt

이런식으로하면 실시간으로 txt 쌓이는 정보를 확인할 수 있다.
Posted by 1010
98..Etc/70.JEUS2009. 7. 9. 20:29
반응형

Eclipse Jeus서버간의 디버깅

Posted by 1010
반응형

사용자 삽입 이미지
Remote Debug

개요

원격 컴퓨터의 WAS(Jboss, JEUS, WebLogic)에서 실행되는 어플리케이션에 대한 디버깅 기능을 제공한다.

설명

Java 디버거의 클라이언트/서버 디자인을 사용하면 네트워크에 있는 컴퓨터에서 Java 프로그램을 실행하고 플랫폼을 실행하는 워크스테이션에서 이 프로그램을 디버그 할 수 있다.

참고 : 원격 디버깅을 사용하려면 이 기능을 지원하는 JVM을 사용하고 있어야 합니다.

디버깅 절차

  1. Java 프로그램 빌드
  2. Java 프로그램 원격 컴퓨터에 Deploy
  3. 원격 컴퓨터에 JVM 옵션 설정 후 서버 구동
  4. 워크스테이션에서 원격 컴퓨터의 주소 및 포트를 지정하여 디버깅

환경설정

원격 디버깅을 위해서는 원격 컴퓨터의 WAS 서버 시작시 JVM 옵션에 다음과 같은 내용을 추가해야 한다.

  -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

Jboss

run 배치 스크립트 파일의 JAVA_OPTS변수에 위 옵션을 추가한다.

  set JAVA_OPTS=-Xdebug 
  -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n 
  %JAVA_OPTS%

JEUS

JEUSMain.xml의 컨테이너 설정의 command-option에 아래 부분을 추가한다.

  -Xdebug -Xnoagent 
  -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n 
  -server

Weblogic

startWebLogic 배치 스크립트 파일의 JAVA_OPTS변수에 위 옵션을 다음과 같이 추가한다.

  set JAVA_OPTS= -Xdebug -Xnoagent 
  -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n 
  %JAVA_OPTS%

위와 같이 지정하면 8000 포트를 이용하여 원격 디버깅이 가능하도록 지원하겠다는 의미이다.

사용법

원격 Java 응용프로그램 실행 구성을 작성하려면 다음을 수행한다.

  • Workbench 메뉴 표시줄에서 Run > Debug Configurations…을 선택하여 실행 구성 대화 상자를 표시한다.
    사용자 삽입 이미지
  • 왼쪽 구성 유형 목록에서 Remote Java Application을 선택한다.
  • New launch Configuration 도구 모음 단추를 클릭한다. 새 원격 실행 구성이 작성되고 Connect, Source, Common의 세가지 탭이 표시된다.
    사용자 삽입 이미지
    사용자 삽입 이미지

  • 연결 탭의 프로젝트 필드에서 실행의 참조(소스 찾아보기용)로 사용할 프로젝트를 입력하거나 찾아서 선택한다.
  • 연결 탭의 호스트 필드에서 Java 프로그램이 실행될 호스트의 IP 주소 또는 도메인 이름을 입력한다. 프로그램이 Workbench와 동일한 시스템에서 실행되고 있으면 localhost를 입력한다.
  • 연결 탭의 포트 필드에서 원격 VM이 연결을 허용할 포트를 입력한다.
  • 원격 VM 종료 허용 플래그는 디버거에서 종료 명령을 사용 할 수 있는지 여부를 토글하여 판별합니다. 연결 중인 VM을 종료할 수 있도록 하려면 이 옵션을 선택한다.
  • 디버그를 클릭한다.
  • 디버그 퍼스펙트브로 변환하면 원격 컴퓨터의 Thread정보가 표시 된다.

 

  • 디버깅 할 프로그램의 특정 위치에 중단점을 설정 한 후 해당 프로그램이 실행되도록 웹브라우저를 이용하여 서비스를 호출한다
Posted by 1010
01.JAVA/Java2009. 7. 9. 17:58
반응형


0. 지혜롭게 살자
많은 개발자가 전통적(?)인 방법인 System.out....로 디버깅을 많이 하고 있다. 물론 이것처럼 확실한 방법도 없지만 eclipse나 다른 IDE의 디버그 기능을 이용하면 훨씬 빨리 문제를 찾을 수 있다.
특히 WAS에 배포된 환경에서 이런 방법으로 하려면 확인하기 위한 System.out...을 고칠 때마다 배포해야 하는데 이건 너무 고통스러운 작업이다.

단위 테스트시 에러가 발생했을 때는 eclipse등을 이용해서 디버깅하기가 수월하다.
그러나 WAS에 배포된 후에 에러가 발생했을 때는 약간의 작업이 필요하다. WAS를 eclipse에 embeded한 플러그인을 이용하는 방법도 있지만 WAS와 이클립스를 따로 띄워 원격으로 버그를 찾는 방법을 정리한다.
이럴 경우 서버환경에서 돌아가는 자바 코드의 문제점도 쉽게 잡을 수 있다. (물론 절대! 운영서버에서 하면 안되겠지만)

여기서는 tomcat 6와 eclipse 3.3 그리고 java6 환경을 가정하고 설명한다. (그 하위 버전도 방법은 동일하다)

1. 문제지점 찾기
WAS에서 애플리케이션을 배포하고 돌려보니 에러가 발생하고 아래와 같은 예외스택을 출력했다.

java.lang.NullPointerException
  kr.nextree.common.nexuser.spi.jdbc.JDBCCredentialsSPI.authenticate(JDBCCredentialsSPI.java:32)
  kr.nextree.common.nexuser.impl.NexUserImpl.authenticate(NexUserImpl.java:13)
  kr.nextree.bcf.user.impl.UserServiceImpl.authenticate(UserServiceImpl.java:79)
  kr.nextree.bcf.ui.authentication.BcfAuthenticationProvider.authenticate(BcfAuthenticationProvider.java:26)
  org.acegisecurity.providers.ProviderManager.doAuthentication(ProviderManager.java:195)
  org.acegisecurity.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:43)
  ...

이걸보면 JDBCCredentialsSPI.java 소스의 32 라인에서 null 객체를 참조하여 뭔가를 했다는 것을 짐작할 수 있다. 그럼 그 소스를 볼까?

   conn = JDBCSPIEnv.getInstance().getDataSource().getConnection();
   ps = conn.prepareStatement(JDBCSPIEnv.getInstance().getAuthenticateSql());
   ps.setString(1, id);

   rs = ps.executeQuery();

   if (rs.next()) {
    return rs.getString(1).equals(NexUserEnv.getInstance().getPasswordEncoder().encode(password));
   }

아~ 한 줄에 많은 것들이 있네 ㅠㅠ. 이중 어떤 객체가 null 인지 알 수가 있나. 좀 고생하겠는데...

2. 디버깅을 걸자 (가장 중요)
다음과 같은 JVM 옵션을 사용하면 JVM을 기동할 때 디버그 모드로 기동되고 원격에서 그 디버그 세션으로 접속할 수 있다.

-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

이는 8000 소켓으로 디버그 세션을 열어두겠다는 뜻이다.

내 경우 Tomcat을 사용하기에 다음과 같이 JAVA_OPTS의 환경변수에 저 옵션을 설정했다. Tomcat은 JAVA_OPTS 환경변수를 이용하여 JVM을 기동한다.

>set JAVA_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

>catalina.bat run

시작쯤에 다음과 같은 라인이 출력되면서 기동되면 성공한 것이다.

...
Using JRE_HOME:        C:\java\jdk1.6.0_01
Listening for transport dt_socket at address: 8000
...

각 WAS에 -Xdebug ... 옵션을 설정하는 것은 조금씩 다르다. 각 WAS의 shell 스크립트를 살펴보고 적당한 환경변수를 주거나 직접 java 실행하는 부분에서 저 옵션을 추가하면 된다.
참고로 Maven 2로 개발할 경우 mvn jetty:run으로 WAS를 띄울 경우가 있는데 이런 경우는 다음과 같은 환경변수를 설정하고 띄우면 된다.

set MAVEN_OPTS= -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n


3. JVM 디버깅 세션에 연결
이클립스에서 디버깅 세션을 열기 위해서는 다음 단계를 따라하면 된다. 물론 디버깅하기 위한 소스는 이클립스 프로젝트에 있다고 가정한다. 프로젝트를 선택한 상태에서 디버그를 시작하는 것을 있지 말라.

"Run > Open Debug Dialog..." 메뉴를 선택하면 아래와 같은 Debug 다이얼로그가 나타난다.

사용자 삽입 이미지
여기서 "Remote Java Application"을 선택하고 마우스 오른쪽 버튼을 클릭해 팝업 메뉴에서 "New"를 선택하면

사용자 삽입 이미지

위와 같이 새로운 디버그 연결을 위한 설정이 나타난다. 여기서 위와 같이 선택하고(Host와 Port는 변경할 수 있다. 위의 예에서 Port를 8000으로 설정했다.) "Debug 버튼"를 클릭한다.
그 후 "Debug" Perspective로 가면 (Window > Open Perspective를 통해 이동할 수 있음) 아래 그림과 같은 WAS의 쓰레드가 보이면 연결에 성공한 것이다.
사용자 삽입 이미지


3. Breakpoint 설정하기
이전 에러 스택을 통해 JDBCCredentialsSPI.java 소스의 32라인에서 무언가 null이라고 했다. 이 자바 소스를 열고 편집창 맨 앞에서 더블 클릭을 하거나 팝업 메뉴로 해당 라인에 breakpoint를 걸어두자.
사용자 삽입 이미지


4. 실행하고 상태 살펴보기(Inspect)
이제 에러가 난 부분을 실행하면 breakpoint에서 실행이 멈추고 대기할 것이다. 그럼 이제 어떤 부분이 null인지 살펴보자. Debug perspective에서 Variable 뷰에서 보면 rs는 nul로 나오지 않았다. 따라서 rs.getString(1) 부분이 null인지 살펴볼 것이다. 아래와 같이 rs.getString(1)을 선택하고 팝업메뉴로 "Inspect"를 선택한다.
사용자 삽입 이미지

그러면 위와 같이 현재의 rs.getStrng(1)을 평가하고 그 값을 보여준다. 이런 벌써 이 부분이 null인 것이 판명이 났다. 도대체 어떤 SQL을 실행했는데 첫번째 컬럼마저 null일까.

위의 소스에서 SQL 문장을 보려고 했다. 아 이것도 상수가 아니구나. 마찬가지 방법으로 inspect해서 SQL 문장을 확인한다. 소스 윗줄의 JDBCSPIEnv.getInstance().getAuthenticateSql()를 선택하여 살펴보았다. (팝업메뉴나 ctl+shift+i)
사용자 삽입 이미지

확인한 결과 실행한 SQL은 "select password from users where user_id = ?" 이고 넘어가는 파라메터는 "dykim"이었다.
DB의 테이블 내용을 살펴보니 dykim의 password 컬럼 값이 null 이었다.
사용자 삽입 이미지
아... rs.getString()이 null을 던질 수도 있는데... 단위 테스트하나 더 추가하고 고쳐야겠다.
Posted by 1010
반응형
자바(Java)는 디버깅 모드를 지원한다. JVM을 시작할 때 확장 옵션으로 -Xdebug 옵션을 주면 된다. 이 옵션과 함께 다른 옵션을 주게 되면 원격지에서 실행되고 있는 프로그램을 중단 시키지 않고 (NonStop) 중간에 끼어들어 디버깅할 수 있다. 서비스 중인 서버에 문제가 생겼을 때 소스 코드만 가지고 있다면 원격지에서 바로 접속해서 디버깅을 할 수 있다. 한 마디로 옴팡 멋진 기술이다. TㅅT

특히 웹 서버에서 동작 중인 서비스이거나, 개발 장비와 실제 테스트하는 장비가 다른 경우 유용하게 사용될 수 있다. 그리고 꼭 기억해 둬야할 점은 디버깅을 하려는 것이니 리모트에서 동작하는 것과 같은 소스 코드가 필요하다. =ㅅ=;;

간단하게 원격 디버깅을 할 때 사용되는 옵션들만 알아보자.
-Xdebug -Xnoagent -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n


-Xdebug - 디버그 모드로 JVM을 수행한다.
-Xnoagent - 기존의 디버그 모드가 아닌 JPDA를 사용한다.
-Xrunjdwp - JPDA의 옵션을 설정한다.
server=y - JVM과 디버거 중 누가 listen하고 누가 attach하는지 선택한다. "y"이면 JVM이 server socket을 열고 디버거가 주어진 포트로 attach하고, "n"이면 디버거가 먼저 소켓을 열고 listen하고 있으며 JVM이 해당 포트로 접속하게 된다.
transport=dt_socket - TCP/IP로 접속함을 나타낸다.
address=8000 - 8000번 포트(port)로 listen하거나 attach한다.
suspend=n - JVM이 처음 시작할 때 중지 상태(suspend)여부를 설정한다. "y"이면 디버거가 attach하기 전까지 코드를 수행하지 않고 suspend 상태로 대기한다. "n"이면 디버거의 접속 여부와는 상관없이 JVM은 먼저 동작한다.

우선 아래와 같이 옵션을 주고 JVM을 시작시킨다. JVM을 서버(server=y)로 8000번 포트(address=8000)를 listen하게 하자. 그리고 이클립스 원격 디버깅 설정을 시작한다.


이클립스의 메뉴 -> Run -> Debug Configurations...를 선택하여 아래와 같은 Debug Configurations 창을 열자. 왼쪽에 여러 디버깅 모드가 있다. Remote Java Application을 선택하고 새 디버깅 설정을 추가하면 오른쪽 화면과 같이 원격 디버깅 설정 화면이 나타난다.

Connection Type은 JVM의 옵션 중 server=y와 연관이 있는 것이다. JVM을 먼저 수행해 JVM이 해당 포트를 listen하고 이클립스가 attach하는 방식이라면, JVM은 "server=y" 옵션을 주고 이클립스는 "Standard (Socket Attach)"를 선택한다. 반대로 이클립스가 먼저 포트를 열고 listen하고 JVM을 나중에 동작시키는 경우는 이클립스를 "Standard (Socket Listen)"로 선택해서 먼저 수행하고 JVM을 "server=n" 옵션과 함께 나중에 동작시키면 된다.

앞에서 코드를 "server=y" 옵션으로 동작시켰으니 8000번 포트로 디버거가 attach하면 된다. 그리고는 열심히 디버깅하는거닷!!


개발한 코드를 원격지로 원터치 디플로이는 ant를 사용하거나 이클립스의 플러그인, View 등을 통해 가능하다. 웹 서버의 경우는 Java EE Perspective의 Servers View를 통해 서버를 추가하면 손쉽게 가능하다.

아래 그림의 가운데 목록에서 원하는 내가 사용하는 서버를 선택하자. 만일 존재 하지 않는다면 위쪽의 "Download additional server adapters"를 클릭해서 adapter를 추가한다. 그리고 아래쪽의 "Add..."나 "Configure runtime environments..."를 클릭해서 서버가 실제 있는 경로를 설정해 준다.





+ 다른 이클립스의 디버깅 기능은 여기를 보자.

+ 참고
WAS에서 동작하는 프로그램 원격 디버깅하기
Eclipse 플랫폼에서의 디버깅
eclipse: 리모트 디버깅, 디플로잉
UsingEclipseToDebugApplicationsOnNonStop.pdf
Posted by 1010
반응형

Debuging

 Windows > Open Perspective > Other...





툴바에서 아래의 이미지가 이미 나와 있다면 그냥 클릭하여 사용할 수 있다.




Debug view

위에 그림과 같이 디버그를 실행하면 아래의 그림과 같이 디버그 화면이 나온다.

이때 원하는 디버그를 하나 클릭하면 빨간 테두리 안에 있는 것들이 활성화 된다.




Variables view

variables를 선택하면 해당하는 부분의 사이즈나 값등의 정보를 볼 수 있다.




Breakpoints view

이 리스트에서 모든 작업 중인 프로젝트의  break point를 볼 수 있다.

이것으로 break point를 지우거나 새로운 것을 추가 할 수 있거나 할 수 없다.

또한 더블 클릭하면 에디터로 갈 수 있다.

이것은 exceptions을 추가 또는 삭제 가능하다.




Expressions view

각각의 클래스로부터 suspended thread와 다른 지역에서 이것을 보고 검사할 수 있다.
Item이 view에 추가될때 자동적으로 오픈된다




Debug a web project

http://www.laliluna.de/assets/tutorials/java-servlets-jsp-tutorial.zip

사이트에서 어떻게 디버깅하는지에 대해 다운 받을 수 있다.

아래의 그림과 같이 오른쪽을 더블클릭하면 파란 동그라미가 생기고 그 부분부터 디버깅이 된다.

 




Note: If you don't have installed MyEclipse, you can't set a breakpoint in jsp and included

 files.




Breakpoint Properties

생성된 파란 동그라미를 마우스 오른 버튼을 눌러 아래와 같이 Breakpoint Properties

선택한다.









Hit Count

The hit count sets a number of times the breakpoint can be executed before the thread

suspends. Very helpful in a loop expression or if you want to know the value of a expression

after some hits.

Enable Condition

There are two options to suspend a thread by using a condition.

  • if the enabled condition is true

  • if the enabled condition changes

If you want that the condition suspends the thread when it is true select the option condition

is true on Suspend when.

Example:

action.equals("edit");

If you want that the condition suspends the thread when the value of the condition changes

select the option value of the condition changes on Suspend when.


Suspend Policy

You can define if the breakpoint suspends only the thread or the complete virtual machine.

Deploy and Debug

Now we want to debug the project, so deploy it and call it in your web browser.
Choose Edit on the list of books.




After you clicked the Edit link, eclipse shows you the following confirm window. You can

choose if you want to switch to the debug perspective. Yes, you want it ;- )




The first entry in the debug view represents the state of the method where the breakpoint was

 set. You can preview the state of a entry simply by clicking on it, also the file will be open

where the method is placed.




You can see the values of all variables of the selected entry in the Variables view.




A marked line and an arrow at the breakpoint shows that the debugger is suspended on this

 line.




If you've decided that you missed an important place in the execution process, perhaps the

breakpoint was in the wrong place, or maybe you accidentally stepped over some code you

wanted to inspect earlier in the process. Eclipse has a feature called Drop to frame, that

essentially lets you 'rewind' the execution to the beginning of any method in the stack. This is

especially useful when you perform variable modification or code hot swapping.
Right click on the frame and choose the option
Drop to Frame.


Inspect expressions

To get informations about expression, you can inspect a expression. Right click on the marked

expression, you want to inspect and choose Inspect or press Ctrl + Shift + I. A pop-up

window appears that holds the informations about the expression.



Watch expressions


Watch is similar to inspect an expression. Watch means that the expression will be added to

 the Expressions view, where you can watch the informations about the expression. Add two

 expressions to the Expressions view.

Mark the expressions, right click and choose Watch.




Now the two expression are in the Expressions view.




Display expressions

If you want to display the type and the value of an expression, mark the expression and choose the Display option from the context menu (right mouse button) or press Ctrl + Shift +

 D.


Run to Line

If you set a breakpoint and somewhere under the breakpoint is a line you want to go, you can use the option Run to Line. The code between the breakpoint and the selected line will be

executed. Select the line you want to go, press the right mouse button and choose the option

 Run to Line or use the key binding Ctrl + R.


Debugging JSP files (supported by MyEclipse)


Debugging a JSP file is the same like debugging a Java class, but the most features (Watch,

Inspect, etc) are not implemented. The only way to get the values of variables is the Variables

view.


[출처] http://www.laliluna.de (랠리루나)

[출처] [MyEclipse] 디버깅|작성자 연서

Posted by 1010
반응형


사용환경
------------------------------------------------------------
OS: Windows 계열
웹브라우저: MS Internet Explorer 거의 모든 버전
스크립트: JavaScript, VBScript 등

오랜만에 자작 프로그램(iDebugX) 올려봅니다.
프로젝트에 JSP로 개발하면서 Server-side와 Client-side의 디버깅 컨트롤을 각각 만들었습니다.
JSP용 서버 사이드는 정리되면 올리도록 하지요..
클라이언트 사이드 컨트롤은 개발언어에 관계없이 사용할 수 있습니다.

뭐하는데 사용하는 넘인가 하면요...
개발시 웹페이지에서 변수값 등을 확인하기 위해서 alert() 함수를 많이 사용할 겁니다.
사용 후 다시 지워야하고, 나중에 버그 발생시 값 확인하려면 또다시 alert()를 사용해야 하는 경우가 많을 겁니다.
iDebugX는 OutputDebugString() API를 호출하므로 alert()처럼 사용자에게 직접적으로 보여주지는 않습니다.
디버그 뷰어를 실행해서만 볼 수 있습니다.

예를 봅시다..(이 예제를 테스트하기 위해서는 iDebug.ocx를 윈도우에 등록해야 됩니다. 방법은 아래 참조)

debug.js (javascript)
<script type="text/javascript">
<!--
        // HTML 페이지에 디버그 컨트롤 삽입
        function SetDebugMode()
        {
                var iDebug = "<OBJECT id=idbg classid='clsid:A7E78F01-4566-4A90-87EC-01EEF2D1344A'><param name='header' value='::'></<param name='UseDialogBox' value=false></OBJECT>";
                document.writeln(iDebug);
        }
 
        SetDebugMode();
 
        // 디버그 컨트롤 설치 여부 검사
        function Installed_iDebugX()
        {
                try
                {
                        return (typeof(document.all("idbg"))!="undefined" & document.all("idbg").object != null & idbg.installed());
                }
                catch(e)
                {
                }
        }

        // 디버그 메시지 출력
        function OutputDebugString(msg)
        {
                if (Installed_iDebugX())
                        idbg.OutputDebugString(msg);
        }
 
        // 디버그 메시지 대화상자 표시
        function ShowDebugString(msg)
        {
                        if (Installed_iDebugX())
                                idbg.ShowDebugString(msg);
        }
</script>
-->


사용 예제(javascript)
<SCRIPT language='javascript' type='text/javascript' src='./debug.js'></SCRIPT>
<SCRIPT language='javascript'>
        ....
        ....
    OutputDebugString("변수 user_id:" + user_id);
        ....
        ....
</SCRIPT>
</HTML>


위 예제처럼 하면 디버그 뷰어에 "::변수 user_id:test"라는 문자열이 출력됩니다.(user_id가 test일 경우)
태그의 PARAM "UseDialogBox"를 true로 설정하면 alert()처럼 대화상자로 나타나게 됩니다.

alert()처럼 스크립트 실행을 중단시키지 않으며 사용자(고객)는 디버그 메시지를 볼 수 없습니다.
사용자에게는 iDebug.ocx를 배포할 필요는 없습니다.
iDebugX는 iDebugX가 윈도우에 등록된 클라이언트에서만 동작됩니다.

메소드
-------------------------------------------------------------------
About(): 도움말 표시
OutputDebugString(msg: string): 디버그 메시지 출력(디버그뷰어에)
ShowDebugString(msg: string): 디버그 메시지 출력(대화상자로)

속성
-------------------------------------------------------------------
header: 디버그 메시지 앞에 출력할 문자열
UseDialogBox: OutputDebugString()를 ShowDebugString()와 같은 동작을 하게 할 것인지의 여부

파라미터
-------------------------------------------------------------------
copyright: copyright 표시
header, UseDialogBox: 속성 참고

---------------------------------
Server-Side (PHP에서 사용)
---------------------------------
<php?
        $user = 'guest';
        $idbg = new COM('iDebug.iDebugX');
        $idbg->header = "::";
        $idbg->OutputDebugString('변수 $user=' . $user);
?>

PHP용은 ShowDebugString(), About()은 사용할 수 없습니다.

참고: 여러 프로그램들이 OutputDebugString() API를 사용하기 때문에 디버그 뷰어에 자신이 호출하지 않은 문자열이 나타날 수도 있습니다. 이때 디버그 뷰어에서 필터 기능을 사용하면 자신의 메시지만 볼 수 있습니다.

[다운로드]

디버그 뷰어 다운로드 - http://download.sysinternals.com/Files/DebugView.zip

iDebug.ocx 윈도우에 등록하는 법 - cmd에서 "regsvr32 C: estiDebug.ocx" 입력 후 엔터
iDebug.ocx 윈도우에 등록 해제 하는 법 - cmd에서 "regsvr32 /u C: estiDebug.ocx" 입력 후 엔터
Posted by 1010
반응형



일반 프로그램을 NT 서비스 프로그램으로 실행되게 하는 프로그램입니다.
NT 서비스로 동작되게 하면 윈도우에 로그온하지 않아도 프로그램이 동작됩니다.
주로 FTP, HTTP, SMTP 데몬 프로그램들이 동작되는 방식입니다.

프로그램은 ezSVC.exe 하나로 구성되어 있으며 실행시킨 후 [서비스 등록] 버튼을 눌러 윈도우 서비스 프로그램으로 등록시킨 후, 서비스 모드로 동작되게 할 프로그램을 ezSVC에 등록, 그 후 [서비스 시작] 버튼을 누르면 됩니다.
이 후 윈도우 시작시 로그온 하지 않아도 자동으로 동작됩니다.

ezSVC를 서비스로 등록시키면 서비스 관리자에서 "ezService"라는 이름으로 등록됩니다. 시작 유형은 "자동"으로 설정됩니다.

사용 예를 들면 Apache, PHP, MySQL을 한 번에 설치하는 APM_Setup이나 Mercury MailServer 등을 윈도우 서비스로 동작되게 할때 사용할 수 있습니다.

[다운로드-프로그램]
[다운로드-영문팩]
Posted by 1010
98..Etc/70.JEUS2009. 7. 9. 15:17
반응형

JEUS (Java Enterprise User Solution) 인터넷으로 각광 받고 있는 Java 기반으로 솔루션으로, 환경에서 어플리케이션을 운용하는 필요한 각종 서비스들을 제공해 주는 어플리케이션 서버이다.

JEUS 어플리케이션을 개발하고 실행할 있는 플랫폼 역할을 하면서, 트랜잭션 관리, 세션 유지, 부하 분산 다양한 기능을 제공할 뿐만 아니라, 계층화된 구조로 성과 기능 확장성이 우수해 비즈니스 로직을 손쉽고 효과적으로 구현할 있게 한다.

 

 

2.   JEUS 디렉토리 구조

2.1 전체 디렉토리 구조

JEUS 최초 설치하면 설치 지정된 디렉토리(JEUS_HOME) 다음과 같은 디렉토리가 생긴다.

 

 

각각의 디렉토리에 대한 설명은 다음에 계속한다.

 

2.2 bin 디렉토리

JEUS 실행, 모니터링 JEUS 운영에 관련된 스크립트 파일이 존재한다. Windows 경우에는 batch파일로 있으며, UNIX 경우에는 shell script파일로 되어 있다. 여기 있는 파일들 jeus.properties.bat(UNIX 경우: jeus.properties) 있는데 파일에는 JEUS실행에 필요한 각종 환경변수들이 설정되어 있다. 이를 제외한 나머지 실행파일들은 실행전에 항상 파일을 호출하여 환경변수를 적용하게 되어 있으므로 환경 변수의 수정이 필요한 경우에는 파일의 내용을 수정하면 된다.

 

2.3 client 디렉토리

EJB 등을 사용할 경우 client에서 사용하게 client모듈 등이 들어가게 되는 디렉토리이다. 일반적인 경우 사용하지 않는다.

 

2.4 config 디렉토리

운영시 사용하게 되는 모든 설정 파일들이 들어있는 디렉토리이다. 하위 디렉토리로 dtds디렉토리는 JEUS설정 파일의 모든 xml 대한 구조(dtd) 가지고 있는 디렉토리이고, hostname으로 되어 있는 디렉토리에 현재 운영과 관련된 모든 설정을 가지고 있다.

 

2.5 lib 디렉토리

디렉토리는 운영과 관련된 library들이 들어 있다. 아래에는 다음과 같이 3개의 디렉토리가 있다.

-          application: 개발시 필요한 library들을 넣어두는 디렉토리이다. Jar/zip형태의 파일을 넣어도 되고, package형태로 풀어놓아도 된다.

-          datasource: 디렉토리는 JDBC 혹은 각종 connector 위한 library 넣어두는 디렉토리이다. Jar/zip형태의 파일만 인식한다.

-          system: 디렉토리는 JEUS 엔진과 관련된 library들이 들어 있다.

위의 디렉토리들 개발 혹은 운영 필요한 라이브러리들은 application/datasource 넣어두면 된다. System 경우는 JEUS에서 사용하는 곳이므로 되도록이면 다른 파일들을 넣지 않는 것이 좋다.

 

2.6 license 디렉토리

라이센스가 들어가는 디렉토리이다. 최초 설치시(JEUS 4.2부터) 3개월간 사용할 있는 데모라이센스가 들어가 있다. 라이센스 파일은 license이다.

 

2.7 logs 디렉토리

JEUS 운영 남게 되는 각종 로그 파일이 쌓이게 되는 디렉토리이다. JEUS운영환경의 설정에 따라 내부에는 디렉토리나 파일들이 naming rule 따라 만들어지게 된다.

 

2.8 samples 디렉토리

각종 예제 프로그램들이 목록에 따라 들어가 있는 디렉토리이다.

 

2.9 webhome 디렉토리

최초 설치시 각종 샘플과 같은 각종 application들이 들어가 있는 디렉토리이다. 하위 디렉토리는 다음과 같은 것이 이다.

-          admin_home: browser 이용해 JEUS 제어하고자 필요한 프로그램들이 들어 있다. 이는 JEUS에서 사용하는 디렉토리이므로 건드리지 않는 것이 좋다.

-          ejb_home: EJB 필요한 jar파일이나 class 들어가는 디렉토리이다.

-          servlet_home: WEB application 들어가는 디렉토리이다.

-          ear_home: EAR application들이 들어가는 디렉토리이다.

이러한 디렉토리들은 유저의 필요에 따라(admin_home제외) 변경을 있다. 변경을 하고자 한다면 $JEUS_HOME/bin/jeus.properties.bat파일을 열어 관련된 환경변수를 수정하면 된다.

 

2.10 webserver 디렉토리

JEUS 기본적으로 포함되어 있는 Web Server(WebtoB light) 들어 있는 디렉토리이다.

 

2.11 workspace 디렉토리

JEUS 운영 내부적으로 사용하는 임시 디렉토리이다.

 

 

3.   JEUS 실행 구조

JEUS 크게 가지 형태의 process 운영된다고 있다.

하나는 manager process이고 나머지 하나는 container process이다.

첫째로 manager process container process 관리하는 역할과 clustering환경 구성 JEUS 상호간에 필요한 정보들을 주고 받는 process 개발 만들어진 각종 application과는 직접적인 관이 없다.

번째로 container프로세스는 개발자에 의해 개발된 application 실행시켜 주는 process이다.

이러한 구조를 그림으로 나타내면 다음과 같다.

 

 

그림에서처럼 manager process 자신에게 포함된 container들을 관리하는 역할과 물리적으로 떨어져 있는 서버의 다른 manager process 통신을 하면서 clustering환경을 유지하는 역할을 하게 된다.

Container process 하나의 서버에 여러 개가 존재할 있다. 또한 container process 여러 개의 engine 포함하게 된다. 이러한 engine 개발된 application 자신에게 해당하는 application 실행시켜주게 된다. 예를 든다면 EJB engine EJB프로그램을 Servlet engine WEB application 실행하게 되는 것이다. 이러한 container process 하나의 독립적인 process 동작하게 된다.

 

3.2 설정 파일

앞에서 JEUS 모든 설정 파일은 $JEUS_HOME/config 디렉토리에 존재한다고 했었다. Config 디렉토리의 구조를 살펴보면 다음과 같다. 아래 그림은 최초 설치 만들어져 있는 디렉토리이다.

 


앞에서도 간단히 설명을 했듯이 dtds 디렉토리는 xml 관련된 dtd파일이 들어 있는 곳이고, security 디렉토리는 JEUS운영 사용하게 되는 policy파일이 들어 있는 디렉토리이다.

나머지 hostname(그림에서는 ybsong_note)으로 되어 있는 디렉토리인데, 현재 JEUS 설치된 서버의 운영과 관련된 모든 설정들은 디렉토리에 들어 있다.

가장 먼저 살펴볼 파일은 hostname 디렉토리에 들어 있는 JEUSMain.xml파일이다.

참고로 운영을 위해 각종 설정 파일을 생성할 먼저 JEUSMain.xml파일을 만들게 되고, 파일의 구성에 따라 부수적으로 필요한 설정 파일을 만들어 설정을 하게 된다.

 

JEUS에서 가장 중요한 설정 파일로 가장 기본이 되는 설정으로 manager프로세스에 대한 설정이라고 보면 된다. 여기에는 어떠한 container프로세스가 있는지 container에는 어떠한 engine 들어 있는지에 대한 설정이 포함되어 있다. JEUS구동 시에도 가장 먼저 파일을 읽어 들인 설정에 따라 필요한 container process 실행시킨다고 생각하면 쉽게 이해될 것이다.

아래는 최초 설정 들어 있는 JEUSMain.xml 파일이다.

<?xml version="1.0"?>

<!DOCTYPE jeus-system PUBLIC "-//Tmax Soft, Inc.//DTD JEUS Main Config 4.0//EN"

                             "http://www.tmaxsoft.com/jeus/dtd/4.0/jeus-main-config.dtd">

<jeus-system>

    <node>

        <name>ybsong_note</name>

        <class-ftp>true</class-ftp>

        <sequential-start>true</sequential-start>

        <enable-webadmin>true</enable-webadmin>

        <system-log>

            <level>debug</level>

        </system-log>

        <engine-container>

            <name>container1</name>

            <engine-command>

                <type>servlet</type>

                <name>engine1</name>

                <startup-mode>xml</startup-mode>

            </engine-command>

            <engine-command>

                <type>ejb</type>

                <name>engine1</name>

                <startup-mode>xml</startup-mode>

                <deploy-mode>xml</deploy-mode>

            </engine-command>

            <tm-config>

                <pooling>

                    <min>10</min>

                    <max>20</max>

                    <step>2</step>

                    <period>600000</period>

                </pooling>

                <active-timeout>300000</active-timeout>

                <commit-timeout>120000</commit-timeout>

                <capacity>20000</capacity>

            </tm-config>

        </engine-container>

    </node>

</jeus-system>

아래에 중요한 개의 tag 대해 설명하였다.

-          node: 하나의 서버를 의미한다. 물리적인 하나의 서버를 의미한다고 봐도 무방하다. 내부에 engine-container tag 포함하고 있다.

-          engine-container: 앞에서 설명한 container process 의미한다. 여러 개를 가질 있으며 이는 여러 개의 container프로세스가 운영될 있음을 의미한다.

-          engine-command: 이는 앞에서 언급된 engine 의미한다. Type 따른 하는 운영되는 application 형태가 달라지게 된다.

위의 tag engine-container engine-command 적절히 조합하여 필요한 만큼의 container process engine 생성하면 된다. JEUSMain.xml 설정이 끝났다면 이젠 여기서 설정된 engine들에 대한 설정이 필요하게 된다.

참고로 Container process 대한 설정은 필요하지 않다. 이유는 Container process application 운영하는 기본 단위가 아니고 engine 기본 단위이므로 이들에 대한 설정만을 필요로 한다. 다시 말하면, container process 그대로 하나의 process 단위이며 engine 묶어주는 그룹의 개념만을 지니고 있으므로 JEUSMain.xml 내용만으로 이상의 설정은 필요 없는 것이다.

JEUSMain.xml 대한 자세한 설정은 JEUS Server 매뉴얼을 참조하면 된다.

 

3.4 engine 설정 파일

Engine 설정 파일은 engine 이름으로 디렉토리 아래에 존재하게 된다. Engine 이름을 붙이는 방법은 JEUS 내부의 naming rule 다음과 같이 JEUSMain.xml파일의 내용을 가지고 만들어지게 된다.

[hostname]_[engine tag type]_[engine tag name]

앞에서 보여진 JEUSMain.xml파일을 참고하면 다음과 같이 개의 engine이름이 존재하게 되는 것이다.

-          ybsong_note_ejb_engine1

-          ybsong_note_servlet_engine1

이렇게 engine 이름을 만들었다면 이러한 엔진을 위한 설정파일이 들어가게 되는 디렉토리를 만들어야 한다. 디렉토리는 바로 JEUSMain.xml 있는 디렉토리에 engine이름으로 디렉토리를 만들면 된다(앞에서 보인 config디렉토리의 구조에 관한 그림 참조).

engine 대한 설정 파일들은 모두 자신의 이름으로 디렉토리 안에 존재하게 되는 것이다. 또한 engine마다 필요한 설정 파일은 engine type 따라 달라지게 된다. Type 가지가 있다. 아래에 type 따른 설정 파일의 이름을 기술해 놓았다.

-          servlet type: WEBMain.xml

-          ejb type: EJBMain.xml

-          jms type: JMSMain.xml

이후에는 이들 가장 많이 사용하는 servlet ejb type 설정 파일에 대해 살펴본다.

 

3.5 servlet engine 설정 파일

앞에서 봤듯이 servlet type engine 설정 파일은 WEBMain.xml이다.

최초 설치 아래와 같은 설정 파일이 [hostname]_servlet_engine1 디렉토리에 들어 있다.

<?xml version="1.0"?>

<!DOCTYPE web-container PUBLIC "-//Tmax Soft., Inc.//DTD WEB Main Config 4.0//EN"

                               "http://www.tmaxsoft.com/jeus/dtd/4.0/web-main-config.dtd">

<web-container>

    <context-group>

        <group-name>MyGroup</group-name>

        <group-docbase>webapps</group-docbase>

        <session-config>

            <shared>true</shared>

            <timeout>20</timeout>

        </session-config>

        <logging>

            <error-log>

                <target>stdout</target>

                <level>information</level>

                <buffer-size>0</buffer-size>

            </error-log>

            <user-log>

                <target>file</target>

                <buffer-size>0</buffer-size>

            </user-log>

            <access-log>

                <target>file</target>

                <buffer-size>0</buffer-size>

                <valid-day>1</valid-day>

                <log-format>

                    <time-format>default</time-format>

                </log-format>

            </access-log>

        </logging>

        <context>

            <context-name>examples</context-name>

            <context-path>/examples</context-path>

        </context>

        <webserver-connection>

            <http-listener>

                <port>8088</port>

                <listener-id>http1</listener-id>

                <output-buffer-size>8192</output-buffer-size>

                <thread-pool>

                    <min>25</min>

                    <max>30</max>

                    <step>2</step>

                    <max-idle-time>1000</max-idle-time>

                </thread-pool>

            </http-listener>

        </webserver-connection>

    </context-group>

</web-container>

위의 파일 내용 개의 tag 아래에서 설명한다.

-          context-group: tag context 묶음을 의미한다. J2EE spec에서는 context 대해서만 기술되어 있다. JEUS에서 context group 개념을 사용하는 것은 세션 정보의 공유 등을 위해서 사용한다. 그대로 group 개념이므로 내부에 context tag 포함하고 있음을 있다. 참고로 context WEB application 단위로 생각하면 쉽게 이해할 있다. group-docbase group 물리적으로 존재하는 디스크 위치(디렉토리) 의미한다.

-          context: WEB application 단위이다. Context 설정에 따라 이에 따른 deployment descriptor(DD)파일이 하나씩 존재하게 된다. 파일의 위치는 WEBMain.xml 같은 위치이며 이름은 jeus-web-dd_[context_name].xml파일이다.

-          webserver-connection: servlet type engine WEB application 처리하는 engine이므로 web server와의 결을 담당하는 부분이 필요하게 된다. 이에 대한 설정을 하는 tag이다. 위에서는 http-listener 되어 있지만, 외에도 webtob-listener/apache-listener 등이 있다.
http-listener
다른 web server없이 JEUS자체적으로 HTTP 받아들이고자 경우 사용하고, webtob-listener 자체 web server WebtoB, apache-listener Apache와의 동을 위해 사용하면 된다.

아래에는 context마다 하나씩 존재하게 되는 DD파일을 표시하였다.

<?xml version="1.0"?>

<!DOCTYPE jeus-web-dd PUBLIC "-//Tmax Soft., Inc.//DTD JEUS WEB Deployment Info 4.0//EN"

                             "http://www.tmaxsoft.com/jeus/dtd/4.0/jeus-web-dd.dtd">

<jeus-web-dd>

    <context>

        <context-name>examples</context-name>

        <docbase>examples</docbase>

        <auto-reload>

            <enable-reload>true</enable-reload>

            <check-on-demand>true</check-on-demand>

        </auto-reload>

    </context>

</jeus-web-dd>

DD파일은 각각의 context 대한 설정을 나타낸다. Context-name WEBMain.xml 설정된 context-name 의미하고, docbase 디스크 상에서의 물리적인 위치다. Auto-reload 운영 프로그램이 수정될 경우 이를 바로 반영할지에 대한 여부를 나타낸다.

자세한 내용들은 JEUS Web Container매뉴얼을 참조하면 된다.

 

3.6 EJB engine 설정 파일

EJB type engine 설정 파일은 EJBMain.xml 파일이다.

최초 설치 포함된 EJBMain.xml파일은 다음과 같다.

<?xml version="1.0"?>

<!DOCTYPE ejb-engine PUBLIC "-//Tmax Soft, Inc.//DTD EJB Main Config 4.0//EN"

                            "http://www.tmaxsoft.com/jeus/dtd/4.0/ejb-main-config.dtd">

<ejb-engine>

    <enable-user-notify>false</enable-user-notify>

    <enable-interop>false</enable-interop>

    <system-log>

        <target>stdout</target>

        <level>debug</level>

    </system-log>

    <module-list>samples</module-list>

</ejb-engine>

위의 tag module-list engine 시작될 가지고 올라가야 EJB 모듈을 나열하는 tag이다.

EJB engine 경우 위와 같이 간단하다. 이는 EJB 경우 engine 설정보다는 EJB 구성하는데 필요한 ejb-jar.xml파일과 DD.xml 많은 내용들이 기술되어 있기 때문이다. 이들에 대한 내용은 개발과 관련된 부분이므로 JEUS EJB 매뉴얼 혹은 개발자 교재를 참조하면 된다.

 

 

4.   JEUS 구동 종료

4.1 JEUS console tool 이용한 구동 종료

JEUS 구동은 크게 가지 작업으로 나누어진다.

먼저 JEUS manager process(jeus명령어) 구동한 jeusadmin tool 이용해 manager 접속한 boot명령을 이용해 부팅을 하게 된다.

Manager 구동하면 다음과 같이 보여진다.

[c:\dmscm]#jeus

[ErrorMsgManager] Message Manager is initialized

[2004.04.29 14:28:08][0] [JeusServer] JEUSMain.xml is loaded

[2004.04.29 14:28:08][3] [LocalSecurityRealm] Loading File Realm from C:\Jeus42\config\ybsong_note\file-realm.xml

[2004.04.29 14:28:09][0] [JeusServer] JEUSMain.xml is loaded

[2004.04.29 14:28:09][0] [JeusServer] JMX Manager started

[2004.04.29 14:28:10][0] [JRSMAcceptThread] Exported Remote Security Provider at

 port 9743

[2004.04.29 14:28:10][0] [JeusServer] JeusServer is Ready

위와 같이 Ready 메시지가 나오면 manager 구동된 것이다. 다른 command창을 열러 jeusadmin [hostname] 명령을 주어 manager 아래와 같이 로그인 boot명령을 보내면 된다. ID/password 물어보게 되는데, 최초 설치 ID administrator이며 password 설치 입력한 값을 넣으면 된다.

[c:\dmscm]#jeusadmin ybsong_note

[ErrorMsgManager] Message Manager is initialized

[JeusCommander] Login

>administrator

[JeusCommander] Password

> 

[JeusCommander] JEUS 4.2 Jeus Manager Controller

ybsong_note>boot

[JeusCommander] ybsong_note boot done

ybsong_note_container1

ybsong_note>down

Do you really want to down whole JEUS? (y : n):y

[JeusCommander] ybsong_note down successful

ybsong_note>jeusexit

[JeusCommander] ybsong_note jeusexit successful

ybsong_note>exit

 

[c:\dmscm]#

위의 과정은 manager 로그인 boot명령을 통해 JEUSMain.xml 설정에 따라 container 올리는 작업과 down명령을 통해 내리는 작업을 순차적으로 나열한 것이다.

jeusexit명령어는 앞에서 띄워놓은 manager 종료시키는 작업을 수행한다. exit명령어는 jeusadmin tool 빠져나가는 명령어이다.

이와 같은 과정을 거쳐 JEUS 기동하고 내리는 작업을 완료하였다. 하지만 때에 따라서는 이러한 작업이 복잡하게 느껴질 있다. 편의를 위해 JEUS에서는 one-step으로 JEUS 구동하고 종료할 있는 방법을 제공한다. 아래와 같은 방법을 통하면 그러한 작업을 쉽게 있다.

구동 : jeus –xml –U[ID] –P[password]

종료 : jeusadmin [hostname] jeusexit –U[ID] –P[password]

 

4.2 JEUS GUI tool JManager 이용한 구동 종료

JManager GUI 이용해 JEUS 제어할 있도록 하는 tool이다. 실행하는 방법은 command창에서 jmanager라고 입력을 하면 된다. tool 이용해 부팅을 하기 위해서는 console 이용할 때와 마찬가지로 jeus명령어를 이용해 manager process 구동되어 있어야 한다.

JManager 구동하면 가장 먼저 다음과 같이 ID/password 물어보는 창이 보여진다.

 


로그인을 하면 다음과 같이 화면이 보여지게 된다.

 

 

위와 같이 화면이 나타나면 왼쪽 tree에서 hostname부분을 마우스 오른쪽 버튼을 눌러 나타나는 팝업 메뉴에서 boot 선택하면 된다. 종료를 때에는 down 선택하면 된다.

JManager 대한 자세한 내용은 JEUS GUI 매뉴얼을 참조하면 된다.

 

4.3 JEUS WEB tool 이용한 구동 종료

WEB tool browser 이용한 방법을 의미한다.

WEB tool 사용하기 위해서는 먼저 JEUSMain.xml 다음과 같이 설정이 되어 있어야 사용할 있다. JEUS 4.2 경우 설치 기본적으로 설정되어 있으므로 따로 설정할 필요는 없다.

<jeus-system>

    <node>

        <name>ybsong_note</name>

        <class-ftp>true</class-ftp>

        <sequential-start>true</sequential-start>

        <enable-webadmin>true</enable-webadmin>

        <system-log>

            <level>debug</level>

        </system-log>

        <engine-container>

Console tool 혹은 JManager 이용할 경우에는 jeus명령어를 통해 manager process 기동되어 있으면 사용할 있었으나, WEB tool 경우 boot명령까지 완료되어 있는 상태에서 사용할 있다. 이는 WEB tool 내부적으로 servlet engine 사용하기 때문이다. One-step 부팅을 이용하면 쉽게 사용할 있다.

먼저 부팅이 되어 있는 상태에서 다음과 같이 접속을 하면 ID/password 물어보는데, 이후부터는 JManager 비슷한 방법으로 사용을 하면 된다.

접속 URL: http://ip:9744/webadmin

IP JEUS 설치된 서버의 ip 말하며 9744 default port이다. 값은 환경변수에 따라 달라지는데, 기본적으로 JEUS_BASEPORT + 8번의 값을 사용한다. JEUS_BASEPORT $JEUS_HOME/bin/jeus.properties.bat파일에 설정되어 있다.

최초 브라우저를 이용해 접속을 하면 다음과 같은 화면이 보여지게 된다.

 

 

ID/password 입력한 로그인을 하면 다음과 같은 화면이 보여지게 된다.

 

 

 

이후부터는 직접 부팅과 다운 작업 설정의 변경, 모니터링과 같은 작업을 수행할 있다.

 

 

5.   container 추가

5.1 설정 파일을 직접 편집하는 방법

이는 3장에서 설명한 방법으로 직접 설정 파일을 편집하면 된다.

가장 먼저 편집해야 파일은 JEUSMain.xml 파일이다. 파일을 열어 engine-container tag 하나 만들면 된다. 쉽게 작업을 하려면 기존에 있는 engine-container tag copy & paste 필요한 부분들만 수정하면 된다. 수정이 필요한 부분은 engine-container/name tag name engine-command/name부분이다. 이를 수정하는 이유는 container 이름과 engine 이름이 중복되어 사용할 없기 때문이다.

JEUSMain.xml파일의 수정이 완료되었다면 그에 따라 engine 설정 파일을 만들어 주어야 한다. 역시 3장에서 설명한 것처럼 engine 이름에 따라 디렉토리를 만든 engine type 따른 설정 파일(WEBMain.xml, EJBMain.xml 혹은 JMSMain.xml) 만들어 준다. 역시 작업을 쉽게 하려면 기존에 있는 디렉토리 전체를 복사한 쉽게 설정 파일 필요한 부분만 수정을 하면 된다(ex: http-listener부분의 port 같은 부분).

 

5.2 WEB tool 이용하는 방법

여기서는 WEB tool 이용하는 방법에 대해서 설명한다. JManager 이용하는 방법에 대해서는 JEUS GUI tool 매뉴얼을 참조하면 된다.

 

 

위의 그림에서처럼 tree에서 hostname으로 아이콘을 마우스 오른쪽 버튼으로 클릭하면 팝업 메뉴가 나타나는데 여기서 Add container 선택하여 container 추가할 있다.

하지만 이렇게 Add container 경우 앞에서 설정 파일을 직접 편집할 때처럼 직접 많은 설정들을 해주어야 하므로 조금은 불편할 있다. 직접 편집을 복사해서 사용한 것처럼 WEB tool에서는 container 복제해주는 작업을 손쉽게 있는 기능이 있다. 이는 Clone container메뉴를 선택해서 사용하면 된다. 위의 그림에서 clone container 선택하면 아래와 같은 화면이 보여지게 된다.

 

 

위의 그림처럼 오른쪽 프레임에 가지 설정을 있는 화면이 보여진다. Source Engine Container 복제할 container 의미하며, Target Engine Container 만들어질 container 이름을 의미한다. 그리고 Target Engine engine 이름으로 사용할 이름을 말한다(여기서는 dmscm이라고 했으므로, ybsong_note_servlet_dmscm ybsong_note_ejb_dmscm 이라는 engine 만들어질 것이다).

또한 Instant Start 만들어진 container 바로 부팅할 것인지의 여부를 설정하는 것이다. 바로 부팅을 경우 포트의 충돌 등으로 인해 정상 동작하지 않을 있으므로 여기서는 선택을 하지 않도록 한다.

Clone버튼을 누르면 container 복사하는 작업이 수행된다.

 

 

위와 같이 성공했음을 보여주는 메시지가 나오고 왼쪽 tree hostname부분을 다시 클릭해보면, 아래 그림과 같이 개의 container 있음을 있다. 컬러로 보여지는 것은 현재 부팅되어 운영되고 있음을 나타내고, 흑백으로 보여지는 것은 설정은 되어 있으나 운영은 되고 있지 않음을 나타낸다.

이제 가지 수정 작업을 해야 하므로 수정이 필요한 container tree에서 선택한 보여지는 오른쪽 프레임의 상단 메뉴 Configuration 선택해 필요한 작업을 하도록 한다.

마우스로 필요한 곳들을 클릭하면서 필요한 설정을 변경하는 작업을 하면 된다.

 

 

6.   기타 console tool

6.1 jeusadmin 사용하기

jeusadmin tool manager 접속한 manager 제어하기 위한 tool이다. Container 부팅/다운, engine 부팅/다운 작업 등을 수행할 있다.

- jeusadmin <HostName>

/was>jeusadmin ybsong_note

[ErrorMsgManager] Message Manager is initialized

[JeusCommander] Login

>administrator

[JeusCommander] Password

> 

[JeusCommander] JEUS 4.0.4.9 Jeus Manager Controller

ybsong_note>

1) 현재 떠있는 엔진 목록보기

서버별로 설정에 따라 Engine Container 1 혹은 이상 구동 중이며, JVM 개의 Engine Container에는 servlet engine 혹은 EJB Engnine 구동 되고있다.

ybsong_note >allenglist

ybsong_note _servlet_engine1

ybsong_note _servlet_engine1

위와 같이 수행을 하게 되면 현재 구동중인 엔진의 목록을 있다. 또한 위의 엔진들을 booting / down 수도 있다. (help 명령어 참조)

방법 : starteng / downeng <engineName>

) starteng ybsong_note_servlet_engine1

   downeng ybsong_note_servlet_engine1

 

2) 현재 있는 Engine Container PID 목록보기

Engine Container 각각의 엔진을 담는 그릇과 같은 것으로 JVM 1개를 의미한다.

 

ybsong_note>allenglist

ybsong_note_servlet_engine1

ybsong_note_servlet_engine1

ybsong_note>pidlist

ybsong_note_container2 : 120782

ybsong_note_container1 : 58660

 

현재 운영중인 JVM 대한 PID할당 정보를 얻을 있으며, 또한 위의 Engine Container booting / down 수도 있다. (help 명령어 참조)

방법 : startcon / downcon <containerName>

) startcon ybsong_note_container1

   downcon ybsong_note_container1

 

6.2 webadmin 사용하기

webadmin tool servlet type 엔진을 관리하기 위한 console tool이다. 현재 servlet engine 모니터링 동적인 설정의 변경과 같은 작업을 수행할 있다.

- webadmin <engineName>

/was>webadmin ybsong_note_servlet_engine1

$ username : administrator

$ password : [ErrorMsgManager] Message Manager is initialized

-- Welcome to JEUS Web Container(v4.0.6.1) Admin --

 

$$1 [ybsong_note:engine1]

 

1) servlet engine 상태정보 보기(st명령)

 

$$1 [ybsong_note:engine1] st

[2003.11.14 14:52:55][0] [TMLinkManager] accept thread is started

[2003.11.14 14:52:55][0] [TMClient] TMClient initailized

[2003.11.14 14:52:55][1] [JNSLocal_] Try to connect to 192.168.21.5:9738

[2003.11.14 14:52:55][1] [JNSLocal_] Connected to JNSServer 192.168.21.5:9738

[2003.11.14 14:52:55][1] [JNSLocal_] Successfully started. (ID 192.168.21.5:37035)

        >>>>>>>> ybsong_note_servlet_engine1 <<<<<<<<

-- WebContainer [ybsong_note_servlet_engine1] --

< memory information >

VM Total Memory    = 134478336 Bytes

VM Free Memory     = 73117120 Bytes

 

< session information >

session clustering version : 2

number of local sessions : 11

number of remote sessions : 16 (active = 16, passivated = 0)

- primary session server name      : session1

- backup session server name       : null

- current session server name      : session1

- current session server is alive  : true

- current session server connections (total, used)  : 10, 0

 

< DBConnectionPool information >

[jdbc/dass] COM.ibm.db2.jdbc.app.DB2Driver

Total DB connections = 0, Free DB connections = 0

Init DB conns = 2, Max DB conns = 4, Increment rate = 1, Max idle time = -1

 

< WebtConnectionPool information >

-- ContextGroup [MyGroup] --

< thread information >

WebtobListener[webtob1] Current thread = 20, Wait Queue Count = 4, Max thread = 25

    webtob1-hth0(localhost:9900) [port: 9900] live connections = 20

HttpListener[WebListener1] Current thread = 10, Wait Queue Count = 0, Max thread = 20

 

< request information >

dass : request = 375, avgTime = 359 ms

 

Command is successfully achieved...

 

st 명령을 수행하게 되면 다음의 목록을 보여준다.

1)     해당 jvm 메모리 사용현황 : st –m

2)     DBConnectionPool 실시간 사용현황 : st –d

3)     Web Server와의 정보 : st –t

4)     설정한 Context 들어온 요청 count 평균처리시간 : st –r

5)     유지하고 있는 Session 객체의 개수 : st –s

위에서 주의 깊게 보아야 것은 다음과 같다.

1)     jvm 메모리 사용현황을 통하여 애플리케이션상의 Memory leak 현상이 없는지 파악하여야 한다. jvm 메모리 사용이 계속 증가하면 이를 의심해 보아야 한다.

2)     Session Information 통해서는 현재 login 통하여 들어와 있는 유저수를 있다.

* 보기 : st –i 1 –k 100  (1 간격으로 100 반복하여 수행하기)

 

2) 호출된 애플리케이션 정보보기

 

$$1 [ybsong_note:engine1] info

[2003.11.14 14:55:26][0] [TMLinkManager] accept thread is started

[2003.11.14 14:55:27][0] [TMClient] TMClient initailized

[2003.11.14 14:55:27][1] [JNSLocal_] Try to connect to 192.168.21.5:9738

[2003.11.14 14:55:27][1] [JNSLocal_] Connected to JNSServer 192.168.21.5:9738

[2003.11.14 14:55:27][1] [JNSLocal_] Successfully started. (ID 192.168.21.5:37115)

        >>>>>>>> ybsong_note_servlet_engine1 <<<<<<<<

<<< WebContainer Name: ybsong_note_servlet_engine1 >>>

#### ContextGroup : MyGroup

  #### Context : dass

    0:[/dass/jsp/KR/stock/9065input.jsp] <Ready> class: jeus_jspwork._dass._jsp._KR._stock._403_9065input, total_reqs: 2

    1:[/dass/jsp/KR/stock/0311input.jsp] <Ready> class: jeus_jspwork._dass._jsp._KR._stock._403_0311input, total_reqs: 5

    2:[/dass/jsp/KR/banking/0758output.jsp] <Ready> class: jeus_jspwork._dass._jsp._KR._banking._403_0758output, total_reqs: 4

    3:[/dass/jsp/KR/signon_output.jsp] <Ready> class: jeus_jspwork._dass._jsp._KR._403_signon_5foutput, total_reqs: 15

 

…(중략)

 

    52:[/dass/jsp/dassadmin/session/UserCount.jsp] <Ready> class: jeus_jspwork._dass._jsp._dassadmin._session._403_UserCount, total_reqs: 91

 

 

Command is successfully achieved...

 

ContextGroup안에 있는 Context 호출된 Application 호출 빈도수를 알아 있다. 이를 통해서 많이 호출되고 있는 Application 추출할 수가 있다.

* 보기 : info –i 1 –k 100  (1 간격으로 100 반복하여 수행하기)

 

3) application 수행 thread 상태보기

 

$$1 [ybsong_note:engine1] ti

[2003.11.14 14:57:56][0] [TMLinkManager] accept thread is started

[2003.11.14 14:57:56][0] [TMClient] TMClient initailized

[2003.11.14 14:57:56][1] [JNSLocal_] Try to connect to 192.168.21.5:9738

[2003.11.14 14:57:56][1] [JNSLocal_] Connected to JNSServer 192.168.21.5:9738

[2003.11.14 14:57:56][1] [JNSLocal_] Successfully started. (ID 192.168.21.5:37195)

        >>>>>>>> ybsong_note_servlet_engine1 <<<<<<<<

-- Thread State [webtob1-hth0(localhost:9900)] --

[webtob1-hth0(localhost:9900)-w0][waiting, wt=497100 ms]

[webtob1-hth0(localhost:9900)-w1][waiting, wt=554373 ms]

[webtob1-hth0(localhost:9900)-w2][waiting, wt=1446008 ms]

[webtob1-hth0(localhost:9900)-w3][waiting, wt=498939 ms]

[webtob1-hth0(localhost:9900)-w4][waiting, wt=1481884 ms]

…(중략)

[webtob1-hth0(localhost:9900)-w19][waiting, wt=499114 ms]

[total : 20    active : 0    idle : 20    blocked : 0    reconnecting : 0]

 

-- Thread State [WebListener1] --

[WebListener1-w0][waiting, wt=130521 ms]

[WebListener1-w1][waiting, wt=132761 ms]

[WebListener1-w2][waiting, wt=127836 ms]

…(중략)

[WebListener1-w9][waiting, wt=125673 ms]

[total : 10    active : 0    idle : 10    blocked : 0    reconnecting : 0]

 

Command is successfully achieved...

 

위의 정보를 통하여 현재 실시간으로 들어오고 있는 uri 정보를 수가 있다. 특히  rt(=run time)라는 수행시간정보를 통하여 해당 호출된 서비스가 waiting 빠졌는지, 처리가 얼마나 걸리고 있는지를 실시간으로 모니터링 있다. 만일 rt 시간이 비정상적으로 길어지거나, 모든 Thread 차서 여유 공간이 없다면, waiting 또는 hanging 현상을 의심해보고 Thread Dump 등을 통하여 원인을 찾도록 한다.

 

* 보기 : ti –i 1 –k 100  (1 간격으로 100 반복하여 수행하기)

 

$$1 [DS-CBS4:engine1] ti -a

[2003.11.14 15:03:46][0] [TMLinkManager] accept thread is started

[2003.11.14 15:03:46][0] [TMClient] TMClient initailized

[2003.11.14 15:03:46][1] [JNSLocal_] Try to connect to 192.168.21.5:9738

[2003.11.14 15:03:46][1] [JNSLocal_] Connected to JNSServer 192.168.21.5:9738

[2003.11.14 15:03:46][1] [JNSLocal_] Successfully started. (ID 192.168.21.5:37401)

        >>>>>>>> ybsong_note_servlet_engine1 <<<<<<<<

-- Thread State [webtob1-hth0(localhost:9900)] --

[webtob1-hth0(localhost:9900)-w0][waiting, 2003.11.14 14:49:39, wt=846868 ms][req=11, avgTime=488 ms, total=11][alive=true]

…(중략)

[webtob1-hth0(localhost:9900)-w19][waiting, 2003.11.14 14:49:37, wt=848882 ms][req=10, avgTime=715 ms, total=10][alive=true]

[total : 20    active : 0    idle : 20    blocked : 0    reconnecting : 0]

 

-- Thread State [WebListener1] --

[WebListener1-w0][waiting, 2003.11.14 15:02:41, wt=64660 ms][req=21, avgTime=318 ms, total=21][alive=true]

…(중략)

[WebListener1-w9][waiting, 2003.11.14 15:02:41, wt=64682 ms][req=21, avgTime=18 ms, total=21][alive=true]

[total : 10    active : 0    idle : 10    blocked : 0    reconnecting : 0]

 

Command is successfully achieved...

 

* ti –a 이용하여 요청을 처리한 건수 처리시간 평균을 보여준다.

출처 : Tong - jackie92님의 ◐ Web & WAS통

Posted by 1010
98..Etc/70.JEUS2009. 7. 9. 14:51
반응형

JEUS 운영 및 관리 지침

<설치시입력한JEUS 관리자비밀번호>는 jeusadmin이라고 가정한다.

JEUS 구동

  • jboot: jeus –Uadministrator –Pjeusadmin
  • jdown: jeusadmin –Uadministrator –Pjeusadmin jeusexit

jeusadmin console

jeusadmin 콘솔툴을 이용하여 JEUS 컨테이너기동/종료, 엔진리스트확인 등 JEUS 엔진의 상태를 제어 및 점검한다.

  • 콘솔 실행: jeusadmin 'hostname' -Uadministrator -Pjeusadmin

명령 목록

  • allenglist: jeusadmin의 allenglist 명령은 현재 각 컨테이너의 엔진기동 상태를 보여준다.
  • downcon <container-name>: 지정된 컨테이너를 종료시킨다.
  • startcon <container-name>: 지정된 컨테이너를 기동시킨다.
  • pidlist: JEUS의 엔진 프로세스를 확인한다.

webadmin console

webadmin 콘솔은 JEUS의 컨테이너 내부에 기동된 서블릿 엔진의 상태를 모니터링하기 위한 명령프롬프트이다.

  • 콘솔 실행: webadmin <container-name> -Uadministrator -Pjeusadmin

명령 목록

  • ti: ti는 Thread Information의 약자로 JEUS 서블릿 엔진의 컨텍스트그룹 내부의 Worker Thread의 상태를 체크하기 위한 명령어이다.
  • st -m: 현재 Container의 JVM Memory 사용 현황
  • st -r: 설정한 Context로 들어온 요청 count와 평균처리시간
  • st -s: 현재 유지하고 있는 세션 객체의 수

webadmin 반복 모니터링

webadmin 내의 모니터링 명령어를 주기적으로 자동실행하게 하려면 다음과 같은 형식으로 명령어를 실행한다.

  • <command> -i 주기(초) -k 횟수
  • 예) ti -i 2 -k 10 : ti 명령어를 2초 간격으로 10번 수행

dbpooladmin console

dbpooladmin 콘솔은 컨테이너별로 할당된 Database Pool의 상태를 모니터링하기 위한 명령프롬프트이다.

  • dbpooladmin<container-name> -Uadministrator–Pjeusadmin

명령 목록

  • Info: 해당 컨테이너에서 관리되고 있는 Database Pool의 정보가 표시된다.
    • min, max 값은 JEUSMain.xml에 설정한 Pool의 최소/최대값이며 current는 현재 풀에 보관되고 있는 실제 커넥션의 수, idle의 풀에 보관되고 있는 커넥션중, 사용가능한 개수를 의미한다.

JEUS 장애처리

JEUS 프로세스ID (PID) 확인

JEUS의 엔진 프로세스는 다음과 같이 2가지 방법으로 확인할 수 있다.

  • ps –ef | grep java
    • -Xmx512m 이후 부분을 확인하여 JEUS Manager 프로세스임을 확인한다.
    • [-D컨테이너이름]을 이용하여 컨테이너 프로세스임을 확인한다.
  • jeusadmin 콘솔툴을 이용한 PID 확인
    • pidlist: pidlist 명령을 사용하여 PID를 확인한다.

JAVA Dump

덤프 생성

  • kill -3 [JEUS-PID]

덤프 확인

JEUS JAVA프로세스에서 생성한 덤프는 JeusServerLog에서 확인한다.

예) vi $JEUS_HOME/logs/`hostname`/JeusServer_20070201.log

WebtoB 운영 및 관리 지침

WebtoB 구동

  • wsboot
  • wsdown–I : ps –ef을 이용하여 wsm, hth, htl, html 등의 프로세스가 나타나지 않으면 정상 종료

wsadmin console

WebtoB 시스템을 관리하기 위해서 wsadmin이라는 프로그램이 제공된다. wsadmin 프로그램은 UNIX 환경의 shell과 비슷한 Command Interpreter 이다. 즉, 항상 프롬프트상태로 대기중이다가 입력되는 명령어를 해석하여 이를 실행하게 된다. 여러 Node를 한 Domain으로 사용하는 경우 wsadmin으로 전체를 중앙관리가 가능하며 각 Node 별로 로컬에서만도 관리가 가능하다.

  • wsadmin

명령 목록

  • ci: 요청에 대한 현재 클라이언트 정보를 표시한다. HTH당 접속한 클라이언트의 KeepAlive 되어있는 개수를 보여준다. WebtoB단에 요청을 보내고 HTTP Session의 KeepAliveTimeout 전까지 유지되고 있는 클라이언트의 총 개수 정보이다.
  • ci –s: 현재 클라이언트의 전체 수를 표시한다.
  • si: *SERVER 절에 선언한 서버들의 수행정보를 보여준다.
  • st -s: 웹서버 환경설정파일에서 *SERVER, *URI, *EXT 절에 설정한 서비스의 상태가 보인다.
  • st -p: WebtoB 프로세스의 상태를 표시한다. 주로 JEUS-WebtoB간 연동 상태를 확인할 때 사용한다.

wsadmin 명령 연속 보기

ci, st–s, st–p, si 등의 명령어를 다음과 같이 수행하면 주기적으로 WebtoB의 상태를 모니터링할 수 있다.

  • r –i <시간(초)> -k <횟수> <명령>
  • 예) r –i 1 –k 1000 st-s

JEUS alias 설정

.profile 참고

...
export JEUS_HOME=/jeus
...
#### JEUS alias ####
alias ja='jeusadmin `hostname` -Uadministrator -Pjeusadmin'
alias ea='ejbadmin `hostname`_ejb_engine1 -Uadministrator -Pjeusadmin'
alias wa='webadmin `hostname`_container1 -Uadministrator -Pjeusadmin'
alias da='dbpooladmin `hostname`_container1 -Uadministrator -Pjeusadmin'
alias ti='webadmin `hostname`_servlet_engine1 -Uadministrator -Pjeusadmin ti -i 3 -k 100000'
alias ss='webadmin `hostname`_servlet_engine1 -Uadministrator -Pjeusadmin st -s -i 3 -k 100000'
alias sd='webadmin `hostname`_servlet_engine1 -Uadministrator -Pjeusadmin st -d -i 3 -k 100000'
alias di='dbpooladmin `hostname`_container1 -Uadministrator -Pjeusadmin info -i 3 -k 100000'

alias jcfg='cd ${JEUS_HOME}/config/`hostname`'
alias jbin='cd ${JEUS_HOME}/bin'
alias scfg='cd ${JEUS_HOME}/config/`hostname`/`hostname`_servlet_engine1'
alias ecfg='cd ${JEUS_HOME}/config/`hostname`/`hostname`_ejb_engine1'

alias jhome='cd ${JEUS_HOME}'
alias lhome='cd ${JEUS_HOME}/logs'

alias jlog='tail -f ${JEUS_HOME}/logs/`hostname`/JeusServer_`date +%Y%m%d`.log'
alias alog='tail -f ${JEUS_HOME}/logs/`hostname`_servlet_engine1/MyGroup/accesslog/access_`date +%Y%m%d`.log'
alias elog='tail -f ${JEUS_HOME}/logs/`hostname`_servlet_engine1/MyGroup/errorlog/error_`date +%Y%m%d`.log'
alias ulog='tail -f ${JEUS_HOME}/logs/`hostname`_servlet_engine1/MyGroup/userlog/user_`date +%Y%m%d`.log'
Posted by 1010
98..Etc/70.JEUS2009. 7. 9. 14:49
반응형
jeusadmin 사용법
 
jeusadmin 은 JEUS Manager 를 통해서 JEUS 를 제어하는 콘솔 툴이다.
JEUS 의 관리자의 사용자명과 패스워드를 입력한다. 일반적으로 관리자의 사용자명은 administrator 이고 패스워드는 JEUS를 설치할 때 입력한다.
 
사용법 :
jeusadmin [host명] –Uadministrator –P[password]
 
ex>
$jeusadmin esther –Uadministrator -Pjeusadmin
esther>
- help : 명령어에 대한 도움말을 출력
- boot : JEUSMain.xml 파일을 읽어서 사전에 설정된 컴포넌트들(Engine및 기타)을 구동 및 초기화
- allenglist : 현재 group(노드)의 활성화된 모든 Engine 목록을 출력한다.
esther>allenglist
esther_servlet_engine1
esther_ejb_engine1
 
- pidlist : Engine Container 의 프로세스 ID 목록을 출력한다.
  unix상에서는 pid를 나타내며, 강제 종료할 때 나타난 pid를 kill -9하면 된다.
esther>pidlist
esther_container2 : 3044
esther_container1 : 2700
- startcon / downcon [host명_container명] :
                                                         engine container 제어 (container의 down/ start)
esther>downcon esther_container1
[JeusCommander] esther_container1 container down successful
esther>startcon esther_container1
[JeusCommander] esther_container1 container started successful
- starteng / stopeng [host명_engineType_engine명] : engine을 start/ down
esther>downeng esther_servlet_engine1
[JeusCommander] esther_servlet_engine1 engine down successful
esther>starteng esther_servlet_engine1
[JeusCommander] esther_servlet_engine1 engine started successful
- down : jeus manager가 실행된 환경에서 모든 container를 down 한다.
- jeusexit : 모든 container의 down상태에서 jeus manager를 down시킨다.
- exit : jeus manager를 빠져나간다.

출처 : ▒▒ TmaxSoft Technical Network ▒▒

Posted by 1010
98..Etc/Etc...2009. 7. 9. 13:50
반응형
Sc.exe는 Windows XP 및 Windows Server 2003에 포함되어 있으며 Windows 2000 Server 리소스 키트에도 포함되어 있습니다.
sc create [Program ID방식의 Service name] binpath="서비스로 실행할 파일의 풀 경로 / 만약 매게변수가 있다면 함께" displayname="서비스 관리자 애플릿에 표시할 이름" depend="다른 관련 서비스의 ID" start="시작형태" obj="서비스 시작에 사용한 Windows NT 계정 이름"

머 이리저리 옵션이 많이 있지만, 서비스 등록을 위해 필요한 것들이나 주의를 길울여 살펴봐야 한다. 여기서 한가지 SC의 명령줄 옵션은 문법이 까다롭다고 한다. 등호 다음에 오는 공백은 SC가 나름의 구문 분석 규칙을 정의해 놓은 것으로 이해하고 따라해야 한다. 즉, SC는 스위치 이름을 binpath, displayname과 같이 인식하기 보다는 binpath=, displayname= 까지 인식한다고 보는것이 정확하다. 즉 binpath= 이후 공백이 하나 존재해야 하는 것이다.

그럼 sc명령어와 옵션을 하나하나 살펴 보자
1. sc create 다음에 오는 필수 인자가 [Program ID방식을 Service name]
    : 여기에는 영문만을 사용하는것을 권장하며 윈도우가 그렇듯 영문 대/소문자는 구분하지 않는다.

2. binpath 옵션
    : 서비스로 실행할 파일의 경로와 해당 파일에 전달되는 인수를 한꺼번에 지정한다. 파일 경로 상에 공백이 포함되면 따옴표로 묶는다는 것은 기본 상식이다. 만약 이렇게 한번 따옴표를 쓰고나면 인수에는 따옴표를 전달할 수 없는게 아니냐는 고민에 빠지기 쉬운데 그런 고민은 할 필요없다. 신경쓰지 말고 필요한 만큼 따옴표를 쓰면 된다. 머 정 쓰기 싫으면 공백없이 경로를 잡고 프로그램을 설치하면 될 것이다.

3. displayname 옵션
   : 서비스 관리자 애플릿(services.msc)에서 표시할 이름을 의미한다. 서비스 관리자에서 알아볼 수 있는 편리한 이름을 정해서 기입하면 되며 한글을 사용해도 무방하다.

4. depend 옵션
    : 동록하고자 하는 서비스를 실행하기 위하여 필요한 다른 서비스의 ID를 써주는 곳이다. 여러개의 서비스에 종속되어있다면 "/" 기호를 써서 구분해주면 된다.

5. start 옵션
    : 등록하고자 하는 서비스를 언제 실행할 것인가에 대한 사항을 적은 곳이다. 보통 auto, demand, boot, system, disabled 중 하나는 선택한다. auto는 시스템 서비스가 모두 시작되었으며 아직 로그인은 하지 않은 상태에서 실행하는 것을 말하며, demand는 어떤 형태로든 시스템에 대한 사용 권한을 얻은 이후에 직접 구동하는 것( 사용자가 아닌 프로그렘에 의한것도 포함 )을 의미힌다. boot와 system은 주로 장치 드라이버와 연관된 서비스나 운영 체제 핵심 서비스에만 한정되는 내용이고 disabled는 거의 쓸 일이 없으며 이름 그대로 "사용하지 않도록 등록"한다는 의미이다.

출처: 정확한 출처는 모르겠습니다.

6. obj 옵션
   : 이 서비스를 실행할 사용자 계정을 지정하는 곳이다. 대개 서비스를 등록하는 것은 특정 사용자와는 무관하게 독립적으로 실행되기 위한 것이므로 "NT AUTHORITY\LocalService"를 지정하면 적당하다. 하지만 직접 계정을 지정한다면 password 옵션을 써서 비밀번호를 따로 지정해야 한다.

그럼 위의 설명에 따라 Agent를 실행시키는 batch파일인 AgentStart.bat를 서비스에 등록하려면 다음과 같이 명령을 내리면 된다.

sc create RTCAgent
        binpath= "D:\Eclipse_Work\MySingleRTC\agent\Window\AgentStart.bat"  
        displayName= "RTCAgent" start= auto obj= "NT AUTHORITY\LocalService"


이렇게 등록하고 서비스 관리자에서 시작하면 된다.

자 그럼 등록을 했으면 삭제하는것도 봐야 되지 않을까?
서비스 삭제는 sc delete로 간단하게 된다.

sc delete [Program ID방식의 Service Name]


어떼 아주 간단하지 않을가?
여기서 사용되는 [Program ID방식의 Service Name]은 sc create를 이용해 서비스 등록할 때 사용했던 [Service Name]을 사용하면 된다. 몬든 삭제가 그렇듯 서비스 삭제에 있어서도 단 사용되는 [Program ID방식의 Service ID]는 윈도우 핵심 서비스일 수 있으니 삭제할 때는 각별한 유의가 필요하다.

마지막으로 등록된 서비스를 시작하는 것을 보도록 하자
서비스 시작 역시 서비스 삭제 만큼이나 간단하게 sc start로 되어있다.

sc start [Program ID방식의 Service Name]


이것역시 너무나 간단하지 않을가?
이쯤 되면 이곳에서 사용되는 [Program ID빙삭의 Service name]이 무엇인지는 굿이 설명하지 않아도 알것이다.

Posted by 1010
98..Etc/Etc...2009. 7. 9. 13:38
반응형
TOW(Trac on Windows)을 윈도우에 설치해서 사용하다보니 한가지 문제점이 있었다.
TOW라는 패키지가 단순히 배치 파일을 풀고, 설정만 몇가지 변경하면
Project 관리에 유용하게 사용할수 있는 svn+trac을 윈도우에 설치할수 있지만,
실행자체가 배치 파일로 이루어 지기 때문에 서버가 리부팅을 하거나, 문제가 있을시에 항상
다시 로그인을 해서 실행을 시켜주어야 한다는 문제가 발생된다.

그래서, 윈도우 서비스에 등록할수 있는 방법을 찾다보니 아래의 경로에 자세히 설명이 되어 있었다.
http://silencer.tistory.com/30

TWO 설치 및 기본적인 배치 파일을 서비스에 등록하는 부분은 위 경로를 참고하면 될듯하다.

그런데, 한가지 문제가 서비스에 등록은 제대로 되는데 실행에 문제가 있었다.
추가적인 웹서핑을 통해서 살펴보니 레지스트리에 한가지 더 추가해야 될 사항이 있어서 첨부한다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[서비스명]
위 위치에 Parameters 키를 추가하고, Application 값을 설정하는데 이것만 가지고는 실행에 문제가 발생될수 있다.
왜냐하면, 이번에 예에서 보듯이 start-tow.bat 파일은 다른 배치파일들을 내부에서 호출해서 실행이 되기 때문이다.
만약에 실행 배치 파일이 있는 경로가 환경변수에 등록이 되어 있다면 큰 문제가 아닐수 있으나,
등록이 되어 있지 않다면, 결국 실행 배치파일에서는 내부에서 호출하는 기타 다른 배치 파일들을 호출할수 없게된다.
따라서, 레지스트리에 한가지 값을 더 추가해 주어야 한다.
AppDirectory가 그것이다. 이 값은 배치 파일이 실행되는 작업 디렉토리를 설정하는 부분으로,
start-tow.bat와 같이 내부에서 다른 배치 파일을 호출할때 절대경로를 적용해서 호출하지 않는경우 반드시 설정을 해줘야 한다.
이 부분때문에 실행에 문제가 있어 헛고생을 많이 한거 같다.
혹시나 TOW 이외에도 배치 파일을 서비스에 등록을 해야 한다면 주의해서 살펴볼 부분인듯 하다.
Posted by 1010
98..Etc/Etc...2009. 7. 9. 13:14
반응형

bat(배치)파일 문법
일괄처리(Batch) 파일 #1

1.배치파일(Batch File, 일괄처리용 화일)

1.1. 배치파일?
Batch(배치)는 '한 묶음','한벌'의 의미하며, 배치파일은 여러 가지 명령어를 한 파일에 모아 작업하는 파일, 즉 하나의 일을 처리하기 위해 여러번 내리는 명령어를 한 번만에 처리할 수 있도록 만들어 놓은 실행파일이다.

  ① 확장자 이름은 반드시 'BAT'이어야 한다.
  ② 파일명은 도스의 내부명령어 이름을 피하라.
  ③ COM, EXE 파일의 이름을 피하라.

  ④ 명령어 이름이 서로 같아 충돌할 때, DOS는 도스키-->내부명령-->외부명령( *.COM-->*.EXE)-->*.BAT) 순으로 실행한다.

    다만 '파일명.BAT'라고 확장자 이름까지 써서 명령을 내리면 이런 문제는 해결된다.

  ⑤ BAT파일은 표준 ASCII 문장(Text) 파일이어야 한다.


1.2. BAT파일 만드는 방법.
일반 도스 명령어와 배치전용 명령어를 사용하여 다음의 3가지 방식을 사용하여 아스키 문장파일 형식으로 만든다.

  ① COPY명령사용 ....  C:\>COPY CON XXXX.BAT
  ② 문서편집기 이용 ... 'EDIT', 'SAN'
  ③ 문서 작성기(WordProcessor) ..  아래한글,훈민정음 등


작성 예①)  C:\>COPY CON SAMPLE.BAT  <엔터>
─────       CLS
                DIR A:
                V3 C:
                ^Z
                1 File(s) Copied

<설명1> COPY 명령을 사용하여 텍스트 파일 만드는 방법을 이용한다.
CON은 장치 파일명으로 여기서는 키보드를 지칭한다.키보드로 입력한 문자를 SAMPLE.BAT라는 파일명으로 복사.출력하라는 뜻이다.

입력한 배치 내용을 보면
  화면을 깨끗이지우고(CLS), A드라이브의 파일목록을 보이라, 그리고 C 디스크에 바이러스 감염 여부를 점검.치료하라는 명령이다.

줄을 바꿀 때는 항상 엔터하면 된다. 끝낼 때는 언제나 Ctrl+Z 또는 F6키를 누르고 엔터하면 1개 파일이 복사되었다는 메시지가 나오면서 C루트에 SAMPLE.BAT란 파일이 1개 생긴다.

<실행> C:\>SAMPLE <엔터>하면 배치파일 내용 순서데로 명령을 실행한다.

-----

작성 예②)  C:\>EDIT <엔터>

     도스 편집기 화면이 뜬다.  이때  ESC키를 한번 눌러 메시지 상자를 제거하고 깨끗한 화면에다 첫째 줄부터 입력하되, 줄을 바꿀 때는 엔터한다.

               CLS
               DIR A:
               V3 C:

끝내려고 저장글쇠(@F,S)를 누르면 파일이름을 써넣으라고 상자자 나온다. SAMPLE.BAT라고 입력하고 <엔터>하여 저장한 후, 에디트를 끝(@F, X)낸다.그러면 C루트 디렉토리에 SAMPLE.BAT 라는 배치파일이 생긴다.

<실행> C:\>SAMPLE <엔터>하면    C루트에 있는 SAMPLE.BAT 파일이 실행된다.


******* 배치파일 내용에 파일스펙 경로명을 쓸 때 주의점.****

ⓐ 배치파일 내용 중에
  C:\GAME\SUPER\SUPER.EXE 라고 해놓으면

현재 도스 작업방을 바꾸지 말고 C:\GAME\SUPER\ 방에있는 SUPER.EXE를 실행하라는 뜻이기 때문에 경우에 따라서는 실행이 되지 않는다.

ⓑ 배치 내용을 아래와 같이 하면 틀림없이 실행하게 된다.
  C:
  CD\GAME\SUPER
  SUPER

현재 도스작업방이 먼저 C드라이브로 바뀌고,절대경로명 CD\GAME\SUPER
디렉토리로 이동한 후에 SUPER.EXE 파일을 실행한다            ******


1.3.배치파일 명령어들

① 일반적인 도스명령를 그대로 사용한다.

  CLS  COPY  DEL  DIR  DATE  TIME   PAYH   PROMPT  CHKDSK 등등.

② 배치에만 사용하는 전용 명령가 있다.
  ECHO   REM   PAUSE  CALL   GOTO    CHOICE   IF   FOR   SHIFT
(메아리)(설명) (쉼)  (부름) (가기)   (선택) (조건)(순환) (옮김)


ⓐ REM
  [베치파일 속에 달고 싶은 설명.주석]....설명이 화면에 나옴.

ⓑ PAUSE
  배치파일 실행중 일시 멈추게함.
  화면에 'Press any key to continue...'
          (계속하려면 아무키나 누르세요)

  배치실행을 중단하려면 Ctrl+C키를 누른다. 그러면 화면에
           'Terminate batch job (Y/N)?'
          (배치작업을 끝내겠읍니까?)  Yes / No

ⓒ ECHO 명령
형식> ECHO 문자열
      에코명령 다음에 오는 문자열을 화면에 나타낸다.

    ECHO ON
      이후부터 '명령어'라인을 화면에 보인다.(도스 초기값)

    ECHO OFF
      이후 실행되는 명령어 라인을 화면에 나타내지 않는다.
      화면이 깨끗하고, 화면출력속도.가독성 증가한다.
      'ECHO OFF'라는 그 자체까지 보이지 않게 하려면 @ 을 앞에 쓴
      다.( @ECHO OFF )

    ECHO
      현재 ECHO ON/OFF 상태를 확인한다.


<예> C:\>COPY CON EDIT2.bat
  ECHO OFF
                 이후에 실행되는 명령어는 화면에 나타나지 않는다.
                 화면에 ECHO OFF 자체는 나타난다.

  TB
                 태백한글을 메모리에 상주 띄우기.
                 각자 지원되는 다른 한글코드(HANME,HT,DKBY 등)를
                 실행하면 된다.
                 한글도스인 때는 HBIOS.COM을 실행한다.

  PAUSE
               잠시 중지. 엔터하면 다시 진행한다.

  CLS
              화면청소

  ECHO 'This is Hangul Edit.'
                            '문자열'을 화면에 출력한다.

  PAUSE
  REM NOW,DOS EDIT IS HANGUL EDITOR.

                REM 다음에 오는 설명은 화면에 나오지 않는다. 다만
                사용자가 배치파일 내용을 볼 때 참고할 내용이다.

  ECHO ON
              이후에 실행되는 명령어는 화면에 나타남

  EDIT
              도스 에디터 화면이 나오면 한글로 문서를 작성.저장한
              후 끝낸다.

  @ECHO OFF

             이후에 실행되는 명령어는 화면에 나타나지 않는다.
             ECHO OFF자체도 나타나지않음.

  TB/U
            태백한글 메모리서 제거한다.

  CLS
  ^Z
           CTRL+Z 또는 F6를 누른다.

  1 File(s) Copied

  실습을 위하여 일부러 여러가지 명령 종류를 써 보았으며,한글로 설 명을 하느라고 줄이 떨어졌으나 각자 실습할 때는 영문글자 부분만 쓰고 엔터하여 줄울 바꾸고 줄간격을 붙여가며 쓴다.

<실행 예>  C:\>EDIT2 <엔터> 하면

위의 내용을 순서데로 실행하고 도스 문서편집기가 화면에 나타난다. 문서작성기를 끝내면 한글프로그램을 메모리에서 제거하고 도스로 나온다.  (계속)


제14장 배치파일 #2 (계속)

1.4 배치파일 전용 명령에서
? 판단과 분기에 관한 명령  ....  CALL, CHOICE, IF, GOTO

앞에서 공부한 배치파일의 경우는 입력된 명령어들의 순서데로 실행되었었지만, 판단과 분기의 명령들은 명령어의 실행의 흐름을 사용자가 임의로 변경,지정할 수있어 배치파일의 기능을 보다 강력하게 한다.

분기 명령..배치파일의 순차적 수행을 필요에 따라 변경할 때 사용하며
          배치파일에 프로그램적 기능을 갖게하는 명령이다.

조건분기(Conditional Branching).......IF명령

무조건분기(Unconditional Branching)...GOTO명령

① CALL [배치파일 인자]

배치파일 실행 중 다른 배치파일을 도중에 호출하여 실행시키고 다시
원래 배치파일로 돌아오게 하는 명령이다.

<예>  H1.BAT의 내용이 'DIR C:\ > A:MDIRLIST.TXT' ( C루트의 파일목
록을 A드라이브에 MDIRLIST.TXT 란 파일로 출력하라) 이라고 하자.

  C:\>COPY CON H2.BAT
    CALL H1.BAT
    TYPE A:MDIRLIST
    ^Z

<실행> C:\>H2 엔터하면 H1.BAT란 배치파일을 불러(CALL) 실행하여 MDIRLIST.TXT 파일을 A드라이브에 만든 후, 다시 H2.BAT 파일로 돌아와서 A드라이브의 'MDIRLIST.TXT' 파일을 화면에 타이프해 보인다.


②  IF 조건

주어진 조건에 따라 명령을 선별적으로 선택.실행케 하는 명령이다.

IF EXIST [파일이름] [명령]
         찾는 파일이 존재하면 명령을 실행하라

IF NOT EXIT [파일이름] [명령]
         찾는 파일이 없으면 명령을 실행하라

<예> IF EXIST *.BAK DEL *.BAK
       BAK라는 백업파일이 있으면 모두 지워버리라.


IF [NOT] "문자열1" == "문자열2" [명령]
    "문자열1"과 "문자열2"가 서로 일치 [불일치] 하면 명령을 실행하라.                     (양쪽 비교 문자열의 영문 대소문자를 구분한다)
    ==은 EQ로, !=은 같지 않다는 부호인데 NE로 대신할 수 있다.
  문자열은 " " 으로 반드시 구분하고 부호와는 한 칸 띈다.

<예> C:\>COPY CON TEST1.BAT
    @ECHO OFF
    IF "%1" == "A" ECHO TESTING A
    IF NOT "%1" == "A" ECHO IT IS NOT EQUAL.
    ^z

<실행> C:\>TEST1 A 엔터하면 화면에 TESTING A 라고 표시한다.
      C:\>TEST1 C 엔터하면 A와 같지 않으므로 IT IS NOT EQUAL 라고 표시한다.

IF [NOT] ERRORLEVEL [값] [명령]
     IF명령 바로 앞에서 수행되었던 프로그램이 수행을 마치면서 남긴 종료코드(ExitCode)를 검사하여 지정 값보다 크면(작으면) 명령을 실행하라는 뜻이다.

종료코드를 발생하는 명령어(FORMAT,XCOPY,COPY,BACKUP,RESTORE 등 일
반 도스명령어들 메뉴얼 참조)들은 0~255 범위에서 종료코드(EXITCODE)
값을 가지는데
에를 들면 XCOPY명령에서 성공적 수행일 때는 0, 화일이 없을 때 1, CTRL+C로 중단하면 2, 초기화 오류발생 때는 4, 디스크 에러에는 5를 반환하는 식으로 정해저 있다.

예>  C:\>COPY CON XY.BAT
        XCOPY %1 A:
        IF NOT ERRORLEEVEL 0 ECHO COPY FAILED !
        IF ERRORLEVEL 0 ECHO SUCCESSFULLY !
        ^Z

실행> C:\>XY *.* 엔터하면 성공적 수행여부에 따라  'FAILED !' 또는
                         'SUCCESSFULLY !' 라는 메시지가 나온다.

③ GOTO [레이블이름]
  레이블 이름이 있는 행으로 실행 순서를 옮긴다.
  '레이블(Label)'은 8자이 내로, 레이블 앞에는 콜론(:)을 사용한다.

<예> 현재 디렉토리에 *.HWP 파일을 C:\HNCDOC 디렉토리로 옮겨주는
     배치파일을 만들어 보자.

  C:\>COPY CON HWPMV.BAT
      @ECHO OFF
      IF NOT EXIST *.HWP GOTO FIRST
      MOVE /-Y *.HWP C:\HNCDOC
      ECHO HWPFILE MOVE DONE !
      GOTO END
      :FIRST
      ECHO *.HWP FILE NOT FOUND !
      :END
      ^Z

실행> C:\>HWPMV  엔터하면 C루트 디렉토리에 있는 모든 HWP 파일을 C:\HNCDOC 디렉토리로 옮기고 'HWP 파일을 모두 옮겼다'는 메시지를 화면에 보이고 END(끝) 레이블로 와서 도스상태로 빠저나 온다. 옮길 HWP 파일이 없으면 ' HWP 파일을 찾지 못했다'는 메시지가 나오고 끝(END) 낸다.

     GOTO 문에서는 항상 END 레이블로 배치를 끝낸다.

  배치 안에서 COPY,XCOPY,MOVE 명령은 /-Y 스위치를 써야 만이 목적지에 같은 이름의 파일이 있을 경우 덮어 쓸지여부를 확인하는 메시지를 출력한다.

④ 의사변수(Dummy Variables 가상의 변수)

바꿔 쓸 수 있는 인자(Replaceable Parameter)를 의사변수라 하며,
  %0 ~ %9(10개)으로 표시한다.

형식> C:\>명령어 파일1 파일2   "    "   "   "   "   " 파일9
           %0    %1    %2    %3   %4  %5  %6  %7  %8  %9

작성예1> C:\>COPY CON DIRALL.BAT
           DIR %1
           pause
           DIR %2
           pause
           type %0
           ^Z

실행예> C:\>DIRALL A: B: (엔터)

설명> 위 '실행 예'에서 명령어 DIRALL(.BAT)은 %0, A:은 %1, B:은 %2 에 해당하므로 '작성예1'의 내용 중 %1,%2,%0에 대입하여 명령을 수행한 결과가 화면에 나오게 된다. 즉 화면에는 'DIR A:'과, 'DIR B:'이 차례로 출력되고 멈췄다가 'DIRALL.BAT' 파일 내용이 출력된다.


작성예2> C:\>COPY CON EDIT2.BAT
             @ECHO OFF
             CLS
             TB          .....tb라는 프로그램을 메모리에 설치
             EDIT %1     ......%1은 '지정 파일'로 대체된다.
             TB/U        .......태백 한글을 메모리에서 제거
             ^Z

실행예> C:\>EDIT2 SAMPLE.TXT (엔터)
             %0    %1

설명> 위 '실행예'에서 명령어(EDIT2.BAT)는 %0, 파일1(SAMPLE.TXT)은 %1 에 해당하므로, '작성예2'의 배치파일 내용중 %1 대신에 SAMPLE.TXT라는 텍스트 파일이 대입된다.

화면은 한글을 읽고 쓸 수 있도록 태백한글을 메모리에 상주시킨다. 편집기는 SAMPLE.TXT 라는 파일을 읽어 화면에 띄워 수정.삽입 등 편집하고 저장할 수 있다. 편집을 끝내면 한글코드가 메모리에서 제거된다.


⑤ SHIFT

쉬프트는 옮김,변위를 의미하는 데 10개 이상의 대체 인자(Replaceable
Paramete)도 사용 가능하다. 대체인자를 한 자리씩 왼쪽으로 이동한다.

작성예> 지정한 문장(text) 파일들을 차례로 TYPE시키는 배치파일 예.

A:\>COPY CON TELLME.BAT
    @ECHO OFF
    :BEGIN
    IF NOT EXIST %1 GOTO END
    TYPE %1
    SHIFT
    GOTO BEGIN
    :END
    ECHO 더이상 파일이 없습니다.
    ^Z

실행예> A:\>TELLME AAA.TXT BBB.TXT CCC.TXT .........   엔터
           %0     %1       %2      %3     ........%15

설명> 위 '실행예'의 텍스트 파일명은 특정해야 하며 Wildcard문자(*,?)는 사용할 수 없다. 지정된 여러 파일들에 %1 변수가 차례로 SHIFT(변위)되면서 파일을 대입시켜 내용을 출력한다.
즉 AAA.TXT가 먼저 %1이 되고, 다음 BBB.TXT, 또 CCC.TXT, .....등이 %1에 대입된다. 계속 10개 이상의 변수도 지정할 수 있다.

지정된 파일이 모두 옮겨 대입되고 나면 배치파일이 끝나게 된다. 배치파일 내용 중 GOTO 명령에서 BEGIN 레이블로 가서 다시 시작하게하는 것을 LOOP(고리)라고 한다.


⑥ FOR
FOR 명령은 지정된 횟수 만큼 배치파일이 같은 명령을 계속 반복하게하는 명령, 즉 반복수행 (Looping) 명령이다.

형식)  FOR %%변수 IN (셋트 파라미터) DO [명령어] %%변수

     '(셋트 파라미터)'는 일련의 많은 갯수의 파일들을 말하고, '%%변수'는 SET에 명시된 각 파일에 순차적으로 설정되어 명령을 실행하는 대입변수이다.

     셋트 파라미터에 와일드카드문자(*,?)를  사용할 수 있다.

작성예> 확장명이 BAT,DOC,TXT,CAP인 문장 파일 모두를 차례로 화면에 출력(TYPE)되게 배치파일을 만들어 보자.

  C:\> COPY CON TYPEALL.BAT
       FOR %%Z IN (*.BAT *.DOC *.TXT *.CAP) DO TYPE %%Z
       ^Z

<실행>  C:\>TYPEALL C:\MDIR\*.BAT 엔터

  (*.BAT,  *.DOC,  *.TXT,  *.CAP 중에서 한 종류 파일만 지정한다.)

위 TYPEALL.BAT 파일을 실행할 때는 파일스펙(경로특정)이 있어야 한다.


2. 자동형 배치파일 (Aautoexec.bat)

일반배치파일 만들기와 동일하며 다만 이름만 AUTOEXEC.BAT로 한다.

컴퓨터를 구입할 때 이미 작성되어 있으므로 그 내용만 자기 필요에 따라 변경하면 될 것이다. 만약을 위해 원본 파일을 다른 곳에 백업해 놓고 필요시 다시 복사하면 좋을 것이다.

<작성예>  C:\>COPY CON AUTOEXEC.BAT
         @ECHO OFF
         CLS
         SMARTDRV
         LH V3RES
         PROMPT $P$G
         PATH=C:\;C:\DOS;C:\MDIR;C:\V&P
         LH DOSKEY
         M
         ^Z
         1 FIle(s) Copied

①  컴퓨터가 부팅할 때 DOS 시스템 프로그램을 메모리에 상주시킨 후
  곧 바로 자동실행 배치파일의 내용의 명령들을 실행한다.


아래 링크 출처 --  http://naver.com/mokomoji

배치화일로 파일 내에 문자쓰기
http://blog.naver.com/mokomoji/130001367333

배치파일로 폴더 내의 여러 파일을 각각 압축하기
http://blog.naver.com/mokomoji/130001367394

배치화일 수동 초이스 만들기 
http://blog.naver.com/mokomoji/130001367431

html 배치화일 특수문자 해결
http://blog.naver.com/mokomoji/130001367445

배치화일 명령어
http://blog.naver.com/mokomoji/130001367473

[본문스크랩] 네트워크 드라이브 자동 연결하기
http://blog.naver.com/mokomoji/130003167299

[본문스크랩] IP 자동 변경 스크립트
http://blog.naver.com/mokomoji/130003167289

[본문스크랩] 반복적인 ip 변경은 Bat 파일을 이용하여 간단하게
http://blog.naver.com/mokomoji/130003167083

[펌] 윈도우 콘솔 명령어들
http://blog.naver.com/mokomoji/130001368352

배치파일로 폴더 내의 여러 파일을 각각 압축하기
http://blog.naver.com/mokomoji/130001367394

폴더 분기
http://blog.naver.com/mokomoji/120019472999

[펌] 날짜 및 시간 얻어오기 배치파일
http://blog.naver.com/mokomoji/120016354197

배치화일 오늘날짜 폴더 생성
http://blog.naver.com/mokomoji/120014798527

배치화일 bat 화일 자동처리 1
http://blog.naver.com/mokomoji/120014798176

Posted by 1010
반응형

이클립스에서 소스 비교는...

굳이 눈으로 하실 필요 없습니다.


package explorer 에서 ctrl + click 으로 비교할 파일 선택한 후 우클릭 해서 나오는 메뉴에서


Compare With > Each Other 로 비교하실 수 있습니다.


Posted by 1010
반응형


엑셀 파일열어서 디렉토리 선택하면 그 디렉토리에 파일들을 가져오는거...

프로젝트 산출물 만들때 좋음...
Posted by 1010
05.JSP2009. 7. 8. 15:08
반응형

JavaScript를 이용

window.open, location.href, location.replace 등을 이용할수 있습니다


login_process.jsp

<% if (a == null) { %>

      <script>location.href = "admin.jsp"; </script>

<% } else { %>

      <script>alert('권한이 없어요!'); window.history.back(); </script>

<% } %>

         

특징적인부분은 브라우져의 주소창이 변경되며

(이말은 즉슨 클라이언트가 다시 admin.jsp를 서버에 요청한다는 말입니다)

login_process.jsp 에서 jsp가 다 실행되고 브라우져에 out put된 html 및 javascript들만으로

실행된 코드들이라는 것입니다


response.sendRedirect를 이용

login_process.jsp

<% if (a == null) {

          response.sendRedirect("admin.jsp");

     } else {

          response.sendRedirect("login.jsp");

     }


     a = "test 입니다";

     System.out.println(a);

%>


이 코드에서 a가 출력될까요 안될까요?

출력 됩니다.

sendRedirect가 되더라도 밑에 jsp 코드들은 모두 실행 된다는 말입니다

response.sendRedirect는 기본적으로 모든 로직들을 다 처리한 후 코드 맨 마지막 부분에

사용하는 것이 올바른 방법입니다

만약 그렇지 못한 경우는 response.sendRedirect 다음 바로 return; 이라는 코드를 집어 넣어야 합니다


response.sendRedirect은 HTTP 헤더정보를 변경하여 redirect시키기 때문에 역시 브라우져의 주소창이 변경되며 sendRedirect가 실행되기전 html이나 javascript로 out put되는 코드들은 모두 실행되지 않습니다.


forward 이용

jsp 태그의 <jsp:forward> 나 servlet의 RequestDispatcher.forward 를 이용할수 있습니다


login_process.jsp

<% if (a == null) { %>

          <jsp:forward page="admin.jsp"/>

<% } else { %>

          <jsp:forward page="login.jsp"/>

<% }


     a = "test 입니다";

     System.out.println(a);

%>


그럼 위의 코드의 경우 a가 출력 될까요 안될까요?

정답은 출력 안됩니다. 바로 forward 되어 버립니다.

클라이언트로 응답주지 않고 바로 서버측에서 admin.jsp로 이동하기 때문에

주소창이 바뀌지 않고 그로인해 브라우져에 출력되는 응답속도 또한 사용자가 보기에는

응답이 빠른 장점이 있습니다


하지만 forward 이후 JSP 코드들이 실행되지 않는것 사실이지만 만약 finally절이 있는경우

finally절은 실행 됨으로 확실히 알아둡시다.


meta 태그 이용

마지막으로 meta 태그를 이용할 수도 있습니다.


<META http-equiv=refresh content="0;url=admin.jsp">


즉 요약하자면..

페이지 이동 방법이 여러가지가 있습니다.

그 특성들을 잘 알고 올바르게 사용하여야 합니다

출처 : Tong - 난 하늘을 볼테야님의 JSP Study통

Posted by 1010
98..Etc/70.JEUS2009. 7. 8. 15:05
반응형
JEUS 6.0에서 JSP/Servlet에 작성된 한글이 웹 브라우저에 출력되지 않는 문제

제우스의 경우 JSP나 Servlet에 정의해 놓은 TypeContent 설정이 제대로 인식되지 않는것으로 보였다.
이 때문에 JSP 나 Servlet에 포함된 모든 한글은 웹브라우저에서 출력되지 않는 문제가 발생하였다.

해결방법:
JEUS WebAdmin에서는 서블릿 엔진의 MyGroup의 인코딩 설정을 따로 할 수있게 되어있다.
모든 인코딩 설정(Default, Forced)을 euc-kr로 설정하고, 전체 컨테이너를 재가동하면 한글이 인식되었다.

1. 제우스 웹 관리자에서 [MyGroup]-> [인코딩]을 선택하여 default 및 forced, 모든 속성에 euc-kr을 채운다.
   * JEUS WebAdmin : http://localhost:9744/webadmin

사용자 삽입 이미지


2. 제우스 컨테이너 재가동
[엔진컨테이너]를 선택하여 [모두다운] 수행 후 -> [모두시작]


사용자 삽입 이미지

3. 웹 브라우저를 통해 서블릿 또는 JSP페이지를 열어 결과를 확인해본다.
Posted by 1010
98..Etc/70.JEUS2009. 7. 8. 12:52
반응형
JEUS 운영 및 관리

JEUS 5.0을 버전을 기준으로 하고 설치시 입력한 JEUS 관리자의 비밀번호는 jeusadmin이라고 전제한다.

JEUS 구동

주로 jboot, jdown이란 이름으로 스크립트를 작성하여 실행한다. 이 파일들의 실제 명령행은 다음과 같다.

  • jboot: jeus -Uadministrator -Pjeusadmin
  • jdown: jeusadmin -Uadministrator -Pjeusadmin jeusexit

jeusadmin console

jeusadmin 콘솔툴을 이용하여 JEUS 컨테이너기동/종료, 엔진리스트확인 등 JEUS 엔진의 상태를 제어 및 점검한다.

  • 콘솔 실행: jeusadmin 'hostname' -Uadministrator -Pjeusadmin
  • 명령 목록
    • allenglist: jeusadmin의 allenglist 명령은 현재 각 컨테이너의 엔진기동 상태를 보여준다.
    • downcon <container-name>: 지정된 컨테이너를 종료시킨다.
    • startcon <container-name>: 지정된 컨테이너를 기동시킨다.
    • pidlist: JEUS의 엔진 프로세스를 확인한다.

webadmin console

webadmin 콘솔은 JEUS의 컨테이너 내부에 기동된 서블릿 엔진의 상태를 모니터링하기 위한 명령프롬프트이다.

  • 콘솔 실행: webadmin <container-name> -Uadministrator -Pjeusadmin
  • 명령 목록
    • ti: ti는 Thread Information의 약자로 JEUS 서블릿 엔진의 컨텍스트그룹 내부의 Worker Thread의 상태를 체크하기 위한 명령어이다.
    • st -m: 현재 Container의 JVM Memory 사용 현황
    • st -r: 설정한 Context로 들어온 요청 count와 평균처리시간
    • st -s: 현재 유지하고 있는 세션 객체의 수

webadmin 반복 모니터링

webadmin 내의 모니터링 명령어를 주기적으로 자동실행하게 하려면 다음과 같은 형식으로 명령어를 실행한다.

  • <command> -i 주기(초) -k 횟수
  • 예) ti -i 2 -k 10 : ti 명령어를 2초 간격으로 10번 수행

dbpooladmin console

dbpooladmin 콘솔은 컨테이너별로 할당된 Database Pool의 상태를 모니터링하기 위한 명령프롬프트이다.

  • 콘솔 실행: dbpooladmin<container-name> -Uadministrator -Pjeusadmin
  • 명령 목록
    • Info: 해당 컨테이너에서 관리되고 있는 Database Pool의 정보가 표시된다.
    • min, max 값은 JEUSMain.xml에 설정한 Pool의 최소/최대값이며 current는 현재 풀에 보관되고 있는 실제 커넥션의 수, idle의 풀에 보관되고 있는 커넥션중, 사용가능한 개수를 의미한다.

JEUS 웹 관리자

http://hostname:9744/webadmin 로 접속하여 administrator/jeusadmin 계정으로 로그인한다.

사용자 삽입 이미지

JEUS 웹 관리자

JEUS 장애 처리

JEUS 프로세스ID (PID) 확인

JEUS의 엔진 프로세스는 다음과 같이 2가지 방법으로 확인할 수 있다.

  • ps -ef | grep java
    • -Xmx512m 이후 부분을 확인하여 JEUS Manager 프로세스임을 확인한다.
    • [-D컨테이너이름]을 이용하여 컨테이너 프로세스임을 확인한다.
  • jeusadmin 콘솔툴을 이용한 PID 확인
    • pidlist: pidlist 명령을 사용하여 PID를 확인한다.

JAVA Dump

  • 덤프 생성: kill -3 [JEUS-PID]
  • 덤프 확인: JEUS JAVA프로세스에서 생성한 덤프는 JeusServerLog에서 확인한다.
    • 예) vi $JEUS_HOME/logs/`hostname`/JeusServer_20070201.log
WebtoB 운영 및 관리

WebtoB 구동

  • wsboot
  • wsdown-I : ps -ef을 이용하여 wsm, hth, htl, html 등의 프로세스가 나타나지 않으면 정상 종료

wsadmin console

WebtoB 시스템을 관리하기 위해서 wsadmin이라는 프로그램이 제공된다. wsadmin 프로그램은 UNIX 환경의 shell과 비슷한 Command Interpreter 이다. 즉, 항상 프롬프트상태로 대기중이다가 입력되는 명령어를 해석하여 이를 실행하게 된다. 여러 Node를 한 Domain으로 사용하는 경우 wsadmin으로 전체를 중앙관리가 가능하며 각 Node 별로 로컬에서만도 관리가 가능하다.

  • wsadmin
  • 명령 목록
    • ci: 요청에 대한 현재 클라이언트 정보를 표시한다. HTH당 접속한 클라이언트의 KeepAlive 되어있는 개수를 보여준다. WebtoB단에 요청을 보내고 HTTP Session의 KeepAliveTimeout 전까지 유지되고 있는 클라이언트의 총 개수 정보이다.
    • ci -s: 현재 클라이언트의 전체 수를 표시한다.
    • si: 웹서버 환경설정 파일에서 *SERVER 절에 선언한 서버들의 수행정보를 보여준다.
    • st -s: 웹서버 환경설정 파일에서 *SERVER, *URI, *EXT 절에 설정한 서비스의 상태가 보인다.
    • st -p: WebtoB 프로세스의 상태를 표시한다. 주로 JEUS-WebtoB간 연동 상태를 확인할 때 사용한다.

wsadmin 명령 연속 보기

ci, st -s, st -p, si 등의 명령어를 다음과 같이 수행하면 주기적으로 WebtoB의 상태를 모니터링할 수 있다.

  • r -i <시간(초)> -k <횟수> <명령>
  • 예) r -i 1 -k 1000 st -s
JEUS alias 설정

.profile 참고

...
export JEUS_HOME=/jeus
...
#### JEUS alias ####
alias ja='jeusadmin `hostname` -Uadministrator -Pjeusadmin'
alias ea='ejbadmin `hostname`_ejb_engine1 -Uadministrator -Pjeusadmin'
alias wa='webadmin `hostname`_container1 -Uadministrator -Pjeusadmin'
alias da='dbpooladmin `hostname`_container1 -Uadministrator -Pjeusadmin'
alias ti='webadmin `hostname`_servlet_engine1 -Uadministrator -Pjeusadmin ti -i 3 -k 100000'
alias ss='webadmin `hostname`_servlet_engine1 -Uadministrator -Pjeusadmin st -s -i 3 -k 100000'
alias sd='webadmin `hostname`_servlet_engine1 -Uadministrator -Pjeusadmin st -d -i 3 -k 100000'
alias di='dbpooladmin `hostname`_container1 -Uadministrator -Pjeusadmin info -i 3 -k 100000'

alias jcfg='cd ${JEUS_HOME}/config/`hostname`'
alias jbin='cd ${JEUS_HOME}/bin'
alias scfg='cd ${JEUS_HOME}/config/`hostname`/`hostname`_servlet_engine1'
alias ecfg='cd ${JEUS_HOME}/config/`hostname`/`hostname`_ejb_engine1'

alias jhome='cd ${JEUS_HOME}'
alias lhome='cd ${JEUS_HOME}/logs'

alias jlog='tail -f ${JEUS_HOME}/logs/`hostname`/JeusServer_`date +%Y%m%d`.log'
alias alog='tail -f ${JEUS_HOME}/logs/`hostname`_servlet_engine1/MyGroup/accesslog/access_`date +%Y%m%d`.log'
alias elog='tail -f ${JEUS_HOME}/logs/`hostname`_servlet_engine1/MyGroup/errorlog/error_`date +%Y%m%d`.log'
alias ulog='tail -f ${JEUS_HOME}/logs/`hostname`_servlet_engine1/MyGroup/userlog/user_`date +%Y%m%d`.log'

...
Posted by 1010
반응형

http://blog.naver.com/kusaltk/70026986513

 -Jquery 플러그인 모음 이거한방이면 끝..!! : http://www.seek-blog.com/41065/14090/240-plugins-jquery.html

 -light box(이미지 미리보기,pre,next) : http://leandrovieira.com/projects/jquery/lightbox/

 -이미지 스크롤 : http://benjaminsterling.com/2007/09/09/jquery-jqgalscroll-photo-gallery/

 -이미지 싸이클 : http://www.malsup.com/jquery/cycle/

 -BlockUI Plugin(processing,처리중 등등,confirm) :  http://www.malsup.com/jquery/block/#element

 -UI Modal : http://jquery.com/demo/thickbox/

 -플래쉬 플러그인 삽입 : http://jquery.lukelutman.com/plugins/flash/#examples

 -Photo Slider Tutorial : http://opiefoto.com/articles/photoslider#example

 -jScrollPane : http://kelvinluck.com/assets/jquery/jScrollPane/jScrollPane.html

 -Accessible News Slider  : http://www.reindel.com/accessible_news_slider/#examples

 - unobtrusive tabs(탭메뉴) : http://stilbuero.de/jquery/tabs/#fragment-29
      http://www.sunsean.com/idTabs/#t3

 -jQuery Ajax Link Checker : http://troy.dyle.net/linkchecker/

 -jQuery Form Plugin  : http://malsup.com/jquery/form/#code-samples

 -jquery.suggest, an alternative jQuery based autocomplete library(자동완성)
  http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jquery-based-autocomplete-library/
  http://nodstrum.com/2007/09/19/autocompleter/

 -jlook(폼객체 리뉴얼)  :

  http://envero.org/jlook/

 -jQuery - LinkedSelect(멀티 select) :

  http://www.msxhost.com/jquery/linked-selects/json/

 -Masked Input Plugin    : (입력포맷 확인)
  http://digitalbush.com/projects/masked-input-plugin
  http://www.appelsiini.net/projects/jeditable/default.html

 -Overlabel with JQuery(박스안에 워터마킹처리)  : http://scott.sauyet.com/Javascript/Demo/Overlabel/

 -Styling an input type="file"(파일찾기 이미지 처리)
   http://www.quirksmode.org/dom/inputfile.html

 -jQuery UI Datepicker v3.0 Examples(달력)
  http://marcgrabanski.com/code/ui-datepicker/

 -jQuery Validation Plugin(폼체크,포커싱)
  http://jquery.bassistance.de/validate/demo-test/ 
  http://www.texotela.co.uk/code/jquery/focusfields/
 
 -jQuery columnHover plugin(컬럼 하이라이트/컬럼 컨트롤)
  http://p.sohei.org/stuff/jquery/columnhover/demo/demo.html
  http://p.sohei.org/stuff/jquery/columnmanager/demo/demo.html

 -tablesorterDocumentation(테이블 순서)
  http://tablesorter.com/docs/index.html 

 -jQuery Accordion Demo(컨테이너 예제)
  http://jquery.bassistance.de/accordion/?p=1.1.1

 -jQPanView based in jQuery 1.1(이미지 확대보기)
  http://projects.sevir.org/storage/jpanview/index.html

 -jQuery Impromptu(confirm,alert 등등)
  http://trentrichardson.com/Impromptu/

 -jqGrid Examples(그리드)
  http://trirand.com/jqgrid/jqgrid.html#

 -Toggle HTML-Elements with jQuery
  http://jquery.andreaseberhard.de/toggleElements/

 -UI/Sortables(테이블 위치변경 ^^)
  http://docs.jquery.com/UI/Sortables

 -뉴스 슬라이더(부분보기,전체보기)
  http://www.reindel.com/accessible_news_slider/

 -로컬 스크롤러
  http://www.freewebs.com/flesler/jQuery.LocalScroll/

 -핫키 테스트
  http://jshotkeys.googlepages.com/test-static.html

 -슬라이더
  http://docs.jquery.com/UI/Slider/slider

 -쇼핑카트
  http://www.mimul.com/pebble/default/2007/10/30/1193753340000.html

 -테이블 소트
  http://www.mimul.com/pebble/default/2007/11/06/1194348600000.html

 -이미지 나중에 로딩시키기
  http://www.mimul.com/pebble/default/2007/11/10/1194695220000.html

 -오토탭(입력시 폼객체 자동넘김)
  http://dev.lousyllama.com/autotab/

 -실시간 폼객체 수정
  http://www.appelsiini.net/projects/jeditable/custom.html

 -프린트
  http://www.designerkamal.com/jPrintArea/#
 -차트
  http://www.reach1to1.com/sandbox/jquery/jqchart/

 -CSS Dock Menu (Jquery + CSS)
  후니넷에서 보삼
 -툴팁
  http://www.codylindley.com/blogstuff/js/jtip/

 -XML데이터 뿌리기
  http://blog.reindel.com/src/jquery_browse/
  http://www.xml.com/pub/a/2007/10/10/jquery-and-xml.html
  http://www.mimul.com/pebble/default/2006/11/05/1162710000000.html

 -Clearing Form

  http://www.learningjquery.com/2007/08/clearing-form-data

 --암호 복잡성 체크

  http://phiras.googlepages.com/PasswordStrengthMeter.html

 --Form Serialize

  http://dev.jquery.com/wiki/Plugins/FastSerialize

 --GetString 퍼라미터 가져오기
  http://www.mathias-bank.de/2006/10/28/jquery-plugin-geturlparam/

 --검색 후 콤보생성(ajax with combo) 아주 유용함
  http://extjs.com/deploy/ext/examples/form/forum-search.html
  http://extjs.com/deploy/ext/examples/grid/edit-grid.html-->그리드

 --파일 업로드(input=file) 리폼
  http://www.appelsiini.net/projects/filestyle/demo.html

Jquery Best
 http://www.spicyexpress.net/general/jquerry-at-it-best-downloadable-jquerry-plugins-and-widgets-for-you-2/

웹디자인 템플릿트(2.0)
 -http://www.templateworld.com/free_templates.html

----------------------------------------
Jquery tag cloud
http://www.ajaxrain.com/tagcloud.php
Jquery 기본설명
http://www.zzbb.kr/34
----------------------------------------

^^Star Rater(순위) --활용가능성 높음
http://www.m3nt0r.de/devel/raterDemo/

^^ AJAX CALLING --활용가능성 높음
http://cgaskell.wordpress.com/2006/11/02/jquery-ajax-call-and-result-xml-parsing/

--AJAX 아이디 중복체크 - 활용가능성 아주높음
http://www.shawngo.com/gafyd/index.html

^^ jQuery framework plugins which provide a way to sort and nest elements in web applications, using drag-and-drop(테이블드래그앤드랍) --활용가능성 중간
http://code.google.com/p/nestedsortables/

^^Simple tableSorter(리스트 정렬) 활용가능성 중간
http://motherrussia.polyester.se/docs/tablesorter/

^^Cookie 활용가능성 높음
http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/

^^태깅 --그냥한번보자..ㅎ
http://www.alcoholwang.cn/jquery/jTaggingDemo.htm

^^죽이는 어코디언 메뉴
http://dev.portalzine.de/index?/Horizontal_Accordion--print

^^ AJAX Indicator 이미지
http://qureyoon.blogspot.com/2006/11/make-your-own-loading-gif.html

----------------------------------------
2007.12.28 찾은것
----------------------------------------
http://rikrikrik.com/jquery/quicksearch/#usage
http://nadiaspot.com/jquery/confirm/#examples
http://host.sonspring.com/portlets/
http://jquery.andreaseberhard.de/toggleElements/
http://www.getintothis.com/pub/projects/rb_menu/
http://icon.cat/software/iconDock/0.8b/dock.html
http://www.nuernberg.de/internet/portal/index.html
http://rikrikrik.com/jquery/shortkeys/#examples
http://rikrikrik.com/jquery/pager/#examples
http://famspam.com/facebox/ --라이트박스같은것
http://www.andreacfm.com/
http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jquery-based-autocomplete-library/ --autocomplete
http://www.gcmingati.net/wordpress/wp-content/lab/jquery/newsticker/jq-liscroll/scrollanimate.html - 뉴스 스크롤
http://d-scribe.de/webtools/jquery-pagination/demo.htm# --페이징
http://tinymce.moxiecode.com/example_full.php?example=true --Open Source WYSWYG 웹 에디터
http://www.laptoptips.ca/projects/tinymce-advanced/ --Open Source WYSWYG 웹 에디터 advanced
http://extjs.com/ -또다른 RIA JAVASCRIPT 프레임워크
http://www.digital-web.com/extras/jquery_crash_course/ -jquery로 만든 비행 예약 시스템 데모(Passenger Management )
http://markc.renta.net/jquery/ --jquery 간단예제
http://www.xml.com/pub/a/2007/10/10/jquery-and-xml.html?page=2 -jquery와 XML
http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/  -쿠키 플러그인
http://jquery.com/files/demo/dl-done.html --간단한 어코디언 메뉴
http://mjslib.org/doc/legacy/fieldgroup.html --폼필드 컨트롤
http://extjs.com/deploy/dev/examples/tree/two-trees.html --트리
http://www.amcharts.com/column/ - 차트(바로 사용^^)
http://particletree.com/features/rediscovering-the-button-element/ - 버튼 스타일링
http://www.i-marco.nl/weblog/jquery-accordion-menu/ - 실용성 높은 어코디언 메뉴


http://www.sastgroup.com/jquery/240-plugins-jquery
http://jquery.bassistance.de/jquery-getting-started.html

Posted by 1010
98..Etc/MyEclipse2009. 7. 7. 13:14
반응형
 설치목적
=> 이클립스 사용 시 각종 플러그인의 추가작업이 종종 발생하는데, 플러그인을 설치할 때 발생할 수 있는 위험도를 낮추고자 하는데 그 목적이 있다.


◎ 설치과정
ⅰ) 기본적인 설치조건
- 우선적으로 Eclipse가 깔려있어야 한다.
- 이전 버전의 MyEclipse는 삭제한다.

ⅱ) 원하는 이름의 폴더를 생성한 후, MyEclipse 압축을 만들어놓은 폴더에 푼다.
- 예) "C:MyEclipse" 아래에 압축을 푼다.

ⅲ) 정상적으로 압축이 풀렸다면, MyEclipse 폴더아래에는 아래그림의 좌측과 같은 구조의 폴더들이 자리 잡게 될 것이다. 그리고 그 중에 eclipse 폴더아래에는 아래그림의 우측과 같은 형태를 가질 것이다.

ⅳ) 다음 단계로 넘어가기 전에 먼저 이클립스를 실행시킨다.

ⅴ) 이클립스의 메뉴중에서 『Help > Software Updates > Manage Configuration』을 실행한다. 이는 다음 그림과 같다.

ⅵ) 아래그림과 같이 『Eclipse Platform』위에서 우측버튼을 클릭한 후, 나오는 메뉴에서 『New』→『Extension Location...』을 선택한다.

ⅶ) 위에서 압축을 풀어준 MyEclipse 가 깔린 폴더를 지정한 후, OK를 누른다. 그리고 다시 시작하겠느냐고 묻는데, 이 때 『Yes』를 눌러서 다시 시작을 한다.

ⅷ) 이클립스의 메뉴 중에서 『Window > Open Perspective > Other...』을 실행한다. 그런 다음에 MyEclipse를 선택하고 OK를 눌러서 설치를 마무리한다.

출처 : http://totomar79.egloos.com/586388
Posted by 1010
98..Etc/MyEclipse2009. 7. 7. 13:08
반응형

갈릴레오에 Spring IDE를 설치한 다음 MyEclipse로 작업하던 프로젝트를 갈릴레오 프로젝트로 변환했다. 다음은 간략하게 정리한 변환 과정이다.

  1. 먼저 프로젝트에 사용할 WAS를 등록한다.
    프로젝트를 먼저 생성해도 상관은 없으나 먼저 만드는 쪽이 프로젝트 설정에 편하다.

  2. 다음 동적 웹 프로젝트(Dynamic Web Project)를 새로 생성한다.
    원래는 기존 프로젝트의 /.project 파일을 수정하려 했으나 /.settings 디렉터리 아래의 설정 파일이 엉키는 바람에 깨끗한 빈 프로젝트에서 시작하기로 했다.
    프로젝트 생성 시 대상 런타임(target runtime)과 서블릿 버전 등을 설정한다. 마지막 페이지의 컨텐츠 디렉터리는 패키지 탐색기(Package Explorer) 에서 직접 설정이 안되므로 주의한다(실수한 경우/.settings/org.eclipse.wst.common.component 파일에서 직접 수정할 수 있다).

  3. 새 프로젝트에 스프링 빌더와 네이처를 추가한다.
    패키지 탐색기의 문맥 메뉴에 있는 설정(Configure)에는 스프링 프로젝트로 변환하기가 없으므로 /.project 파일을 직접 수정한다. 스프링 프로젝트는 동적 웹 프로젝트와 달리 부가 설정 파일이 없어서 편하다.
    아래는 각각 추가할 빌더와 네이처 코드다.

    <buildCommand>
        <name>org.springframework.ide.eclipse.core.springbuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
    
    <nature>org.springframework.ide.eclipse.core.springnature</nature>
    
  4. 소스 파일을 복사한다.
    이때 위에서 준비한 마침표로 시작하는 설정 파일 및 디렉터리를 덮어쓰지 않도록 주의하자.

  5. 마지막으로 빌드 설정을 한다.
    목표는 간단하지만, 실제 해보면 이런저런 문제가 발생했다.

  • 먼저 스프링 라이브러리가 없어 빌드 오류가 나는 경우가 있다. 이는 Spring IDE는 MyEclipse와 달리 관련 라이브러리가 내장되어 있지 않기 때문이다(이 때문에 Maven을 잠깐 고려했으나 배보다 배꼽이 커지는 관계로 포기했다). 해결책은 배치된 MyEclipse 내장 라이브러리를 복사한다. 대표적으로 스프링 라이브러리와 하이버네이트 라이브러리가 있다. 단, 해당 라이브러리만 복사하면 의존성 문제가 생기기 때문에 기존 MyEclipse 프로젝트가 배치(deploy)된 상태에서 /WEB-INF/lib디렉터리를 통째로 복사해 오는 게 속 편하다. 라이브러리를 추가한 다음 필요한 라이브러리는 빌드 패스에 추가한다. 패키지 탐색기에서 Web App Libraries라고 다른 참조 라이브러리와 같은 아이콘을 가진 라이브러리 묶음이 있는데 이는 빌드 패스와 다르다. Commons DHCP 등 소스 및 스프링 설정에서 직접 참조하는 라이브러리를 추가하자.

  • 또 동적 웹 프로젝트 생성 시 서버 런타임 라이브러리 설정에 1번과 2번 순서가 바뀌는 등 문제가 있으면 HttpServletRequest 등 서블릿 관련 라이브러리를 못 찾는 경우가 있다. 이때 프로젝트의 빌드 패스 설정에서 라이브러리 탭에 들어가 서버 런타임(Server Runtime) 라이브러리를 추가하면 된다.

위에서 언급하지 않은 자잘한 문제가 많았지만 대부분 위 단계만 거치면 프로젝트를 원활히 변환할 수 있을 것이다.

Posted by 1010
98..Etc/MyEclipse2009. 7. 7. 13:07
반응형
Posted by 1010
98..Etc/MyEclipse2009. 7. 7. 13:06
반응형

MyEclipse을 활용한 효율적인 개발 방법

Table of Contents

이번 스터디에서 반드시 이해해야 할 부분

  • MyEclipse의 설치부터 사용법
    • MyEclipse 기반하에서 Struts 프레임워크 사용 방법.
    • MyEclipse 기반하에서 Hibernate 프레임워크 사용 방법.
    • MyEclipse 기반하에서 Database Explorer 사용 방법.
  • MyEclipse를 활용한 효율적인 애플리케이션 개발 방법.

About MyEclipse

Java 개발을 위한 Eclipse Plugin이다. open source에서 제공하는 일반적인 Plugin과의 차이점은 MyEclipse는 다양한 통합 plugin을 제공한다는 점이다. 마치 Eclipse를 위한 종합선물세트 같습니다.
MyEclipse는 2003년에 release 되어서 많은 다양한 plugin들을 제공하고 있습니다.

년간 29.95$를 지불하고 MyEclipse를 사용할 수 있습니다.
http://www.myeclipseide.com : MyEclipse Main 사이트

http://www.myeclipseide.com/ContentExpress-display-ceid-16.html : MyEclipse와 관련한 동영상 강좌를 볼 수 있는 곳입니다. 여기 있는거 보고 한번씩 따라해보면 MyEclipse에 관해서 쉽게 이해할 수 있을 겁니다.

http://www.myeclipseide.com/ContentExpress-display-ceid-15.html 문서 보시면 MyEclipse의 기능을 볼 수 있는데. 장난 아니게 많군요. 현재 개발중인 4.0에서는 Spring에 대한 통합 기능도 지원하는군요. 또한 마음에 드는 것이 MyEclipse에 포함될 기능들을 Forum을 통해서 선정한다는 것이 마음에 드네요. 여러분들도 MyEclipse Forum 가셔서 한표씩 행사하시기 바랍니다.

MyEclipse Install/Uninstall Quickstart

  1. Outline
  2. Preface
    MyEclipse 설치는 아래와 같은 상태에서 설치함을 원칙으로 합니다.
    SUN JDK 1.4.2
    Eclipse 3.0.1
    MyEclipse 3.8.2

Installing Eclipse

MyEclipse를 설치하기 위해서는 먼저 Eclipse가 설치되어 있어야만 합니다.
Eclips설치는 IDE:Eclipse 시작하기 문서를 참고하시기 바랍니다.

Installing MyEclipse

MyEclipse download는 MyEclipse 의 download site를 이용하여 local에 download합니다. 사이트에 등록을 해야 들어갈 download할 수 있기 때문에 되도록이면 등록하도록 합니다.
MyEclipse 설치는 아주 간단합니다. download 받은 파일을 실행시키고 미리 설치한 Eclipse 디렉토리만 지정하면 설치완료할 수 있습니다.
좀 더 자세한 내용은 MyEclipse 설치및 삭제하기를 참고하시기 바랍니다.

Struts Development Demo

Step1 : Create struts demo project

*Struts demo project을 생성합니다.


 

Step2 : Add Struts capabilities to struts demo web-project

*Struts demo project을 선택하고 오른쪽 버튼을 클릭하면 나오는 메뉴에서 MyEclipse | Add Struts Capabilities... 메뉴를 선택한다.


*Struts 개발환경을 설정한다.

Step3 : Create struts login application

#Workflow
*Create loginForm ActionForm
*Create login Action
*Create login.jsp
*Create success.jsp
#Create Login Actin and a corresponding Login ActionForm
struts-config.xml 파일을 열어봅시다.
이 xml 파일은 두 가지 방법으로 수정할 수 있습니다.
xml editor에서 직접 coding 하는 방법이 있고 outline view를 통하여 수정하는 방법이 있다. 우리는 후자를 택할 것입니다.
*Outline view에서 action-mappings 를 선택하고 오른쪽 클릭하면 나오는 메뉴에서 New Form, Action, and JSP 메뉴를 선택합니다.


*Form name은 loginForm 으로 Form property는 name을 설정합니다. Methods 탭에서는 validate와 reset 메소드의 체크를 해제합니다.


 


*Action class를 생성합니다. Default로 생성하고 forward는 뒤에서 추가하도록 합니다.


*struts-config.xml 의 Design view를 봅시다. login action을 더블클릭합니다. LoginAction class source가 나타나면 소스를 다음과 같이 수정합니다.


*아직 success target 에 대한 설정이 되어 있지 않습니다. 다음은 success forward에 대한 success.jsp를 생성하고 success forward도 설정하도록 하겠습니다.

Step4 : Create success forward and success.jsp

*Login을 성공한 사람의 이름을 보여주는 success.jsp 를 생성합니다.


*jsp의 body 소스를 아래와 같이 수정합니다.


*다음은 success forward를 설정합니다. struts-config.xml 로 갑시다.


 

Step5 : Deploy and test the application

*Deploy button을 클릭합시다.


 

Step6 : Start the application server

Step7 : Run the application


 

Configuring Database Explorer

MyEclipseIDE 에는 Database에 접속을 해서 query를 날리고 table를 살펴볼 수 있는 Database Explorer라는 기능을 제공합니다.
여기서는 Database Explorer를 설정하는 방법에 대해서 살펴봅시다. 이를 통하여 다음의 과정에서 좀 더 편하게 개발을 수행할 수 있습니다.

Database Explorer를 이용하여 Database에 접속하기 위해서는 3가지 단계의 process를 수행해야 합니다.
이 예제에서는 Database Server를 MySQL Server로 사용하고 이미 설치가 되어 있다고 가정하겠습니다.

*Configure the Database Explorer JDBC driver for your database
*Create a database connection profile
*Open a database connection

Configuring a JDBC Driver

*메뉴바에서 Window > Preferences > MyEclipse > Database Explorer > Drivers를 선택한다. dialog가 open되면 체크 표시가 있는 것이 있습니다. 이것은 이미 설정되었음을 의미합니다.
*MySQL 을 설정해야 되기 때문에 MySQL Connector / J Driver를 선택하고 Edit 버튼을 클릭합니다.
*Extra Classpath 탭을 클릭하고 New 버튼을 클릭합니다. MySQL JDBC driver를 선택합니다.


*OK button을 클릭합니다.
*이상과 같이 따라하게 되면 아래 그림과 같이 MySQL Connector / J Driver가 설정되었음을 나타내는 파란색 체크표시가 보입니다.

Creating a connection profile

Database에 대한 JDBC driver 설정이 끝나게 되면 Database에 대해 접속하기 위해서 Connection Profile을 생성해야 합니다. 이것은 Database에 접속하기 위한 기본적인 connection string을 정의하는 것으로 이해하면 됩니다.

Database Browser에 접근하기 위하여 Database Explorer Perspective를 open합니다.

*Window > Open Perspective > Other > MyEclipse Database Explorer 를 선택하고 OK button을 click합니다. Database Explorer Perspective가 open됩니다.


이제 Connection Profile을 생성하도록 합니다.
*Database Browser view에서 New Connection Profile icon을 클릭합니다. New Connection Profile dialog가 open됩니다.


 


*Profile Name은 LocalMySQL 을 입력합니다.
*Driver field에는 drop-down list에서 MySQL Connection/J Driver 를 선택합니다.
*URL 에는 jdbc:mysql://localhost:3306/homepagedb 를 입력합니다.
*UserName과 Password를 Database 설정에 맞게 입력합니다.
*Finish button을 클릭합니다.
새로운 Profile이 DB Browser view에 보이는 것을 확인할 수 있습니다.

Openning a Database connection

*Profile에서 right-click해서 Open connection... 메뉴를 선택합니다.


*Open Database Connection Wizard가 나타납니다.
*Ok button을 클릭합니다.


이제 Database 와의 접속이 되었으며 Database Browser에서 확인할 수 있습니다.

MyEclipse에서 Resin 설정

MyEclipse에 포함된 Application Server중 Resin 설정에 대해 살펴보겠습니다.
먼저, Resin을 다운받아 설치하시고, resin.conf 파일의 경로까지 모두 맞춰주십시요.
현 문서작성 기준은 Resin 2.1.6 입니다.

Resin 설정

  • Window > Preferences > MyEclipse > Application Servers 선택 ( Resin 버전에 맞게 선택 )
  • Resin Server : Enable 선택합니다.
  • Resin Home Directory : Resin 설치 디렉토리
  • Configuration File : resion.conf 파일
  • Resin JDK name : Resin 컴파일 jdk 버전을 선택합니다.
    JDK 버전 추가 및 변경은 Window > Preferences > Java > Installed JREs 에서 해줍니다.
  • Resin 에서 참조할 class path를 추가합니다.
    저도 이부분을 세팅 안해줘서 레진이 기동이 안됐었는데요..
    Resin/lib에 파일이 있다고 해도 여기서 추가해 주셔야 합니다.
  • Resin Start
    아래와 같이 Resin을 Start 합니다.
  • 콘솔창에서 Start된 상태를 확인합니다.

MyEclipse를 활용한 효율적인 애플리케이션 개발 방법.

이 절에서는 MyEclipse를 이용하여 애플리케이션을 개발할 때 개발 생산성을 위하여 바람직한 방향을 찾아보도록 하겠습니다. 또한 이미 MyEclipse를 사용하여 애플리케이션을 개발해본 개발자들의 의견들을 공유할 수 있었으면 합니다.

참고문헌

문서에 대하여

최초작성자 : 안용상
최초작성일 : 2005년 6월 28일
버전 : 1.0
문서이력 :

  • 2005년 6월 28일 안용상 문서 최초 작성
  • 2005년 7월 3일 Struts Demo project 추가
  • 2005년 7월 4일 Database Explorer 추가
  • 2005년 7월 12일 MyEclipseDemo project 추가

수정자: 이윤정
수정일: 2005년 8월 9일

Posted by 1010
98..Etc/MyEclipse2009. 7. 7. 13:05
반응형

Eclipse + myEclipse + Flex 를 이용해서 Flex 개발 환경을 설정한다.

1. Eclipse 3.2 를 설치한 후, myEclipse 5.5 를 설치한다. 마지막으로 Flex 2 builder 를 eclipse plug-in 버전으로 설치한다.(myEclipse랑 Flex 설치할 때 eclipse 폴더를 지정하는 것만 주의한다.)

2. 설치가 완료되면 New - Project 에서 'Web Project'를 선택한다.
※ Flex Project를 선택하지 않는다.

사용자 삽입 이미지

3. 프로젝트 명을 입력하고 [Finish]를 눌러서 프로젝트를 생성한다.
사용자 삽입 이미지
4. 퍼스펙티브를 마이이클립스로 바꾸라는 것인데, 그냥 바꿔준다.
사용자 삽입 이미지
5. 생성된 프로젝트는 아래와 같은 구조로 되어 있다.
프로젝트 이름이 Context root 가 되고, src 폴더와 WebRoot 폴더가 생성된다.
사용자 삽입 이미지

6. 프로젝트에 Flex Project 속성을 부여한다.
Flex Project Nature -> Add Flex Project Nature 선택
사용자 삽입 이미지

7. Flex Project 속성을 부여하면 프로젝트 구조가 아래 처럼 바뀐다.
사용자 삽입 이미지

8. 에러를 해결하기 위해 에러 윈도우에서 에러를 선택한 후 마우스 오른쪽 버튼을 클릭해서 'Recreate HTML Templates'를 누른다.
사용자 삽입 이미지

9. 에러를 해결하면 아래처럼 템플릿이 추가된다.
사용자 삽입 이미지

10. 사용하지 않을 폴더를 제거한다. bin 폴더는 불필요하니 제거한다.
사용자 삽입 이미지


11. 소스 폴더를 생성한다.(프로젝트 아래에 생성하며, 이름은 자유롭게 정한다.)
사용자 삽입 이미지


12. output 폴더를 생성한다.(WebRoot 밑에 '소스 폴더 이름\bin'으로 정한다.)
사용자 삽입 이미지

13. flex build path를 추가한다.
( 퍼스펙티브를 Flex Development로 바꾼 후, 프로젝트를 선택하고 오른쪽 버튼을 눌러 Properties를 누른다. Flex Build Path를 선택한다. )
사용자 삽입 이미지

14. Main source folder에는 방금 생성한 소스 폴더를(flex) 지정하고, Output folder에는 방금 생성한 output 폴더(WebRoot\flex\bin)를 지정한다.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

15. 설정이 다 되었으면 이제 애플리케이션을 Tomcat 서버에 deploy한다.
먼저 마이이클립스의 deploy 버튼을 눌러서(아래 그림 화살표 위치) deploy 창을 띄우고
deploy할 프로젝트를 선택한 후 [Add] 버튼을 누른다.
사용자 삽입 이미지
창이 뜨면 현재 설치해 둔 서버를 선택한다.(여기서는 Tomcat 5.x 버전 선택)
※ Deploy Location이 애플리케이션이 deploy되는 위치다.
사용자 삽입 이미지
[OK] 버튼을 눌러서 적용한 후, deploy를 한다.

16. deploy를 마쳤으면, [서버] 버튼(아래 그림 왼쪽 위)을 눌러서 Tomcat 서버를 띄운다.
사용자 삽입 이미지

17. 서버가 뜨고 나면, http://localhost:8080/FlexTest/ 로 접근해서 정상 동작 중인지 확인한다.
사용자 삽입 이미지

18. Flex Development 퍼스펙티브에서 Flex 화면을 디자인한다.
먼저 퍼스펙티브가 Flex Development인지 확인한 후 소스 폴더를 선택하고, 마우스 오른쪽 버튼을 누른다. new 를 선택한 뒤, MXML application을 선택한다. 이름을 지정한 뒤(mainTest.mxml) 생성되면 더블 클릭한다. 편집 창이 뜨면 'Design' 텝을 눌러서 GUI 환경으로 바꾼다. Components 텝에서 component를 가져다가 화면을 편집하고 저장한다.
사용자 삽입 이미지

19. 서버를 내리고, 다시 deploy를 해준다.
사용자 삽입 이미지

20. 서버를 기동시킨 후, http://localhost:8080/FlexTest/flex/bin/mainTest.html/ 로 접속해서 확인한다.
사용자 삽입 이미지

여기까지 되면 Flex Project 생성 끝!!!



출처 : http://digicom.tistory.com/180
Posted by 1010
98..Etc/MyEclipse2009. 7. 7. 13:04
반응형

기본적인 struts 어플리케이션 개발의 Quick Start

최종갱신:   번역: April 27, 2007

목차


1. 머리말

이 문서는 Sun JDK 1.4.2. Eclipse 3.2 및 MyEclipse 5.1.1을 이용해 작성되고 있습니다. 모든 스크린 샷은 Eclipse, MyEclipse Enterprise Workbench 및 Windows XP의 Default User Interface 설정에 근거하고 있습니다. 이 문서의 설명으로 불명한 점이 있는 경우 「사용자 피드백」 섹션으로 MyEclipse Document 팀에 피드백하는 방법을 참조해 주세요.




2. 처음

이 튜톨리얼에서는 MyEclipse Enterprise Workbench 를 사용해 단순한 샘플 Struts 어플리게이션의 개발 및 테스트에 대해 설명합니다. Struts 나 MyEclipse 의 사전 지식은 필요없습니다.

체제와 기능 범위가 유사하기 때문에, 이 튜토리얼은「JSF 튜토리얼」과 비슷합니다. 이 두개의 같은 프로젝트 목표 및 개요를 가지기 때문에, MyEclipse에서의 Struts 툴의 사용방법을 이해하면, JSF 와 Struts 를 다음에 비교할 수 있습니다.




3. 요건

아래는 이 가이드로 사용하는 소프트웨어의 리스트입니다.

Sun Java(TM) Development Kit(JDK)5.0

http://java.sun.com/javase/downloads/previous.jsp

Eclipse Platform 3.2.2

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

Eclipse Platform 3.2.1 NLpack1

http://download.eclipse.org/eclipse/downloads/drops/L-3.2.1_Language_Packs-200609210945/index.php

Eclipse Java Development Tools 3.2.2

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

Eclipse Java Development Tools 3.2.1 NLpack1

http://download.eclipse.org/eclipse/downloads/drops/L-3.2.1_Language_Packs-200609210945/index.php

MyEclipse 5.1.1

https://www.myeclipseide.jp

Tomcat 5.0.x ( 5.0.28 이 바람직하다. 또는 다른 벤더의 서블릿/EJB 컨테이너)

http://tomcat.apache.org/download-55.cgi

이 데모에서는 유저명과 패스워드는「myeclipse」입니다.


주: JDK 를 인스톨해 컴퓨터를 재기동한 후 Eclipse, MyEclipse 및 Tomcat 을 인스톨 해주세요. MyEclipse 의 인스톨에 대한 자세한 것은「MyEclipse 인스톨/언인스톨 퀵 스타트」를 참조해주세요. 모든 소프트웨어를 인스톨하면「어플리케이션 디플로이먼트 및 서버 관리 퀵 스타트」로 설명되고 있듯이, MyEclipse로 Tomcat 5 컨넥터를 셋업하지 않으면, 셈플 어플리케이션을 디플로이 및 실행할 수 없습니다.



4. 신규 프로젝트의 셋업 및 구성

개발물을 작성하려면, MyEclipse로 Struts기능이 추가된 신규 Web프로젝트를 작성해야합니다. Web 프로젝트를 작성하려면, 아래의 그림1에 보이듯이「파일」>「신규」>「프로젝트」>「MyEclipse」>「J2EE 프로젝트」>「Web 프로젝트」의 위저드를 사용합니다.


그림 1 - 「신규 J2EE Web 프로젝트」위저드


그림 2 처럼 신규 프로젝트의 정보를 모두 입력합니다.


그림 2 - Web 프로젝트 설정


Web 프로젝트를 설정하면, Struts 기능을 추가해야 합니다. 이것을 실행하려면, 「패키지 익스플로어」뷰에서 프로젝트의 루트를 오른쪽 클릭하고, 그림 3 처럼「MyEclipse」>「Struts 기능추가」를 선택합니다.



그림 3 - Web 프로젝트에 Struts 기능추가


「MyEclipse Web 프로젝트의 Struts Support」다이얼로그에는, 적절한 Default가 설정되어 있습니다. 다만「신규 클래스용 Base 패키지」를 변경해서, 희망하는 로케이션을 변경시킬 수도 있습니다. 아래의 그림 4 에서는 단순히 Default로 놔둡니다.



그림 4 - Struts 기능 구성


위저드가 완료되면, 프로젝트 구조는 그림 5 처럼 나타나게 됩니다.


그림 5 - 구성 후의 프로젝트 레이아웃


프로젝트를 작성하면, 다음 섹션에서 설명하듯이 Web컨텐츠의 작성을 개시할 수 있습니다.




5. Struts 프로젝트의 개시

이 섹션에서는 단순한 Web사이트 로그인 화면을 닮은 샘플 Struts 어플리케이션을 작성하는 것에 초점을 맞추었습니다. 그래서, 필요한건 유저에게 로그인을 재촉하는 페이지와 로그인이 성공한 것을 나타내는 페이지의 2개 JSP페이지 뿐 입니다. 이러한 페이지는 각각 userLogic.jsp 및 userLoginSuccess.jsp 입니다. 단순화한것이기 때문에, 로그인 시행중 허가 에러가 발생했을 경우, 유저를 userLogin.jsp 페이지에 리다이렉트해 에러 멧세지를 표시합니다.


Struts 프로젝트를 개시할 때는 일반적으로 어플리케이션 전체의 프로우를 레이아웃하는 것이 유용합니다. 개발 팀은 어플리케이션의 개개의 부품을 얼마나 조합하면 좋은가를 충분히 검토할 수 있겠지요. 플로우를 잘라내는 가장 용이한 방법은, Struts 구성 편집자의 그래픽컬 디자인 모드를 사용해 그래픽컬하게 작성하는 방법입니다. Struts구성 편집자에게는 드러그 앤 드롭 툴의 팔레트가 있어서 유저는 디자인 실물모형으로 부터 페이지 플로우를 재빠르게 복사하는 것으로 어플리케이션의 작성을 시작할 수 있습니다. 셈플 로그인 어플리케이션의 플로우는 아래의 그림 6과 같이 됩니다.


주: 어플리케이션 플로우의 스크린샷은 Struts 디자이너를 사용해 작성되었습니다.

    Struts 디자이너의 액세스 방법 및 사용방법에 대해서는 다음 섹션에서 설명합니다.


그림 6 - 셈플 어플리케이션 플로우


이 디자인 레이아웃으로부터 userLogin.jsp 페이지를 표시하는 것으로 어플리케이션은 시작하는 것을 압니다. 로그인 페이지는 userLogin 액션을 호출해 로그인 조작을 실행합니다. 검증에러 또는 문제가 발생했을 경우 userLogin액션은 userLogin.jsp 페이지에 되돌립니다. 다만, 로그인이 성공했을 경우 어플리케이션은 userLoginSuccess.jsp 페이지로 진행됩니다.




5.1 Struts 프로젝트의 컴포넌트

일반적인 Struts 프로젝트는 이하의 개발 결과물의 카테고리로 구성됩니다.

  • JSP
  • Action
  • ActionForward *
  • ActionForm **
  • Struts 디플로이먼트 기술자 : struts-config.xml

* ActionForward 는 struts-config.xml 파일내의 <forward> 엔트리이며, 액션이 완료했을 때에 실행하는 패스를 정의합니다. ActionForward 클래스의 커스텀 임플리멘테이션에 대해서는 말하지 않습니다만, 이것은 가능하고, 확정 유저를 위한 툴로 서포트되고 있습니다.


** ActionForm 는 유저가 구체적인 ActionForm 임플리멘테이션을 작성해 페이지를 랩하는 것을 원하지 않는 경우에 DynaForm의 사용에 옮겨놓을 수 있습니다.


MyEclipse 에서는 이러한 컴포넌트의 언젠가 또는 모든것 (struts-config.xml 파일은 제외하다)을 3가직 방법으로 작성할 수 있습니다.

방법 1

아래의 그림 7 에 보이듯이「파일」>「신규」>「그 외」>「MyEclipse」>「Web-Struts」>「Struts 1.1 (또는 1.0)」메뉴를 사용해 Struts위저드를 선택합니다.


그림 7 - 모든 사용가능한 Struts 위저드


위저드는 단순하고, 지정된 Struts 컴포넌트가 서포트하는 모든값에 대해 prompt를 냅니다. 다만 다른 위저드보다 복잡한 위저드도 있습니다. 예를 들면, 아래의 그림 8 에 보이는「Struts Action」위저드에서는 Struts Action 으로 서포트되는 모든 기능의 포괄적인 범위가 표시됩니다.


그림 8 - 「신규 Struts Action」위저드

방법 2

「아웃라인」뷰를 사용합니다. 이 뷰는 Struts 구성 편집자의 소스 뷰 표시가 액티브한 편집 문맥일 때 사용 가능합니다.「아웃라인」뷰로부터 위저드를 액티브하게 하는 임의의 루트레벨의 노드를 오른쪽 클릭해서 그 타입의 신규 컴포넌트를 작성하는 일도 위저드를 사용해 기존은 컴포넌트를 편집할 수 도 있습니다. 그림 9 는 이러한 문맥의 위저드를 사용하는 예를 나타냅니다.



그림 9 - 「아웃라인」뷰로부터의 Struts 위저드의 기동


이 스크린샷이 주목할 만한 점은 일부의 액션이 실제로 논리적으로 관련한 위저드이며, 플로우 전체의 작성을 가능하게 하는 것입니다. 위저드는 함께 링크되어, 공통의 값을 심리스에 재이용해 수동의 재입력을 최소한으로 합니다.

방법 3

그림 10 에 나타내는 Struts 구성 편집자의 디자인 페이지의 사용도, Struts 성과물을 작성하기 위한 매우 편리한 방법입니다. 디자이너에는, struts-config.xml 파일을 열어 액세스 합니다. 편집자의 하부에서 「디자인」탭을 클릭하면, 디자이너를 실행할 수 있습니다.


그림 10 - Struts 디자이너에의 액세스


디자이너로 전환하면, 아래의 그림 11 과 같은 뷰가 표시됩니다.


그림 11 - Struts 디자이너의 개요


Struts 프로젝트의 다양한 컴퍼넌트의 작성 방법에 대해 설명했습니다. 다음의 섹션에서는, 로그인 데모 어플리케이션의 다양한 부분을 작성합니다.



5.2 어플리케이션의 구축

데모 어플리케이션의 구축은, 우선 JSP 페이지의 작성을 중심으로 실시합니다. 데모 어플리케이션을 Web 사이트의 로그인 화면과 같이 하므로, userLogin.jspuserLoginSuccess.jsp 라고 하는 2 개의 JSP 페이지만 필요하게 됩니다. 대부분의 Struts 어플리케이션과 같게, 로그인중에 문제가 발생했을 경우, 유저를 userLogin.jsp 페이지에 되돌려, 에러를 표시합니다 (loginUserFailure.jsp 페이지를 작성할 필요가 없는 것은 이 때문에입니다).


우선, userLoginSuccess.jsp 페이지를 작성합니다. 최초로 마지막 페이지를 작성하므로 순서가 역과 같이 생각됩니다만, 이렇게 하는 것으로, 「신규 Form, Action 및 JSP」위저드를 사용해 최초의 JSP 페이지를 작성함과 함께, 관련하는 Action 및 ActionForm 를 작성할 수 있습니다.


디자이너 뷰로부터 userLoginSuccess.jsp JSP 페이지를 작성하려면 , "JSP" 팔레트 툴을 사용합니다. 우선 이 툴을 클릭하고 나서, 캔버스를 클릭합니다. 아래의 그림 12 의 설명에 따라 주세요.



그림 12 - 디자이너의 사용에 의한 JSP 의 작성


캔버스를 클릭하면, 그림 13 에 나타내는 것 같은 「신규 JSP 페이지」다이얼로그가 표시됩니다.


:「Struts 1.1 을 사용하는 표준 JSP」템플릿을 선택해 주세요.


그림 13 - JSP 위저드의 구성


종료」버튼을 클릭하면, 그림 14 에 나타나듯이, 디자인 뷰에 신규에 작성된 페이지가 표시됩니다.


: 「위저드 완료 후 파일을 연다」체크 박스를 선택했을 경우, 신규의 JSP 페이지를 추가하면, MyEclipse 는 JSP 편집자내에 신규 JSP 페이지를 엽니다. 아래의 스크린샷에서는, 어플리케이션이 어떻게 표시되는지를 나타내기 위해서 클릭해 디자이너에 돌아오고 있습니다. 이것은 JSP 페이지를 작성할 경우에 표시되는 플로우가 아니기 때문에 잘못되지 않게 해 주세요.


그림 14 - JSP 페이지가 표시된 Struts 디자이너


JSP 페이지를 완성시키기 위한 나머지의 작업은, 유저에게 로그인이 성공한 것을 알리는 메세지의 출력입니다. 완성한 페이지의 소스 코드를, 아래의 그림 14a 에 나타냅니다.


주: 이 가이드를 이해하기 쉽게 하기 위해서 (또, 코드 순이 펫을 짧게하기 위해 ), 이하의 JSP 페이지는, 파일을 처음으로 열었을 때에 표시되는 디폴트의 JSP 템플릿과는 닮지 않았습니다. 여기에 있는 코드를 그대로 카피하거나 신규 JSP 파일의 작성 후에 이 코드를 디폴트의 JSP 템플릿 코드에 거두어 들이거나 해도 상관하지 않습니다.


userLoginSuccess.jsp

<%@ page language= "java"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-template" prefix="template" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-nested" prefix="nested" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
  <head>
    <title>My Struts 'userLoginSuccess.jsp' ending page</title>
  </head>
 
  <body>
    Hello <bean:write name="userName" scope="request" />, you successfully logged in!
  </body>
</html:html>

그림 14a - userLoginSuccess.jsp 의 코드


이 페이지는 매우 단순합니다. 여기서의 작업으로 중요한 것은 <body> 태그의 내용뿐이어, 어플리케이션의 request 스코프에 보관되고 있는 변수 userName 의 값을 출력합니다. 따라서, 다음에 작성하는 Action 로, request 스코프내의 userName 의 이름에 의해 속성을 지정할 필요가 있습니다.


여기에서도,userLogin.jsp 페이지, ActionForm, 및 Action 를 작성할 필요가 있습니다. 작업이 많이 있는 것처럼 생각됩니다만, MyEclipse 에서는 「신규 Form」 및 「신규 Form, Action 및 JSP」위저드를 사용하는 것으로, 이 작업을 큰폭으로 간소화합니다.


userLogin.jsp 페이지를 작성할 때는, 이 페이지에 표시하는 필드를 검토해, 그러한 필드를 각각의 ActionForm 에 맵 할 필요가 있습니다. Form 에는 값이 보관되어 적절한 Action 에게 건네집니다. Form 를 생성할 때, 앞서 얘기한 2 개의 MyEclipse 위저드는, Form 와 함께 JSP 페이지를 작성하는 기능을 제공합니다. 이 기능에서는 Form 의 모든 자산이 사용되어 이러한 모든 Form 필드가 이미 존재해 사용 가능한 JSP 페이지가 생성됩니다. 이러한 상황으로, 로그인을 처리하기 위한 Action 도 작성하기 때문에, 단순한「Form」위저드는 아니고「Form, Action 및 JSP」위저드를 사용합니다.


어플리케이션의 작성을 속행하려면 , 그림 15 에 나타나듯이, Struts 디자이너의 흰 캔버스 에리어를 오른쪽 클릭해,「신규」> 「Form, Action 및 JSP」위저드의 순서에 선택합니다.


그림 15 - 디자이너로부터의 「Form, Action 및 JSP」위저드의 기동


최초로「Struts 1.1 Form 선언」위저드가 표시됩니다. 이것이 3 스텝 위저드의 최초의 위저드입니다. 위저드가 적절한 디폴트치를 설정할 수 있도록(듯이), 유스케이스명을 입력해 주세요. 그림 16 에,유스케이스를 입력하면 어떻게 값이 설정되는지를 나타냅니다.



그림 16 - 「Struts 1.1 Form 선언」위저드


다음에, 2 개의 Form 자산, userNamepassword 를 추가할 필요가 있습니다. 「패스워드」필드를 추가하는 경우, 그림 17 에 나타나듯이「JSP 입력 타입」필드의 「password」를 선택합니다.


그림 17 - Form 에의 자산의 추가


그림 18 - Form 자산


「다음」버튼을 선택하기 전에, 「JSP」탭을 클릭해, MyEclipse 로 이러한 값이 설정된 Form 를 가지는 양식 JSP 페이지를 생성하는 것을 위저드에 나타납니다. 아래의 그림 19 에 이것을 나타냅니다.

: 위저드의 디폴트의 행동에서는, 생성된 JSP 는 "/form" 서브 디렉토리에 배치됩니다만, 이 데모 어플리케이션에서는, 모든 JSP 를 webroot 에 배치합니다.


그림 19 - Form 용의 JSP 페이지의 생성을 유효하게 한다


마지막에 「메소드」탭을 클릭해, 위저드가 신규 Form 에 자동 생성할 수 있는 모든 메소드의 체크를 제외합니다. 아래의 그림 20 에 이 구성을 나타냅니다.


: 이 데모를 단순한 것으로 하기위해, reset 메소드나 validate 메소드를 생성합니다만, 일반적으로는 독자적인 어플리케이션을 코딩 할 경우에 이러한 메소드를 사용하는 것은 유리한 계책입니다.


그림 20 - 메소드 생성을 무효로 한다


「다음」버튼을 클릭하면,「Struts 1.1 Action 선언」위저드에 진행됩니다. 이 위저드에서는, 거의 모든 값이 이미 입력되고 있습니다. 여기에서는, 작성 끝난 Form 와 신규 Action 를 묶는 것에 의해 시간이 절약됩니다. 변경은 자유롭게 가 상관하지 않습니다만, 대부분의 경우 (물론 이 데모 어플리케이션에서도), 여기서 유일 주의할 필요가 있는 것은, Action 를 사용할 수 있는 「Forward」를 입력하는 것입니다. 그림 21 에 위저드의 스크린샷를 나타냅니다.


그림 21 - 「Struts 1.1 Action 선언」위저드


「ActionForward」를 지정하려면 , 그림 22 에 나타내도록(듯이)「Forward」탭을 클릭합니다.



그림 22 - Action Forwards 의 셋업


이 Action 에의 Forward 의 추가 후, 「종료」버튼을 클릭하면(자), MyEclipse 로 모든 신규 정보를 사용해 모든 자원을 작성하거나struts-config.xml 파일 ( 및 디자이너)을 갱신하거나 할 수 있습니다. 그림 23 에 갱신된 레이아웃 및 어플리케이션 구조를 나타냅니다.


: 작은 스크린샷에 다이어그램의 모든 엘리먼트를 명시할 수 있도록, 일부가 수동으로 레이아웃 되고 있습니다. 다이어그램을 수동으로 레이아웃 할 때, 변경 내용은 장래의 편집을 위해서 보존됩니다.


그림 23 - Struts 디자이너 및 어플리케이션의 개요


이것으로 어플리케이션 플로우가 정의되었기 때문에, Action 에 논리를 추가해, 이 데모·어플리케이션의 "login" 순서를 처리할 필요가 있습니다. 그림 24 에 나타내도록(듯이), 디자인을 더블 클릭 하면 자원으로 점프 할 수 있습니다.


그림 24 - 디자이너·자원을 더블 클릭 해 편집자를 연다


UserLoginAction.java 파일을 처음으로 열었을 경우,execute 메소드용으로 생성된 코드는 그림 24a 와 같이 됩니다.


UserLoginAction.java
public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  UserLoginForm userLoginForm = (UserLoginForm) form;
  // TODO Auto-generated method stub
  return null;
 }

그림 24a - 생성된 execute 메소드


디폴트의 임플리멘테이션에서는 단지 null 를 돌려주고 있을 뿐입니다만, 이것을 제거해, 그림 24b 에 나타내는 것 같은 단순한 로그인 Logic에 옮겨놓습니다.

UserLoginAction.java
 public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  UserLoginForm userLoginForm = (UserLoginForm) form;
 
  if(userLoginForm.getUserName().equals("myeclipse") && userLoginForm.getPassword().equals("myeclipse"))
  {
   request.setAttribute("userName", userLoginForm.getUserName());
   return mapping.findForward("success");
  }
 
  return mapping.findForward("failure");
 }

그림 24b - 수정된 execute 메소드


여기에서는 매우 단순하게,userNamepassword 의 값이 함께 "myeclipse" 일지 어떨지를 체크합니다. "myeclipse" 인 경우,userName 를 request 스코프에 보관해,success forward 를 돌려주므로, userLoginSuccess.jsp 페이지에 사용자 정의의 메세지를 표시할 수 있습니다. 그렇지 않은 경우, 문제가 있으면, failure forward 를 돌려줍니다. 일반적으로 실제의 어플리케이션에서는, 발생한 문제를 설명하기 위해, failure forward 를 되돌리기 전에 ActionMessages 또는 ActionErrors 콜렉션을 request 스코프에 추가합니다.



6. 데모의 실행

이것으로 어플리케이션이 완성했습니다. 「데프로이먼트 관리」다이얼로그를 열어, 이 프로젝트의 신규 데프로이먼트를 셋업 하는 것으로, Tomcat 5 에 데프로이 할 수 있습니다. 그림 25 에 나타내는 관리 다이얼로그를 열려면 , 「패키지 익스플로어」뷰로 프로젝트를 오른쪽 클릭해,「MyEclipse」> 「프로젝트 데프로이먼트의 추가와 제거」를 선택하는지, 툴바의「MyEclipse J2EE 프로젝트를 서버에 데프로이」아이콘을 클릭합니다.


주: MyEclipse 로 Tomcat 5 (또는 그 외의) 어플리케이션 서버 컨넥터를 이미 셋업 하고 있는 것이 전제가 되고 있습니다. 아직 셋업 하고 있지 않고, help가 필요한 경우는,「어플리케이션의 데프로이먼트 및 서버 관리의 퀵 스타트」가이드를 참조해 주세요.



그림 25 - 신규 데프로이먼트의 작성


데프로이먼트의 완료 후에 데프로이먼트 상황을 체크해, 에러가 발생하고 있지 않는 것을 확인하는 것을 추천합니다. 이것을 실시하려면 , 그림 26 의 설명에 따릅니다.



그림 26 - 데프로이먼트가 성공한 것의 확인


마지막으로, 그림 27 에 나타내는 어플리케이션 서버의 시작 버튼을 사용해 Tomcat 를 기동합니다.



그림 27 - 어플리케이션·서버의 개시


서버가 시작되면, 출력이 Eclipse 의 「콘솔」뷰에 송신됩니다. 그림 28 에, 이하의 2 개를 확인할 수 있도록 통상의 Tomcat 의 기동을 나타냅니다.
 1) Tomcat 가 Web 어플리케이션을 정상적으로 데프로이 했다
 2) Tomcat 가 정상적으로 기동했다



그림 28 - 어플리케이션과 서버가 올바르게 기동한 것의 확인


Tomcat 5 가 실행되면(자), 「MyEclipse Web 브라우저」뷰를 열어 테스트할 수 있습니다. 이것을 실시하려면 ,「윈도우」> 「뷰의 표시」> 「그 외...」(을)를 선택해, 「뷰의 표시」다이얼로그에 액세스 해, 「MyEclipse Enterprise Workbench」> 「Web 브라우저」뷰를 선택합니다.


Open
그림 29 - 「Web 브라우저」뷰의 오픈


그림 30 에 나타나듯이 브라우저의 주소·바에 http://localhost:8080/StrutsLoginDemo/userLogin.jsp 라고 입력해, 샘플 어플리케이션을 액티브하게 합니다.


그림 30 - 데모 어플리케이션에의 로그인


이와 같이, 어플리케이션은 사용 가능하다라고 하는 것을 알수있습니다. 이것으로, 유저명과 패스워드를 입력할 수 있습니다.


주: 이 데모의 유저명과 패스워드는, 어느쪽이나 'myeclipse'입니다.


로그인 후, Form 가 검증되어 어플리케이션은 유저를 로그인 성공 페이지에 진행합니다. 그림 31 은, Action 에 의해 유저가 올바르게 진행된 userLoginSuccess.jsp 페이지를 나타내고 있습니다.



그림 31 - 성공한 로그인


주:본 샘플 어플리케이션에의 액세스때는, HTTP 포토로서 8080 을 지정하고 있습니다만, 포토 번호는 사용하시는 서버 설정에 맞추어 적당히 변경해 주세요.




7. 통계

이 데모에서는, MyEclipse Enterprise Workbench 로 사용 가능한 Struts 툴을 사용해, 단순한 Struts 어플리케이션을 작성했습니다.


이것으로, Struts 의 설명은 종료됩니다. Web 프로젝트에서의 작업, 어플리케이션의 데프로이먼트 및 서버 관리에 대한 개요는, 그 외의 퀵 스타트 문서로 입수할 수 있습니다. 자세하게는, 메인 메뉴의문서에 액세스 해 주세요.


8. 사용자 피디백

이 문서에 대해 의견, 제안이 있으면, 서포트 포럼으로 보내 주세요. 

Posted by 1010
98..Etc/MyEclipse2009. 7. 7. 13:03
반응형
Posted by 1010
62.solaris2009. 7. 7. 09:37
반응형

윈디하나의 솔라나라: TOMCAT

목차

개요
설치
Java JDK
Tomcat
Tomcat - Connectors
Tomcat - Native library
설정
아파치 웹 서버 설정
톰캣 설정
테스트

개요

  • 아파치 톰캣(Apache Tomcat)은 자바 서블릿과 자바 서버 페이지(JSP)를 구현한 자바 서블릿 컨테이너다.
  • 처음에는 아파치 소프트웨어 재단에서 만든 자카르타 프로젝트에 속해 있었지만, 현재는 톱 레벨 프로젝트로 승격되었다. (자카르타 프로젝트는 아파치 소프트웨어 재단에서 지원하는 오픈 소스 자바 솔루션 프로젝트의 이름이다)
  • 현재 톰캣은 자바 서블릿(Servlet) 2.5 와 자바 서비스 페이지(JSP) 2.1 스펙을 준수한다.
  • 공식 홈페이지: Apache Tomcat
  • 본 문서에서는 아파치 톰캣을 설치하고, 아파치 웹 서버와 연동시키며, 톰캣 네이티브 라이브러리까지 설치하는 것을 다룬다.

설치

  1. Java JDK

    톰캣은 자바로 만들어져 있기 때문에 자바를 설치해야 한다. Java SE Downloads에서 [JDK 6 Update 14]를 받는다. (물론 솔라리스10의 /usr/java 디렉토리에 있는 자바를 사용해도 된다) 여기서는 JDK를 사용했지만 런타임만 필요하다.
    root@wl ~ # cd /usr/local
    root@wl /usr/local # ~/jdk-6u14-solaris-i586.sh
    root@wl /usr/local # ln -s jdk1.6.0_14 java
    root@wl /usr/local # vi /etc/profile
    # for Tomcat
    if [ -d /usr/local/tomcat ]
    then
      PATH=$PATH:/usr/local/tomcat/bin; export PATH;
    fi
    
    # for JAVA
    if [ -d /usr/local/java ]
    then
      PATH=/usr/local/java/bin:$PATH; export PATH;
      JAVA_HOME=/usr/local/java; export JAVA_HOME;
    fi
    root@wl /usr/local # . /etc/profile
    
  2. Tomcat

    톰캣의 설치는 매우 간단하다. 파일을 받아 적당한 디렉토리에 풀어주면 된다.
    root@wl ~ # wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
    root@wl ~ # cd /usr/local
    root@wl /usr/local # tar xvfz ~/apache-tomcat-6.0.20.tar.gz
    root@wl /usr/local # ln -s apache-tomcat-6.0.20 tomcat
    root@wl /usr/local # /usr/local/tomcat/bin/startup.sh 1)
    Using CATALINA_BASE:   /usr/local/apache-tomcat-6.0.20
    Using CATALINA_HOME:   /usr/local/apache-tomcat-6.0.20
    Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.20/temp
    Using JRE_HOME:        /usr/local/java
    root@wl /usr/local # 
    
    1) 스크립트를 실행하고 http://localhost:8080 에 접속해보면 아래와 비슷한 화면이 나온다. 8080 포트가 아닌 80 포트로 톰캣을 실행시키려면 /usr/local/tomcat/conf/server.xml 에 8080으로 된 문자를 전부 80으로 바꾸면 되며, 파일 이미지와 JSP파일은 /usr/local/tomcat/webapps/ROOT 아래에 넣으면 된다.
  3. Tomcat - Connectors

    • 톰캣만으로도 웹 서비스를 하는데에는 지장 없지만, 정적 컨텐츠(예를 들어 이미지들)의 효율적인 전송이나 rewrite와 같은 기능, php의 연동을 위해 아파치 웹 서버가 필요할 때가 있다. 웹서비스시, 톰캣은 JSP와 서블릿을 실행하기 위한 용도로만 사용하고, 나머지(이미지 전송, PHP/CGI실행 등등)는 아파치 웹 서버에 맡기는 방법이다. 여기서는 아파치 웹 서버가 /usr/local/apache2 에 설치되었다고 가정한다. 아파치 웹 서버의 설치방법은 윈디하나의 솔라나라: SAMP를 참고한다.
    • 80 포트로 오는 요청은 아파치 웹서버가 받아 처리하는데, JSP/서블릿에 대한 요청은 다시 톰캣에게 주어 톰캣이 처리한 결과를 받아 아파치 웹 서버가 클라이언트에 전송하는 방식이다. 여기서 톰캣과 아파치 웹 서버를 연결해주는 프로토콜은 현재 AJP v1.3이 많이 사용되고 있으며 이를 구현한 것이, mod_jk 이라는 모듈이다.
    • Apache Tomcat - Tomcat Connectors (mod_jk) Downloads
    root@wl ~ # wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz
    root@wl ~ # tar xvfz tomcat-connectors-1.2.28-src.tar.gz
    root@wl ~ # cd tomcat-connectors-1.2.28-src/native
    root@wl ~/tomcat-connectors-1.2.28-src/native # ./configure --with-apxs=/usr/local/apache2/bin/apxs
    root@wl ~/tomcat-connectors-1.2.28-src/native # /usr/sfw/bin/gmake
    root@wl ~/tomcat-connectors-1.2.28-src/native # /usr/sfw/bin/gmake install
    root@wl ~/tomcat-connectors-1.2.28-src/native # cd ../conf
    root@wl ~/tomcat-connectors-1.2.28-src/conf # cp workers.properties /usr/local/tomcat/conf/workers.properties
    
  4. Tomcat - Native library

    톰캣을 실행시킨후 CATALINA_HOME/logs/catalina.out 을 살펴보면 톰캣을 시작할때 아래와 같은 메시지가 나오는 것을 확인할 수 있다.

    정보: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ... (이하생략)

    이 메시지는 톰캣 네이티브 라이브러리를 사용하지 않았을때 나오는 안내문구이다. 성능을 위해서는 네이티브 라이브러리를 사용하라는 것이다. 이는 http://tomcat.apache.org/tomcat-6.0-doc/apr.html 의 문서를 보면 더 많은 정보를 얻을 수 있다. 이 네이티브 라이브러리를 컴파일해 설치하기 위해서는 APR 1.2+(아파치2를 설치할때 같이 설치된다), OpenSSL 0.9.7+, JDK 1.4+ 가 필요하다. 단순히 아래와 같이 설치해주면 된다.
    root@wl ~ # cd /usr/local/tomcat/bin
    root@wl /usr/local/tomcat/bin # tar xvfz tomcat-native.tar.gz
    root@wl /usr/local/tomcat/bin # cd tomcat-native-1.1.14-src/jni/native
    root@wl /usr/local/tomcat/bin/tomcat-native-1.1.14-src/jni/native # ./configure --prefix=/usr/local --with-apr=/usr/local/apache2 1)
    root@wl /usr/local/tomcat/bin/tomcat-native-1.1.14-src/jni/native # make
    root@wl /usr/local/tomcat/bin/tomcat-native-1.1.14-src/jni/native # make install 2)
    
    1) 아파치2의 APR 라이브러리를 사용하고, /usr/local에 설치한다.
    2) 설치한 후, 톰캣을 재시작하면 네이티브 라이브러리를 로드하면서 기동할 것이다.

설정

  1. 아파치 웹 서버 설정

    root@wl ~ # vi /usr/local/apache2/conf/httpd.conf 1)
    LoadModule jk_module modules/mod_jk.so
    JkWorkersFile "/usr/local/tomcat/conf/workers.properties"
    JkLogFile "logs/mod_jk.log"
    JkLogLevel warn
    JkMount /*.jsp ajp13
    root@wl ~ # vi /usr/local/tomcat/conf/workers.properties 2)
    workers.tomcat_home=/usr/local/tomcat
    workers.java_home=/usr/local/jdk
    
    1) 아파치 웹 서버의 설정 파일을 변경한다. 만약 가상 호스트를 사용하고 있다면, [JkMount /*.jsp ajp13]부분은 각각의 가상호스트세팅(<VirtualHost> ~ </VirtualHost>)에 모두 넣어주어야 한다.
    2) JNI를 사용하기 위해서는 반드시 아래 두 태그를 설정해야 한다.
  2. 톰캣 설정

    root@wl ~ # vi /usr/local/tomcat/conf/tomcat-users.xml
    <?xml version='1.0' encoding='utf-8'?>
    <tomcat-users>
      <role rolename="standard" />
      <role rolename="manager"/>
      <user username="tomcat" password="s3cret" roles="standard,manager"/>
    </tomcat-users>
    root@wl ~ # vi /usr/local/tomcat/conf/server.xml
    <!-- Connector 태그에 URIEncoding="UTF-8" 속성을 추가한다.  -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
    <!-- 아래의 내용을 <Engine>과 </Engine>사이에 넣어야 한다. -->
    <Host name="APACHE_SERVER_NAME" appBase="APACHE_DOCUMENT_HOME"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
    </Host>
    root@wl ~ # mkdir -p APACHE_DOCUMENT_HOME/ROOT/WEB-INF
    root@wl ~ # /usr/local/tomcat/bin/startup.sh
    root@wl ~ # /usr/local/apache2/bin/apachectl restart
    
    3) server.xml을 아파치의 설정에 맞게 바꿔야 한다. APACHE_SERVER_NAME, APACHE_DOCUMENT_HOME은 아파치의 설정에 맞게바꿔야 한다. APACHE_SERVER_NAME은 httpd.conf의 ServerName과 동일하게 해야 하며, APACHE_DOCUMENT_HOME은 httpd.conf의 DocumentRoot와 동일하게 값을 넣어야 한다.

    ※ Context를 정해주지 않으면 400: No Host matches server name xxxx 를 보게 될 것이다. 톰캣 5.5부터 context는 WEB-INF에서 설정할 수 있다.
    ※ http://APACHE_SERVER_NAME/manager/html/ 으로 접속후 tomcat / s3cret 를 사용해 접속하면 톰캣 관리자 페이지가 나온다.

테스트

root@wl ~ # vi $APACHE_DOCUMENT_HOME/ROOT/test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head><title>JSP TEST</title></head>
<body><pre>
클래스경로: <%=System.getProperty("java.class.path",".")%>
라이브러리경로: <%=System.getProperty("java.library.path", ".")%>
파라메터: <%=request.getParameter("param")%> (일치해야함)

파일인코딩: <%=System.getProperty("file.encoding")%>
시스템캐릭터셋: <%=java.nio.charset.Charset.defaultCharset().name()%>
페이지캐릭터셋: <%=response.getCharacterEncoding()%>

서블릿 경로: <%=application.getRealPath("")%>
</pre></body>
</html>
root@wl ~ # http://localhost/test.jsp?param=%ED%95%9C%EA%B8%80 를 확인해보면 된다
Posted by 1010
62.solaris2009. 7. 7. 09:33
반응형
1. 오라클 사이트에서 오라클 10g를 다운로드(2008년1월31일현재 연결됨)


2. 오라클에서 권장하는 사양은 메모리 512MB 이상, 스왑 공간 1GB 이상 필요.

공유메모리와 관련된 시스템 커널 파라메터를 수정한다.

# cd /etc

# mv system system_old

# cp system_old system

# vi system

system 파일의 끝에 추가해 준다.

set noexec_user_stack=1

set semsys:seminfo_semmni=100
set semsys:seminfo_semmns=1024
set semsys:seminfo_semmsl=256
set semsys:seminfo_semvmx=32767
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10

system 파일을 수정 저장한 후 시스템을 리부팅한다

# sync; sync; reboot



3. 오라클 계정을 생성한다. 오라클은 root 로 설치할 수 없다.
오라클 설치를 위해 oinstall 그룹, dba 그룹, oracle 유저를 생성한다.

# groupadd oinstall

# groupadd dba

# useradd  -d /export/home/oracle -g oinstall -G dba -m -s /usr/bin/bash oracle

# passwd oracle

(오라클 비밀번호 설정)


4.오라클 계정의 환경 설정.

# /usr/openwin/bin/xhost +   // 디스플레이 활성화
# su - oracle       // 오라클 계정으로 로그인
$ mkdir oraapp     // 오라클 어플리케이션이 설치될 곳.
$ mkdir oradata    // 오라클 데이터가 설치될 곳.
$ chmod -R 755 oraapp
$ vi .profile

DISPLAY=localhost:0.0; export DISPLAY

ORACLE_HOME=/export/home/oracle/oraapp/product/10.2.0; export ORACLE_HOME;
ORACLE_SID=orcl; export ORACLE_SID;
ORACLE_OWNER=oracle; export ORACLE_OWNER;
LNS_LANG=KOREAN_KOREA.KO16MSWIN949; export NLS_LANG;
ORA_NLS=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS
PATH=$PATH:$ORACLE_HOME/bin; export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib


수정된 .profile 를 적용한다.
$ source .profile
$ vi .profile





5. 이제 파일의 압축을 풀고 설치 시작.

$ cksum 10gr2_db_sol.cpio.gz
$ gunzip 10gr2_db_sol.cpio.gz
$ cpio -idcmv < 10gr2_db_sol.cpio

$ ./runInstaller 을 해서 오라클 설치를 시작하면 된다.


주의 : 다시 설치해야 할때는 디스 플레이를 다시 활성화를 시켜줘야 한다

# /usr/openwin/bin/xhost +   // 디스플레이 활성화





- 일부 권장사항 검사에 실패하였어도 설치에 문제가 없다.








화면에 나온대로 root 로 로그인한 뒤 스크립트를 실행하고 돌아와서 확인버튼을 클릭한다.

반드시 루트 계정으로 실행한다.

$ su -
# /export/home/oracle/oraInventory/orainstRoot.sh
# /export/home/oracle/oraapp/product/10.2.0/root.sh




데이터베이스 설치중에 에러가 발생함.

시스템은 UTF-8 로 되어있고, oracle 계정의 .profile 에는

NLS_LANG  이 KOREAN_KOREA.K016KSC5601(euc-kr) 로 정의되어 있기 때문이었다.

그래서 재설치를 강행했다.


1.시스템 문자셋 euc-kr 로 변경
- root 로 로그인
# vi /etc/default/init
LANG=ko_KR.UTF-8 을
LANG=ko 로 수정한 후 저장

2.설치된 폴더 삭제

- oracle 계정으로 로그인

- oraInventory 폴더 삭제

$ rm -rf oraInventory
- oraapp 폴더안의 product 폴더 삭제

$ cd oraapp

$ rm -rf product

$ cd ..

3.NLS_LANG 변경
- NLS_LANG 을 KOREAN_KOREA.K016KSC5601 에서
  KOREAN_KOREA.KO16MSWIN949 으로 변경. (표현되는 문자가 더 많다고 해서)
$ vi .profile
..
LNS_LANG=KOREAN_KOREA.KO16MSWIN949
- .profile 적용
$ source .profile

4. 다시 설치 시작
$ ./runInstaller

설치 과정에서 "제품별 필요 조건 검사"에서
"사용 가능한 교체 공간 요구 사항을 확인하는 중..." 에서
예상결과보다 실제결과가 적게 나와서 swap 공간을 늘려 줬다
Posted by 1010