spring - System property stops taking effect when moved to application.properties -


i have spring boot application uses spring data , hibernate data access. encountered long application start-up times. so, based on answer, set 'hibernate.temp.use_jdbc_metadata_defaults' 'false' system property (-d). application startup time issue resolved.

now, moved configuration system property application.properties. delayed application start-up issue has returned.

my application.properties:

hibernate.temp.use_jdbc_metadata_defaults=false spring.jpa.database-platform=org.hibernate.dialect.postgresqldialect spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=none spring.datasource.validation-query=select 1 spring.datasource.testonborrow=true spring.datasource.testwhileidle=true 

after setting "org.springframework.core.env" "debug" logging, see property resolved application.properties (as expected).

info   | jvm 1    | 2015/07/20 19:47:15 | 19:47:15.211 [wrapperjarappmain] debug o.s.c.e.propertysourcespropertyresolver - found key 'spring.jpa.database-platform' in [applicationconfig: [classpath:/application.properties]] type [string] , value 'org.hibernate.dialect.postgresqldialect' ... info   | jvm 1    | 2015/07/20 19:47:15 | 19:47:15.226 [wrapperjarappmain] debug o.s.c.e.propertysourcespropertyresolver - found key 'hibernate.temp.use_jdbc_metadata_defaults' in [applicationconfig: [classpath:/application.properties]] type [string] , value 'false' ... info   | jvm 1    | 2015/07/20 19:47:15 | 19:47:15.229 [wrapperjarappmain] debug o.s.c.e.propertysourcespropertyresolver - found key 'spring.jpa.hibernate.ddl-auto' in [applicationconfig: [classpath:/application.properties]] type [string] , value 'none' 

during delayed startup, app stalls @ particular point , resumes. when stalled, "jstack"ing jvm gives following result:

