메모리 128이상
설치공간 NT:95메가 UNIX:134메가 이상
jdk1.3이하에서는 twoPhase Commit이 지원되지 않음.
구이모드 : sh weblogic600_sol.bin 실행후 가이드를 따르면 된다.
콘솔모드 : sh weblogic600_sol.bin -i console 실행후 가이드를 따르면 된다.
1) 언어 : English를 선택한다.(에러시 export LANG=C)
2) 라이센스 : 동의한다.
3) 설정 : 서버모드를 선택한다.
4) 서버홈지정 : 절대경로로 작성한다.(설치될경로)
5) 서버홈의 수정 : a)수정 b)기존경로
6) 설정 :
1) 웹로직 서버도메인 : (mydomain)
2) 웹로직 서버네임 : (myserver)
3) 웹로직 서버ListenPort: 7001
4) 웹로직 서버SSL ListenPort:7002
5) 위데로 설정
6)패스워드 : weblogic
# 위의 설정은 콘솔모드사용시 일과적으로 사용하기위해 installer.properties에서 설정할수 있다. installer_UI=silent
# patch 설치 java cp -i 서비스팩 파일이름 install -i console 후 가이드를 따른다.
BEA HOME license.bea : 라이센스파일
업데이트 명령 sh UpdateLicense
License.bea-new registry.xml: 버젼정보 서비스팩 설치 디렉토리등 제품과 관계된내용.
Web-inf/web.xml : 웹어플리케이션 고유의 디플로이먼트 디스크립터
Web-inf/WebLogic.xml : 웹로직 고유의 디플로이먼트 디스크립터
WebApplicationName/ : html,jsp 웹루트가 된다.
Web-inf/classes/ : 서블릿이나 유틸러티 클래스가 위치하는 곳이다.
위의 디렉토리 설정과 같이 각 웹어플리케이션 마다 똑 같은 정형화된 구조를 보인다.
도메인 :
여러서버들을 하나로 취급할수 있는 형태이다.
도메인 안에는 여러 웹로직서버가 존재 할수 있으며 install_dir/config/domain_name/config.xml 에 정의된다.
Administration server :
도메인의 다른서버(ManagedServer), config.xml의 관리하며 모니터링한다.
Property 파일 :
Weblogic.properties ==> config.xml로 바뀌었다.
1)JSP파일이 놓여질 위치
mydomain/WebApplicationName/아래에 html처럼 위치시키며
jsp관련 파라미터들은 WebApplicationName/Web-inf/WebLogic.xml 에 적어준다.
2)설정 (WEB-INF/weblogic.xml)
<jsp-descriptor> |
jsp 쓰기위해서는 WEB-INF/weblogic.xml 을 새로만들어 위의 설정을 적어야한다.
jsp가 컴파일되어지는 디렉토리 : WEB-INF/temp~~~dir/
3)간단한 jsp 예제
<%-- test.jsp --%> |
1)서블릿 파일이 놓여질 위치
도메인명/aplications/DefaultWebApp-AppServer/WEB-INF/classes 아래에
패키지에 맞게 디렉토리를 생성하고 class파일을 위치시킨다.
-Dfile.encoding=KSC5601
주의) 위디렉토리를 시스템 클래스 패스나 WebLogic Start 스크립트의
클래스 패스에 위치시키면 실행중 서블릿이 변경 되었을때 반영이 되지 않는다
2)서블릿 설정 (WEB-INF/web.xml)
<?xml version="1.0" ?> |
<servlet-name>은 임의로 접근할 서블릿 이름
<serlvet-class>실제 물리적인 서블릿파일이 존재할 경로
<url-pattern>서블릿이 웹에서 호출될 패턴을 정의
http://localhost:7001/test/dfkfsdf로 접근한다.
1.Console를 이용한 Pool설정
1)Administration Server에서 콘솔을 실행한다.
2)콘솔에서->service 메뉴->jdbc->Connection Pools선택
3)Connection Pools 메뉴에서 Create a New JDBC Connection Pool 선택
4)Configuration 탭에서->general을 선택한 후 다음을 써준다.
-Name:pool이름
-URL:Database URL
-Driver Classname: 해당 JDBC 드라이버
-properties:user,password
ex)
Name:demoPool
URL:jdbc:oracle:thin:@localhost:1521:ORCL Driver
Classname: oracle.jdbc.driver.OracleDriver
Properties: user=scott Password=tiger
5)풀에 대한 프로퍼티 설정 configuration->connections를 선택한다.
--initial Capacity=최초 기동시의 커넥션 풀 개수
--Maximum Capacity=최대 커낵션 풀 갯수
--Capacity Increment=사용자 증가시에 풀 개수 증가단위
--Login Delay Second=각각의 연결을 시도할 시간간격 데이터베이스에 따라 동시에 연결
--요청이 빠르게 발생하면 처리를 제대로 못하는 경우가 있다
--RefreshPeriod=연결상태를 확인하는 주기
--AllowShriinking=커넥션 풀은 사용자가 증가하거나 줄어드는 경우에 따라 풀의 개수도 늘거나 줄수있다. --사용자가 줄어드는 경우에 따라 풀의 개수도 늘거나 줄수있다.
--initial Capacity로 설정된값으로 사용자가 줄면 줄어든다.
AllowShriinking을 체크하면 줄지 않는다.
--Shrink Period=풀의 개수를 줄일수 있는지 확인하고 줄이는 작업이 일어나는 주기 AllowShriinking옵션이 체크된경우에만 설정한다.
6)Targets->server를 선택한다.(이풀을 사용하는 TargetServer를 지정한다.)
7)Monitoring->Monitor all instances of demoPool 풀에 대한 모니터링
2. config.xml(thin)이용한 수정
$WL_Home/config/$DomainName/config.xml 파일을 직접 수정하여
JDBC Connection풀을 생성한다.
<JDBCConnectionPool |
1) 콘솔을 이용한 Pool설정
위의 thin방식과 같으며
DriverName : WebLogic.jdbc.oci.Driver
URL : jdbc:WebLogic:oracle 로 바꾸어 준다.
2.config.xml이용한 수정
<JDBCConnectionPool |
1.웹로직 oci Driver는 %WL_HOME%/lib/WebLogic.jar파일안에 존재한다.
서버 실행 스크립트의 클래스 패스에 Weblogic.jar 파일을 잡아준다.(Default로 잡혀있다.)
2.ClientLibarary 서버실행 스크립트에 오라클 클라이언트에서 제공하는 라이브러리와 WebLogic에서 제공하는 라이브 러리를 패스에 잡아준다.
%ORACLEHOME%/ora81/bin과 %WL_HOME%/bin/oci816_8을 잡아준다.
oci816_8은 Oracle8API를 의미 이는 JDBC2.0과 optional Package를 지원한다.
Administration Server를 실행 시킨 후 웹 브라우저에서 콘솔에 접근해 보면 JDBC Pool이 생성된것을 확인할수 있다.
Target란에 Pool을 사용할 서버를 지정해 준다.
1)콘솔에서 DataSource설정
Services->JDBC->DataSource->Configuration탭
Name:DataSource이름
JNDI Name: JNDI에 등록할 이름
Pool Name: 사용할 Pool이름
2)config.xml에서 DataSource설정($WL_Home/config/$DomainName/config.xml)
<JDBCDataSource JNDIName="myDataSource" |
Server1을 실행후 아래와 같은 예제코드를 통해서 커낵션을 얻어올수 있다.
Context ctx=getInitialContext();
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup("myDataSource");
Connection conn=ds.getConnection();
1) 실행
startWebLogic.sh (Administration Console및 DefaultServer 기동)
startManagedWebLogic.sh (Managed Server 실행)
서버시작시 암호를 물어오는데 이것이 귀찮다면 set WLS_PW=password 를 설정한다.
2)중지
java WebLogic.Admin -url ip:port -username system -password 패스워드 SHUTDOWN
3)관리콘솔 접속
http://IP:port/console
ManagedServer를 실행하기전에 도메인에 대한 서버의 엔트리를 만들어야 한다.
1)콘솔에서 생성
(1)설치될 서버가 Administration ServerMachine과 다른곳에 있다면
서버머신을 생성한다 (MachinesCreate a new machine)
(2) 콘솔왼쪽메뉴에서 Mydomain-servers-Create NewServer를 클릭하여
새로운 서버를 생성한다. (ServersCreate a new server).
(3) Managed Server이름과 포트번호를 적고 create버튼을 누른다.
2)커맨드상에서 생성
java WebLogic.Admin -url ip:port -username system -password 패스워드 CREATE|DELETE -mbean"도메인이름": Type=Server,Name="서버이름" (defaultPort:7001,AdminConsole에서 포트바꿈)
3)config.xml로 생성
설치가이드 문서참조
4)설정 및 운용
새로운 서버의 이름을 secondserver라고 했다면 myDomain\applications\DefaultWebApp_secondserver디렉토리가 secondserver의 기본(Default)디렉토리가 된다.
즉 myDomain\DefaultWebApp_secondserver가 존재해야 한다.
SartManagedWebLogic.cmd secondserver http://127.0.0.1:7001
secondserver는 시작할 서버이름이고
http://127.0.0.1:7001 은 AdminConsole이 있는 URL이다.(*)
<Server AdministrationPort="0" ListenAddress="" ListenPort="7005" Name="secondserver"> |
<ClusterWeight="100"/>
서버의 이름은 secondserver이고
ListenPort=7005라고 한것이 나타나 있다.
SSL의 이름은 secondserver
ServerDebug 이름도 secondserver
KernelDebug 이름 secondserver
로그파일이름은 config/mydomain/logs/secondserver.log
<WebServer DefaultWebApp="DefaultWebApp_secondserver" Name="secondserver"/>
이 서버의 디폴트 웹어플리케이션의 이름은 DefaultWebApp_secondserver이다.
<Application Deployed="true" Name="DefaultWebApp_secondserver" Path=".\config\mydomain\applications"> |
DefaultWebApp_secondserver가 현재 특정서버에 (Deploye)설정 되어있고
실제경로는 .\config\mydomain\applications의 경로에서 DefaultWebApp_secondserver 디렉토리에 위치한다.
실제 경로를 .\config\mydomain\나의애플리케이션으로 바꿀수 있다.
<Application Deployed="true" Name="DefaultWebApp_secondserver"에서 Name은 어플리케이션의 이름이며 URI와 같이 실제 디렉토리명이 된다(?)
주의) <server></server>태그안의
<WebServer DefaultWebApp="DefaultWebApp_secondserver" Name="secondserver"/>
에서 DefaultWebApp는 현재서버의 디폴트 Application으로서
<Application></Application>태그안의 WebAppComponent Name="DefaultWebApp_secondserver"의 이름과 같아야한다.
미정리 사항)
WebAppComponent 의 Name 과 URI 가 같아야지 제대로 작동한다.
그냥 .config\myDomain\applications및에 디렉토리를 만들어
정형화된 구조를 만들어 놓으면 되는데 웹서버가 동작중일때 리로드가 안된다.
웹서버를 다시시작시키면 정상적으로 시작된다.(경험상)
Name은 어플리케이션의 이름이며 URI와 같아야한다.
.config\myDomain\applications 이면 이디렉토리 아래에서 인식하고
콘솔에서 어플리케이션을 새로 만들거나 그냥 .config\myDomain\applications 아래에 정형화된 디렉토리를 만든다 (자동인식:서버재기동시)
디렉토리를 만든후 콘솔에서 디플로이를 한다.
콘솔에서 TargetServer를 지정하여 특정 서버에서 동작할수 있도록 할 수있다.
콘솔에서 메시지 확인. 파일수정후 리로드가 안된다면 서버재기동하면 잘된다.
1)서블릿, jsp, 정적인 파일, 디플로이먼트 디스크립터 등과 같은 파일들을 정해진 포맷에 맞는 디렉토리에 위치시킨다.
2)web.xml을 작성한다. 이파일에 서블릿을 등록하거나 초기 파라미터정의 jsp태그라이브러리 태그등록 보안제약사항작성
3)jsp 속성, jndi 매핑, 보안 롤 매핑,http 세션 파라미터 들을 정의한다.
4)선택사항으로 위의 디렉토리 구조로 .war파일을 생성한다.
5)웹 어플리케이션의 디플로이 먼트 속성(cluster, VirtualHost등)을 설정한다.
Deploy 방법
1)Administration Console을 통해서 디플로이 시키는 방법
(1) 콘솔 왼쪽 메뉴에서 Deployments->웹 어플리케이션을 선택한후 오른쪽 창에서 Configure a new 웹 어플리케이션을 선택한다.
(2) 웹 어플리케이션 이름과 패스를 지정후 create Button을 누른다.
(3) war로 디플로이 하는경우 -웹 어플리케이션이 있는 위치는 WL_HOME/config/도메명/application 아래에 위치하게 된다.
-Temp 디렉토리에 그 밑에 정형화된 디렉토리들을 똑 같이 만든다.
-위의설명대로 -jar cv0f Server1.war 명령으로 파일을 만든후 applications 디렉토리에 복사한다.
-콘솔에서 Deployments->WebApplications를 클릭 오른쪽 화면에서
install new 웹 어플리케이션을 클릭하여 만든 Server1을 인스톨 시킨다.
-찾아보기를 누른후 .war 파일을 업로드한다.
-타겟(디플로이된 웹 어플리케이션을 실행시킬 웹로직 서버를 지정하는것) 웹에플리케이션에서 타겟으로 줄 애플리케이션을 선택한다.
-Targets텝에서 해당 어플리케이션에 대한 Target server를 선택한후 Apply버튼을 누른다 에러가 발생하지 않으면 왼쪽 Chosen으로 옮겨진다. 이 타겟을 받은 서버만이 실행할수있다.
2) jsp 실행
mydomain에서 해당 서버를 선택한 후 configuration 탭에서 http를 선택하면 디폴트 웹 어플리케이션에서 자신이 타겟으로 받은 웹 어플리케이션들이 나타난다.
이중에 하나를 디폴트로 선택할수 있다.
하나의 war단위로 웹 에플리케이션이 등록되는데 각 서버마다 디폴트 웹어플리케이션을 선택할수있다.
하나의 서버에 하나이상의 웹 어플리케이션을 등록할수 있다.
Console->servers->server1->Deployments->web applications 화면에서 여러개의 웹 어플리케이션을 추가할수 있다.
디폴트 웹 어플리케이션은 http://localhost:7005가 루트가 되며 다른 웹어플리케이션은 http://localhost:7005/웹어플리케이션이름이/루트가된다.
웹 어플리케이션이름은 config.xml에서 변경할수있다.
서블릿 등록하지 않고 사용하기
매번 등록하지 않는 경우 web.xml에 다음과 같이 등록합니다.
<servlet>
<servlet-name>ServletServlet</servlet-name>
<servlet-class>weblogic.servlet.ServletServlet</servlet-class>
<load-on-startup>-1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletServlet</servlet-name>
<url-pattern>/servlets/*</url-pattern>
</servlet-mapping>
대신 호출은 다음과 같이 합니다.
http://localhost:7001/servlets/examples.servlets.HelloWorldSe rvlet
웹서버 디폴트 캐릭터셋 지정하기
C:\bea\wlserver6.1>"C:\bea\jdk131\bin\java" -hotspot -ms64m -mx64m -classpath .;
.\lib\weblogic_sp.jar;.\lib\weblogic.jar -Dfile.encoding=KSC5601 -Dweblogic.Doma
in=mydomain -Dweblogic.Name=myserver "-Dbea.home=C:\bea" -Dweblogic.management.p
assword=weblogic -Dweblogic.ProductionModeEnabled=true "-Djava.security.policy==
C:\bea\wlserver6.1/lib/weblogic.policy" weblogic.Server
운영체제 환경의 캐릭터셋 확인
아래를 유심히 쫓아 가 보시면, 뭐가 잘못됐었는지 확인할 수 있을 겁니다.
앞선 두분이 올리신 글들도 근본적으로는 아래의 문제에 기초를 두고 있습니다.
서블렛과 JDBC상에서 컴파일타임과 런타임, 그리고, N/W을 경유하는 경우의
Charset Encoding이 어떻게 변화하여 해당 스트링이 어떻게 변경된지를
잘 추적하면, 특별히 한글에 개발자의 코딩노력이 필요 없습니다.
Applet같은 경우처럼 어쩔 수 없는 경우와, JDBC 드라이버가 한글을 아예 지원하지
않는 경우를 제외하곤, 개발자가 한글에 관련하여 뭔가 코딩이 들어간다는건
너무 억울하지 않나요?
javaservice:/home/java/tmp/hangul$ cat Test.java
import java.io.*;
public class Test
{
public static void main(String[] args) throws Exception{
System.out.println("file.encoding=" + System.getProperty("file.encoding"));
File file = new File("out.txt");
PrintWriter w = new PrintWriter(new FileWriter(file));
w.println("안녕하세요?");
w.println("반갑습니다.");
w.close();
}
}
javaservice:/home/java/tmp/hangul$ env|grep LANG
LANG=ko
javaservice:/home/java/tmp/hangul$ javac Test.java
javaservice:/home/java/tmp/hangul$ java Test
file.encoding=EUC_KR
javaservice:/home/java/tmp/hangul$ cat out.txt
안녕하세요?
반갑습니다.
javaservice:/home/java/tmp/hangul$ export LANG=C
javaservice:/home/java/tmp/hangul$ java Test
file.encoding=8859_1
javaservice:/home/java/tmp/hangul$ cat out.txt
??????
?????.
javaservice:/home/java/tmp/hangul$ javac Test.java
javaservice:/home/java/tmp/hangul$ java Test
file.encoding=8859_1
javaservice:/home/java/tmp/hangul$ cat out.txt
안녕하세요?
반갑습니다.
javaservice:/home/java/tmp/hangul$ env|grep LANG
LANG=C
javaservice:/home/java/tmp/hangul$ export LANG=ko
javaservice:/home/java/tmp/hangul$ java Test
file.encoding=EUC_KR
javaservice:/home/java/tmp/hangul$ cat out.txt
¾?³???¼¼¿??
¹?°?½?´?´?.
javaservice:/home/java/tmp/hangul$ javac Test.java
javaservice:/home/java/tmp/hangul$ java Test
file.encoding=EUC_KR
javaservice:/home/java/tmp/hangul$ cat out.txt
안녕하세요?
반갑습니다.
javaservice:/home/java/tmp/hangul$
<Application Deployed="true" Name="JBuilder_WebRun" Path="../../jbproject/bank">
<WebAppComponent Name="DefaultWebApp" Targets="myserver" URI="defaultroot"/>
<WebAppComponent Name="BankWebApp" Targets="myserver" URI="BankWebApp"/>
</Application>