20 Eylül 2013 Cuma

"JBO-27023: Failed to validate all rows in a transaction" hatası ve çözümü.

Yayına konu olan hata bir SQL hatasıdır ve veritabanına kaydedilmeye çalışılan satırların istenen formatta olmadığı anlamına gelmektedir.

Burada formatla kastedilen, her satırın belirli bir sütun sayısına ulaşması gerektiğidir.

Benim tecrübemde satırı kaydetmeye çalışırken Id ve bir başka tamsayı alanı olan Version alanımı hiç doldurmadığımu ve Row umu bu şekilde kaydetmeye çalıştığımı farketmem hatayı gidermemde yeterli oldu.

Bu sebeple benzer bir hatayı alanlara tavsiyem, .getDBTransaction().commit();   komutunu çalıştırdığınız yere gidin ve bu komutla veri tabanına eklemeye çalıştığınız satırların gerekli bütün sütunları içerip içermediğini kontrol edin.

Summary

Make sure that the rows that you write to the database contains a fair number of columns. On or more columns can be missing.

19 Eylül 2013 Perşembe

"Fail to convert to internal representation" hatası neden alınır? Nasıl giderilir?

"Post"a konu olan hata bir SQL hatasıdır ve bir veri kendi veri tipiyle uyumlu olmayan bir attribute a atandığı zaman meydana gelir. Bana sorarsanız bu hatanın sebebi de ADF tir. Zira Entity Object ten View Objecte attığınız attributelar her defasında doğru dizilimle atanıyor olsa idi böyle bir sorun yaşanmayacaktı.

Tekrar edelim, bu hata Entity Objectten türetilen bir VO içerisindeki attributelerin sıralarının kaynağa uygun olmamasının bir sonucu olarak bu elemanlarda bir tip problemi oluşmansıyla alakalıdır. Biraz daha açarsak;

Tablomuz:

Id (Number)
Tip (Varchar)
Deger (Varchar)
Version (Number) şeklinde iken,

View Objectimiz

Id (Number)
Version (Number)
Tip (Varchar)
Deger (Varchar)

olduğunda veri tabanından çekilen değerlerden "GOREV_TANIMLAMA" adlı karakter katarının bir tamsayıya dönüştürülmeye çalışılması söz konusu olmaktadır.

Bu hatayı farketmek zor, çözmek kolay diyebiliriz efendim. Hemen View Object in attributelarının atandığı ekrana gidin ve attribute sırasının Entity Objectteki sıralamaya eşit olduğundan emin olun.

Çözümde yol göstericiliğini bizden esirgemeyen hocam Mustafa Bolat' a teşekkürü bir borç biliriz.

Summary

Problem :  Fail to convert to internal representation
Solution : Make sure there is no type mismatch between DB columns and VO attributes. Check attribute order.

16 Eylül 2013 Pazartesi

"Missing IN or OUT parameter at index:: 1" hatası niye alınır? Nasıl giderilir?

Missing IN or OUT parameter at index:: 1
hatası, bir SQL hatasıdır ve koşturmaya çalıştığınız sayfada kullandığınız View Objectlerden birinde bir bind variable olduğu ve bu bind variable' a erişilemediği anlamına gelir.

Peki bind variable required olamayacaksa neden var bu required alanı? diye sorduğunuzu duyar gibiyim. Onu da View Criteria ların bind variable larını tanımlarken kullanuyoruz çünkü.

Şimdi gidelim ve o bind variable'ın "required" property sini tick yapalım.

Kaynak için.

ADF VariableResolver hatası aldım. Ne yapmam lazım?

<ConfigureListener> <contextInitialized> Critical error during deployment:

com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! javax.faces.el.VariableResolver

at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:357)

at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:226)

at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481)

at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
...

Gerçekler


Bazen amelasyon işlemlerin hiçbirinin işe yaramadığını görürsünüz. XML leri elle kesip biçmeden tutunda, proje dosyalarını münferiden revert etmeye kadar. Herşey size gereğinden fazla köpekleme takıldığınızı söylüyordur hani. İşte o zaman gerçek bir Power User gibi yaklaşmak gerekir problemlere. Bunun için yapılması gerekenleri aşağıda anlatmaya çalışacağım.

