2014-06-27 21 views
6

Başka bir makineyle iletişim kurduğum bir hizmetim var. Basit bir Denetleyici yöntemi olduğundan, denetleyicilerim diğer sunucuyla iletişim kurarken Grails otomatik olarak havuzdan bir DB bağlantısını alır. Bunu yapmasını engellemek ve ağ bağlantımı yapmak gibi uzun bir süre boyunca bağlantıyı kesmeyecek şekilde hazır olduğumda veritabanı bağlantısını manüel olarak açmak istiyorum. Grails'in otomatik olarak bir denetleyici yönteminde havuzdan bağlantı almasını nasıl engellerim? O ek açıklama (ve herhangi bir yöntem düzeyi açıklamaları) kaldırırsanızDenetim Masasındaki bir denetim yöntemini veritabanından açmayı durdurmak için Not

@Transactional(readOnly=true) 
class FooController { .. 

sonra Grails artık başlatmak için veritabanına bağlanmak olacaktır: Bir denetleyici oluşturduğunuzda

+1

Hmm bir denetleyici bazında devre dışı bırakmak için bir yolu yoktur, bu çünkü bir istek derhal kullanmak için bir hazırda oturumuna elde görünüm yaklaşımında açık oturumun şüpheli. Belirli bir denetleyici için veya söz konusu denetleyici içindeki bir yöntemi bile devre dışı bıraktığınızdan emin değilim. Çok güzel bir soru. –

cevap

3

bir şey gibi, üzerinde Transactional ek açıklama vardır işlem.

biz OSIV ile bağlantıyı elde etmek için bir tembel init kullandığı yöntem olduğu Görünüm Aç Oturum oyuna gelmemeli

Not (yukarıdaki 2.3.x ya) son Grails sürümünü kullanıyorsanız yukarıdaki cevap varsayar Gözat

otomatik grails-app/conf/spring/resources.groovy içinde (varsayılan geçersiz kılar) aşağıdaki fasulye tanımlayarak tüm denetleyicileri için bağlantıyı devre dışı bırakabilir MongoDB için

Güncel:

mongoPersistenceInterceptor(org.codehaus.groovy.grails.support.NullPersistentCon‌​textInterceptor) 

Ancak şu

+0

Sürüm 2.3.x'in altındaysa ne olur? Sadece merak. –

+1

Aşağıda, yalnızca denetleyicilerin işlemlerini okumak için bir öntanımlı yoktur, bu nedenle işlem başlatılmaz ve veritabanına bağlantı yapılmaz. –

+0

Bu nedenle, şimdi tüm Denetleyicilerimden herhangi birimde Transaction yok (2.3 kullanıyorum, ancak 2.2'den yükseltildim). Hibernate yerine MongoDB kullanıyorum. Bu hala MongoDB eklentisi için çalışıyor mu? Benim için otomatik olarak bir bağlantı açmayı durdurabilir miyim? – chubbsondubs