zoukankan      html  css  js  c++  java
  • Struts中配置oracle数据源及SID问题

    struts中配置oracle数据源:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://struts.apache.org/dtds/struts-config_1_1.dtd">

    <struts-config>
     <data-sources>
        <data-source type="org.apache.commons.dbcp.BasicDataSource" key="dataSources">
        <set-property property="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <set-property property="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
        <set-property property="username" value="hutton" />
        <set-property property="password" value="java1" />
        </data-source>
    </data-sources>

    注:xe为Oracle的SID,在oracle数据库中查询当前数据库的SID的方法:

      select instance_name from v$instance;

    配置好数据源后,通过Myeclipse启动tomcat工具,出现如下错误信息:

    严重: Initializing application data source dataSources
    org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Listener refused the connection with the following error:
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    )
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:855)
    at org.apache.commons.dbcp.BasicDataSource.setLogWriter(BasicDataSource.java:598)
    at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:808)
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:335)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1201)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1114)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1021)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
    Caused by: java.sql.SQLException: Listener refused the connection with the following error:
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:458)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
    at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
    at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
    at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:877)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:851)
    ... 14 more
    Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:395)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:320)
    ... 22 more

    五月 05, 2014 10:37:05 下午 org.apache.catalina.core.ApplicationContext log
    信息: Marking servlet action as unavailable
    五月 05, 2014 10:37:05 下午 org.apache.catalina.core.StandardContext loadOnStartup
    严重: Servlet /BSS threw load() exception
    javax.servlet.UnavailableException: Initializing application data source dataSources
    at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:812)
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:335)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1201)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1114)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1021)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

    问题原因:数据源配置中,oracle的url的值配置错误,xe为当前数据库的SID,而不是当前的数据库的名称。

    修改前:  

          <set-property property="url" value="jdbc:oracle:thin:@localhost:1521:db_bbs" />  //db_bbs为当前数据库的名称

    修改后:

          <set-property property="url" value="jdbc:oracle:thin:@localhost:1521:xe" />   //xe为当前数据库的SID

  • 相关阅读:
    MongoDB 基础学习
    在 PostgreSQL 中使用码农很忙 IP 地址数据库
    在 MySQL 中使用码农很忙 IP 地址数据库
    编译opencv和opencv_contrib
    修改本次提交日志
    clone报告超过限制
    修改gitolite管理员
    libevent简介[翻译]11 连接监听:接收一个TCP连接
    libevent简介[翻译]11 Evbuffers:缓冲IO的功能函数
    Windows查看TCP连接数
  • 原文地址:https://www.cnblogs.com/hutton/p/3710448.html
Copyright © 2011-2022 走看看