0

我在 grails2.2.0 中有我的应用程序。我想使用以下设置部署部署在 apache tomcat7 上的这个应用程序战争:

第一个带有 Oracle 数据源的 WAR

第二个 WAR,数据源为 SQL。

虽然我使用最应该的方法执行此操作,但将其设置在 app-config.properties 文件中,但当我运行应用程序时,WAR 指向 SQL 时出现以下错误。

造成的

BeanCreationException: Error creating bean with name 'sessionFactory':
 Cannot resolve reference to bean 'lobHandlerDetector' while setting bean proper
ty 'obHandler';

nested exception is org.springframework.beans.factory.BeanCreat
ionException: Error creating bean with name 'lobHandlerDetector': Invocation of
init method failed;

nested exception is org.springframework.jdbc.support.MetaDat
aAccessException: Error while extracting DatabaseMetaData;

nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver     class 'com.mi
crosoft.sqlserver.jdbc.SQLServerDriver

请协助解决此问题。

4

1 回答 1

1

我会为不同的环境配置数据源。我了解您希望应用程序实例一次只能访问一个数据库。因此,在一场战争中,应用程序将连接 SQL Server,而在另一场战争中,应用程序将连接到 Oracle。如果这是正确的理解,我会在 DataSource.groovy 文件中执行以下操作:

environments {
    sqlserver {
        dataSource {
            dbCreate = "none"
            url = "jdbc:mysql://localhost:3306/mydb"
            driverClassName = "com.mysql.jdbc.Driver"
            dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
            username = "dbowner"
            password = "xxxxx"
            logSql = false
            pooled = true
            properties {
                maxActive = 30 // -1 para sem limite
                minIdle = 1
                minEvictableIdleTimeMillis=1800000
                timeBetweenEvictionRunsMillis=1800000
                numTestsPerEvictionRun=3
                testOnBorrow=true
                testWhileIdle=true
                testOnReturn=true
                validationQuery="SELECT 1"
            }
        }
    }
    oracle {
        dataSource {
            dbCreate = "none" 
            url = "jdbc:mysql://localhost:3306/myotherdb"
            driverClassName = "com.mysql.jdbc.Driver"
            dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
            username = "dbowner"
            password = "xyz"
            logSql = false
            pooled = true
            properties {
                maxActive = 30 // -1 para sem limite
                minIdle = 1
                minEvictableIdleTimeMillis=1800000
                timeBetweenEvictionRunsMillis=1800000
                numTestsPerEvictionRun=3
                testOnBorrow=true
                testWhileIdle=true
                testOnReturn=true
                 validationQuery="SELECT 1"
            }
        }
    }
}

现在,当您要生成war文件时,只需运行以下命令:

grails -Dgrails.env=oracle war

或者

grails -Dgrails.env=sqlserver war

只需确保在 BuildConfig.groovy 文件中包含驱动程序依赖项(oracle 和 sql server):

dependencies {
    runtime 'your:sqlserver:dependency','your:oracle:dependency'
}
于 2013-08-02T18:44:20.070 回答