2016-10-14 2 views
3

Как получить доступ к моей локальной базе данных MySQL из Cloud Foundry?Как получить доступ к моей локальной базе данных MySQL с помощью Boot из Cloud Foundry?

Я создал приложение для загрузки Spring Boot из STS-3.8.2 выполнить операцию Crud, которая отлично работает в локальной среде. При развертывании в облачный литейный цех остальной вызов с простой работой работает нормально. Но когда я называю отдых для выполнения операции Crud, он говорит:

Не удалось открыть соединение; Вложенное исключение - org.hibernate.exception.JDBCConnectionException: Не удалось открыть соединение

Пожалуйста, помогите мне решить проблему.

Ссылки на CloudFoundry где развертывается моя весна BOOT APPLICATION

Выше, одна ссылка на приветственное сообщение, 2-й для работы сырого, чтобы получить список из MySQL в моем ноутбук.

SpringBootAndMySqlApplication.java:

@SpringBootApplication 

public class SpringBootAndMySqlApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(SpringBootAndMySqlApplication.class, args); 
    } 
} 

HomeController.java:

@RestController 

public class HomeController { 

    @Autowired 
    private TaskDao taskDao; 

    @RequestMapping("/greeting") 
    public String greeting() { 
     return "Welcome to Boot + SQL"; 
    } 

    @RequestMapping("/list") 
    public List<TaskEntity> taskList() { 
     return taskDao.findByTaskArchived(0); 
    } 
} 

TaskDao.java:

public interface TaskDao extends CrudRepository<TaskEntity, Integer> { 

    List<TaskEntity> findByTaskArchived(Integer tas); 

} 

TaskEntity.java:

@Entity 

@Table(name = "task_list") 

public class TaskEntity 

{ 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "task_id") 
    private int id; 

    @Column(name = "task_name") 
    private String taskName; 

    @Column(name = "task_description") 
    private String taskDescription; 

    @Column(name = "task_priority") 
    private String taskPriority; 

    @Column(name = "task_status") 
    private String taskStatus; 

    @Column(name = "task_archived") 
    private int taskArchived = 0; 

// getter & setter 

} 

application.properties:

spring.datasource.url = jdbc:mysql://127.0.0.1:3306/taskmanager 
spring.datasource.username = root 
spring.datasource.password = root 
spring.jpa.show-sql = true 
spring.jpa.hibernate.ddl-auto = update 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 
spring.datasource.driverClassName = com.mysql.jdbc.Driver 

MySQL скрипт:

create database taskmanager; 

use taskmanager; 

create table task_list(task_id int not null auto_increment, task_name varchar(100) not null, task_description text,task_priority varchar(20),task_status varchar(20),task_start_time datetime not null default CURRENT_TIMESTAMP,task_end_time datetime not null default CURRENT_TIMESTAMP,task_archived bool default false,primary key(task_id)); 

insert into task_list values(1,'Gathering Requirement','Requirement Gathering','MEDIUM','ACTIVE',curtime(),curtime() + INTERVAL 3 HOUR,0); 

insert into task_list values(2,'Application Designing','Application Designing','MEDIUM','ACTIVE',curtime(),curtime() + INTERVAL 2 HOUR,0); 

insert into task_list values(3,'Implementation','Implementation','MEDIUM','ACTIVE',curtime(),curtime() + INTERVAL 3 HOUR,0); 

insert into task_list values(4,'Unit Testing','Unit Testing','LOW','ACTIVE',curtime(),curtime() + INTERVAL 4 HOUR,0); 

insert into task_list values(5,'Maintanence','Maintanence','LOW','ACTIVE',curtime(),curtime() + INTERVAL 5 HOUR,0); 

select * from task_list; 

Созданы выше приложения загрузки пружинной в STS и выполнить перетаскивание в CloudFoundry из BootDashBoard в STS. И толкнул успешно. Теперь я могу получить доступ к моему приложению из определенного хоста в файле YML. Но когда я пытаюсь назвать мой отдых, чтобы выполнить операцию crud, это не работает.

Любое решение?

+0

Не могли бы вы высказать полную ошибку в стеке стека ?. Не могли бы вы разместить оба соединения о конфигурации 'JdbcTemplate' и' Datasource' от локальных и 'CF'? Что-то должно быть там ... –

ответ

0

Вы включили свой application.properties. Для какого профиля это? У вас есть application.properties для профиля облаков?

Cloud Foundry обычно поставляется с MySql как услуга. Чтобы использовать его, сначала необходимо создать экземпляр службы.

Если вы хотите, чтобы ваше приложение использовало внешний db (вне облачного литейного цеха), вам нужно будет создать определение предоставляемого пользователем сервиса (CUPS).

Ознакомьтесь с приложением Spring Music. Он даст вам подробную информацию о местных и облачных профилях.

https://github.com/cloudfoundry-samples/spring-music

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