2012-03-29 20 views
9

benArjuna JTA işlem JBoss günlükleri kontrol zaman bu hatayı bakın JMS ileti göndermeye çalıştığınızda

2012-03-29 12:01:27,358 WARN @ [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 32, 30, 1--53e2af7c:eff6:4ec11bf7:2e1da4-53e2af7c:eff6:4ec11bf7:2e263d                 > 
2012-03-29 12:01:27,398 WARN @ [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 31, 29, 1--53e2af7c:d397:4e8c1b0e:25b6d-53e2af7c:d397:4e8c1b0e:29d09                  > 

Sonra bu hataların çok görmek beklenmedik rollbacked önceki hatanın bir sonucu olarak geri dönüş olduğundan şüphelenir. Ben haklı mıyım İşlemin böyle iptal edilmiş bir halde kalmasına neden olan şey nedir?

Etrafa bakarken bu yazıyı buldum: What causes Arjuna 1603 (Could not find new XAResource to use for recovering non-serializable XAResource) . Bazı işlem günlüğünün tutulduğunu anlıyorum, ancak şu an sahip olduğum sorunun nasıl çözüleceğini açıklamıyor.

+0

Aynı problemim var. Bunu nasıl çözeceğini bilen var mı? – Eldar

+0

Aynı problemim var! – Nurlan

cevap

1

JBoss 5.1 (zaman aşımı belirtir en az ikinci bir) benzer yanlışlar gördük

Biz gerçek nedenini bulamadık ama bunun nedeni uzun süren bir işlem olması neden olur olasılığı çok yüksektir Bu sonuca ulaşmamızın sebebi, yüksek yükte ve bazı operasyonların tamamlanması uzun zaman alıyordu.

PostgreSQL'i kullanıyoruz ve "işlemde beklemek" için çok fazla bağlantı vardı. Yapılandırmanızdaki işlem zaman aşımını kontrol edin ve sorunu azaltıp azaltmadığını görmek için daha yüksek bir değere ayarlayın. Bu ayarın nasıl yönetileceğini

https://community.jboss.org/wiki/TransactionTimeout kapsar.

1

Genel olarak, bir yönetilenden atılan her RuntimeException (bir JBoss proxy'si ile sarılmış enjekte edilen bir şey) ve @ApplicationException (rollback = false) olarak işaretlenmemiş olan işlemler, işlemin geri alınmasına neden olur.

Bu durumlarda, günlük dosyalarında genellikle görmek çok kolaydır. Öte yandan, zaman aşımları biraz daha zorlayıcıdır. log dosyasında şöyle bir şey görürsünüz: "Eylemin durdurulması id -3f57fd2d: e48e: 4cf8de0f: bc, içinde birden çok ileti etkinken çağrılır."

Diğer çağrılar çalışmaya devam edecek ve yalnızca "işlemin geri alınması için işaretlenmiş" özel durumunun alındığı veritabanı bağlantısına erişmeye çalıştıklarında başarısız olacaktır.

1

Benzer bir hata alıyorduk ve daha sonra, nedenlerin varlıklarımızı nasıl oluşturduğumuz ve ele aldığımızla ilgili olduğunu öğrendik. Çocuk varlıkları listesiyle bir ana nesnemiz vardı ve ebeveynlerin kopyalarını oluşturuyorduk ve daha sonra yeni çocuklara listeler eklemeye çalışıyorduk. Sorun olsa bu çocuk listeleri geç yükleme açıklama ile işaretlenmiş edildi oldu.

başarısız olmasına hazırda bekletme neden hangi ...

@ OneToMany (kaskad = CascadeType.ALL, = FetchType.LAZY getirme düzeltmek için biz hazırda biz ebeveyn kopyalarını yarattı zaman çocukları almaya çalışırken durdurmak böylece varlık üzerinde çağrı tahliye vardı.

((Oturum) entityManager.getDelegate()). evict (varlık tahliye)

Bu sizin sorununuza çözüm olmayabilir, ama umarım birilerine yardımcı olur!

-2

PostGresql.conf dosyasında max_prepared_transactions sayısını 100'e çıkararak sorunu çözüyoruz.