【问题标题】:Oracle 11g DBCP The Network Adapter could not establish the connectionOracle 11g DBCP 网络适配器无法建立连接
【发布时间】:2012-10-28 11:56:51
【问题描述】:

我擅长将 oracle 与 Spring 和 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在同一台机器上...

认为这并不重要,但我将数据源与 Spring Security 一起使用:

     <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>

【问题讨论】:

    标签: oracle spring jdbc


    【解决方案1】:

    问题是我使用这个语法jdbc:oracle:thin:@localhost:1521/ORCL 作为连接字符串。在/ 之后,Oracle 需要服务名称而不是 SID(ORCL 是我的 SID)。 解决方案是将连接sring更改为jdbc:oracle:thin:@localhost:1521:ORCL

    【讨论】:

      【解决方案2】:

      数据库可能设置为不允许此类连接。 试试这个:

      telnet localhost 1521
      

      查看您是否可以在该端口上连接。

      【讨论】:

      • 感谢您的回复。执行“telnet localhost 1521”后,我刷新了 cmd (C:\Users\myWinUser>),不知道这是否是连接计数。我还检查了“lsnrctl 状态”。它返回: Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1 )(PORT=1521))) ,女巫告诉侦听器侦听端口 1521,对吗?
      • 在数据源属性中尝试使用 127.0.0.1 而不是 localhost
      【解决方案3】:

      改变和操作后刷新监听器

      C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\listener.ora

      C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\tnsnames.ora

      不要忘记在 CMD 中使用以下命令刷新监听器(以管理员身份运行)。

      lsnrctl stop
      lsnrctl start  
      

      在此之后等待 1-2 分钟,然后点击测试。

      【讨论】:

        猜你喜欢
        • 2013-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        • 1970-01-01
        • 2012-05-04
        • 1970-01-01
        相关资源
        最近更新 更多