2013-04-01 80 views
1

我有一個Spring MVC應用程序在本地tomcat等上運行良好。它的Spring 3.1 MVC/Hibernate應用程序。CloudFoundry MySQL Java配置

我正在使用(在可能的情況下)應用程序的純Java @Configuration - 我現在試圖將應用程序部署到CloudFoundry(通過STS),但我努力獲取配置MySql數據庫(從內存,與xml配置你不需要做任何事情,Spring/CloudFoundry會自動注入所需的用戶/密碼等,但自從我部署任何東西到CF之後,它已經有一段時間了)。

我曾嘗試以下配置的兩個:

@Bean 
public BasicDataSource dataSource() throws PropertyVetoException { 
    //CloudFoundry config 
    final CloudEnvironment cloudEnvironment = new CloudEnvironment(); 
     final List<MysqlServiceInfo> mysqlServices = cloudEnvironment.getServiceInfos(MysqlServiceInfo.class); 
     final MysqlServiceInfo serviceInfo = mysqlServices.get(0); 

    BasicDataSource bean = new BasicDataSource(); 
    bean.setDriverClassName("com.mysql.jdbc.Driver"); 
    bean.setUrl(serviceInfo.getUrl()); 
    bean.setUsername(serviceInfo.getUserName()); 
    bean.setPassword(serviceInfo.getPassword()); 
    return bean; 
} 

上面上失敗列於.get(0)線mysqlServices的界。這是基於建議here的答案。

我也試着將數據源作爲本地運行,以查看屬性是否被注入,但沒有運氣。 (下面是與價值觀試圖按照Spring的示例代碼here,並且還使用屬性佔位符從我db.connection道具文件)

@Bean 
public BasicDataSource dataSource() throws PropertyVetoException { 
    BasicDataSource bean = new BasicDataSource(); 
    bean.setDriverClassName("com.mysql.jdbc.Driver"); 
    bean.setUrl(""); 
    bean.setUsername("spring"); 
    bean.setPassword("spring"); 
    return bean; 
} 

編輯

我也用了getServiceInfo (字符串,類)方法傳遞MySql服務的名稱,我創建並綁定到應用程序,但只是NPE類似於getServiceInfos(..)方法

回答

1

好的,這只是一個愚蠢的錯誤 - 當我通過STS I部署應用程序時選擇了Java Web應用程序而不是「Spring」類型。不知道爲什麼會導致CloudEnvironment屬性無法使用(我的印象是這種方法是在非Spring應用程序中注入細節的常用方法) - 但將其重新部署到服務器,因爲Spring應用程序解析了Probs !