2017-07-31 10 views
1

Oracleを使用してTomcatのJDBCプールをWebアプリケーションに統合しようとすると、ORA-12519, TNS:no appropriate service handler foundエラーが発生しました。Tomcat DBCP接続が切れている

通常、アプリケーションとの統合テストを数分間実行すると、このエラーが断続的に発生することがあります。

私が持っている構成は次のとおりです。Tomcatの/ libディレクトリにOracleドライバとTomcat-DBCP瓶

  • 2のwebapps

    • 、両方とも同じリソースを使用します。春に行われる構成:confに/ context.xmlにで定義されて

      <jee:jndi-lookup id="webDS" jndi-name="jdbc/web" 
          expected-type="javax.sql.DataSource" /> 
      
    • のDataSourceリソース、次のように:

      <Resource name="jdbc/web" auth="Container" 
      type="javax.sql.DataSource" 
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
      testWhileIdle="true" 
      testOnBorrow="true" 
      testOnReturn="false" 
      validationQuery="SELECT 1" 
      timeBetweenEvictionRunsMillis="30000" 
      maxActive="20" 
      maxIdle="10" 
      minIdle="5" 
      removeAbandonedTimeout="60" 
      removeAbandoned="false" 
      logAbandoned="true" 
      minEvictableIdleTimeMillis="30000" 
      jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer" 
      username="${database.user}" 
      password="${database.password}" 
      driverClassName="${database.driver}" 
      url="${database.url}" /> 
      

    私はSOなどの増加やなどの他の場所に作られた様々な提案を試してみましたmaxActiveのサイズは小さくなりましたが、これまでのところ運がありません。以前はc3p0を使って接続プールを管理していました。スイッチを使用して、私はそれらが漏れているように見えるので、私は接続の終了に関連して行う必要があるいくつかの追加の構成があるかどうか疑問に思っています。

    スタックトレース:

    Caused by: org.hibernate.exception.GenericJDBCException: Could not open connection 
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109) 
    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:221) 
    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:157) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:56) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:159) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:183) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:157) 
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1881) 
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1858) 
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1838) 
    at org.hibernate.loader.Loader.doQuery(Loader.java:906) 
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:348) 
    at org.hibernate.loader.Loader.doList(Loader.java:2550) 
    at org.hibernate.loader.Loader.doList(Loader.java:2536) 
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2366) 
    at org.hibernate.loader.Loader.list(Loader.java:2361) 
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:495) 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:357) 
    at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:198) 
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1230) 
    at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101) 
    at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:268) 
    ... 112 more 
    Caused by: java.sql.SQLException: Listener refused the connection with the following error: 
    ORA-12519, TNS:no appropriate service handler found 
    
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:489) 
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553) 
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:254) 
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) 
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528) 
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278) 
    at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182) 
    at org.apache.tomcat.jdbc.pool.PooledConnection.reconnect(PooledConnection.java:315) 
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:803) 
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:628) 
    at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:187) 
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128) 
    at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70) 
    at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:301) 
    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:214) 
    ... 132 more 
    Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error: 
    ORA-12519, TNS:no appropriate service handler found 
    
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:399) 
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1140) 
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:340) 
    ... 146 more 
    
  • +0

    これはtomcat/jdbcではなくデータベースエラーです。あなたはdbサーバー 'lsnrctlサービス'で実行できますか?それは問題ありません。 'システムの変更プロセスを設定する= 300(またはあなたが望むもの)を試みてください。scope = spfile;' DBを再起動します。 –

    +2

    あなたの検証クエリ( 'SELECT 1')はオラクルでは機能しません。これは 'select one from dual'でなければなりません。 –

    +0

    これはデータベースエラーではありません。同じ正確な設定がc3p0でうまくいきます。 –

    答えて

    2

    あなたの検証クエリー(SELECT 1)は、Oracleでは動作しません。それはselect 1 from dualでなければなりません。

    間違った検証クエリを使用すると、アプリケーションは健全な接続を識別できず、すべての接続を無効とマークすることができるようです。

    関連する問題