info   | jvm 1    | 2015/07/20 19:47:58 | "wrapperjarappmain" #20 prio=5 os_prio=0 tid=0x00007fb1ec02b800 nid=0x1d39 runnable [0x00007fb248257000] info   | jvm 1    | 2015/07/20 19:47:58 |    java.lang.thread.state: runnable info   | jvm 1    | 2015/07/20 19:47:58 |       @ java.net.socketinputstream.socketread0(native method) info   | jvm 1    | 2015/07/20 19:47:58 |       @ java.net.socketinputstream.socketread(socketinputstream.java:116) info   | jvm 1    | 2015/07/20 19:47:58 |       @ java.net.socketinputstream.read(socketinputstream.java:170) info   | jvm 1    | 2015/07/20 19:47:58 |       @ java.net.socketinputstream.read(socketinputstream.java:141) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.core.visiblebufferedinputstream.readmore(visiblebufferedinputstream.java:143) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.core.visiblebufferedinputstream.ensurebytes(visiblebufferedinputstream.java:112) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.core.visiblebufferedinputstream.read(visiblebufferedinputstream.java:71) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.core.pgstream.receivechar(pgstream.java:282) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.core.v3.queryexecutorimpl.processresults(queryexecutorimpl.java:1803) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.core.v3.queryexecutorimpl.execute(queryexecutorimpl.java:255) info   | jvm 1    | 2015/07/20 19:47:58 |       - locked <0x000000077a9f8ca0> (a org.postgresql.core.v3.queryexecutorimpl) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.jdbc2.abstractjdbc2statement.execute(abstractjdbc2statement.java:570) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.jdbc2.abstractjdbc2statement.executewithflags(abstractjdbc2statement.java:420) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.jdbc2.typeinfocache.getpgtype(typeinfocache.java:323) info   | jvm 1    | 2015/07/20 19:47:58 |       - locked <0x000000077aa00ce0> (a org.postgresql.jdbc2.typeinfocache) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.jdbc2.typeinfocache.getsqltype(typeinfocache.java:175) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.jdbc2.typeinfocache.requiresquoting(typeinfocache.java:711) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.postgresql.jdbc2.abstractjdbc2databasemetadata.gettypeinfo(abstractjdbc2databasemetadata.java:4002) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.engine.jdbc.spi.typeinfo.extracttypeinfo(typeinfo.java:101) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.engine.jdbc.internal.jdbcservicesimpl.configure(jdbcservicesimpl.java:163) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.boot.registry.internal.standardserviceregistryimpl.configureservice(standardserviceregistryimpl.java:111) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.service.internal.abstractserviceregistryimpl.initializeservice(abstractserviceregistryimpl.java:234) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.service.internal.abstractserviceregistryimpl.getservice(abstractserviceregistryimpl.java:206) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.cfg.configuration.buildtyperegistrations(configuration.java:1887) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.cfg.configuration.buildsessionfactory(configuration.java:1845) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.jpa.boot.internal.entitymanagerfactorybuilderimpl$4.perform(entitymanagerfactorybuilderimpl.java:852) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.jpa.boot.internal.entitymanagerfactorybuilderimpl$4.perform(entitymanagerfactorybuilderimpl.java:845) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.boot.registry.classloading.internal.classloaderserviceimpl.withtccl(classloaderserviceimpl.java:398) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.hibernate.jpa.boot.internal.entitymanagerfactorybuilderimpl.build(entitymanagerfactorybuilderimpl.java:844) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.orm.jpa.vendor.springhibernatejpapersistenceprovider.createcontainerentitymanagerfactory(springhibernatejpapersistenceprovider.java:60) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.orm.jpa.localcontainerentitymanagerfactorybean.createnativeentitymanagerfactory(localcontainerentitymanagerfactorybean.java:343) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.orm.jpa.abstractentitymanagerfactorybean.afterpropertiesset(abstractentitymanagerfactorybean.java:318) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.invokeinitmethods(abstractautowirecapablebeanfactory.java:1633) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1570) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:539) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:476) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:303) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:230) info   | jvm 1    | 2015/07/20 19:47:58 |       - locked <0x00000006dc2676d0> (a java.util.concurrent.concurrenthashmap) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:299) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:194) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.context.support.abstractapplicationcontext.getbean(abstractapplicationcontext.java:956) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:747) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:480) info   | jvm 1    | 2015/07/20 19:47:58 |       - locked <0x00000006dbd48650> (a java.lang.object) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.boot.context.embedded.embeddedwebapplicationcontext.refresh(embeddedwebapplicationcontext.java:118) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.boot.springapplication.refresh(springapplication.java:686) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.boot.springapplication.run(springapplication.java:320) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.boot.springapplication.run(springapplication.java:957) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.boot.springapplication.run(springapplication.java:946) info   | jvm 1    | 2015/07/20 19:47:58 |       @ xyz.abc.appapplication.main(appapplication.java:10) info   | jvm 1    | 2015/07/20 19:47:58 |       @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) info   | jvm 1    | 2015/07/20 19:47:58 |       @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) info   | jvm 1    | 2015/07/20 19:47:58 |       @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) info   | jvm 1    | 2015/07/20 19:47:58 |       @ java.lang.reflect.method.invoke(method.java:497) info   | jvm 1    | 2015/07/20 19:47:58 |       @ org.springframework.boot.loader.mainmethodrunner.run(mainmethodrunner.java:53) info   | jvm 1    | 2015/07/20 19:47:58 |       @ java.lang.thread.run(thread.java:745) info   | jvm 1    | 2015/07/20 19:47:58 | 

from "org.postgresql.jdbc2.typeinfocache.getsqltype" (in above stack), think hibernate still attempting load metadata. runs contrary configuration.

i appreciate pointers on how moving configuration system property application.properties can cause not take effect?

to specify property isn't in default spring.jpa expected properties use spring.jpa.properties.<your-property-name-here>.

so instead of

hibernate.temp.use_jdbc_metadata_defaults=false 

use instead in application.properties.

spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false 

this explained in this section of spring boot reference guide.


Comments