Dünyada 10 çeşit insan vardır, binary bilenler ve bilmeyenler.

Çarşamba, Temmuz 26, 2006

 

PL/SQL üzerinden web servisleri



PL/SQL VE JAVA ÜZERİNDE WEB SERVİSLERİ


ÖZET:

Bu döküman Web servisi kavramının kısa tanımını, Eclipse IDE ile web servisi oluşturma işlemini ve PL/SQL üzerinden web servis kullanma yöntemlerini irdeler.

WEB SERVİSLER HAKKINDA:

W3C tarafından belirtilen standartalr çercevesinde web servisler bir bilgisayardan başka bir bilgisayara network üzerinde bağlanmaya yarayan yazılımdır. Sunucu üzerinden istemci tarafından algılanabilir bir arabirimi bulunur. Web servisin meta-data bilgisi WSDL (Web Service Definition Language) (okunuş “wızdıl” ) ismi verilen XML dökümanı üzerinde saklanır.

Yukarıdaki şema bir Oracle uygulamasının herhangi bir web servisine bağlanırken izlediği yolu gösterir. Burada dikkat edilmesi gereken noktalar:

Konu üzerinde daha fazla detaya inmeye gerek yoktur. Web Servis kullanımının 3 önemli safhası aşağıdaki gibidir:

* Discovery : UDDI üzerinden “telefon rehberi” benzeri bir yapı ile web servis bulunabilir

* Description : WSDL dosyası ile web servisin meta-datası öğrenilebilir.

* Transport : SOAP üzerinden web servis – istemci haberleşmesi gerçekleşir.

ECLIPSE İLE WEB SERVİS OLUŞTURMA:
Eclipse IDE plug-in lerinden olan WTP (web tools platform) HTML, XML, JS, WSDL, SOAP, UDDI, SQL, Servlet, JSP, EJB, JAX-RPC, JDBC, JAXP işlemlerini basit kullanıcı arabirimleri ile gerçekleştirebiliyor. Yukarıda bahsedilen web servis kuramları hakkında çok detaylı bilgiye sahip olmadan web servis oluşturma ve kullanma hızlı bir şekilde gerçekleştirilebiliyor.

Java ile web servis oluşturma bu araç ile anlatılacaktır.


Gereksinimler: Eclipse 3.2.0 , WTP 1.5 plugin, Tomcat 5.0 1


  1. Önce Temel bir proje oluşturma ile başlıyoruz:
    File / New / Other / ..... / Web / Dynamic Web Project ile yeni web projesi başlatıyoruz.

  2. Aşağıda belirtilen basit java sınıfını oluşturuyoruz:


  3. Şimdi bu sınıfı bir web servis haline çevirebiliriz. Bunu anlatmadan önce web servisler hakkında tip kısıtlamalarında bahsetmek gerekiyor: Web Servislerin methodları Java'daki String sınıfını, ilkel tipleri ve sadece bu ilkel tiplerden oluşmuş sınıfları döndürebilirler. Örnekteki dönüş tipleri bu kuralı karşılamaktadır.
    Şimdi yapılması gereken Sınıfa sağ tıklayıp “Web Services / Create Web Service” seçeneği ile WSDL oluşturulmasına, bu sınıfın bir web service ile sarmalamasına izin vermektir.

Oluşturulan Web servisi wtp.Converter sınıfına başvuran XML dökümanlarına sahiptir. Eclipse WTP nin bizim için oluşturduğu J2EE yapısını incelediğimde şunları gördüm:

Eclipse oluşturulan J2EE mimarisini Tomcat altına almıyor. Bunun yerine WTP plugin'i kendi altında bu mimariyi oluşturuyor. Bu denemelerin yapıldığı bilgisayarda

[eclipse plugin dizini]/org.eclipse.wst.server.core/tmp0/webapps/[proje adı]


Dizininde aşağıdaki mimariyi oluşturmuştur:
./WEB-INF

/ConverterService

/wtp

/deploy.wsdd.bak

/undeploy.wsdd

/deploy.wsdd

/classes

/wtp

/Converter.class

/web.xml

