31 Ağustos 2013 Cumartesi

DataOutputStream: encoded string too long xxxx bytes Hatası Hakkında

Başlıkta belirlenen hata DataOutputstream classının 64 kb limite sahip olması ile ilgilidir .Siz bu classı kullanmasanızda javax.xml.transform işleminde sizin yerinize arka planda newTransfromer() ;metodu ile kullanılmaktadır.Çözüm olarak http://www.drillio.com/en/software-development/java/encoded-string-too-long-64kb-limit/ bu sayfadaki trickleri deneyebilirsiniz  fakat sadece kodunuzun çalışmasını istiyorsanız transfrom işleminde Xalan yerine Saxon tercih edin.Xml transform işleminde Saxon kullanmak için

 System.setProperty("javax.xml.transform.TransformerFactory",
                "net.sf.saxon.TransformerFactoryImpl");


şeklinde sisteme property  atamanız gerekiyor .
Saxon kullanmanız ile bu sorun çözülecektir

23 Ağustos 2013 Cuma

java.lang.IllegalStateException: Attempting to execute an operation on a closed EntityManagerFactory.

Jpa için kullandığımız entitymanager ile ilgili bu hatanın bir den fazla sebebi olabilir.
Öncelikle JTA  ve container managed transaction kullanmayıp  connection u kapatıp açmamış olabilirsiniz .
 JTA  ve container managed transaction kullanamanıza rağmen bu hatayı alıyorsanız çok uğraşmayın bu bir glassfish bugı dır  3.1.2 ve 4.0 kullanın.
3 gün sonra hatayı daha dikkatli incelediğimde Netbeans ın glassfish-resources.xml dosyasına glassfishde oluşturulan connection poollları resource olarak kayıt ettiğini siz daha sonra bu glassfish arayüzünden yada netbeans arayüzünden güncellesenizde  yukarıda belirtmiş olduğum xml dosyasındaki connection bilgileri ile ise değişmeyen poolun bilgileri deploy anında güncellenir.Bu dosya projenizde otomatik olarak  oluşmaz fakat benim gibi bir işi her zaman yeni ve bilinmeyen yöntemle yapma fantaziniz varsa bir sebepten oluşturmuşsunuzdur.Sonuç olarak yukarıdaki hata tanımlanan connection bilgilerinin yanlış olmasından da kaynaklanabilmektedir.Siz siz olun ordan kaynaklanması mümkün değil gibi iddialı laflar etmeyin