WEB

WebtoB + JEUS + web application

단순대왕 2009. 2. 6. 11:39

1. WebtoB 설치
1.1 설치파일, 라이센스(license.dat)준비
1.2
라이센스 적용 : webtoB4.1\license\license.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:\WINDOWS\system32\drivers\etc\hosts
파일에 등록

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:\TmaxSoft\JEUS5.0\license\license파일적용

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 JEUS\config\JEUSMain.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:\tmaxsoft\edu01
|----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/* 매핑되어 있음

5.4 WebtoB에서 실행 --> http://127.0.0.1:80/edu01/servlets/tmax/HelloWorldServlet

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

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

1.3 WAR 파일 실행
http://127.0.0.1:8088/hello/test.jsp
http://127.0.0.1:8088/hello
http://127.0.0.1:8088/hello/helloworld/

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:\TmaxSoft\JEUS5.0\lib\datasource\ojdbc14.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:\WINNT\system32\drivers\etc) 파일에 등록되어 있어야 한다.
#
하나의 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:\WINDOWS\system32\drivers\etc\hosts)
추가 => 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:\TmaxSoft\WebtoB4.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:\TmaxSoft\WebtoB4.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:\TmaxSoft\WebtoB4.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:\TmaxSoft\edu01\WEB-INF\classes>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 들어간 문자는 서블릿을 실행하게 한다

5.2 실행