2014-03-27 22 views
0

我有2個項目的乙如何將2個不同的項目連接到同一開發環境數據庫?

,他們有一個名爲「TABLE」領域類

一個是要插入「TABLE」的信息的B必須選擇它

我有這種配置在第一個項目的DataSource.groovy

enviroments{ 
    development{ 
     dataSource { 
       url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000" 
     } 
    } 
} 

它在內存中,並在端口8110上運行,我怎麼能訪問該數據庫從其他應用程序?像

url="jdbc:h2:tcp://localhost:8110/mem:devDb" //? 
+0

我dont't明白你所看到的是一個問題?將相同的連接配置放入兩個項目中。 – lukelazarovic

+0

dbCreate =「update」//創建' devDb; MVCC = TRUE; LOCK_TIMEOUT = 10000「 其實他們有相同的網址,但他們在不同的端口上運行 –

+0

你想共享項目中的內存數據庫嗎?恐怕這是行不通的。我不明白的另一件事是體系結構 - 你將在兩個端口上運行兩個不同的數據庫? – lukelazarovic

回答

1

只要應用程序的兩個實例都有權訪問數據庫,應用程序運行的端口和位置就不相關。

基於您呈現的小部分信息,我假設您想要設置多個數據源。你可以去docs更多的細節,但這裏是一個玩笑話:

在DataSource.groovy中:

environments { 
development { 
    dataSource { 
     // Connection parameters for the application specific dataSource 
    } 
    dataSource_common { 
     // Connection parameters for the common dataSource 
    } 
} 

// Copy and paste for other environments 
} 

在你的領域類:

class Table { 
    // Domain Class properties 

    static mapping = { 
     datasource 'common' 
    } 
} 

兩個應用程序,使表類相同。當應用程序A保存表的一個實例時,它將可用於這兩個應用程序。應用程序B然後可以從表中讀取。

一個忠告:

它通常是不好的做法有兩個應用程序使用相同的數據源工作。上述說明解釋瞭如何允許多個應用程序訪問單個數據源,但不鼓勵您這樣做。

而不是有一個共同的數據源你應該可能有應用程序通過一個RESTful接口將對象B的類域暴露給對象B.這將緩解由兩個Hibernate實例操縱相同結構和數據集引起的潛在衝突。

您可以在docs中找到有關Grails RESTful資源暴露的其他詳細信息。

+0

但是,如果我同時運行兩個應用程序,我可以從2個應用程序中操作表格嗎? –

+1

當然可以。但是你可能會遇到種族/鎖定問題。讓一個應用程序獨佔訪問數據源更安全。 – thewidgetsmith

+0

是的,它可以工作,如果我有一個特定的數據庫連接,但交易是我想操縱DEFAULT環境開發數據庫中的表: url =「jdbc:h2:mem:devDb; MVCC = TRUE; LOCK_TIMEOUT = 10000「 就像這樣,我可以看到我從localhost:8081/Project/dbConsole和localhost:8081/Project2/dbConsole中刷新表,並且表中的信息不相同 –

相關問題