Erro conectando Oracle por DataSource

3 respostas
Luiz_Henrique_Coura

Estou tentando me conectar com o BD Oracle por DataSource, mas toda vez que tento ele gera essa exception. Que erro é esse?

org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Exceção de E/S: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=153092352)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))))
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:855)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.apache.jsp.teste_jsp._jspService(teste_jsp.java:79)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.sql.SQLException: Exceção de E/S: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=153092352)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:323)
at oracle.jdbc.driver.OracleConnection.(OracleConnection.java:260)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:365)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:260)
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)
... 34 more

Esse é meu DataSource:
.
.
.
<Resource name="jdbc/DSOracle" auth="Container" type="javax.sql.DataSource"/>

     <ResourceParams name="jdbc/DSOracle">
  		<parameter>
       	<name>factory</name>
  	        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
      	</parameter>

        <parameter>
  	        <name>maxActive</name>
      	    <value>20</value>
        </parameter>

        <parameter>
   	        <name>maxIdle</name>
       	    <value>10</value>
        </parameter>

        <parameter>
            <name>maxWait</name>
            <value>3000</value>
        </parameter>

        <parameter>
        	<name>username</name>
            <value>eu</value>
        </parameter>

        <parameter>
            <name>password</name>
            <value>minhasenha</value>
        </parameter>
         
        <parameter>
            <name>driverClassName</name>
            <value>oracle.jdbc.driver.OracleDriver</value>
   	    </parameter>

        <parameter>
            <name>url</name>
            <value>jdbc:oracle:thin:@servidor:9999:basedados?autoReconnect=true</value>
        </parameter>

  	    <parameter>
            <name>removeAbandoned</name>
            <value>true</value>
        </parameter>

   	    <parameter>
            <name>removeAbandonedTimeout</name>
            <value>60</value>
        </parameter>
	
  </ResourceParams>
.
.
.

No meu web.xml:

.
.
.
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/DSOracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
.
.
.

Faço conexão com mySQL por DataSource normalmente, porém quando fui tentar me conectar ao Oracle... Enfim, que erro é esse?

Valeu!

3 Respostas

L

Normalmente esse erro ocorre porque o SID nao esta correcto!
Tente mudar esse valor.

&lt;parameter&gt; &lt;name&gt;url&lt;/name&gt; &lt;value&gt;jdbc&#58;oracle&#58;thin&#58;@servidor&#58;9999&#58;SID?autoReconnect=true&lt;/value&gt; &lt;/parameter&gt;

Luiz_Henrique_Coura

Encontrei o problema.

A opção autoReconect=true é para ser usada com o MySQL. Por default, o servidor MySQL fecha a conexão depois de 8 horas. Com essa opção ligada o usuário é reconectado automaticamente.

Eu criei meu DataSource de um outro que utilizo, para conexão com MySQL, e apenas alterei alguns parametros para utilizar com o Oracle. Não sabia que o parametro autoReconect não funciona com Oracle. Talvez seja de outra forma ou senão não existe mesmo.

Apenas tirei essa opção da URL e passou a funcionar.

Valeu pela a ajuda!

C

Preciso de ajuda com esta configuração que está apresentando o seguinte erro:[img]

Criado 4 de novembro de 2004
Ultima resposta 23 de jul. de 2008
Respostas 3
Participantes 3