2016-10-14 5 views
3

Cloud FoundryからローカルMySQL DBにアクセスするには?Boot from Cloud Foundryを使用してローカルMySQL DBにアクセスするには?

STS-3.8.2からSpring Boot Restアプリケーションを作成して、ローカル環境で完全に動作するCrud操作を実行しました。クラウドファウンドリに導入すると、簡単な操作で残りのコールが正常に機能します。しかし、私が残酷な操作を実行するために休息を呼び出すと、

接続を開くことができませんでした。入れ子になった例外はorg.hibernate.exception.JDBCConnectionExceptionです:接続を開くことができませんでした

私は問題を解決するのを助けてください。私は上記の

、私の中でのMySQLからリストを取得するメッセージを挨拶のための一つのリンク、CRUD操作のための第2回私の春のブートアプリケーションを展開CloudFoundry上

リンクラップトップ。

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のスクリプト:

STSで春のブートアプリケーション上に作成され、STSでBootDashBoardからCloudFoundryでドラッグ&ドロップを行う
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; 

。そしてうまくプッシュした。今では、定義されたホストからYMLファイルで自分のアプリケーションにアクセスできます。しかし、私が休憩をして厳しい作業をすると、失敗してしまいます。

+0

完全なエラースタックトレースを投稿できますか。ローカルと 'CF'から' JdbcTemplate'と 'Datasource'設定に関する両方の接続をポストできますか?何かがそこにあるはずです... –

答えて

0

あなたにはapplication.propertiesが含まれています。それはどんなプロフィールですか? クラウドプロファイルにapplication.propertiesがありますか?

Cloud Foundryには通常、サービスとしてMySqlが付属しています。それを活用するには、まずサービスインスタンスを作成する必要があります。

アプリに外部DB(クラウドファウンダリ外)を使用させる場合は、ユーザ提供サービス(CUPS)定義を作成する必要があります。

Spring Musicアプリをご覧ください。ローカルとクラウドのプロファイルの詳細が表示されます。

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

関連する問題