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.

eclipse axis problemleri ve çözümü

elimde bir wsdl var tahminim 2005 den kalma. bu wsdlden webservisi oluşturmam lazım. evvela wsimport ile denedim ama

src-resolve.4.2: Error resolving component ‘soapenc:Array’. It was detected that ‘soapenc:Array’ is in namespace

ve bir sürü devamı var. denedim bişeyler import etmeyi ama gözümde kesmedi şimdi servisi bozmuş olurum fark etmeden. axis2 ile denedim oda buna benzer bir hata verdi. sonunda zaten wsdl 2005 den kalma axis1.4 le yapabilirim diye düşündüm. eclipse le bir güzel oluşturdum deploy.wsdd ve undeploy.wsdd falan çıktı. classlar hazır implementasyonu belli ama localhostdan kendisine ulaşamıyorum 🙂

http://localhost:8080/services/servisPort?wsdl

bu adresden wsdli vermesi lazım. ama böyle bir servis yoktur diyor. okurken öğrendimki webserverı çalıştırdıktan sonra

java -cp $(for i in ~/tools/axis-1_4/lib/*.jar ; do echo -n $i: ; done). org.apache.axis.client.AdminClient -lhttp://localhost:8080/services/AdminService deploy.wsdd

komutunu çalıştırmak gerekiyormuş. buda o esnada çalışan axis sistemine elde yazılı olan servisi load ediyor. ama uygulama start olduğunda bunu yapıyor olması lazım. ve arada bir exception gözüme çarpıyor.

server-config.wsdd bulanamadı hatası. önce deploy.wsdd nin ismini değiştirip direk bu dosya gibi yazdım bu sefer servis wsdl i gelmiyor ama servis var gibi. ulaşmaya çalışınca gelmiyor 🙂 neyse araştırırken öğrendim server config wsdd nasıl oluşturulur

cd webapps/axis/WEB-INF
java -cp $AXIS_CLASSPATH org.apache.axis.utils.Admin server deploy.wsdd

bulunan servera configi çıkarıyor. amma uzun sürdü bir servis ayarlaması. bazen bu tip durumlarda vs.net ve asmx i özlemiyor değilim orda bir webservisi yapmak genelde 10 bilemedin 30 dk lık iş. bu yaklaşık 5 saatimi aldı. gerçi bu wsdl ile .netde bir sürü arıza çıkarabilirdi ya neyse 🙂

REDIT
ahahaha çok güldüm kendime. ulan axis taglı başka yazı varmı diye bloga bakındım buyrun vs.net lede bu bazı wsdlleri çalışır duruma getirmek çok zaman alıyormuş 🙂

ufak bir java testi yaptım

benchmark işinden anlamam ama sakin sakin her önüme geleni uygularım durum şudur.

http://www.ibm.com/developerworks/java/library/j-benchmark1/index.html
adresdeki kodları java 1.6 1.7 ve jrockit için çalıştırdım aldığım sonuçları yayınlamak istedim. hesapta jrockit çok hızlı olmalıydı ama hiç bir parametre vermeyip çalıştırdığımda aldığım sonuçlar aşşağıdadır.

jrockit – Execution time: 666.827578 milliseconds
java 1.6 – Execution time: 63.405173999999995 milliseconds
java 1.7 – Execution time: 47.170781 milliseconds

java 1.7 – Execution time: 7.730915779 seconds to compute result = 1580674560
jrockit – Execution time: 108.46286744800001 seconds to compute result = 1580674560
java 1.6 – Execution time: 7.7936518580000005 seconds to compute result = 1580674560

bir ara zamanım olunca parametreleriylede denerim 🙂 ama herhangi bir parametre vermeyince 1.7 sanki hızlı gibi =)

ubuntu tora oracle kurmak

apt repodan gelen tora ubuntuda direk oracle a bağlanmıyor. onun için tora-oracle indirmek gerekiyor.

https://code.launchpad.net/tora-oracle

bu adresden sisteminize uygun olanı seçin ben natty seçtim. debi indirdim dpkg -i ile kurmayı denedim oracle instant client yok dedi.

http://www.oracle.com/technetwork/database/features/instant-client/

bu adresden de oracle-instantclient11.2-basic-11.2.0.2.0.x86_64.rpm yi çektim alien ile debini oluşturdum. önce instant client sonra tora-oracle kurdum. ve tora libclntsh.so.11.1 bulamamakdan şikayetçi oldu. oda ldconfig ile şöyle çözüldü. evvela “nano /etc/ld.so.conf.d/oracle.conf” oluşturuyoruz/açıyoruz. içine “/usr/lib/oracle/11.2/client64/lib/” yazın kapatın sonra “sudo ldconfig” veriyorsunuz ve işlem tamam tora açıldı.

connect için parametreler screen shotdaki gibi olucak.

database e bağlanıp işlem yapabiliyorsunuz artık. commit etmeyi unutmayın tora sanırsam her işlemi anında commit etmiyor.

iyi çalışmalar.

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

apache shiro linuxde nasıl derlenir

dökümantasyonda görmedim not alim dedim. evvela shiro nedir.

shiro kısaca java için bir güvenlik sistemidir. kullanıcı yönetim sistemi ve role tabanlı ulaşım sağlar. yada asp.net membership sisteminin benzeridir denebilir. üstün özellikleri biraz cryptosu fazla bide ldap falan desteklemesi neyse konumuz o değil.  mvn daha çok ram istermiş. pom xml i okurken fark ettim. yapılması gereken

export MAVEN_OPTS=”-Xmx512m -XX:MaxPermSize=128m”

yaptıktan sonra mvn komutunu vermek. bide dökümanları eskide kalmış gibi. mvn site demeniz yeterli. neyse kurcalayam bakam hoş duruyor uzaktan kullanırken ne cilveler yapıcak acaba 🙂

openjdk olmadan mvn kurmak

debian da mvn kurmam gerek direk apt-get install mvn dedim yimedi. sonunda paket isminin maven2 olduğunu anladım. da bu sefer yükliceklerinin içinde openJDK ve gcj vardıki bunlar java geliştirirken çileden çıkarıcak hatalara sebep olabilir. mvn yi yancıları olmadan kurmak için gereken komut:

apt-get --no-install-recommends install maven2

debian hyper v disk problemi ve çözümü

debain squeeze kurulu bir hyper V var ve üstüne 200gb disk takılı ekstradan bişeyler test edicem formatlıom formatlıom fdiskle bakıom diski nedense hep 127gb görüyor. ararrken ararken buldum. hyper V için scsi network otu boku ayrı driver istermiş. ve debianla gelen kernelde bu derli değildi. çözüm linux kerneli derlemek.

ilk adım linux indiriyoruz derliyoruz ve kuruyoruz.


cd /usr/src
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2
bunzip2 linux-2.6.38.tar.bz2
tar -xf linux-2.6.38.tar
cd linux-2.6.38
make menuconfig

önümüzde duran şey linux kernel derleme opsiyonları Device Drivers -> Stagging Drivers –> Microsoft Hyper-V Client Drivers ‘a gidin. stagging drivers biraz aşşağıda. neyse gerekeni işaretleyin like this

sonra çıkıp sırayla bu komutları verin

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-hyper-v kernel_image kernel_headers

sonrasında /usr/src altında iki dene deb dosyası çıkıcak bunları dpkg -i ile kurun. şimdide /etc/initramfs-tools/modules dosyasına aşşağıdakileri ekleyin

hv_vmbus
hv_storvsc
hv_blkvsc
hv_netvsc

sonrada

update-initramfs –u –k 2.6.38-hyper-v

şimdi besmeleyle reboot edin ve şükür debian diski olması gerektiği boyda görmeye başladı 🙂 hatta disk yetmedi 400gb yapıp gparted ile resize da ettim temiz çalışıyor.