私はこのチュートリアルhttps://github.com/cf-platform-eng/spring-boot-cities/tree/master/cities-serviceに従ってCloud FoundryでSpringブート・アプリケーションを実行しようとしています。私はローカルのbosh-liteインストールを持っていますSpring Boot Cloud Foundryエラーでユニークなサービス・マシニング・インタフェース・エラーが発生しない
私のSpringブートアプリケーションはデータベースとしてpostgresqlに接続します。ローカル(ホストマシン)で実行中のPostgresqlインスタンスに接続しようとしています
ローカルのTomcatにデプロイすると、アプリケーションがローカルで正常に動作します。 しかし、私がbosh-liteにアプリケーションをデプロイすると、次のエラー "No unique service maching interface error"で失敗します。私のコードは、私のコードをビルドするためにMavenを使用していることを除いて、チュートリアルで言及されているものとexcatly同じです。
2017-06-07T22:29:54.44+0530 [App/0] OUT Caused by: org.springframework.cloud.CloudException: No unique service matching interface javax.sql.DataSource found. Expected 1, found 0
2017-06-07T22:29:54.44+0530 [App/0] OUT at org.springframework.cloud.Cloud.getSingletonServiceConnector(Cloud.java:149) ~[spring-cloud-core-1.2.3.RELEASE.jar!/:na]
2017-06-07T22:29:54.44+0530 [App/0] OUT at org.saurav.cf.casestudy.employee.db.DataSourceConfiguration.dataSource(DataSourceConfiguration.java:20) ~[classes/:na]
2017-06-07T22:29:54.44+0530 [App/0] OUT at org.saurav.cf.casestudy.employee.db.DataSourceConfiguration$$EnhancerBySpringCGLIB$$847aab5e.CGLIB$dataSource$0(<generated>) ~[classes/:na]
2017-06-07T22:29:54.44+0530 [App/0] OUT at org.saurav.cf.casestudy.employee.db.DataSourceConfiguration$$EnhancerBySpringCGLIB$$847aab5e$$FastClassBySpringCGLIB$$2ad81e2b.invoke(<generated>) ~[classes/:na]
2017-06-07T22:29:54.44+0530 [App/0] OUT at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
2017-06-07T22:29:54.44+0530 [App/0] OUT at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) ~[spring-context-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
2017-06-07T22:29:54.44+0530 [App/0] OUT at org.saurav.cf.casestudy.employee.db.DataSourceConfiguration$$EnhancerBySpringCGLIB$$847aab5e.dataSource(<generated>) ~[classes/:na]
2017-06-07T22:29:54.44+0530 [App/0] OUT at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131]
私のpostgresへの接続は問題ありません。私は春のクラウドコネクタを使用せず、通常application.propertiesから値を読み取ると、同じアプリケーションが正常に動作します。
私pom.xml`は私が見ていた
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.saurav.cf.casestudy</groupId>
<artifactId>employeerest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>employeerest</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!-- <start-class>org.saurav.cf.casestudy.employee.EmployeerestApplication</start-class> -->
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cloud-connectors</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
`
[UPDATE] 以下スコットの答えあたりとして(春ブーツクラウドコネクタとpostgrsqlドライバーの依存関係を持っています)私はタグとラベルを持つことはできませんので、私は提供されたサービスを提供するユーザーです。しかし、私はjdbcのURLを追加しました。 は今、私のアプリは、以下のエラーこの私は私のapplication.propertiesで"spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect"
を設定しているが、まだそれは私がまた私のDBを実行しているとDB設定されていることを確認している
動作しないために
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
で失敗しています私のサービスインスタンスで正しいです。以下は
あなたは依存関係としてspring-boot-starter-cloud-connectors
が含まれている場合は、私のサービスインスタンスが
"VCAP_SERVICES": {
"user-provided": [
{
"credentials": {
"jdbcUrl": "jdbc:postgresql://10.0.2.2:5432/employee",
"username": "postgres",
"password": "admin",
"postgresUri": "postgresql://10.0.2.2:5432/employee",
"uri": "postgresql://10.0.2.2:5432/employee"
},
"label": "user-provided",
"name": "postgresql-cf-service",
"syslog_drain_url": "",
"tags": [],
"volume_mounts": []
}
]
}
` よろしく、 Saurav
こんにちはScott..iは、私はすでにPostgreSQLのサービスインスタンスを作成していることを言及するのを忘れてしまった...しかし、まだそれは私が私のサービスインスタンスの資格情報をupdaed、今いる – saurav
を動作しません。 org.hibernate.HibernateException: 'hibernate.dialect'が設定されていないとDialectResolutionInfoへのアクセスができませんerror.iが詳細を指定して質問を更新しました – saurav
サービスの資格情報が完全なURIで更新されました。 。 "uri"のように: "postgresql:// postgres:[email protected]:5432/employee" – saurav