2012-10-28 84 views
2

我試圖將Oracle與Spring和DBCP連接起來。Oracle 11g DBCP網絡適配器無法建立連接

<bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource"> 
     <property name="driverClassName" value="oracle.jdbc.OracleDriver" /> 
     <property name="url" value="jdbc:oracle:thin:@localhost:1521/ORCL" /> 
     <property name="username" value="PMSYSDB" /> 
     <property name="password" value="********" /> 
    </bean> 

,但我得到:Could not get JDBC Connection; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (IO Error: The Network Adapter could not establish the connection)

我能夠通過的SQLDeveloper這個屬性連接:

Hostname: localhost 
Port : 1521 
SID  : ORCL 
username: PMSYSDB 
password: 

所以我的數據庫運行起來...... 防火牆是關閉的。 .. 數據庫和tomcat在同一臺機器上...

認爲這不重要,但我使用Spr的數據源ing安全性:

 <authentication-manager> 
     <authentication-provider> 
     <jdbc-user-service data-source-ref="dataSource" 

      users-by-username-query=" 
       select username, password, enabled 
       from users where username=?" 

      authorities-by-username-query=" 
       select u.username, ur.authority from users u, user_roles ur 
       where u.user_id = ur.user_id and u.username =? " 

     /> 
     </authentication-provider> 
    </authentication-manager> 

回答

4

問題是我用這個語法jdbc:oracle:thin:@localhost:1521/ORCL作爲連接字符串。在/之後Oracle期望服務名稱而不是SID(ORCL是我的SID)。 解決方案是改變連接sring到jdbc:oracle:thin:@localhost:1521:ORCL

1

該數據庫可能被設置爲不允許這些類型的連接。 試試這個:

telnet localhost 1521 

要看看你是否可以在該端口上連接。

+0

感謝您的答覆。執行「telnet localhost 1521」後,我得到cmd刷新(C:\ Users \ myWinUser>),不知道這是否是連接計數。 我也檢查了「lsnrctl狀態」。它返回: 聆聽端點摘要...(描述=(地址=(協議= ipc) 127.0.0.1)(PORT = 1521))) ,女巫告訴聽者收聽端口1521,對吧? –

+0

嘗試127.0.0.1而不是您的dataSource屬性中的本地主機 – Solubris

+0

沒有工作.... –

相關問題