eclipse juno slow solved

you will see the end of this page

https://bugs.eclipse.org/bugs/show_bug.cgi?id=385272

1) Help>Install New Software

2) use the site: http://download.eclipse.org/eclipse/updates/junoSR1Patch-tmp

3) select Eclipse UI Juno SR1 Optimizations, install, and restart

this will make eclipse 4.2 work faster when you change tabs in xml files. that was bugging me for a long time.

cheers 🙂

javada duplike loglar görmek

genelde log4j ayarları dosyası şişmesinden kontrolden çıkmasından kaynaklanır. xml ile configuration ayrı bir hatadır ya neyse. şimdi xml leri gezdin pathlerde gerekenleri ayarladın ama çözümlenmiyormu o zaman java koduyla

bu bütün loggerları silip bi tanecik konsol appender eklememizi sağlar. veya tamamen bütün loggerlarımı kapatıcaz o zamanda before bölgesine aşağıdaki eklenir


 aslında logu kapamıoda rama gidiobuild bitince silinir ramdende rahat olun 🙂 junit testlerinde bu kodlar bana gerekti.

spring circular reference bean problemi

spring de service ler reporsitoryler derken heryerimiz bean olmuş durumda ve uygulama bi şekilde çalışıyor. çok da nasıl çalıştığına önem vermeden kodlamaya devam ediyorum. javasimon için aop enable edip server start ediyorum birden şöyle bir exception alıyorum.

Error creating bean with name ‘membershipProvider’: Bean with name ‘membershipProvider’ has been injected into other beans [roleProvider] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching – consider using ‘getBeanNamesOfType’ with the ‘allowEagerInit’ flag turned off, for example.

daha evvelinde aop enable ettiğimde daoUtils can not be set $Proxy180 gibi exceptionlarda görmüştüm onları geçmek için springin root context xmlinde şöyle birşey yapmıştım

spring confundanda anlaşılacağı üzere interface kullanmıyorum pek. o kadar DI sevmiom bide çok kod kafa karıştırıo tek class da iş bitiriyorum genelde.

neyse allowEagerInit hatası içinde gittim memberShipProvide ın tepesine @Lazy ekledim sorunsuz çalıştı. okuduklarıma göre circular reference zaten design hatası fakat bazen gerekiyor. bu durumda @Lazyı anotasyonu işimizi çözüyor. java simonda güzel güzel çalıştı ama webconsole da gördüğüm çıktılar beni çok tatmin etmedi. olmadı jamon a dönücem. buda gelişim sürecinde bir spring hibernate projesinden küçücük bir kare 🙂

hibernate ve kolon isimleri

hibernate ile uygulama geliştirenler artık pek database tarafınla ilgilenmeyebilirler. bir süre sonra hangi kolon hangi değişkene denk geliyor kodu yazan kişi tarafından bilinmez olmaya başlar.

özellike windows da uygulama geliştirirlip linux de mysql e deploy yapılıyorsa %90 kolon ismi büyük küçük harf bağımsızlığıyla ilişkili problemler çıkabilir. çünkü genelde class isimlerimi ClassForDeve gibi büyük küçük harfler barındırıyordur ve bunlar aslında windows daki mysql de sorun çıkarmazken linuxde sorunlara sebep olucaktır.

en güzel ve basit çözüm hibernate.properties veya persistence.xml e aşağıdaki satırı girmek:

bu sayede oluşturulacak tablo ve kolon isimleri class_for_deve şeklinde olucaktır. buda ister linux ister windows mysql versiyonu bağımsız çalışacaktır.

bir diğer çözümde her tablo ve kolon isminin java pojolarında @Column(name=”biseler”) veya @Table(name=”tablo1″) şeklinde verilmesidir. bu yöntem çok külfetli olucaktır.

akşam akşam hataya gel

Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 can’t find
referenced pointcut

li bir exception alınıyor springin aop sinden beri patlıo. ulan altına bakıom üstüne bakıom yok. tomcati ipv4 ile çalıştırıom bind adresi olarak 127 li veriom yemio. derken derken buldum meğer makineye java 1.7 kurulmuş.

http://issues.opennms.org/browse/NMS-4350

