Where The Streets Have No Name

Weblogic상에서의 ConnectionPool의 생성 및 환경 설정, DataSource 본문

Developement/Java

Weblogic상에서의 ConnectionPool의 생성 및 환경 설정, DataSource

highheat 2006. 4. 27. 19:40

▩ 오라클 9i 설치

1. 웹로직은 자체적으로 오라클 8.1.7부터 지원함, 오라클 9i설치
- Oracle Enterprise Manager Consol에서 서버관리할 것

2. Client에서 Net Manager 실행
- ora9
- 192.168.0.43, 1521
- ora9.it

3. 오라클 클라이언트 툴 설치하기, SqlGate 설치하기
- http://www.sqlgate.com

4. 오라클 셋팅하기
- scott, tiger 계정은 웨로직에서 사용할 수 없습니다.  

5. 테이블 스페이스 생성, 계정, 권한주기

-- 테이블 스페이스 생성(ts_it+월+자신의 IP)
create tablespace ts_it0534
datafile 'D:oracledata200505 s_it0534.dbs' size 20M
default storage (initial 128k next 64k pctincrease 10);


--생성된 테이블 스페이스 보기
select tablespace_name, status, contents from dba_tablespaces;


--계정생성
create user it0534 identified by it123$
default tablespace ts_it0534
temporary tablespace temp;


--접속 권한주기
grant connect, resource to it0534;


-- 등록된 계정 목록 보기
select username, user_id from dba_users;

6. 생성된 계정으로 로그인하여 테이블을 생성하세요.

- 테이블 구조(comment, 데이터타입은 컬럼명으로 사용할 수 없습니다.)

   CREATE TABLE visitor (
      num        int              NOT NULL, 
      title      varchar2(20)     NULL ,
      name       varchar2(20)     NULL ,
      email      varchar2(30)     NULL
);


INSERT INTO visitor
VALUES(1, '안녕하세요', '홍길순', 'webmaster@nulunggi.pe.kr');


select * from visitor;


commit;

▩ ConnectionPool의 생성 및 환경 설정
- Connection 객체를 미리 생성하여 속도향상을 가져온다.
- 많은 접속자수로 인해 서버의 리소스가 바닥나지 않도록 관리할 수 있다.
- connection 객체를 가지고 있다.
http://127.0.0.1:7001/console 에서 로그인해서 설정

 

▩ DataSource 생성 및 환경설정
- connection 객체 생성

1. JDBC thin드라이버를 이용한 JDBC 프로그래밍(MS-SQL, Oracle 9i)

1) 실습 폴더 새성
- application안의 폴더명을 소문자로만 쓸것
C:eauser_projectsdomainsmydomain2applicationsjdbc_testWEB-INFclasses

 

2) web.xml, C:eauser_projectsdomainsmydomainapplicationsjdbc_testWEB-INF에 저장
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
</web-app>

 

3) weblogic.xml, C:eauser_projectsdomainsmydomainapplicationsjdbc_testWEB-INF에 저장
<?xml version="1.0" ?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">

<weblogic-web-app>
<charset-params>
<input-charset>
  <resource-path>/*</resource-path>
  <java-charset-name>KSC5601</java-charset-name>
</input-charset>
</charset-params>

 <context-root>/jdbc_test</context-root>

</weblogic-web-app>

  

4) 사용자가 가지고 있는 모든 테이블 보기
<!--tablelist.jsp, C:eauser_projectsdomainsmydomainapplicationsjdbc_test에 저장-->
<%@ page contentType="text/html;charset=EUC-KR"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<html>
<head>
<title> 사용자가 가지고 있는 모든 테이블 보기 </title>
</head>
<body>
<h3>
<%
Context ctx = null;
DataSource ds = null;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;

 String sql = "select * from tab";

 try{
ctx = new InitialContext();
ds = (javax.sql.DataSource)ctx.lookup("ora9");
con = ds.getConnection();
con.setAutoCommit(false);
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
 out.println(rs.getString(1) + "&nbsp;&nbsp;&nbsp;" + rs.getString(2));
}
}catch(Exception e){
out.println(e.toString());
}finally{
if(rs != null){
 try{
  rs.close();
 }catch(SQLException ex){}
}
if(stmt != null){
 try{
  stmt.close();
 }catch(SQLException ex){}
}
if(con != null){
 try{
  con.close();
 }catch(SQLException ex){}
}
} // finally


%>
</h3>
</body>
</html>


- http://127.0.0.1:7001/jdbc_test/tablelist.jsp

2. JTA의 이용
- 2단계 커밋을 지원하는 분산 트랜잭션 지원
- XA thin드라이버를 이용한 JDBC 프로그래밍(MS-SQL, Oracle 9i)

1) 실습 폴더 새성
- application안의 폴더명을 소문자로만 쓸것

C:eauser_projectsdomainsmydomain2applicationsjdbcxatestWEB-INFclasses

2) web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
</web-app>

 

3) weblogic.xml
<?xml version="1.0" ?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">

<weblogic-web-app>
<charset-params>
<input-charset>
  <resource-path>/*</resource-path>
  <java-charset-name>KSC5601</java-charset-name>
</input-charset>
</charset-params>

 <context-root>/jdbcxatest</context-root>

</weblogic-web-app>

  

4) xa_tablelist.jsp
<%@ page contentType="text/html;charset=EUC-KR"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.transaction.*"%>
<html>
<head>
<title> 사용자가 가지고 있는 모든 테이블 보기 </title>
</head>
<body>
<h3>
<%
Context ctx = null;
DataSource ds = null;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
UserTransaction tx = null;

 String sql = "select * from tab";

 try{
ctx = new InitialContext();
tx = (UserTransaction)ctx.lookup("javax.transaction.UserTransaction");
tx.begin();
ds = (javax.sql.DataSource)ctx.lookup("oraxa9");
con = ds.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
 out.println(rs.getString(1) + "&nbsp;&nbsp;&nbsp;" + rs.getString(2));
}
tx.commit();
}catch(Exception e){
out.println(e.toString());
}finally{
if(rs != null){
 try{
  rs.close();
 }catch(SQLException ex){}
}
if(stmt != null){
 try{
  stmt.close();
 }catch(SQLException ex){}
}
if(con != null){
 try{
  con.close();
 }catch(SQLException ex){}
}
} // finally
%>
</h3>
</body>
</html>

 

- http://127.0.0.1:7001/jdbcxatest/xa_tablelist.jsp