Background Image

FORUM

조회 수 54391 추천 수 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 도구 출시 안내 21 admin 2024.04.23 143856
1188 필드 크기 변경 계획에 대한 질문 3 유니콘 2012.04.04 10766
1187 큐브리드 매니저 질의 결과 보고 문의 3 file 유니콘 2012.04.04 9174
1186 varchar 형식 insert 문의 4 file 유니콘 2012.04.04 15264
1185 Python Driver가 있는지요 1 decoro 2012.03.30 10033
1184 큐브리드 매니저 접속 문제 10 secret 종이 2012.03.27 18
1183 큐브리드 매니터 질의 편집기 관련 1 하루야 2012.03.26 10015
1182 PHP 인스톨 중 에러입니다. 6 들뿔 2012.03.26 12785
1181 Connect By Level 구문에 대해 문의 드립니다. 1 깨달음 2012.03.23 14055
1180 큐브리드 매니저 connect timed out. 오류 1 아이쿠두야 2012.03.23 14220
1179 Warning: Error: CAS, -1003, Cannot receive data from client 에러 발생 1 gPdnjs 2012.03.23 11844
1178 Cubrid iBatis Cursor 예제좀 부탁드립니다. 1 깨달음 2012.03.21 18927
1177 ODBC 에러 물어보겟습니다. 2 세스카 2012.03.21 13727
1176 ADO.net 또는 ODBC에 대한 질문입니다. 12 세스카 2012.03.20 16210
1175 win 2008 (x64)에서 apm으로 큐브리드 연동 질문 1 hwani012 2012.03.16 10236
1174 윈도우용 큐브리드 문의 1 zino 2012.03.13 9438
1173 큐브리드상에서 한글을 깨지지 않고 자르는 방법이 있을까요? 1 file 안지민 2012.03.13 12071
1172 8.2.2 HA 구성 중 네트워크 장애 복귀 시 role 전환 문제 3 freemir 2012.03.09 16575
1171 설치 문의 드립니다. 1 cuins 2012.03.06 18128
1170 php 모듈 관련 문제좀여... 5 눈뜨면아침 2012.03.01 9670
1169 HA 구성 하에서 RO 브로커 연결 시 SELECT 값이 다릅니다. 9 freemir 2012.02.24 25339
Board Pagination Prev 1 ... 149 150 151 152 153 154 155 156 157 158 ... 213 Next
/ 213

Contact Cubrid

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