2013-08-02 20 views
0

我在grails2.2.0中有我的應用程序。我要部署部署在Apache tomcat7具有以下設置此應用程序的戰爭:grails app war指向兩個不同的數據源(oracle和SQL)

第一場戰爭與數據源到Oracle

第二戰與數據源的SQL。

雖然我這樣做與大多數假設,將其設置在app-config.properties文件中,當我運行應用程序時,我得到了指向SQL的WAR的以下錯誤。

造成

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 

請幫助就如何解決這個問題。

+0

您的根錯誤是:annot load JDBC驅動程序類'com.mi crosoft.sqlserver.jdbc.SQLServerDriver。你的類路徑中是否有這個驅動程序? –

+0

我包含在以下地點jtds1.2.5.jar: mygrailsapp/lib目錄 tomcat7/lib目錄 此外,在app-config.properties文件我配置DSN到SQL Server 請幫助,如果罐子是正確的。 另外,請注意即時通訊嘗試使用相同的WAR(使用不同的編譯時和運行時名稱),但使用不同的DSN – aRise

+0

爲什麼需要在具有不同數據源的容器中部署兩次相同的應用程序(war)?你可以在應用中有多個數據源(http://grails.org/doc/latest/guide/conf.html#multipleDatasources)。 – dmahapatro

回答

1

我會爲不同的環境配置DataSource。我知道你希望應用程序實例一次只能訪問一個數據庫。因此,在一場戰爭中,應用程序將連接到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' 
} 
+0

謝謝!不過,我還有兩個問題: 1.我必須使用哪種驅動程序JAR來實現grails-SQL連接? 2.「your:sqlserver:dependency」...爲此..是以下設置正確..? 「192.168.0.65:1433:sqlserver:dependency」。 – aRise

+0

1-您可以使用JTDS驅動程序連接到Microsoft SQL Server。在http://jtds.sourceforge.net/找到它。 2-不,你的設置不正確。你應該在這裏放置Maven依賴模式。對於JTDS驅動程序版本1.3.1,您應該使用'net.sourceforge.jtds:jtds:1.3.1' – felipenasc

相關問題