burdada şikayetler listelenmiş. sonuçda 1.7 kapsar 1.6 olması gerekmezmiydi. neyse 1.6 kurduk geçti ama nedir bizim çilemiz 🙂 güle güle 1 saat.

swt and maven example

Swt does not come from maven repo with the latest version. but you can use this pom to use latest swt version  from nexus testing repo.

pom.xml:

for a working example eclipse project visit this

java xsd den class çıkarma

elde bir xsd var ve buna uygun gelen xml lerin java objelerine dönüştürülmesi lazım. bu iş için bi aralar xmlbeans kullanmıştım bakınırken gördümki. jvm e jaxb gelmiş ve başka lib gerektirmeden xml den obje yapılabiliyor.

xsd den clasları generate etmek için

xjc netsis.xsd

bulunulan folder altında generated diye bir foldera gereken classlar çıkar. gelen xml den java objesi yapmak içinde.


ClassLoader cl = ObjectFactory.class.getClassLoader();
JAXBContext jc = JAXBContext.newInstance("com.erke.sm", cl);
Unmarshaller u = jc.createUnmarshaller();
Object o = u.unmarshal( new File( "ehe.xml" ) );
NewDataSet nds=(NewDataSet)o;
for(Table t:nds.getTable()){
System.out.println("t.getSTOKKODU():"+t.getSTOKKODU());
}

daha farklı yollarla örnekler.

ufak bir java projesi ve cache

dünden beri basit bir java cache sistemim olsun diye bakınıom. evvela oscache artık ölü. birçok yerde shiftone cache4j görmüşünüzdür bunlarda son 2 senedir falan update olmayan eski cache sistemleri. aslında eski teknolojiye karşı falan değilim amacım sadece öğrenmek. bu arada uzun süredir oscache kullanıyorum onun hızından memnunum production level işler için gidilebilecek bir yol.

asıl gözüme batan ehcache in 2.4.2 versiyonu oldu. basit bir kod yazdım içinde ehcache init de ediliyor ve logda gördüğümden huylandım. 2.4.2 biraz eski bir versiyon şu an sanırım 2.4.5 falan var. neyse bi baktım ehcache init olduğunda sitesine gidip bakıyor ve yeni versiyonu varsa uyarı veriyor 🙂 benimde tek ürünüm ehcache olsa böyle bişey yapardım bu sayede kaç kişi kullanıyor takipde edilir. ama bir cache sistemi bunu yapmamalı diye karar verdim JCS ile yoluma devam ettim. long live JCS.

bu arada bundan 5 ay kadar önce mesul olduğum projelerden birinde oscache den jcs ye geçiş yapmıştım gözle görülür farkla oscache jcs den hızlı. tabii jcs diskde tutabiliyor tcp ile serverlar arası iletişim sağlıyor gibi birçok özelliği mevcut. direk oscache e geri döndüm.

geçen günde infinispan deniyim dedim oda yüksek rakamlarda kanırdı. işlem yaptığım döküman sayısı yaklaşık 11 milyondu.  ve hibernate search ile indexlenen data yaklaiık %90 da kalmıştı ve üstünden 12 saat geçmişti 🙂 doğal olarak iptal ettim ve bıraktım.

glassfishde sembolik link yerine ne yapılır

eskiden web uygulamasının içine gidilip ln ile link atılırdı resimlerin falan bulunduğu path için. artık

<property name=”alternatedocroot_1” value=”from=/orderstore/* dir=C:/stryker_cci/orderstore”/>

ile link veriliyor bu sayede açılışta glassfish tıkanmıyor. diğer durumda “glassfish waits forever”. ln ye gerek kalmıyor direk glassfish web xml de kaynak yeri bildirilmiş oluyor tertemiz.

daha detaylı açıklama için

http://wikis.sun.com/display/GlassFish/FaqAlternateDocrootResourcePath

java turkish currency

I was implementing some stuff in java and there I needed to show number as currency in turkish. here it comes


NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("tr","TR"));
System.out.println(nf.format(123));

output:

123,00 TL

in default jvm thinks you choose US or it will check the system current environment. but if you like to change it. you can do the code above.