2017-05-12 27 views
0

私はこれを私のクラスの1つに含めることによってこれを読んだり完了させましたが、それが確実に実行されるはずがありません。私は自分のコードで関数を実行しようとしましたが、ERR_CONNECTION_RESETがWebアプリケーションに返され続けます。春の起動時に埋め込みのTomcatプロパティを設定すると、Beanの使用率は?

私は他に何も変更していません。私が紛失しているものはありますか?

答えて

0

私は以前この問題に直面し、このような解決策を見つけました。 application.propertiesにこれらのパラメータの設定:

spring.datasource.test-on-borrow=true 
spring.datasource.test-while-idle=true 
spring.datasource.validation-query=SELECT 1 

しかし、それは私の春ブートバージョンで私のために働いていませんでした。次に、tomcat jdbcデータソースファクトリフィールドを確認し、dataSourceFactoryのフィールドがapplication.properties設定によって正常に設定されていないことに気付きました。

は最後に、私は、アプリケーションの初期化後に、これらのフィールドを設定することによってそれを解決して、私の接続リセットの問題は解決:

@Component 
public class PoolConfiguration implements BeanPostProcessor { 

    @Value("${spring.datasource.test-on-borrow:true}") 
    private boolean isTestOnBorrow; 

    @Value("${spring.datasource.test-while-idle:true}") 
    private boolean isTestWhileIdle; 

    @Value("${spring.datasource.validation-query:SELECT 1}") 
    private String validationQuery; 

    @Override 
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { 
     return bean; 
    } 

    @Override 
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { 
     if (bean instanceof TomcatJdbcDataSourceFactory) { 
      TomcatJdbcDataSourceFactory tomcatJdbcDataSourceFactory = (TomcatJdbcDataSourceFactory) bean; 
      tomcatJdbcDataSourceFactory.setTestOnBorrow(isTestOnBorrow); 
      tomcatJdbcDataSourceFactory.setTestWhileIdle(isTestWhileIdle); 
      tomcatJdbcDataSourceFactory.setValidationQuery(validationQuery); 
     } 
     return bean; 
    } 
} 
関連する問題