2016-05-27 4 views
1

Ich habe eine App mit Spring Boot (1.3.3.RELEASE)/Cloud (Brixton.M5) mit MySQL in Stackato CF, wo ich CrudRepository eingesetzt. Leider startet Spring Boot beim Start der App DataSource automatisch mit einer der von Stackato bereitgestellten JDBC-URLs, eine mit Benutzername und Passwort, z.Auswählen von Parametern, die von Spring Boot beim Erstellen einer Datenquelle in CF verwendet werden sollen?

jdbc:mysql://yourUser:[email protected]:3306/yourDB 

Leider anscheinend nehmen dann Frühling Stiefel, dass alles vor: mein Gastgeber, während [email protected]: 3306 der Hafen und am Ende bekomme ich einen bösen Fehler. Hier

ist der Ausgang Ich sehe, wenn die Anwendung gestartet wird:

[app.0] 2016-05-27T15:25:59.000Z: 2016-05-27 08:25:59.266 INFO 148 --- [ main] urceCloudServiceBeanFactoryPostProcessor : Auto-reconfiguring beans of type javax.sql.DataSource 
[app.0] 2016-05-27T15:25:59.000Z: 2016-05-27 08:25:59.303 INFO 148 --- [ main] o.c.r.o.s.c.s.r.PooledDataSourceCreator : Found Tomcat high-performance connection pool on the classpath. Using it for DataSource connection pooling. 
[app.0] 2016-05-27T15:25:59.000Z: 2016-05-27 08:25:59.345 INFO 148 --- [ main] urceCloudServiceBeanFactoryPostProcessor : Reconfigured bean dataSource into singleton service connector [email protected]{ConnectionPool[defaultAutoCommit=null; defaultReadOnly=null; defaultTransactionIsolation=-1; defaultCatalog=null; driverClassName=com.mysql.jdbc.Driver; maxActive=4; maxIdle=100; minIdle=0; initialSize=0; maxWait=30000; testOnBorrow=true; testOnReturn=false; timeBetweenEvictionRunsMillis=5000; numTestsPerEvictionRun=0; minEvictableIdleTimeMillis=60000; testWhileIdle=false; testOnConnect=false; password=********; url=jdbc:mysql://uk0pSal2suQS6:[email protected]:3306/dd558a39d22d44c059bb438d3b61941ef; username=null; validationQuery=/* ping */ SELECT 1; validationQueryTimeout=-1; validatorClassName=null; validationInterval=30000; accessToUnderlyingConnectionAllowed=true; removeAbandoned=false; removeAbandonedTimeout=60; logAba 

und hier ist er ich später Fehler:

[app.0] 2016-05-27T18:23:19.000Z: 2016-05-27 11:23:19.767 WARN 148 --- [io-44230-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 01S00 
[app.0] 2016-05-27T18:23:19.000Z: 2016-05-27 11:23:19.767 ERROR 148 --- [io-44230-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : Illegal connection port value '[email protected]:3306' 

Irgendwelche Vorschläge, wie um dies zu realisieren, ohne CrudTemplate zu fallen? :)

Ich habe bereits versucht, richtige spring.datasource.url mit spring.datasource.username und spring.datasource.password in den Konfigurationsdateien zu setzen, aber es scheint, dass Spring Boot/Cloud diejenigen beim Start zugunsten von Variablen ignoriert durch die Umgebung.

+0

Können Sie einen Stack-Trace zusammen mit der Version der von Ihnen verwendeten Bibliotheken bereitstellen? Spring Boot + Spring Cloud wird diese URL gerne parsen - sie sollte einfach funktionieren. – ipsi

+0

Hallo, Info zum Inhalt der Frage hinzugefügt :) –

Antwort

3

Die Problemumgehung, die ich gefunden habe, ist, dass ich den beschriebenen Ansatz unter Binding to Data Services with Spring Boot in Cloud Foundry Website verfolgt habe, effektiv deaktivieren die automatische Neukonfiguration der DataSource, die Aufnahme von Verbindungsparameter aus der Konfigurationsdatei (vs von Variablen vorausgesetzt von der Stackato-Umgebung).

Verwandte Themen