Background Image

FORUM

조회 수 48215 추천 수 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 50
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3994 컴퓨터 이름 바꾼후 데이터베이스가 안보여요. 1 secret 그러게 2014.07.08 2
3993 [문의] 라이선스 관련 문의드립니다. 1 secret 히카리 2010.12.15 3
3992 큐브리드 설치 cubrid service start 안됨 1 secret Hera 2016.01.27 4
3991 cubrid 서버 상태 확인 화면 1 secret 알칸펠 2014.03.26 4
3990 [큐브리드 9.2] 세션수 제한? 1 secret 라온힐조 2013.10.28 4
3989 external Procedure 기능 문의드립니다. 1 secret dwpark 2014.12.03 5
3988 마이그레이션 에러 2 secret chocob 2014.03.24 5
3987 다른 질문 드립니다 ~ 3 secret 오니오니 2013.12.06 5
3986 select 속도 문제에 대해서... 1 secret 뛰다가쿵했져 2013.11.05 5
3985 Invalid connection port! 1 secret 하세라 2016.08.19 5
3984 시간 관련 질문 드립니다.. 1 secret noru 2014.08.21 5
3983 DB링크 사용이 가능한지 문의드립니다. 1 secret 장경수 2012.08.28 5
3982 스트링 함수 문의 1 secret daltago87 2010.10.15 6
3981 CUBRID 컨설팅을 받고 싶습니다. 1 secret 오004 2009.12.28 6
3980 broker start fail 1 secret 아코 2015.06.05 6
3979 보안관련 질문입니다. 1 secret goguemi 2014.06.18 6
3978 JBoss connection pool 설정방법 문의드립니다. 1 secret 땡땡이 2014.01.25 6
3977 csql를 사용하여 스크립트를 돌리게 되면 에러가 납니다. 1 secret 애정결핍 2013.12.10 6
3976 큐브리드 포트 설정 질문 드립니다. 1 secret 지나가는 2013.11.29 6
3975 Pro*c 지원 문의 1 secret 파도 2013.07.01 6
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