Background Image

FORUM

조회 수 48217 추천 수 0 댓글 8
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
  1 package jeemin.home.bean;
  2 
  3 import java.sql.*;
  4 
  5 import javax.sql.*;
  6 import javax.naming.*;
  7 import javax.servlet.http.*;
  8 
  9 import org.apache.commons.dbcp.DelegatingPreparedStatement;
 10 
 11 import cubrid.sql.CUBRIDOID;
 12 import cubrid.jdbc.driver.CUBRIDPreparedStatement;
 13 
 14 import jeemin.home.core.*;
 15 
 16 public class IndexBean {
 17 
 18     private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(IndexBean.class);
 19 
 20     public boolean init(HttpServletRequest request){
 21 
 22         LOG.debug("시작");
 23 
 24         try{
 25             Connection conn = ((DataSource)((Context)new InitialContext()).lookup("java:/comp/env/jdbc/cubrid")).getConnection();
 26             LOG.debug(conn.toString());
 27             PreparedStatement ps = conn.prepareStatement("INSERT INTO HM_IP(IP_IP) VALUES(?)");
 28             LOG.debug(ps.toString());
 29             Statement dps1 = ((DelegatingPreparedStatement)ps).getDelegate();
 30             LOG.debug(dps1.toString());
 31             Statement dps2 = ((DelegatingPreparedStatement)dps1).getDelegate();
 32             LOG.debug(dps2.toString());
 33 
 34             try{
 35                 CUBRIDPreparedStatement cps = (CUBRIDPreparedStatement)dps2;
 36             }catch(Exception e){
 37                 LOG.debug("말도 안되는 오류 발생.", e);
 38             }
 39 
 40 
 41             ps.close();
 42             conn.close();
 43         }catch(Exception e){
 44             LOG.debug("여기선 오류가 발생하지 않음.", e);
 45         }
 46 
 47         return false;
 48     }
 49 }


--------------------------------------------------------------------------------------

2011.11.18 14:10:58.318 DEBUG jeemin.home.bean.IndexBean.init:22 시작
2011.11.18 14:10:58.320 DEBUG jeemin.home.bean.IndexBean.init:26 org.apache.commons.dbcp.PoolableConnection@6d581e80
2011.11.18 14:10:58.321 DEBUG jeemin.home.bean.IndexBean.init:28 org.apache.commons.dbcp.DelegatingPreparedStatement@343a9d95
2011.11.18 14:10:58.322 DEBUG jeemin.home.bean.IndexBean.init:30 org.apache.commons.dbcp.PoolablePreparedStatement@343a9d95
2011.11.18 14:10:58.322 DEBUG jeemin.home.bean.IndexBean.init:32 cubrid.jdbc.driver.CUBRIDPreparedStatement@343a9d95
2011.11.18 14:10:58.325 DEBUG jeemin.home.bean.IndexBean.init:37 말도 안되는 오류 발생.
java.lang.ClassCastException: cubrid.jdbc.driver.CUBRIDPreparedStatement cannot be cast to cubrid.jdbc.driver.CUBRIDPreparedStatement
at jeemin.home.bean.IndexBean.init(IndexBean.java:35)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:52)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:897)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:636)

--------------------------------------------------------------------------------------------------------------

동일한 클래스끼리 cast가 안되는경우는 대체 뭔가요;;

상식적으로 말이 안되는 상황 아닌가요;;;

버전은 rel 8.3 입니다.

CentOS release 5.4 (Final)
Linux jeemin 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:03:03 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
java-1.6.0-openjdk-1.6.0.0-1.16.b17.el5
httpd-2.2.3-53.el5.centos.3
tomcat5-5.5.23-0jpp.19.el5_6

