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
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 39
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
2894 실시간 Insert처리 1 file 동해아빠 2011.10.29 12444
2893 Stored procedure execute error: 자바 저장프로시저 관련오류입니다. 8 wolf 2011.11.01 21798
2892 델파이 ADOStoredProcedure 컴포넌트에서 큐브리드저장함수의 리턴값을 받고싶습니다. 2 wolf 2011.11.03 21625
2891 1대의 서버에 버젼이 다른 cubrid를 설치하려고 합니다. 1 secret 어려운큐브 2011.11.03 14
2890 리눅스서버에 설치된 cubrid삭제후 로그인할때마다 에러메시지가 나옵니다.(11/06=>관련 추가질문 올림) 4 secret 어려운큐브 2011.11.05 13
2889 증분백업 복구가 잘 않되고 있습니다. 3 reerror 2011.11.08 11508
2888 실행 오류 :-46 (Internal error: slot 3 on page 4231 of volume) 3 file reerror 2011.11.09 26849
2887 4.0 마이그레이션 중 스키마 로드 오류 9 reerror 2011.11.10 18171
2886 4.0 최초 설치후 DB 구동 불가 증상 7 reerror 2011.11.10 11196
2885 데이타 처리 속도 문제가 있습니다. 2 pdk24 2011.11.11 11712
2884 php 모듈 로드가 안됩니다. 3 김우람 2011.11.11 14352
2883 큐브리드 매니저, 쿼리브라우저 차이점 문의 1 jyuvenia 2011.11.12 13568
2882 전에 조인 관련 비슷한 질문을 올렸는데도 응용을 하지 못해 쿼리를 올립니다. 3 하루야 2011.11.17 12407
2881 이거... 뭐가 문제 일까요? 2 안지민 2011.11.18 27661
» 말도 안되는 Exception이 발생하는데 대체 뭘까요;; 8 안지민 2011.11.18 48213
2879 CUBRID 공간데이터 타입 기대해도 되나요? 3 kladess 2011.11.19 11073
2878 like 검색 5 비형여자 2011.11.19 14850
2877 암호/복호화 함수 2 서영신 2011.11.22 16943
2876 리눅스 버젼 설치시 demodb 생성이 안됩니다. 3 챨수 2011.11.23 11824
2875 테이블 생성시 PRIMARY KEY 2개일때 오류 3 서영신 2011.11.23 23816
Board Pagination Prev 1 ... 51 52 53 54 55 56 57 58 59 60 ... 200 Next
/ 200

Contact Cubrid

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