2012-04-20 26 views
5

Phiên bản ứng dụng: JBoss 7.0.0, Oracle 11g (ojdbc6.jar) và JDK 6 phiên bảnjava.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 không thể được đúc

Tôi có một vấn đề khi tôi đang cố gắng để chèn giá trị cho kiểu dữ liệu CLOB sử dụng chức năng CLOB.createTemporary, nhận được ngoại lệ dưới đây.

java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 cannot be cast to oracle.jdbc.OracleConnection

Sau khi tìm kiếm trong nhiều diễn đàn, không tìm thấy giải pháp nào. https://forums.oracle.com/forums/thread.jspa?threadID=279238

Các bước cơ bản cần thiết để triển khai tệp WAR và định cấu hình cấu hình hồ bơi trình điều khiển oracle JBoss được thực hiện. Nhưng, vẫn không thể vượt qua được vấn đề này.

Vui lòng cung cấp giải pháp để khắc phục vấn đề này.

+0

[This] (http://stackoverflow.com/q/277665/1285418) có thể giúp bạn. –

+0

Bạn có thể thay thế ojdbc6.jar bằng ojdbc14.jar và kiểm tra tên lớp trình điều khiển oracle.jdbc.OracleDriver – Phani

+0

Phani, tôi đang sử dụng phiên bản Java 6 và trình điều khiển tương ứng để kết nối với oracle phải là ojdbc6.jar. Có thể biết làm thế nào bạn liên quan đến điều này với tập tin ojdbc14.jar? – Rajkumar

Trả lời

6

Tôi đã giải quyết được vấn đề của mình bằng cách tiếp cận bên dưới.

Tóm tắt: Trình tải lớp không được tải trình điều khiển Oracle từ máy chủ lib/modules và trong lưu trữ web (tệp WAR). Giữ trình điều khiển oracle chỉ trong lib máy chủ (JBoss 7 ver).

JBoss 7:

  • Tạo một JBoss deployment descriptor tập tin mới (JBoss-triển khai-structure.xml)

    1. Cập nhật các (ironjacamar-jdbc-1.0.3.Final .jar) mô-đun sắt trong tệp cấu trúc triển khai jboss
    2. Tạo ojdbc6.jar làm mô-đun trong cấu trúc JBoss 7 Cập nhật mô-đun objbc trong cấu trúc triển khai jboss f ile
    3. Ví dụ:

      <jboss-deployment-structure> 
          <deployment> 
           <dependencies> 
            <module name="org.jboss.ironjacamar.jdbcadapters" slot="main"/> 
            <module name="com.oracle.ojdbc6" slot="main"/> 
           </dependencies> 
          </deployment> 
      </jboss-deployment-structure> 
      

module Web: - Loại bỏ các tập tin ojdbc6.jar từ kho lưu trữ web (WAR tập tin)

Nếu bạn tìm thấy bất kỳ vấn đề trong việc giải quyết, xin vui lòng cho tôi biết.

+0

Giải pháp thật tuyệt vời nhưng chú ý , tên mô-đun được cấu hình trong JBoss. Tôi đã phải thay đổi 'com.oracle.ojdbc6' thành' com.oracle'. – chillworld

1

Điều đang xảy ra ở đây là JBoss kết thúc tốt đẹp kết nối oracle (oracle.jdbc.OracleConnection) với chính nó (org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6). Bạn phải gọi #getUnderlyingConnection() để nhận kết nối cơ bản.

WrappedConnection wrapped = (WrappedConnection) conn; 
CLOB clob = CLOB.createTemporary(wrapped.getUnderlyingConnection(), true, CLOB.DURATION_SESSION); 

Tuy nhiên tôi tự hỏi liệu điều sau đây sẽ không hoạt động tốt trong trường hợp của bạn hay không.

ps.setClob(4, new StringReader(data)); 
+0

Xin chào Philippe, tôi có thể hiểu câu trả lời của bạn. Vấn đề bây giờ tôi đang phải đối mặt là, tôi không thể gõ cast "conn" đối tượng để WrappedConnection đối tượng. Trong khi tôi cố gắng định kiểu, tôi nhận được ngoại lệ này "java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 không thể chuyển sang oracle.jdbc.OracleConnection" – Rajkumar

+0

Vì vậy, 'WrappedConnection # getUnderlyingConnection() 'một lần nữa trả về một' WrappedConnectionJDK6'? Bạn đã cố gắng xóa toàn bộ mã 'CLOB.createTemporary' (và diễn xuất thành' WrappedConnection') và chỉ cần đi với 'ps.setClob (4, StringReader mới (dữ liệu)); ' –

0

Got một vấn đề tương tự trong một ứng dụng Rails với JRuby 1.7.2, JBoss 7.1 và Oracle (oracle_enhanced bộ chuyển đổi)

Java::JavaLang::ClassCastException: oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection 

Giải pháp này làm việc cho tôi.

tôi đặt JBoss-triển khai-structure.xml trong config/thư mục của ứng dụng đường ray và cập nhật các cấu hình chim chích để bao gồm các tập tin trong tập tin chiến tranh:

config.webinf_files += FileList["config/jboss-deployment-structure.xml"] 

Sau khi triển khai tất cả các hoạt động tốt. .. Cảm ơn nhiều.

Các vấn đề liên quan