13 Kasım 2008 Perşembe

OC4J Üzerinde Netbeans ile hazırlanmış JAX-WS Webservisleri Çalıştırmak

Şimdi... Bu iş biraz karışık... JAX-WS standardı kullanmak için java versiyonu 1.5 ve üstü olmak zorunda. Bunun sebebi JAX-WS standardında annotation'ların kullanılıyor olması. Bu da biliyorsunuz 1.5'ten sonra gelen bir özellik.... Şu an resmi olarak Java 5 standardını destekleyen hangi application server'lar var bir sayalım:


  1. Glassfish
  2. Tomcat 6
  3. Oracle Weblogic
Görüldüğü gibi listede OC4J yok! Zaten Oracle BEA'yı bünyesine aldıktan sonra OC4J devam etmeyecekmiş gibi görünüyor. Neyse... Asıl konu şu: Netbeans ile webservisi oluşturulunca (Tabi özellikle axis2 ile kullanılmıyorsa) default olarak JAX-WS kullanılıyor. Bunlar zaten Glassfish üzerine rahatça deploy edilip çalıştırılabiliyor. OC4J ile çalıştırmak için build.xml scriptinin içine şu komutları eklemek gerekiyor:


<target name="-pre-dist">
<taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen">
<classpath path="${javac.classpath}"/>
</taskdef>
<echo>running wsgen - quixotic</echo>
<wsgen
debug="true"
keep="true"
destdir="build/web/WEB-INF/classes"
resourcedestdir="build/web/WEB-INF/classes"
sei="tr.com.SINIF_ADI">
<classpath>
<pathelement path="${javac.classpath}"/>
<pathelement location="${java.home}/../lib/tools.jar"/>
<pathelement location="build/web/WEB-INF/classes"/>
</classpath>
</wsgen>
</target>


Bundan sonra derlediğimiz kod hem Glassfih hem OC4J üzerinde deploy edilebilir hale gelecektir. Tabi netbeans'de project properties'den library olarak JAX-WS kütüphanesini eklemiş olmak şartıyla!

Hâlâ birşeyleri çözebiliyor olmak ne güzel! :-))

1 yorum:

Adsız dedi ki...

Merhaba,
Oluşturduğunuz her web servis için otomatik olarak jaxws-build.xml dosyasında wsgen targetları oluşturuluyor.
Burada yapılması gereken build aşamasında jaxws-build.xml dosyasındaki targetları çalıştırmasını sağlamak.bunun için build.xml dosyasına aşağıdaki komutu eklemek yeterli.
< target name="-pre-dist" depends="wsgen-service-compile">
< / target>
ancak,pre-dist targetının build.xml de override edilmesinin bir dezavantajı da var.
proje her build edildiğinde webservisleriniz için oluşan wsgen targetlarının hepsi çalışıyor olacak. bu da zaman problemi yaratacak.
glassfish te işlemleriniz bittikten sonra oc4j ye deploy ederken bu komutu eklemeniz yeterli olacaktır.
< target name="-pre-dist" depends="wsgen-service-compile">
< / target>