다른 환경은 바로 아랫글 http://cubrid.com/zbxe/218719 와 동일합니다.
  • ?
    cubebridge 2011.11.19 08:30

    안녕하세요.

    큐브리드에 관심을 가져 주셔서 감사합니다. 문의하신 내용에 대하여 빠른 시일 내에 확인하여 알려드리도록 하겠습니다.

  • ?
    seongjoon 2011.11.21 20:23

    CUBRID jdbc 확장 인터페이스를 사용하기 위해서는 CUBRIDConnection 객체로 연결을 해야 됩니다.

    Connection conn = ((DataSource)((Context)new InitialContext()).lookup("java:/comp/env/jdbc/cubrid")).getConnection();

    부분을 아래와 같이 변경하여 테스트 부탁드립니다.

    Connection conn = DriverManager.getConnection(url,userid,password);

  • ?
    안지민 2011.11.21 20:34

    올려주신 코드는 커넥션풀을 사용하지 않고 DB에 직접연결하는 코드인데요?

    그걸로 하게 되면 자원 사용량이 늘어나는데요..


    테스트 결과 가능하긴 하겠죠 (당연히 되겠죠... 레퍼가 아니라 해당 드라이버로 직접 생성하니까요)

    하지만 성능상의 이유로 DBCP를 사용해야 하는 상황입니다.

    올려주신 코드는 DBCP를 사용하지 않는 코드입니다.

  • ?
    seongjoon 2011.11.21 22:47

    http://dev.naver.com/projects/cubrid/issue/16944 

    링크에 글을 등록하신 분과 동일하신 분인 것 같습니다.

    현 게시글도 위 게시물과 동일한 이유라고 보시면 될 것 같습니다.

  • ?
    안지민 2011.11.21 22:54

    답변과 관심은 정말로 감사드립니다.



    동일한 이유가 맞는데요. 제시해주신 방법은 DBCP를 사용하지 않는 방법입니다.

    seongjoon님은 잘못된 방법을 제시해 주셨네요.

    올려주신 네이버 개발자 센터 링크상에 보시면 가장 마지막에 강철규님이 getDelegate()메소드를 사용해보란 말씀을 하십니다.

    그리고 바로 그 방법이 이 글에 본문에서 시도한 방법이구요.

    바로 그게 안되는 상황입니다. seongjoon님은 이해를 잘못하신것 같네요.

  • ?
    cgkang 2011.11.22 19:31

    드라이버 문제로 이런 현상이 나타날것 같지는 않습니다.

    dps2.getClass().getName() 으로 해당 클래스 이름을 찍어서 확인해 보는것이 좋을것 같습니다.

    해당 object에 대해 toString()을 호출할때와 클래스이름이 다르게 보일수는 있습니다.

     

  • ?
    안지민 2011.11.22 23:01

    네.. 이번엔 jsp에서 테스트 해봤습니다.



    <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql.*,javax.sql.*,javax.naming.*,org.apache.commons.dbcp.*,cubrid.jdbc.driver.*" pageEncoding="UTF-8" %>

    <%


    org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(jeemin.home.core.JHInfo.class);


    LOG.debug("시작");


    try{

        Connection conn = ((DataSource)((Context)new InitialContext()).lookup("java:/comp/env/jdbc/cubrid")).getConnection();


        LOG.debug("conn.toString : " + conn.toString());

        LOG.debug("conn.getClass.getName : " + conn.getClass().getName());


        PreparedStatement ps = conn.prepareStatement("INSERT INTO HM_IP(IP_IP) VALUES(?)");


        LOG.debug("ps.toString : " + ps.toString());

        LOG.debug("ps.getClass.getName : " + ps.getClass().getName());

            

        Statement dps1 = ((DelegatingPreparedStatement)ps).getDelegate();

            

        LOG.debug("dps1.toString : " + dps1.toString());

        LOG.debug("dps1.getClass.getName : " + dps1.getClass().getName());

     

        Statement dps2 = ((DelegatingPreparedStatement)dps1).getDelegate();

            

        LOG.debug("dps2.toString : " + dps2.toString());

        LOG.debug("dps2.getClass.getName : " + dps2.getClass().getName());


        try{


            LOG.debug("캐스팅 하려는 클래스명 : " + CUBRIDPreparedStatement.class.getName());


            CUBRIDPreparedStatement cps = (CUBRIDPreparedStatement)dps2;

        }catch(Exception e){ 

            LOG.debug("말도 안되는 오류 발생.", e); 

        }   



        ps.close();

        conn.close();

    }catch(Exception e){ 

        LOG.debug("여기선 오류가 발생하지 않음.", e); 

    }


    %>


    -------------------------------------------------------------------------------------------------------------------


    2011.11.22 13:59:26.106 DEBUG org.apache.jsp.test_jsp._jspService:52 시작

    2011.11.22 13:59:26.108 DEBUG org.apache.jsp.test_jsp._jspService:57 conn.toString : org.apache.commons.dbcp.PoolableConnection@317b1d64

    2011.11.22 13:59:26.108 DEBUG org.apache.jsp.test_jsp._jspService:58 conn.getClass.getName : org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper

    2011.11.22 13:59:26.110 DEBUG org.apache.jsp.test_jsp._jspService:62 ps.toString : org.apache.commons.dbcp.DelegatingPreparedStatement@9c6a99d

    2011.11.22 13:59:26.110 DEBUG org.apache.jsp.test_jsp._jspService:63 ps.getClass.getName : org.apache.commons.dbcp.DelegatingPreparedStatement

    2011.11.22 13:59:26.111 DEBUG org.apache.jsp.test_jsp._jspService:67 dps1.toString : org.apache.commons.dbcp.PoolablePreparedStatement@9c6a99d

    2011.11.22 13:59:26.111 DEBUG org.apache.jsp.test_jsp._jspService:68 dps1.getClass.getName : org.apache.commons.dbcp.PoolablePreparedStatement

    2011.11.22 13:59:26.111 DEBUG org.apache.jsp.test_jsp._jspService:72 dps2.toString : cubrid.jdbc.driver.CUBRIDPreparedStatement@9c6a99d

    2011.11.22 13:59:26.111 DEBUG org.apache.jsp.test_jsp._jspService:73 dps2.getClass.getName : cubrid.jdbc.driver.CUBRIDPreparedStatement

    2011.11.22 13:59:26.111 DEBUG org.apache.jsp.test_jsp._jspService:77 캐스팅 하려는 클래스명 : cubrid.jdbc.driver.CUBRIDPreparedStatement

    2011.11.22 13:59:26.112 DEBUG org.apache.jsp.test_jsp._jspService:81 말도 안되는 오류 발생.

    java.lang.ClassCastException: cubrid.jdbc.driver.CUBRIDPreparedStatement cannot be cast to cubrid.jdbc.driver.CUBRIDPreparedStatement

    at org.apache.jsp.test_jsp._jspService(test_jsp.java:79)

    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)

    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)

    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)

    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)

    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)

    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)

    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)

    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)

    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)

    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)

    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775)

    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704)

    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:897)

    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)

    at java.lang.Thread.run(Thread.java:636)

  • ?
    안지민 2011.12.05 18:21

    이거... 언제쯤 해결될까요? 지금 계속 dbcp기능 끄고 사용중인데요....


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 120
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4476
1142 CUBRID Migration Toolkit 사용시 에러 관련사항입니다. 3 file 그가가가 2012.01.03 19049
1141 asp.net 윈도우즈 설치 문의 3 shblitz 2011.12.29 14673
1140 HA관련 추가 문제 답변부탁립니다... 3 file 반짝이 2011.12.29 24163
1139 HA로 운영중인 CUBRID 버전업 방법과 INDEX 문제 질문드립니다. 11 secret 반짝이 2011.12.28 61
1138 접속제한 설정 질문드립니다 2 유니콘 2011.12.24 12721
1137 큐브리드 백업 진행시 오류 2 제이씨씨 2011.12.23 17340
1136 jdbc 사용중 테이블 데이터 입력문제 2 Dezert 2011.12.22 20502
1135 업그레이드 후 쿼리 수행시간이 길어졌습니다. 4 secret 노랑배 2011.12.22 12
1134 R1.4 -> R2.2 마이그레이션 중 스키마 로드 에러 2 secret 노랑배 2011.12.20 7
1133 double 표시형식 문의 2 지렸당께 2011.12.18 16278
1132 DLL WS2_32.dll에서 찾을 수 없습니다. 2 karay2k 2011.12.17 28613
1131 호스트 추가 1 karay2k 2011.12.17 17929
1130 cubrid 성능비교 2 secret 깨진질그릇조각인형 2011.12.15 12
1129 autocommit 관련 5 깨진질그릇조각인형 2011.12.15 15591
1128 cubrid 매니저 아이디 잊어 버렸는데.. 2 티제이 2011.12.10 13409
1127 HTML 게시판 작성후 데이타베이스 연결 방법? 4 하늘과땅 2011.12.09 20151
1126 분석용 함수 지원여부.. 1 이재학 2011.12.08 13088
1125 계정별 접근 권한에 대한 질문입니다. 4 켄신 2011.12.08 14464
1124 매니저가 실행이 되지 않습니다. 3 file 또랑 2011.12.05 9813
1123 컬럼 데이터타입 수정 문의 2 지렸당께 2011.12.05 10537
Board Pagination Prev 1 ... 139 140 141 142 143 144 145 146 147 148 ... 201 Next
/ 201

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales