레이블이 Tomcat인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Tomcat인 게시물을 표시합니다. 모든 게시물 표시

2008년 2월 4일 월요일

Tomcat & Oracle DBCP 설정


 

pool.jocl

<object class="org.apache.commons.dbcp.PoolableConnectionFactory"
    xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">

   <object class="org.apache.commons.dbcp.DriverManagerConnectionFactory">
      <string value="jdbc:oracle:thin:@taesuz.net:1521:taesuzdb" />
      <string value="taesuz" />
      <string value="1111" />
   </object>
 
   <object class="org.apache.commons.pool.impl.GenericObjectPool">
      <object class="org.apache.commons.pool.PoolableObjectFactory" null="true" />
      <int value="10" />
      <byte value="1" />
      <long value="10000" />
      <int value="10" />
      <int value="3" />
      <boolean value="true" />
      <boolean value="true" />
      <long value="600000" />
      <int value="5" />
      <long value="3600000" />
      <boolean value="true" />
   </object>
 
   <object class="org.apache.commons.pool.impl.GenericKeyedObjectPoolFactory" null="true" />


   <string null="true" />
 
   <boolean value="false" />
 
   <boolean value="true" />
</object>



 

DBCPInit.java

package taesuz.dbpool;

import javax.servlet.http.HttpServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import java.util.StringTokenizer;

public class DBCPInit extends HttpServlet {

    public void init(ServletConfig config) throws ServletException {
        try {
            String drivers = config.getInitParameter("pool");
            StringTokenizer st = new StringTokenizer(drivers, ",");
            while (st.hasMoreTokens()) {
                String DB = st.nextToken();
                Class.forName(DB);
            }
           
            Class.forName("org.apache.commons.dbcp.PoolingDriver");
           
        } catch(Exception ex) {
            throw new ServletException(ex);
        }
    }
}


 

web.xml

<web-app>
 <servlet>
  <servlet-name>DBCPInit</servlet-name>
  <servlet-class>taesuz.dbpool.DBCPInit</servlet-class>
  <init-param>
   <param-name>pool</param-name>
   <param-value>oracle.jdbc.driver.OracleDriver</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>
</web-app>






설정 끝~~~~



테스트를 위한 JSP와 커넥션을 가져오는 클래스

DBConnect.java

package taesuz.dbpool;

import java.sql.*;

public class DBConnect {
 /**
  * APP/Web 환경에서 쓰이도록 지정 DBCP를 사용한다.
  * default poolName : pool
  * @return Connection
  * @throws SQLException
  */

 public static Connection getConnection() throws SQLException {
  return DriverManager.getConnection("jdbc:apache:commons:dbcp:/pool");
 }

 /**
  * APP/Web 환경에서 쓰이도록 지정 DBCP를 사용한다.
  * @param poolName
  * @return Connection
  * @throws SQLException
  */

 public static Connection getConnection(String poolName) throws SQLException {
  return DriverManager.getConnection("jdbc:apache:commons:dbcp:/"
    + poolName);
 }

}



test.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*" %>
<%@ page import="taesuz.dbpool.DBConnect" %>

<%
try{
 Connection conn = null;
 Statement stmt = null;
 ResultSet rs = null;

 conn = DBConnect.getConnection();
 String query = "select * from DUAL";
 stmt = conn.createStatement();
 rs = stmt.executeQuery(query);
 
 if(rs.next())
  out.print(rs.getString(1));


} catch(Exception e) {
 System.out.println(e);
} finally {
     if (rs != null) try { rs.close(); } catch (Exception e) {}
     if (stmt != null) try { stmt.close(); } catch (Exception e) {}
     if (conn != null) try { conn.close(); } catch (Exception e) {}
 }

%>



다른 관련 설정 트랙백 참조.

2008년 1월 17일 목요일

Tomcat 에 Oracle DataSource 설정..





%app_dir%/WEB-INF/web.xml

----------------------------------------------------
  <resource-ref>
   <description>DB Connection</description>
   <res-ref-name>jdbc/jdbcTest</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
  </resource-ref>







%server_dir%/conf/sever.xml
----------------------------------------------------
<GlobalNamingResources>
......
<Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver"
  maxActive="20" maxIdle="10" maxWait="-1" name="jdbc/jdbcTest" password="1111"
  type="javax.sql.DataSource" url="jdbc:oracle:thin:@127.0.0.1:1521:testdb" username="tester" />
....
</GlobalNamingResources>






%server_dir%/context.xml
----------------------------------------------
<Context>
...
 <ResourceLink global="jdbc/jdbcTest" name="jdbc/jdbcTest" type="javax.sql.DataSource" />
...
</Context>








TestDbcp.jsp
----------------------------------------------------------
<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%
try{
 //DBCP init
 Context initCtx = new InitialContext();
 Context envCtx = (Context)initCtx.lookup("java:comp/env");
 DataSource ds = (DataSource)envCtx.lookup("jdbc/jdbcTest");

 Connection conn = ds.getConnection();
 Statement stmt = conn.createStatement();

 String sql="SELECT sysdate FROM dual";

 ResultSet rs = stmt.executeQuery(sql);

 if (rs.next())
  out.println(rs.getString("SYSDATE"));

 stmt.close();
 conn.close();

} catch(Exception e) {
 out.println("error : " + e);
}

%>






위 설정중 빨간색은 사용자에 맞게 세팅.

마지막 테스트 코드를 실행 했을때 날짜가 나오면 성공이다.

2006년 5월 31일 수요일

Oracle 9i 설치시 tomcat 8080포트와 겹치는 문제..

9i설치후 8080 포트 사용하는 것 바꾸기


출처 : http://blog.naver.com/scoll57.do?Redirect=Log&logNo=100015452658

1. 프로그램그룹-OracleHome92-?-'Database configuration assistant 실행
2. 수행하고자 하는 작업선택 화면에서 '데이터베이스의 데이터베이스 옵션구성' 을 선택
3. 옵션을 구성하고 자하는 DB를 선택(아마 설치시에 DB생성 하신걸로 가정)
4. '데이터베이스 기능창'에서 '표준데이터베이스 기능' 이라는 버튼클릭 하고 '사용자정의' 버튼클릭
5. 그러면 'Oracle XML DB'창이 뜨는데 그창 하단에 '포트번호' 바꾸시고 '확인'버튼 누르고 적용
6. 3으로 돌아가서 목록에 있는 다른 DB를 선택하고 같은 작업 3-5까지 수행

여기 적어놓은 것은 포트를 변경 시킨다는 것이구요, 포트를 아예 안쓰고 싶다면
5번 단계에서 'XML 프로토콜 비활성화'를 체크하심 됩니다. 보다 강력한 방법은
XML DB OPTION을 제거 하는 것이겠지요?!! ^-^

Oracle XML DB와 포트설정에 관련되서 아주 자세히 알 고 싶으시면
"XML Database Developer s Guide - Oracle XML DB"이 책의 21장
"Configuring Oracle XML DB with Enterprise Manager"을 참고 하세욤.