加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

grails可配置数据源(datasource)

发布时间:2020-12-14 17:03:07 所属栏目:大数据 来源:网络整理
导读:? 方法一:在conf/spring目录下添加一个resources.xml,配置一个dataSource数据源,覆盖DataSource.groovy中的数据源? 方法二:修改conf/config.groovy 文件,覆盖现在有的DataSource.groovy中的数据源,让新的数据源从gis.properties文件中获取,这个文件组

?方法一:在conf/spring目录下添加一个resources.xml,配置一个dataSource数据源,覆盖DataSource.groovy中的数据源?

方法二:修改conf/config.groovy 文件,覆盖现在有的DataSource.groovy中的数据源,让新的数据源从gis.properties文件中获取,这个文件组放在工程目录下?

Java代码?
  1. environments?{??
  2. ????production?{??
  3. ????????grails.serverURL?=?"http://www.changeme.com"??
  4. ??????????
  5. ????????def?dbConfLoc?=?System.getProperty('gis.config.location',?null)??
  6. ????????if?(!dbConfLoc)?{??
  7. ????????????dbConfLoc?=?"file:./gis.properties"??
  8. ????????}??
  9. ????????grails.config.locations?=?[?dbConfLoc?]??
  10. ????????def?props?=?new?Properties()??
  11. ????????println?"Loading?system?properties?from?${grails.config.locations[0]}"??
  12. ????????def?f?=?new?File(grails.config.locations[0])???
  13. ????????if?(f.exists())?{??
  14. ????????????props.load(?f.newInputStream()?)??
  15. ????????}??
  16. ????}??
  17. ????development?{??
  18. ????????grails.serverURL?=?"http://localhost:8080/${appName}"??
  19. ????}??
  20. ????test?{??
  21. ????????grails.serverURL?=?"http://localhost:8080/${appName}"??
  22. ????}??
  23. ??
  24. }???

gis.properties文件内容如下(以oracle为例)?

Java代码?
  1. dataSource.pooled=true??
  2. dataSource.driverClassName=oracle.jdbc.OracleDriver??
  3. dataSource.username=数据库名称??
  4. dataSource.password=数据库密码??
  5. dataSource.url=地址??
方法三:在conf目录下添加一个datasource.properties,定义driverClass,url等属性,然后在DataSource.groovy中添加如下代码


[color=darkred]

Java代码?
  1. Java代码???
  2. import?org.springframework.core.io.support.PropertiesLoaderUtils?????
  3. import?org.springframework.core.io.ClassPathResource?????
  4. ?????
  5. def?properties?=?PropertiesLoaderUtils.loadProperties(new?ClassPathResource("datasource.properties"))?????
  6. dataSource?{?????
  7. ????pooled?=?true?????
  8. ????driverClassName?=?properties.getProperty("driverClass")?????
  9. ????username?=?properties.getProperty("username")?????
  10. ????password?=?properties.getProperty("password")?????
  11. ????url?=?properties.getProperty("url")?????
  12. }?????

[/color]?即在DataSource.groovy中自己读取datasource.properties进行配置。?其实应该也可以在Config.groovy中添加语句?grails.config.locations = [ "classpath:datasource.properties"]?然后在DataSource.groovy使用grailsApplication.config对象读取配置,但由于此时 grailsApplication还没有初始化完毕,对外部的properties文件没有处理,暂时取不到 datasource.properties的配置?datasource.propterties 文件内容如下?

Java代码?
  1. pooled=true??
  2. driverClassName=oracle.jdbc.OracleDriver??
  3. username=sde??
  4. password=sde??
  5. url=jdbc:oracle:thin:@192.168.1.206:1521:orcl??

方法三:使用JNDI数据源。 DataSource.groovy?Java代码?dataSource {?????? jndiName="java:comp/env/jdbc/test"?????? pooled = true?????? logSql = false???}???dataSource {? jndiName="java:comp/env/jdbc/test"? pooled = true? logSql = false }?服务器端配置,tomcat6为例?Xml代码?<GlobalNamingResources>?????? <Resource name="testDatabase" auth="Container" type="javax.sql.DataSource"????????????????? maxActive="20" maxIdle="30" maxWait="10000"????????????????? username="test" password="NdV" driverClassName="oracle.jdbc.driver.OracleDriver"????????????????? url="jdbc:oracle:thin:@192.168.20.251:1521:test" />???? </GlobalNamingResources>???...???<Context path="/test" docBase="D:Worksapcetest" cookies="false">?????????????? <ResourceLink name="jdbc/test"?????????????? global="testDatabase"?????????????? type="javax.sql.DataSource"/>????????? </Context>???<GlobalNamingResources>??? <Resource name="testDatabase" auth="Container" type="javax.sql.DataSource"??????????????? maxActive="20" maxIdle="30" maxWait="10000"??????????????? username="test" password="NdV" driverClassName="oracle.jdbc.driver.OracleDriver"??????????????? url="jdbc:oracle:thin:@192.168.20.251:1521:test" />?? </GlobalNamingResources>? ...? <Context path="/test" docBase="D:Worksapcetest" cookies="false">????????? <ResourceLink name="jdbc/test"???????????? global="testDatabase"???????????? type="javax.sql.DataSource"/>??????? </Context>?为了使程序可以在grails控制台即jetty服务器下运行测试。需要在web-app/WEB-INF目录下添加jetty-env.xml,配置jetty下的jndi数据源?<?xml version="1.0"?>???<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"???"http://jetty.mortbay.org/configure.dtd">???<Configure class="org.mortbay.jetty.webapp.WebAppContext">???<New id="DSTest" class="org.mortbay.jetty.plus.naming.Resource">?????? <Arg>jdbc/test</Arg>?????? <Arg>??????? <New class="org.apache.commons.dbcp.BasicDataSource">??????????????????? <Set name="driverClassName">oracle.jdbc.driver.OracleDriver</Set>??????????????????? <Set name="url">jdbc:oracle:thin:@192.168.20.251:1521:test</Set>??????????????????? <Set name="username">test</Set>??????????????????? <Set name="password">NdV</Set>??????? </New>?????? </Arg>????? </New>???</Configure>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读