2017-05-12 12 views
0

Ich habe diese https://www.mkyong.com/spring-boot/spring-boot-configure-maxswallowsize-in-embedded-tomcat/ gelesen und getan, indem ich sie in eine meiner Klassen aufgenommen habe, aber ich habe keine Ahnung, wie ich sicherstellen kann, dass sie ausgeführt werden soll. Ich habe sogar versucht, die Funktion in meinem Code auszuführen, aber ERR_CONNECTION_RESET wird immer wieder an meine Web-App zurückgegeben.Festlegen einer eingebetteten Tomcat-Eigenschaft im Spring Boot, Bean-Nutzung?

Ich habe nichts anderes geändert. Gibt es etwas, das mir fehlt?

Antwort

0

Ich habe dieses Problem vor und finde eine solche Lösung; diese Parameter auf application.properties Einstellung:

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

aber es hat für mich mit meiner Feder-Boot-Version nicht funktioniert. Dann habe ich die Tomcat jdbc Datenquelle factory Felder überprüft und festgestellt, dass die Felder der dataSourceFactory nicht erfolgreich von application.properties Konfigurationen festgelegt sind.

Schließlich beschloß ich es durch diese Felder nach der Initialisierung der Anwendung einstellen, und meine Verbindung zurückgesetzt Problem behoben .:

@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; 
    } 
} 
Verwandte Themen