Tuesday, 2 October 2007

java.sql.SQLException: Cursor is closed Hmm Veya Already in transaction Hataları

java.sql.SQLException: Cursor is closed.
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:186)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:290)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:248)

Pool'umdan arada bir böyle hata aliyordum. Bugün bu had safhaya ulasti, sürekli ayni hatayi veriyordu.

Biraz arastirma yapinca ögrendim ki sunu yaptigimda bu hata düzeliyor. Bu hatayi veren datasource'u silip yeniden tanimliyorum ve yeni tanim esnasinda da Honor Global Transactions'in check'ini kaldiriyorum yani false yapiyorum. Sonra ilgili datasource deploy edildiginde ilgili sorun düzelmis oluyor.



Peki bu check ne ise yariyor? Onu da buraya not alayim. Bu opsiyon, bu datasource'un transactional datasource olarak kullanilabilmesini sagliyor.

Datasource, local transaction'lar için kullanilirken, transactional datasource distributed transaction'lar için kullaniliyor. Eger, bir transaction içinde birden fazla kaynaga erisim gerekiyorsa, ya da bir transaction içinde birden fazla database'e güncelleme yapacaksak, transactional datasource kullanmamiz gerekiyor. Bir de, ayni connection pool'u birden fazla serverda kullanmak istiyorsak...

Son bir not! Bu parametre, DS tanimlandiktan sonra tekrar degistirilemiyor. O nedenle, DS'i silip tekrar tanimlamak gerekiyor.

No comments: