如何将2个不同的项目连接到同一个开发环境数据库?

时间:2014-03-27 19:35:02

标签: grails gorm h2 grails-domain-class in-memory-database

我有2个项目A和B

他们有一个名为" TABLE"

的域类

A将在" 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" //?

2 个答案:

答案 0 :(得分: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'
   }
}

对于这两个应用程序,使Table类相同。当应用程序A保存Table的实例时,它将可用于两个应用程序。然后,应用程序B可以从表中读取。

提醒:

让两个应用程序使用相同的数据源通常是不好的做法。上述说明解释了如何允许多个应用程序访问单个数据源,但不鼓励您这样做。

您应该让应用程序A通过RESTful接口向对象B公开Table域类,而不是拥有一个公共数据源。这将减轻由两个Hibernate实例操作相同结构和数据集引起的潜在冲突。

您可以在docs中找到有关Grails RESTful资源曝光的其他详细信息。

答案 1 :(得分:0)

我找到了方法:

我必须在Conf->spring->resources.groovy中创建一个TCP连接,这里是链接:

http://rudovsky.blogspot.com/2012/09/parametrize-grails-h2-server.html