Grails使用JNDI方法

Grails使用JNDI方法
今天搞了一下Grails的JNDI配置,步骤如下:
1、在应用目录下面,META-INF下建立一个Context.xml文件,内容如下:
<? xml version="1.0" encoding="UTF-8" ?>
< Context  path ="/game_hall_local"  docBase ="game_hall_local"
        debug
="5"  reloadable ="true"  crossContext ="true" >

    
<!--  maxActive: Maximum number of dB connections in pool. Make sure you
         configure your mysqld max_connections large enough to handle
         all of your db connections. Set to -1 for no limit.
         
-->

    
<!--  maxIdle: Maximum number of idle dB connections to retain in pool.
         Set to -1 for no limit.  See also the DBCP documentation on this
         and the minEvictableIdleTimeMillis configuration parameter.
         
-->

    
<!--  maxWait: Maximum time to wait for a dB connection to become available
         in ms, in this example 10 seconds. An Exception is thrown if
         this timeout is exceeded.  Set to -1 to wait indefinitely.
         
-->

    
<!--  username and password: MySQL dB username and password for dB connections   -->

    
<!--  driverClassName: Class name for the old mm.mysql JDBC driver is
         org.gjt.mm.mysql.Driver - we recommend using Connector/J though.
         Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.
         
-->

    
<!--  url: The JDBC connection url for connecting to your MySQL dB.
         
-->

    
< Resource  name ="jdbc/mydatasource"  auth ="Container"
              type
="javax.sql.DataSource"  driverClassName ="com.mysql.jdbc.Driver"
              url
="jdbc:mysql://localhost:3306/game_hall_cms?useUnicode=true&amp;characterEncoding=UTF-8"
              username
="root"  password ="root"  maxActive ="20"  maxIdle ="10"
              maxWait
="-1" />

</ Context >
2、在DataSource.groovy里面将部署连接配置修改成如下代码:
production  {
    dataSource 
{
        pooled 
= false
        dbCreate 
= "update"
        jndiName 
= "java:comp/env/jdbc/mydatasource"
    }

}

3、在应用工程的scripts目录下,简历_Event.groovy文件,内容如下:
import  groovy.xml.StreamingMarkupBuilder

if  (Environment.current  ==  Environment.PRODUCTION)  {
    eventWebXmlEnd 
= {String tmpfile ->
        def root 
= new XmlSlurper().parse(webXmlFile)

        
// add the data source
        root.appendNode {
            
'resource-ref'{
                
'description'('The JNDI Database resource')
                
'res-ref-name'('jdbc/mydatasource')
                
'res-type'('javax.sql.DataSource')
                
'res-auth'('Application')
            }

        }

    
        webXmlFile.text 
= new StreamingMarkupBuilder().bind {
            mkp.declareNamespace(
"""http://java.sun.com/xml/ns/j2ee")
            mkp.yield(root)
        }

    }

}

4、可以进行生产环境编译,这样在生产环境中部署,就可以使用JNDI了。
注意:sql连接的url中如果有&需要转移成&amp;,否则他会报 需要分隔符“;”作为终止符号 的错误。


---------------------------------------------------------
专注移动开发
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian

你可能感兴趣的:(Grails使用JNDI方法)