【发布时间】:2012-08-27 13:22:46
【问题描述】:
我正在尝试创建一个从 glassfish 到 Oracle 的连接池。 当我使用命令行时,在创建过程中似乎一切正常,但应用程序因以下异常而崩溃:
Caused by: java.sql.SQLException: Protocol violation
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C7Ocommoncall.doOROLLBACK(T4C7Ocommoncall.java:68)
at oracle.jdbc.driver.T4CConnection.doRollback(T4CConnection.java:642)
at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:3716)
at com.sun.gjc.spi.base.ConnectionHolder.rollback(ConnectionHolder.java:630)
at org.hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:217)
at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:196)
EDIT:当应用程序尝试使用 JPA 进行回滚时,会引发此异常。 结束编辑
这是我用来创建 CP 的命令:
asadmin> create-jdbc-connection-pool --restype javax.sql.DataSource
--datasourceclassname oracle.jdbc.pool.OracleDataSource
--property "user=myUser:password=myPw:url=jdbc\\:oracle\\:thin\\:@dbHostName\\:1521\\:mySID" My_CP
我还尝试从管理 gui 创建 CP(这将更加用户友好),但即使我在 /opt/glassfish3_old/glassfish/domains/domain1/lib 中复制了 ojdbc6.jar,当我不得不这样做时选择驱动类名对应的选择列表为空!
编辑: 我正在使用: java版本“1.7.0_06” Java(TM) SE 运行时环境 (build 1.7.0_06-b24) Java HotSpot(TM) 服务器虚拟机(build 23.2-b09,混合模式)
和 glassfish 3.1.2.2 oracle 版本(但与 3.1.2 开源版本的行为相同)
END EDIT
可能我在某个地方犯了一个愚蠢的错误。
谁能给点建议?
【问题讨论】:
-
也可能是驱动bug:forums.oracle.com/forums/…
-
谢谢迈克。我阅读了链接,但它们不是我的情况。
-
您是否将驱动程序复制到正确的目录并重新启动了实例? docs.oracle.com/cd/E18930_01/html/821-2432/gkyan.html
-
是的,我做到了。我将 ojdbc6.jar 复制到我的域的 lib 目录中。我希望我可以毫无问题地从 gui 创建 CP,但是驱动程序类名的选择列表仍然是空的,所以我不能选择瘦库。
标签: java oracle glassfish connection-pooling