/lib

/saaj.jar

/commons-discovery-0.2.jar

/jaxrpc.jar

/commons-logging-1.0.4.jar

/axis.jar

/wsdl4j-1.5.1.jar

/attachments

/server-config.wsdd

./META-INF

/MANIFEST.MF

./wsdl

/Converter.wsdl

Dizin yapısını kısaca anlatmak gerekirse:

META-INF dizini, oluşturalan J2EE uygulamasının meta-data sını tutar.
wsdl dizini web servisin WSDL dosyasını içerir.

WEB-INF ise uygulamaya dair; kütüphaneleri, sınıfları, deploy ve undeploy bilgisini içerir.
WEB-INF dizin yapısı J2EE Web Archive dizin yapısındadır. Bir ant scripti ile “war” dosyası haline dönüşebilir. Bütün Dizin yapısı ise J2EE Enterprise Archive mimarisindedir, bir ant scripti ile “ear” dosyasına dönüşebilir.



PL/SQL ÜZERİNDEN WEB SERVİSE BAĞLANMA:

Oracle 10g ile birlite gelen UTL_DBWS paketi ile web servisi kullanım işlemleri basit çağrılar ile gerçekleştirilebiliyor. Üzerinde çalışacağımız Oracle sürümü 9i olduğu için UTL_HTTP paketi üzerinden haberleştiğimiz web servisinden gelen ve web servisine gönderilen verileri XMLTYPE veri tipinde tanımlı olan metodlar aracılığı ile işleyeceğiz.

Web servis ile haberleşme işlevi aşağıdaki yöntemle yapılır:

  1. Önceden tanımlı WSDL dosyası okunur, web servisin yerleşimi ve sunduğu fonksiyonlar hakkında bilgiler okunur

  2. Web servisi SOAP formatına uygun hazırladığımız istek paketi ile çağırılır

  3. SOAP halinde gelen veri paketi çözümlenerek gelen sonuç program akışına aktarılır.


UTL_HTTP için önemli prosedür ve fonksiyon isimleri:

begin_request : http üzerinden istek başlatılacak bilgisi

write_text : açılan istek üzerinden veri gönderme (SOAP metni burda gönderilmeli)

get_response : gönderim sonrası cevabı okumak için kabul açılır

read_text : açılan kabul üzerinden gelen cevabı okumak için (SOAP metni alınır)


XMLTYPE için önemli fonksiyonlar: (SOAP metinlerini işlemek için)

extract : XML formatında önemli yer tutan XPATH söz dizimi ile XML dökümanı üzerinde

arama işlevi yapılır. Oracle extract fonksiyonuna parametre alarak XPATH söz dizimi alır.


SONUÇ:


Bu çalışma ile J2EE web servisi mimarisi incelenmiş, Eclipse ile hızlı bir şekilde web servisi oluşturma öğrenilmiştir. Oracle 9i web servisi kullanımı için basit bir kütüphane hazırlanmış, 10g nin web servisi paketleri incelenmiştir.


REFERANSLAR:


http://www.oracle.com/technology/tech/webservices/htdocs/samples/dbwebservice/DBWebServices_PLSQL.html

http://www.oracle-base.com/articles/9i/ConsumingWebServices9i.php

Sun J2EE Tutorial

Eclipse WTP tutorials

tahiti.oracle.com/


1Bu yazılımlar dışında:

Eclipse 3.1.0 ile WTP denenmiştir. Uyumsuzluk tespit edildi.

Web sunucusu olaral JBoss denenmesinde JBoss üzerine WSDL Eclipse tarafından yerleştirilemedi.

Web sunucusu olaral Tomcat 5.5 ile yapılan denemelerde de sorunlarla karşılaşıldı.


Comments: Yorum Gönder



<< Home

Archives

Mayıs 2005   Haziran 2005   Temmuz 2005   Ekim 2005   Mayıs 2006   Haziran 2006   Temmuz 2006   Ağustos 2006   Eylül 2006   Ekim 2006   Kasım 2006   Aralık 2006   Ocak 2007  

This page is powered by Blogger. Isn't yours?