使用 Sniffy 指定的 Oracle URL 无效
Posted
技术标签:
【中文标题】使用 Sniffy 指定的 Oracle URL 无效【英文标题】:Invalid Oracle URL specified with Sniffy 【发布时间】:2016-08-04 07:55:49 【问题描述】:我正在尝试将 Sniffy 配置为与 Oracle 一起使用。我使用 Glassfish 作为应用服务器,使用 JPA 2.0,并使用 EclipseLink 作为提供程序。
当 EclipseLink 尝试分配连接时,它失败说指定的 Oracle URL 无效,因为"sniffer:"
前缀,我猜:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed;
nested exception is javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because: Invalid Oracle URL specified
Error Code: 0
这就是我在 domain.xml 文件中配置池的方式:
<jdbc-resource pool-name="poolGI" object-type="system-all" jndi-name="jdbc/poolGI" />
<jdbc-connection-pool driver-classname="io.sniffy.MockDriver" name="poolGI" res-type="javax.sql.DataSource" datasource-classname="oracle.jdbc.pool.OracleDataSource">
<property name="URL" value="sniffer:jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service)))"></property>
<property name="user" value="user"></property>
<property name="password" value="password"></property>
</jdbc-connection-pool>
【问题讨论】:
“它说”?怎么说?发布该消息的 EXCEPTION + STACK TRACE,然后人们就知道它来自哪里! 堆栈跟踪确实提供了信息。 恐怕日志中就只有这些了 【参考方案1】:Sniffy 开发者在这里。
看起来oracle.jdbc.pool.OracleDataSource
忽略了driver-classname
属性并隐式使用oracle.jdbc.driver.OracleDriver
。 OracleDriver 不知道 sniffer:
架构,因此例外。
您需要切换到另一个数据源才能使用 Sniffy。 例如Hikari Connection Pool。
【讨论】:
以上是关于使用 Sniffy 指定的 Oracle URL 无效的主要内容,如果未能解决你的问题,请参考以下文章
java.sql.SQLException:指定的 Oracle URL 无效错误