使用Spring jdbc模板的Oracle连接,ORA-12514

时间:2015-02-18 20:23:01

标签: java spring oracle jdbc

我是Spring JDBC模板的新手。我正在尝试运行一种hello world程序。

我的问题是,如果我将网址定义为:

jdbc:oracle:thin:@some_host:1521:some_service

它完全正常,但是如下定义会抛出上述错误。

jdbc:oracle:thin:@(DESCRIPTION= 
   (ADDRESS=(PROTOCOL=TCP)(HOST=some_host) (PORT=1521)) 
   (CONNECT_DATA=(SERVICE_NAME=some_service)))

这是我的beans.xml,我做错了什么?

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">

    <bean id="dataSource" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource">
        <property name="URL" value="jdbc:oracle:thin:@(DESCRIPTION= 
            (ADDRESS=(PROTOCOL=TCP)(HOST=some_host) (PORT=1521)) 
            (CONNECT_DATA=(SERVICE_NAME=some_service)))" />
    <!--  property name="URL" value="jdbc:oracle:thin:@some_host:1521:some_service" /> -->
        <property name="User" value="some_user" />
        <property name="Password" value="some_password" />
        <property name="ConnectionFactoryClassName" value="oracle.jdbc.replay.OracleDataSourceImpl" />
        <property name="ConnectionPoolName" value="mypool" />
        <property name="MinPoolSize" value="1" />
        <property name="MaxPoolSize" value="20" />
        <property name="InitialPoolSize" value="1" />
    </bean>

    <!-- Definition for studentJDBCTemplate bean -->
    <bean id="studentJDBCTemplate" class="StudentJDBCTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>

</beans>

2 个答案:

答案 0 :(得分:1)

在连接字符串:some_service中表示SID(服务名称放在/之后)。因此,如果jdbc:oracle:thin:@some_host:1521:some_service是正确的,则some_service是SID名称,服务名称可能是其他名称。

请参阅此处http://www.orafaq.com/wiki/JDBC

您可以使用类似

的内容
ORCL =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))
   (CONNECT_DATA =
     (SID = ORCL)
   )
 )

答案 1 :(得分:0)

在XML属性值中使用CR和/或LF是不合法的。

所以从

中删除它

<property name="URL" value="...no CR/LF here ..."