2016-02-20 5 views
0

У меня проблема при подключении службы db2 в литейном цехе. Я создал службу как CF чашки db2service -p «JDBCURL, пользователь, пароль» .WHILE развертывание приложения на облаке я столкнулся произнесение исключения в класса, а также нет подходящего разъема не найден exception.The ниже мой класс конфигурации.Db2Service issue-spring Cloud Foundry

@Configuration 
@ServiceScan 
@Profile("cloud") 
public class Db2CloudConfig extends AbstractCloudConfig { 

    @Bean 
    public DataSource db2servicenew() { 

     CloudFactory cloudFactory = new CloudFactory(); 
     Cloud cloud = cloudFactory.getCloud(); 
     DB2ServiceInfo db2ServiceInfo= (DB2ServiceInfo) cloud.getServiceInfo("db2servicenew"); 
     return cloud.getServiceConnector(db2ServiceInfo.getId(), DataSource.class, null); 

    } 

    @Bean(name = "db2JdbcTemplate") 
    public JdbcTemplate jdbcTemplate(DataSource db2servicenew) { 
     return new JdbcTemplate(db2servicenew); 
    } 

} 

Я также добавил приведенные ниже зависимости в свой файл градиента.

compile("org.springframework.cloud:spring-cloud-spring-service-connector:1.2.0.RELEASE") 
compile("org.springframework.cloud:spring-cloud-cloudfoundry-connector:1.2.0.RELEASE") 
compile("org.springframework.cloud:spring-cloud-core:1.2.0.RELEASE") 

Не могли бы вы помочь мне в этом вопросе.

+0

Просьба показать подробности исключения класса с трассировкой стека. Вы также можете запускать «зависимости градиента» и делиться соответствующими частями этого вывода, чтобы убедиться, что на самом деле вы получаете версию 1.2.0.RELEASE из библиотек Connectors (иногда gradle будет выбирать другие версии). –

+0

2016-02-22T03: 47: 10.000 + 00: 00 [App/0] OUT Вызвано: org.springframework.cloud.CloudException: не найдено подходящего ServiceConnectorCreator: service id = db2servicenew, информация о сервисе = org.springframework.cloud .service.BaseServiceInfo, тип соединителя = interface javax.sql.DataSource – Devi

+0

Что относительно деталей ClassCastException? И каково значение, которое вы предоставили для ключа «jdbcUrl» в учетных данных? –

ответ

0

Исходя из исключения java.lang.ClassCastException: org.springframework.cloud.service.BaseServiceInfo cannot be cast to org.springframework.cloud.service.common.DB2ServiceInfo, мне кажется, что вы не получаете зависимостей Connectors, которые, по вашему мнению, вы получаете.

Чтобы это подтвердить, запустите задачу gradle :dependencies и посмотрите, какие версии вы фактически получаете. Соответствующая часть продукции этой задачи должно выглядеть примерно так:

+--- org.springframework.cloud:spring-cloud-spring-service-connector: -> 1.2.0.RELEASE 
| +--- org.springframework.cloud:spring-cloud-core:1.2.0.RELEASE 
| \--- org.springframework:spring-context:3.1.4.RELEASE -> 4.1.7.RELEASE (*) 
+--- org.springframework.cloud:spring-cloud-cloudfoundry-connector: -> 1.2.0.RELEASE 
| \--- org.springframework.cloud:spring-cloud-core:1.2.0.RELEASE 

Если моя догадка верна, то, возможно, вместо того, чтобы увидеть что-то на выходе, как org.springframework.cloud:spring-cloud-spring-service-connector:1.2.0.RELEASE -> 1.1.1.RELEASE (*), указывая, что Gradle выбирает использовать более старую версию, что вы просили его на основе других транзитивных зависимостей. Я видел, как это происходит с приложениями Spring Boot, так как Boot загружает более старую версию Connectors.

Если вы видите это понижение по версии, вы должны посмотреть на потянув плагин Spring propdeps для градации, чтобы получить зависимости прямо.

Если это не проблема, вам нужно будет поделиться образцом проекта, который демонстрирует эту проблему.

Смежные вопросы