Background Image

FORUM

조회 수 48213 추천 수 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
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4443
3967 /home/jenkins/workspace/cubrid_release_10.1/src/transaction/boot_cl.c, line 1138 CODE = -971 Tran = -1, EID = 1Program 'tranlist' (pid ) connected to database server 'test' on the host 'localhost' 4 jmkim 2023.03.13 193
3966 0.5 이하 반올림 함수가 어떻게 되나요? 4 coolbyj 2009.10.22 21273
3965 0으로 나눌수가 없는 경우.. 처리를 위해서 디코더나 case를 사용해서 써봤는데 1 거만고양이 2015.04.01 4253
3964 10.1 ==> 10.2 버전 업그레이드를 준비 중인데요. 1 Philip Park 2020.03.26 110
3963 10.1 또는 10.2. 버전에서는 web manager를 지원 안 하나요? 1 hbg 2020.01.10 141
3962 10.1 버전의 jdbc 드라이버로 9.3 버전 접속이 되는지요? 2 coolbyj 2020.09.11 212
3961 10.2 :: jdbc 버그? :: decimal 컬럼에 무조건 정수로 저장되는 상황 발생 1 rednuts 2021.02.06 409
3960 10.2 :: round 함수에 버그가 있는 것으로 보입니다. 1 rednuts 2021.02.04 204
3959 10월 10일날 삭제되어 버린 일부 데이터 복구를 하고 싶습니다. 1 나무친구 2017.10.16 694
3958 11.2 jdbc driver 1 경산손사장 2022.06.09 233
3957 11.2 path 방법 문의 4 리들러 2022.08.09 99
3956 11.2버전에서 사용자 스키마에 대해서 궁금한 것이 있습니다. 1 로키 2023.11.08 138
3955 11버전 설치 후에 cub_auto 프로세스가 보이지가 않습니다. 1 kikiki767 2022.02.02 73
3954 13개 이상 AVG 혹은 SUM 사용 시 결과로 Null 값만 나옵니다. 2 oiuy 2015.04.10 7235
3953 1623글 답변 확인 부탁드립니다. 1 토네이도 2013.09.16 7865
3952 1895번 추가 문의 드립니다 1 dgr 2014.07.16 4774
3951 1MB 넘는 데이터 문자열 붙일때 오류 1 빛날구름 2015.08.04 5439
3950 1대의 서버에 다른 버젼의 큐브리드 추가 설치..실행시 에러에 대해 문의드립니다. 1 S1000RR 2014.08.08 7695
3949 1대의 서버에 버젼이 다른 cubrid를 설치하려고 합니다. 1 secret 어려운큐브 2011.11.03 14
3948 2.0에서 2.1로 업그레이드 하려면? 1 초보 2010.02.04 9803
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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