2012-03-03 33 views
8

This article cho thấy ứng dụng Tomcat 7 nên sử dụng hồ bơi kết nối JDBC thay vì hồ bơi kết nối commons-dbcp. Tuy nhiên, sau này là mặc định cho một ứng dụng Grails, và nó không rõ ràng làm thế nào để thay đổi nó. Tôi nghĩ rằng tôi cần phải xác định một bean Spring trong resources.groovy ghi đè lên một bean thường được tạo theo mặc định, nhưng tôi không biết bean này nên được đặt tên là gì hoặc thuộc tính nào tôi cần thiết lập.định cấu hình ứng dụng Grails để sử dụng hồ bơi kết nối JDBC

Trả lời

12

Điều đơn giản nhất có thể là sử dụng plugin jdbc-pool. Vì các tùy chọn cấu hình cho nhóm này cố ý rất giống với Commons DBCP (chúng được ghi thành tài liệu here), bạn có thể sử dụng plugin để xác định phụ thuộc jar và quản lý việc chuyển đổi lớp cho bạn. Plugin này chưa được cập nhật trong một năm nên plugin này hơi lỗi thời (plugin sử dụng phiên bản 1.0.9.0 nhưng là latest is 1.0.9.3) để bạn có thể muốn xác định phụ thuộc plugin không bao gồm jar và thêm một cho phiên bản mới hơn. Đó là trong repo , vì vậy bạn sẽ cần phải thêm nó vào BuildConfig.groovy của bạn (xem plugin's version cho cách ông đã làm nó).

Có ghi chú cấu hình cho hồ bơi here và một loạt bài đăng trên blog của tác giả here.

Nếu bạn muốn cấu hình này mà không sử dụng plugin, thêm repo và phụ thuộc jar để BuildConfig.groovy:

repositories { 
    inherits true 
    ... 
    ebr() 
} 

dependencies { 
    runtime('org.apache.tomcat:com.springsource.org.apache.tomcat.jdbc:1.0.9.3') { 
     transitive = false 
    } 
} 

và tạo ghi đè cho đậu dataSource trong resources.groovy:

import org.apache.tomcat.jdbc.pool.DataSource 

beans = { 

    dataSource(DataSource) { 
     // mandatory 
     driverClassName = '${dataSource.driverClassName}' 
     username = '${dataSource.username}' 
     password = '${dataSource.password}' 
     url = '${dataSource.url}' 
     // optional 
     minEvictableIdleTimeMillis=1800000 
     timeBetweenEvictionRunsMillis=1800000 
     numTestsPerEvictionRun=3 
     testOnBorrow=true 
     testWhileIdle=true 
     testOnReturn=true 
     validationQuery="SELECT 1" 
    } 
} 

Thật thuận tiện khi sử dụng các chuỗi được trích dẫn một lần với ${} trình giữ chỗ để tận dụng chức năng trình giữ chỗ thuộc tính của Spring và giữ mọi thứ KHÔN vì bạn đã đặt trình điều khiển và kết nối thông tin trong DataSource.groovy.

+0

Tôi nghĩ tôi sẽ chỉ sử dụng plugin. Tôi sẽ làm một bản phát hành mới của nó, nâng cấp lên phiên bản mới nhất của thư viện hồ bơi kết nối JDBC. –

3

Trong DataSource.groovy tôi sử dụng như sau:

environments { 
    integration { 
     dataSource { 
      pooled = false 
      jndiName = "java:/comp/env/jdbc/myJndiName" 
     } 
    } 
} 

Và mọi thứ khác được xác định bởi Tomcat - đây chỉ cần phù hợp với nó. Không cần phải xác định bất kỳ bean dữ liệu nào trong resources.groovy

+1

Điều này sẽ không hoạt động khi chạy ứng dụng ở chế độ phát triển –

+0

Ah, câu hỏi của bạn không đề cập đến chế độ phát triển. – doelleri

+0

Tôi muốn env phát triển của mình tương tự như khả năng sản xuất để giảm thiểu khả năng gây bất ngờ –

Các vấn đề liên quan