Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

WSJDBCConnection không bao bọc các đối tượng kiểu Oracle jdbc Connection

Tôi vừa thử nghiệm điều này trên WebSphere Liberty và đoạn mã sau phù hợp với tôi:

@Resource(lookup = "jdbc/oracle")
private DataSource ds;

// ...

Connection conn = ds.getConnection();
OracleConnection oracleConn = conn.unwrap(oracle.jdbc.OracleConnection.class);

Server.xml của tôi trông giống như sau:

<dataSource jndiName="jdbc/oracle">
    <jdbcDriver libraryRef="oracleLib"/>
    <properties.oracle URL="${jdbc.URL}" user="${jdbc.user}" password="${jdbc.password}"/>
</dataSource>

<library id="oracleLib">
    <fileset dir="${server.config.dir}/oracle"/>
</library>

<application location="myApp.war" >
    <classloader commonLibraryRef="oracleLib"/>
</application>

Điều quan trọng cần lưu ý ở đây là việc sử dụng commonLibraryRef trên <classloader> thành phần. Nếu bạn sử dụng privateLibraryRef nó sẽ không hoạt động vì ứng dụng và nguồn dữ liệu do máy chủ xác định sẽ sử dụng bộ nạp lớp riêng biệt để tải các lớp Oracle JDBC.

Nếu câu trả lời này không hữu ích cho bạn, vui lòng cập nhật câu hỏi của bạn với cấu hình server.xml và cả cách bạn lấy một bản sao của DataSource .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.lang.UnsatisfiedLinkError:không có ocijdbc11 trong java. library.path

  2. Ký tự thoát SQL trong Oracle (cho một '&')

  3. Truy cập dịch vụ Web từ quy trình được lưu trữ của Oracle

  4. Giải pháp cho ORA-00997:sử dụng bất hợp pháp kiểu dữ liệu LONG

  5. Trả về kết quả của một truy vấn sql dưới dạng JSON trong oracle 12c