WebtoB + JEUS + web application

WebtoB + JEUS + web application

webgosu.egloos.com/9123240

1. WebtoB 설치
1.1 설치파일, 라이센스(license.dat)준비
1.2 라이센스 적용 : webtoB4.1licenselicense.dat

2. WebToB 실행
2.1 실행파일생성(wsconfig) –> 환경파일 컴파일 : wscfl -i [환경파일]

2.2 실행 : wsboot –> wsboot -w (handler가 process들을 확인하며 booting->안정적인 booting)
2.3 종료 : wsdown –> wsdown -i (질의를 던지지 않고 바로 down)

2.4 웹서비스 테스트 : http://127.0.0.1:8080/

3. WebToB 환경설정 파일 : sample.m
3.1 가상홍스트 추가하기
*VHOST
vhost1 DOCROOT=”D:/TmaxSoft/edu01″, HOSTNAME=”test.tmax.co.kr”,
NODENAME=”Impression32″, PORT=”80″

3.2 윈도우의 hosts 파일에 등록하기
D:WINDOWSsystem32driversetchosts 파일에 등록

3.3 환경파일 컴파일 : wscfl -i sample.m
3.4 기동중인 webtob 다운 후 재부팅 : wsdown -i / wsboot
3.5 테스트
NODE절 포트 수정 확인 :
http://127.0.0.1:80/
가상호스트 추가 확인 : http://test.tmax.co.kr:80/

4. WebtoB 관리 툴 : wdadmin
4.1 wi : 웹투비의 기본 정보 출력
4.2 ci : 접속한 클라이언트의 정보 출력
ci -s : 접속한 클라이언트의 수 출력
cfg : 웹투비의 환경설정 내용 확인
cfg -n : 노드 환경설정 내용 확인
si : 웹투비의 서비스 목록 출력
st -v : 웹투비의 서비스 상태 출력
st -p : 웹투비의 프로세스 상태 출력
repeat(r) : 웹투비의 명령을 반복적으로 수행하여 모니터링 효과를 냄
ex) r -i 2 -k 10 si

5. JEUS 설치
5.1 JEUS 설치파일, 라이센스
5.2 라이센스 적용 : D:TmaxSoftJEUS5.0licenselicense파일적용

6. JEUS 실행
6.1 Two-step 부팅
: 서버실행 – jeus
: 엔진실행 – JEUS의 웹관리자
웹관리자주소 :
http://127.0.0.1:9744/webadmin
포트번호지정 : 기본Base port(9736) + 8
포트번호변경 : bin/jeus.properties.cmd
JEUS/config/vhost.xml 의 포트번호를 변경합니다.
웹관리자 계정 : administrator
패스워드 : jeusadmin

노드선택 –> 제어 –> 부트

6.2 One-step 부팅
: 부트명령(jboot.bat) –> jeus -xml -Uadministrator -Pjeusadmin
: 종료명령(jdown.bat) –> jeusadmin [노드명] -Uadministrator -Pjeusadmin jeusexit

6.3 JEUS 웹서비스 테스트
:
http://127.0.0.1:8088/

7. JEUS의 환경설정 파일
7.1 JEUSconfigJEUSMain.xml : JEUS서버 전체의 환경 설정
7.2 EJBMain.xml : EJB엔진에 대한 환경 설정
7.3 JMSMain.xml : JMS엔진에 대한 환경 설정
7.4 WEBMain.xml : Servlet엔진에 대한 환경 설정
web.xml : 웹의 컨텍스트를 만들때 컨텍스트의 환경설정
7.5 WSMain.xml : WS엔진에 대한 환경 설정

1. JEUS에서 web application 서비스하기
1.1 물리적 Context 생성
C:tmaxsoftedu01
|—-WEB-INF
web.xml(NODE의 servlet engine에서 가져옴)

1.2 JEUS에 Context 등록
웹관리자 로그인 –> J2EE 어플리케이션 모듈배치 –> 절대경로
–> ~~~~ –> 배치(2단계배치[J2EE어플리케이션모듈], 영구배치[J2EE어플리케이션모듈배치])

1.3 서비스 실행
:테스트를 위한 jsp파일 생성(test.jsp)
:http://127.0.0.1:8088/edu01/test.jsp
8088 : http_listener port
edu01: 배치한 모듈명
test.jsp :

실습) edu02 컨텍스트 생성, 실행 웹 어플리케이션 파일 test02.jsp –> http://127.0.0.1:8088/edu02/test02.jsp