1- Model.jpr ın içinde <Resource - Bundle - Variable - Resolver> tag ini gördüğünüzü farzediyorum.
2- Hatta bir de <Resource - Bundle - Support> diye bir tag vardır. Bunları kendi haline bırakın.




3- İlk iki adımda bir sıkıntı yoksa, gidin Model.jpr 'ına az evvel bakıyor olduğunuz projenin Project Properties ine ve Libraries and Classpath sekmesine girin.



4- Burada Resource - Bundle - Support u görüyorsunuz diye farzediyorum. Ve bir de bakıyorsunuz ki   <Resource - Bundle - Variable - Resolver> yok. E ne yapacağız? Hemen Add Library... seçeneğini tıklıyoruz, buradan bu eksik Libraryleri ekliyoruz.



5- Bu işlemin projenizi deploy etmek için yeterli olabileceğini düşünebilirsiniz. Ama aslında biz bunları JDeveloper ı kandırıp, aslında sahip olmadığı bir jarı, referans listemize eklemek için yaptık.

6- Projeyi patlaması için deploy edin. (He, deploy olursa ne iyi tabi.)

7- 6 ıncı satırdan sonra sıkıntı devam ediyorsa projeyi Application Server Navigator -> Integrated Weblogic Server -> Deployments dan undeploy edin, sonra gidin Libraries and Classpath 'ten kaldırın.



 8- Libraries and Classpath den Jar'ı kaldırdık, ama referanslar hala projemizin içinde. Bu nedenle bir Rebuild gerekiyor. Hemen Build - > Clean All ve Build -> Make All yapın. Bunlar projenizi uygunsuz jar referanslarından temizleyecektir.

9- Deployment a hazırsınız.


11 Eylül 2013 Çarşamba

JDeveloper ADF tir, arada yapar.

ADF ten ilk öğrendiğim şey:

ADF, Rapid Application Development için tasarlanmış ve özellikle buglarıyla insanı sabra davet eden, inşallah başı bismillah sonu cennet olan bir yoldur. Zira bu dünyada eza ve cefa çekip de sabreden öteki dünyada bunun karşılığını alır diye inanıyoruz arkadaşlar.

NOT : Bu söylediklerim ADF + JDeveloper muhteşem ikilisini kullananlar için geçerli, diğer IDE lerle denemedim, bilemem.




Eğer bir şeyler yanlış giderse ve siz bir hata yapmadığınızdan eminseniz, aşağıdaki adımları, (n-1). adım  sizi başarıya ulaştırmaz ise n. inci adımı uygulamak kaydıyla takip ediniz.

  1. Kapat aç. Özellikle tools/preferences içerisine girip yaptığın değişikliklerin kapatıp açmadan etkisini göstermesini bekleme
  2. Dosya sisteminden projenin bulunduğu klasörü aç ve içindeki .data klasörünü sil. (Kodu değiştirmene rağmen eski kodla takılıyor, onu debug etmeye çalışıyorsa. ( if(false){} gibi bir ifadenin içine girdiğini gördüm arkadaş yalan yok.) )
  3. C:\Users\[Kullanici_Adin]\AppData\Roaming\ e gel ve JDeveloper klasörünü sil. (Bütün ayarları ve düzenlemeleri kaldırır, bir yerde bir gereksizlik olmuştur, düzeliverir)
  4. JDeveloper ı sil yeniden yükle. (Akış Diagramlarını (Page Flow, Control Flow vs.) falan çalıştırmamaya başlarsa.)
NOT2: Bu adımları birtakım buglar ile uğraşmak olarak düşünmeyin. Yazılım geliştirme ortamınızı sevmeye çalışın. Zira bizim ekmek teknemiz sayılır bu programlar. Ben ne yapıyorum onu söyleyeyim; ben bunları bozulan televizyonuma attığım bir iki küçük tokat olarak görüyorum, bir sonraki soruna kadar gayet güzel çalışıyor bu adımları uyguladığımda sevgili IDEm.