2. JEUS container 관리
2.1 생성 : 서블릿 엔진 생성(리스너ID, 리스너PORT 지정)

2.2 서블릿 엔진 테스트 –> http://127.0.0.1:8089/edu01/test.jsp

3. WebtoB와 JEUS연동하기
3.1 WebtoB 설정 : sample.m 파일에 추가
3.2 JEUS 설정 : 해당 컨테이너의 webtob 리스너 연결 설정

3.3 연동 설정 테스트 –> http://127.0.0.1:80/edu01/test.jsp

4. 실 습
WebtoB의 가상호스트 vhost1 과 JEUS의 container1에 webtob2 리스너 추가, 연동.
http://test.tmax.co.kr:80/edu01/test.jsp

4.1 WebtoB 설정 추가

4.2 JEUS container1에 webtob2 리스너 추가

5. JEUS에서 서블릿 실습

5.1 서블릿 코드 작성 : HelloWorldServlet.java

5.2 컴파일 : jeus.jar 파일 경로 지정후
javac -d . HelloWorldServlet.java

5.3 JEUS에서 실행 –> http://127.0.0.1:8088/edu01/servlets/HelloWorldServlet
web.xml 문서의 WorkServlet 은 /servlets/* 로 매핑되어 있음

1. WAR 파일 생성하기
1.1 패키징하기 : JeusBuilder 사용
– 파일명 : wartest.war
서블릿명 : Hello
서블릿 클래스 : tmax.HelloWorldServlet
URI 패턴지어 : /helloworld
Contextpath(url에서 context호출) : /hello

1.2 JEUS에 패키징한 모듈 배치하기
– JEUS 웹관리자 –> J2EE 어플리케이션 모듈 배치 –> 모듈배치 –> ~~~ –> 배치(2단계 배치, 영구배치)

http://1273.0.0.1:8088/Hello (/Context를 정의, /Context는 모듈에 하나존재)

1.4 실 습
파일명 : wartest2.war
서블릿명 : Hello2
서블릿 클래스 : tmax.HelloWorldServlet
URI 패턴지정 : /helloworld2/
Contextpath : /hello2
<결과확인>
http://127.0.0.1:8088/hello2/Hello2 , http://127.0.0.1:8088/hello2/helloworld2/

2. DB 연동
2.1 DataBase 정보 확인
– 서버 IP : 192.169.10.5
– 접속계정 : oracle/dkzkepal(아카데미)
– sql접속계정 : sqlplus edu01~edu32/edu01~edu32
– SID 명 : ORA10G

– 테이블 생성 : TmaxTest
create table TmaxTest ( name varchar(20), address varchar(20) );

– 데이터 입력 :
Insert into TmaxTest values(‘장동건’,’서울’); Insert into TmaxTest values(‘강호동’,’부산’);

– commit;

2.2 드라이버 준비 및 JEUS 서버 등록
– JDBC 드라이버 : ojdbc14.zip
– 오라클 JDBC 드라이버 다운로드 사이트 : http://www.oracle.com/global/kr

– JEUS 등록 : D:TmaxSoftJEUS5.0libdatasourceojdbc14.jar

2.3 DataSource 설정
– JEUS 웹관리자 -> JEUS 매니저 리소스 -> JDBC -> 새 JDBC 데이터 소스 생성

2.4 실 습
로그인 실행 테스트 : MVC

login.jsp (presentation 로직 : View)

loginCheck.jsp (business 로직 : Control)

TmaxLogin (data : Model)

아이디 : tmax 비밀번호 : 1234

***************************************************************************************************************

*** webToB

***************************************************************************************************************
*VHOST
vhost11 DOCROOT=”c:/xxx/webapps/test/”,
NODENAME = “web1”,
HOSTNAME = “test.com”,
PORT = “80”
vhost12 DOCROOT=”c:/xxx/webapps/test/”,
NODENAME = “web1”,
HOSTNAME = “www.test.com”,
PORT = “80”

* SVRGROUP
vhost11g NODENAME = “web1″, SVRTYPE = JSV,Vhostname=”vhost11”
vhost12g NODENAME = “web1″, SVRTYPE = JSV,Vhostname=”vhost12”

* SERVER
test SVGNAME = vhost11g, MinProc = 20, MaxProc = 20, HttpInBufSize=0
wwwtest SVGNAME = vhost12g, MinProc = 20, MaxProc = 20, HttpInBufSize=0

***************************************************************************************************************
*** JEUS

***************************************************************************************************************
container.xml 에 두개의 contextgroup을 생성하여 각각의 RegistrationID 를 test, wwwtest 로 하여 연동

***************************************************************************************************************

웹모듈(application) 추가하기

1) %JEUS_HOME%config노드명JEUSMain.xml 수정

– 아래내용 추가

<application>
< absolute-path>폴더위치</absolute-path>
< name>애플리케이션명</name>
< path></path>
< deployment-type>COMPONENT</deployment-type>
< web-component/>
< deployment-target>
< target>
< engine-container-name>컨테이너명</engine-container-name>
< web-context-group>
< name>MyGroup</name>
< /web-context-group>
< /target>
< /deployment-target>
< classloading>ISOLATED</classloading>
< class-ftp-unit>JAR</class-ftp-unit>
< /application>

2) JEUS 재시작

3) 해당폴더WEB-INF/web.xml 생성 확인

4) 해당폴더WEB-INF/jeus-web-dd.xml 생성 확인

<?xml version=”1.0″ encoding=”UTF-8″?>
< jeus-web-dd xmlns=”http://www.tmaxsoft.com/xml/ns/jeus“>
< context-path>/</context-path>
< enable-jsp>true</enable-jsp>
< auto-reload>
< enable-reload>false</enable-reload>
< check-on-demand>false</check-on-demand>
< /auto-reload>
< max-instance-pool-size>-1</max-instance-pool-size>
< url-rewriting>false</url-rewriting>
< enable-default-login>false</enable-default-login>
< webinf-first>false</webinf-first>
< jndi-properties>
< local-bindings>false</local-bindings>
< /jndi-properties>
< /jeus-web-dd>

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

JDBC
*Class Loading
: Class.forName();
->class를 사용하는 방법

*Connection 생성방법 2가지

DBCP를 사용안함 (Driver class를 로드하여 DB에 접근)

public Connection connectDbms() {
Connection con = null;
Properties env = new Properties(); //사용자 환경변수 객체

try {
env.load(new FileInputStream(“d:\java\day6\db.properties”));
Class.forName(env.getProperty(“driver”)); // JDBC 드라이버용 클래스 로드
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
}catch (FileNotFoundException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}

// 1. DB Connection 얻기
String url = env.getProperty(“url”);

//”jdbc:oracle:thin:@127.0.0.1:1521:ORCL”; // JDBC 전용 URL 형식으로 기술
// thin = type4(순수java)
String user = env.getProperty(“user”); //”scott”;
String password = env.getProperty(“password”); //”tiger”;

try {
con = java.sql.DriverManager.getConnection(url, user, password);
System.out.println(“****** Connect to DBMS! *******”);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
return con;
}

DBCP 사용 (server.xml, web.xml에 Container에 대한 코드 추가)
try{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup(“java:comp/env”);
ds = (DataSource)envCtx.lookup(“jdbc/EmployeeDB”);
}catch(NamingException ne){
ne.printStackTrace();
}

1. Servlet의 init()메소드에서 DataSource를 생성하여 인자로 넘겨 connection 가져오기
-Servlet 마다 DataSource 생성

2. ServletContextListener에서 한번만 생성하여 인자로 넘김
-DataSource 한번만 생성해도 됨(Servlet마다 DataSource를 생성하지 않음)
3. ServletContextListener에서 생성한 DataSource를 Single tone pattern으로 사용
-class에서도 single.getAttribute()로 DataSource를 얻어 올 수 있음

*statement

상속관계
Statement <———- PreparedStatement <————- CallableStatement
(가장 보편적인 처리) (binding 변수를 통해 빠를 sql처리) (가장 특화 function, procedure호출)

->Statement
String sql = “select age from test1 where id=’syh1011′”;
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);

->PreparedStatement
String sql = “select age from test1 where ?=?”;
PreparedStatement pstmt = con.prepareStatementStatement(sql);
pstmt.setString(1, “id”);
pstmt.setString(2,”syh1011″);
ResultSet rs = pstmt.executeQuery();

->CallableStatement
String sql = “select anem from salary”;
PreparedStatement pstmt = conpreparedStatement(sql);
CallableStatement sctmt = con.prepareCall(“{call adjust(?,?)}”);
ResultSet rs = pstmt.executeQuery();
while(rs.next()) {
cstmt.setString(1, rs.getString(“name”));
cstmt.setFloat(2, (float)0.05);
cstmt.executeUpdate();
}

executeQeury(String sql) : SQL문이 select일 경우
executeUpdate(String sql): SQL문이 insert, update, delete문 등일 경우
execute(String sql) : SQL문을 알지 못할 경우

->장점, 단점

*ResultSet, getXXX()로 Column값 얻기, Type별로 다른 method사용
getXXX(int columnindex) : columnIndex의 값을 XXX타입으로 반환
getXXX(String columnName): columnName의 값을 XXX타입으로 반환

*Transaction 처리
Transaction의 4가지 특성(ACID
)
*원자성(Atomicity)
*일관성(Consistency)
*고립성(Isolation)
*지속성(Durability)

con.setAutoCommit(false); ->true : transaction을 시작하지 않겠다.->false: transaction을 시작하겠다.

setAutoCommit(false)와 commit(), rollback()사이의 operation들에 대한 transaction 처리
-> con.commit(); -> con.rollback();

***********************************************************************************************************

#####
##### DOMAIN 절
#####
# 독립적인 WebtoB 시스템의 전반적인 환경 설정을 할 수 있다.
*DOMAIN

# 도메인 네임은 string 형식으로 31자까지 사용 가능.
# 다른 절들의 string 항목도 이와 동일하다.
webtob1

#####
##### NODE 절
#####
# WebtoB를 이루는 각 Node들에 대한 구체적인 환경 설정을 할 수 있다.
# 필수 항목으로 WebtobDir, ShmKey, DocRoot 항목을 설정해야 있다.
*NODE

# 실제 등록된 호스트의 이름을 말하며, UNIX의 경우 “uname -n” 명령으로 각 Host의 이름을 확인할 수 있다.
# Node명은 반드시 UNIX의 경우 “/etc/hosts”(Windows의 경우 C:WINNTsystem32driversetc) 파일에 등록되어 있어야 한다.
# 하나의 Domain은 하나 이상의 Node로 이루어지므로, NODE절에는 최소한 하나 이상의 Node 이름이 정의되어야 한다.
WebServer

# WebtoB가 설치되어 있는 Home Directory 의 절대 경로명이다.
# 환경변수로 정의되는 WEBTOBDIR 과 동일한 값으로 설정하면 된다.
WebtobDir = “/data2/wbqam/webtob”,

# Shared Memory Segment를 가리키는 값이다.
# 32768 ~ 262143 범위 내에서 다른 업무에 사용되는 키값과 충돌이 나지 않게 Shared Memory의 Key값을 설정 하면 된다.
ShmKey = 78100,

# WebtoB가 웹을 통해 서비스하는 모든 문서를 포함하는 Root Directory 의 절대 경로를 설정한다.
DocRoot=”/data2/wbqam/webtob/docs”,

# HTTP Request Handler) Process의 개수를 설정한다.
# Hth하나당 약 800개 이상의 Client를 수용할 수 있다.
# Default Number 설정은 1 이며, 최대 20개 까지 지정할 수 있다.
Hth = 2,

# WebtoB가 Listen하는 Port를 지정한다.
# 일반적으로 Web Server는 80 Port 이용하므로 설정하지 않을경우 default 값으로 80으로 설정된다.
# 최대 100개의 포트를 동시에 지정하여 사용할 수도 있다.
# Listen 항목과 동시에 운영할 수 없으며, Port보다 Listen항목에서 지정되는 Port가 우선순위가 높아
# 동시에 지정하면 Port항목은 무시 된다.
Port = “8100,8200”,

##### User, Group 설정
# WebtoB에서 시스템의 보안을 위하여 WebtoB의 실제 실행 Process에 대한 권한 설정을 할 수 있다.
# 설정한 권한으로 Process가 실행되기 위해서는 반드시 root 권한으로 WebtoB를 실행해야 한다.

# 설정된 Group의 권한으로 WebtoB가 요구를 수행하게 된다.
# Client 요구를 수행하기 위하여 Group 설정을 권장한다.
# Group 설정은 Unix계열의 OS에서만 지원한다.
Group = “nobody”,

# 설정된 User의 권한으로 WebtoB가 요구를 수행하게 된다.
# Client 요구를 수행하기 위하여 User 설정을 권장한다.
# User 설정은 Unix계열의 OS에서만 지원한다.
User = “nobody”,

# 관리자의 정보를 나타낸다.
# 관리자에게 연락할 수 있는 e-mail address를 설정할 수 있다.
Admin = “wbqam@tmax.co.kr“,

# Http Response Header의 host name field에 기록될 값을 설정할 수 있다.
HostName = “www.tmax.co.kr“,

# 해당 서버의 HostName를 적어 준다.
# 특별히 $(NODENAME)이라고 적어주면, 자동으로 해당 서버의 HostName가 적용된다.
# 한글 노드명을 사용하거나 긴 노드명을 사용할 경우 NodeName 을 설정한다.
NodeName = “$(NODENAME)”

# MultiNode 설정시 각 Node들 간의 연결 Port 번호를 지정한다.
# MultiNode 설정시 반드시 지정해 주어야 한다.
# default 설정은 7777 번이다.
# NodePort = 7777,

# WebtoB와 Servlet 수행 Server간의 연결 Port 번호를 지정한다.
# default 설정은 9999 번이다.
JSVPort = 9100,

# Multi Node 구성시 Node 관리 차원에서 Node간 통신을 위한 Port번호를 지정한다.
# 위의 NodePort와는 달리 이것은 관리 Process 중 하나인 wsracd Daemon에서 사용하는 Port번호이다.
# default 설정은 3333 번이다.
RacPort = 4455,

# WebtoB는 Server 내부 Caching의 한 Entry의 크기로서 기본단위는 Kbyte이다.
# default size는 128 Kbyte 이다.
CacheSize = 128,

# Cache의 총 Hashing Key 엔트리 개수를 설정한다.
# default 개수는 128개 이다.
CacheEntry = 256,

# HTML file에 대한 cache refresh time을 설정한다.
# default 설정은 0 second 이다.
CacheRefreshHtml = 60,

# DirIndex에 대한 cache refresh time을 설정한다.
# default 설정은 0 second 이다.
CacheRefreshDir = 60,

# 사용자가 웹사이트에 접속한 후, 다른 웹페이지를 읽어 들이기 위해 곧 다시 접속을 시도 할 경우
# 불필요한 시간 지연이 없도록 하려면 이 항목을 지정함으로써 접속을 단절하지 않고 유지할 수 있다.
KeepAlive = Y,

# 커넥션 설정후 일정 개수의 요구는 커넥션을 유지한 상태로 서비스를 하고 커넥션을 끊도록 하는데,
# 커넥션을 끊기 전에 들어주는 요구의 개수를 지정한다.
# default 설정은 9999 이다.
KeepAliveMax = 10,

# 하나의 Client가 불필요하게 커넥션을 오래 잡고 있는 경우를 막기 위해
# 다음 Request 까지 일정 시간 이상이 되면 커넥션을 끊을 수 있도록 설정할 수 있다.
# default 설정은 60 second 이다.
KeepAliveTimeout = 30,

# 사용자의 최대 접속시간을 지정한다.
# default 설정은 300 second 이다.
Timeout = 100,

# WebtoB를 통해 사용자별로 동시에 서비스 하려는 경우 설정한다.
# 값이 설정이 되면 각 사용자의 directory를 찾아서 서비스 한다.
UserDir = “public_html”,

# WebtoB를 통해 응용 프로그램을 바로 호출하는 경우 해당 프로그램이 위치할 디렉토리를 설정한다.
# 경로명은 절대 경로와 WEBTOBDIR을 기준으로 한 상대 경로를 사용할 수 있다.
AppDir = “/data2/wbqam/webtob/ap”,

##### Log Directory
# WebtoB에서는 기본적으로 Log 정보를 남기기 위하여 설정한다.
# 환경파일에 따로 설정하지 않을경우 WEBTOBDIR/log 디렉토리에 기록이 된다.
# 로그가 기록될 디렉토리가 없을경우 booting시 에러가 나므로, 실제 존재하는 디렉토리여야 한다.
# 경로명은 절대 경로와 WEBTOBDIR을 기준으로 한 상대 경로를 사용할 수 있다.

# 시스템 메시지가 기록될 Directory의 경로명을 설정한다.
# Default Path는 (WEBTOBDIR)/log/syslog 이다.
SysLogDir = “/data2/wbqam/webtob/log/syslog”,

# 사용자 메시지가 기록될 Directory의 경로명을 설정한다.
UsrLogDir = “/data2/wbqam/webtob/log/usrlog”,

# Service Directory로 요청이 올대 기본적으로 서비스되는 파일 이름을 설정한다.
# 기본 설정은 index.html 이다.
IndexName = “indexname.html”,

# Service Directory에 요구를 보낼 때의 동작을 지정한다.
# Options에 지정할수 있는 서비스와 기능들을 아래와 같다.
# Service: HTML, CGI, SSI, PHP, JSV
# Function: INDEX, INCLUDE
# 모든 기능을 이용하려면 “+ALL”, 모든 기능을 이용하지 않으려면 “-ALL”을 설정할 수 있다.
Options = “+Index”,

# Client가 보내는 Request Method에 대한 정의를 할 수 있다.
# HEAD, GET, POST, OPTIONS 등을 설정을 할 수 있으며, 사용하고 싶지 않을경우 “-Option” 으로 설정하면 된다.
# 참고로 HTTP Method CONNECT, DELETE, GET, HEAD, OPTIONS, POST, PUT, TRACE 등이 있다.
Method = “GET,POST,HEAD,-OPTIONS”,

# 여러개의 IP Address를 가진 Server에서 자신이 원하는 IP로만 서비스 하기를 원할때 지정한다.
# 여러개의 아이피와 포트를 지정할 수도 있다.
# Port항목과 Listen 항목을 동시에 지정하는 경우 Port에 지정한 Port는 무시된다.
# Listen=”192.168.1.43:8300″,

# DIRINDEX절에서 설정하는 디렉토리 인덱스의 이름을 적어준다.
DirIndex = “diridx_def”

# 접속 Client가 사용 언어를 지정하지 않았을 경우
# Server쪽에서 지정된 언어 순서대로 Multiview request 등의 처리가 이루어지도록 한다.
LanguagePrio = “kr”,

# LOGGING절에서 설정하는 Logging Name을 설정하며, 해당 설정에 해당하는 Log를 남기게 되는 것이다.
Logging = “log1”,

# LOGGING절에서 설정하는 Logging Name을 설정하며, 해당 설정에 따라 Error Log를 남기게 된다.
ErrorLog = “log2”,

# WebtoB에서 특정 정보를 읽어 들일 필요가 있는 경우 이용된다.
# EnvFile = “WebtoB.env”,

# WebtoB에서 SSL을 이용할 때 Y 로 설정한다.
# default 설정은 N 이다.
# SslFlag = Y,

# SslFlag = Y 상태일때 적용이 되며, SSL절에 설정한 Ssl Name를 지정한다.
# SSLNAME = “ssl_def”,

# 서버 프로세스에 속한 노드의 최대 동시 접속자 수를 설정한다.
MaxUser = 4000,

# WebtoB 내부 프로세스의 접근권한을 설정한다.
# Default 설정은 0700 이다.
# IpcPerm = 0744,

# 접속을 기다리는 큐(queue)의 길이를 제한하는 것으로,
# 서버가 대량의 접속 시도를 한꺼번에 날려주는 TCP SYN해킹을 당하고 있다면 유용하게 사용 될수 있을 것이다.
# default 설정은 511 이다.
ListenBacklog = 100,

# TCP 전송 Buffer의 크기를 설정하는 것으로, 이 항목을 이용하면 특정한 환경에서 동작 속도를 향상시킬 수 있다.
# default 설정은 0이며, 0의 값은 OS default값을 사용함을 의미한다.
SendBufferSize = 4096,

# 클라이언트의 요청시 HTTP 프로토콜을 통해 서버가 제공할 수 있는 Request Body 크기를 바이트 단위로 정의하는 것으로,
# 0의 값은 크기에 제한이 없음을 의미한다.
# default 설정은 0 bytes 이다.
LimitRequestBody = 20000,

# 클라이언트의 요청시 허용되는 HTTP Request header field의 수를 설정한다.
# 0의 값은 제한이 없음을 의미한다.
# default 설정은 100 이다.
LimitRequestFields = 20,

# 클라이언트의 요청시 허용되는 각 HTTP Request header field의 크기를 설정한다.
# 최대 허용되는 값은 8190이다.
# default 설정은 8190 bytes 이다.
LimitRequestFieldSize = 300,

# 클라이언트의 요청시 허용되는 HTTP Request line의 최대 크기를 설정한다.
# 최대 허용되는 값은 8190이다.
# default 설정은 8190 이다.
LimitRequestLine = 4000,

# HTTP 응답 헤더의 Server에 관한 정보를 어떻게 다룰지 결정한다.
# “Off”, “Prod[uctOnly]”, “Min[imal]”, “OS”, “Full”, “Custom=xxx/x.x” 등을 설정할 수 있다.
ServerTokens = “Minimal”,

# HTTP 요청으로부터 해당 Server와 Service를 결정할때, URI절과 EXT절의 우선순위를 결정한다.
# Vhost절에 이 항목이 설정되지 않은 경우는 Node절에 설정된 값이나 기본값을 Vhost가 따르게 된다.
# default 설정은 “uri,ext” 이다.
ServiceOrder = “ext,uri”,

# HTTP header의 Content-Type에 character set 설정이 없는 Request에 응답에 추가될 character set의 이름을 설정한다.
# “On”(ISO-8859-1), “Off”(설정안함), “_charset_”(사용자 기술) 중 하나를 설정할 수 있다.
# 여러 절에서 적용되는 우선 순위는 Node < Vhost < SvrGroup < Directory 순이다.
DefaultCharset = “Off”,

# MIME-Type을 결정할 수 없는 문서의 Default Content-Type을 설정한다.
# Default Content-Type은 SvrGroup, Vhost, Node절의 순으로 결정된다
DefaultMimetype = “text/html”,

# Web Server에서 내부 프로세스간 IPC통신을 하기 위해서 기본적으로 특정 포트(6666)를 사용하는데,
# IPCBasePort항목을 통해 해당 포트를 변경할 수 있다.
# 현재 Windows에서만 지원된다. (UNIX의 경우 PIPE통신)
# default 설정은 6666 이다.
# IpcBasePort = 6667,

# EXPIRES절의 설정한 Expires이름을 설정한다.
Expires = “exp11, exp12, expdef1”,

# TCPGW 절에 설정한 tcpgw 이름을 설정한다.
TcpGW = “tcpgw_full”,

# ERRORDOCUMENT절에 설정한 ErrorDocument 이름을 설정한다.
ErrorDocument = “404”,

# WebtoB 내부 프로세스 통신을 위한 socket생성 디렉토리를 설정한다.
# default 설정은 $WEBTOBDIR/path 이다.
PathDir=”/data2/wbqam/webtob/path”,

##### 멀티노드 구성시 아래와 같이 추가적으로 노드를 정의한다.
#tmaxi1
# WEBTOBDIR=”/data/wbqam/webtob”,
# SHMKEY = 78100,
# DOCROOT=”/data/wbqam/webtob/docs”,
# APPDIR=”/data/wbqam/webtob/ap”,
# PORT = “8100”,
# HTH = 2,
# LOGGING = “log5”,
# ERRORLOG = “log6”,
# HostName = “www.tmax.co.kr“,
# RACPORT = 4455,
# NodePort = 7787

**********************************************************************************************************

1. WebToB의 가상호스트 설정
1.1 환경설정파일(sample.m)을 추가, 컴파일

*VHOST
vhost1 HostName=”test.tmax.co.kr”,
DOCROOT=”C:/TmaxSoft/edu02″, # 웹서비스 파일 위치 지정
NODENAME=”respect04″,
PORT=”80″, # URL 이름이 같은 경우 포스번호를 다르게 설정해야 함. 현재는 호스트네이임이 다르므로 포스번호가 같아도 상관없다
IndexName=”test.html”, # Wellcome page 설정
KeepAlive=Y, # KeepAlive와 KeepAliveTimeout은 같이 사용해야 함(set 구성)
KeepAliveTimeout=30

1.2 윈도우 hosts 파일에 가상호스트 설정 (실제 서비스할 경우 DNS서버에 추가)
(C:WINDOWSsystem32driversetchosts)
추가 => 127.0.0.1 test.tmax.co.kr

1.3 기동 후 테스트
1) sample.m 컴파일(wscfl -i sample.m)
2) ws 재기동
3) C:/TmaxSoft/edu02에 test.html 추가
4) 웹에서 test.html 확인 url=http://test.tmax.co.kr

# 알아둡시다
– sample.m에서 정의된 *NODE는 localhost(127.0.0.1)이다.
– sample.m에서 정의되지 않은 기본설정 확인은 wsadmin에서 cfg명령어로 확인한다
cfg -n : Node 환경설정
cfg -vh : vhost 환경설정 (sample.m에 *VHOST가 정의 되었을 때만 사용)
– 기본설정을 변경할 경우 cfg에서 보여진 명령어를 sample.m에 재정의한다
– DOCROOT의 디렉토리 구분은 ”이 아니라 ‘/’로 구분한다

2. WebToB의 가상호스트와 JEUS연동설정
2.1 가상호스트를 인식 시키기 위한 WebToB설정
sample.m에 정의
*SVRGROUP
v_jsvg NODENAME = “respect04″, SVRTYPE = JSV, VHOSTNAME=”vhost1” #가상호스트에서 인식

*SERVER #컨테이너 그룹명과 연동정의 및 몇개의 프로세스 사용할 것인가 정의
v_MyGroup SVGNAME = v_jsvg, MinProc = 10, MaxProc = 20 # 가상호스트 MyGroup

2.2 JEUS 설정
2.2.1 웹관리자 이용 시
1) 새 웹 리스너 생성
경로 : 서블릿엔진 – MyGroup – 웹리스너
2) 설정
– Listener Id : alias 명
– PORT : 기존 webtob 포트번호와 다르게 설정
– 스레드풀 : max, min은 sample.m *SERVER에서 정의한 내용과 동일하게 처리
– Webtob Address : 해당 Listener와 연결되는 WebtoB서버의 IP어드레스
– Registration Id : sample.m *SERVER에서 정의한 그룹ID
– Webtob Home : C:TmaxSoftWebtoB4.1 => webtob가 설치되어 있는 home 디렉토리
2.2.2 서블릿 WEBMain.xml 정의
<webtob-listener>
< listener-id>v_webtob1</listener-id>
< port>9901</port>
< thread-pool>
< min>10</min>
< max>20</max>
< /thread-pool>
< scheme>http</scheme>
< registration-id>v_MyGroup</registration-id>
< webtob-home>C:TmaxSoftWebtoB4.1</webtob-home>
< /webtob-listener>

3. 컨테이너 추가 (웹관리자) 후 WebToB 연동
3.1 새 엔진 컨테이너 생성
– Name : container3
– ID, BasePort
– 서블릿 엔진 : engine2
– 리스너 ID/서버 채널 이름 : http2 (#http 리스너를 반드시 추가하세요.)
– 리스너/서버 채널 포트 : 8087

3.2 새 어플리케이션 모듈 배치 – 모듈 선택
– 2단계 배치
– 영구배치는 J2EE 어플리케이션 모듈 배치에서 영구배치를 클릭 시
에디터아이콘을 선택하여 영구 모듈 디플로이 컨테이너대상을 설정

3.3 추가한 컨테인너 서블릿 WEBMain.xml 정의
< ?xml version=”1.0″ encoding=”UTF-8″?>
< web-container xmlns=”http://www.tmaxsoft.com/xml/ns/jeus“>
< context-group>
< group-name>MyGroup</group-name>
< webserver-connection>
< http-listener>
< listener-id>http2</listener-id>
< port>8087</port>
< output-buffer-size>8192</output-buffer-size>
< thread-pool>
< min>10</min>
< max>20</max>
< /thread-pool>
< /http-listener>
< webtob-listener>
< listener-id>v_webtob1</listener-id>
< port>9901</port>
< thread-pool>
< min>10</min>
< max>20</max>
< /thread-pool>
< scheme>http</scheme>
< registration-id>v_MyGroup</registration-id>
< webtob-home>C:TmaxSoftWebtoB4.1</webtob-home>
< /webtob-listener>
< /webserver-connection>
< /context-group>
< /web-container>

4. 서블릿 작성/실행하기
4.1 HelloWorldServlet.java 작성
==============================================================================
package tmax;

import! java.io.*;
import! javax.servlet.*;
import! javax.servlet.http.*;

public class HelloWorldServlet extends HttpServlet
{
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
java.io.IOException {
resp.setContentType(“text/html”);
PrintWriter out = resp.getWriter();
out.println(“<html>”);
out.println(“<head>”);
out.println(“<title>Hellow World Sample</title>”);
out.println(“</head>”);
out.println(“<body>”);
out.println(“<center><h1>Hello World!!!</h1></center>”);
out.println(“</body>”);
out.println(“</html>”);
out.close();
}
}
================================================================================

4.2 컴파일
C:TmaxSoftedu01WEB-INFclasses>javac -d . H*.java

4.3 실행
http://127.0.0.1:8088/edu01/servlets/tmax/HelloWorldServlet

4.4. web.xml에 서블릿명 추가(HelloWorld)
< servlet>
< servlet-name>HelloWorld</servlet-name>
< servlet-class>tmax.HelloWorldServlet</servlet-class>
< load-on-startup>-1</load-on-startup>
< /servlet>
< servlet-mapping>
< servlet-name>HelloWorld</servlet-name>
< url-pattern>/helloworld/</url-pattern>
< /servlet-mapping>
4.5 실행
http://127.0.0.1:8088/edu01/HelloWorld

5. WebToB에서 서블릿을 실행하기 위한 url 설정
5.1 sample.m 파일 수정

*URI
uri2 Uri = “/edu01/”, Svrtype = JSV #url에 edu01이 들어간 문자는 서블릿을 실행하게 한다