Tabiki öncelikle bir veritabanı paketine ihtiyacımız var. Bende kurulu Oracle 11g Express Edition'da HR kullanıcısında bir paket yaratarak başlayalım. HR kullanıcısı genelde güvenlik açısından kilitli olarak oluşturulur. Bunu açmak için SYS VE SYSTEM ile bağlanıp açmak gerekiyor. Bu kullanıcıların şifrelerini hatırlamıyorsanız veritabanının kurulu olduğu sunucuda
sqlplus /nolog - ile sqlplus penceresi açtıktan sonra
conn / as sysdba -komutu ile sys kullanıcısı olarak sisteme girebilirsiniz daha sonra
ALTER USER HR ACCOUNT UNLOCK; komutu ile hesabı açabilirsiniz
Artık aşağıdaki test paketini oluştumak için hiçbir engel kalmadı (yazının sonundan copy/paste yapabilirsiniz)
Görüldüğü üzere sadece test amaçlı olduğundan gayet basit bir paket hazırladım. Şimdi Jdeveloper'ı açalım ve yeni bir application ve buna bağlı bir Web Service projesi oluşturalım.
Eğer açık bir program yoksa solda New Application'a tıklayarak sihirbazı başlatabilirsiniz. Bu adım application ismini, yerini belirledikten sonra Generic Application'ı seçerek Next'e basın.
Ikinci adımda proje ismi ve yeri girildikten sonra solda Available kısmında Webservice seçildikten sonra sağ okuna basılarak selected kısmına getirilir ve Next Tuşuna basılır.
En son olarak Java dosyaları ile ilgili bilgiler kontrol edilerek Finish tuşuna basılır. Ben bu çapta bir program için application ve project isimleri dışında default verileri kabul etmekte bir sakınca görmüyorum.
Proje boş olarak yaratıldı. Eğer kontrol ederseniz henüz hiçbir dosyanın bulunmadığını konfirme edersiniz. PL/SQL paketimize ulaşmak için solda Application Resources altında Connections klasöründeki Database'i seçip farenin sağ tuşu ile yeni bir veritabanı bağlantısı oluşturalım. Bu bağlantıda veritabanı paketimiz olan db'ye bağlanıyoruz. Benim için bilgisayarımda bulunan Oracle 11 XE ve açılan bağlantı penceresinde onun bilgilerini giriyorum. Test Connection ile sorun yoksa OK'ye basarak pencereyi kapatabiliriz
Daha sonra veritabanı bağlantısı için Database Package'lerde az önce oluşturduğum
pkg_EmployeeInformation paketini seçerek sağ tuşa basında en altta Publish As Webservice seçeneğini seçiyoruzArtık Web Service oluşturmaya başladık. Welcome ekranın sağ altta bir daha göstermeyi işaretledikten sonra Target projeyi seçiyoruz. Şu an sadece tek proje olduğundan default olarak gelen appHrTest.jws/prHrTest.jpr seçili iken Next'e basıyoruz
Bu adımda hangi Web Service platformunu kullanmak istediğiniz soruluyor. Makinadaki Java ayarları da gözönüne alınarak gelen seçeneklerde benim şansıma sadece J2EE 1.4 JAX-RPC, with support for 10.3 WLS geliyor, fazla seçenek olmadığından Next'e basıyoruz
4. Adımda aslında welcome düşünmezsek 3. oluyor, paket ismini ve Webservice ismini giriyoruz, ben yaratıcılığımı konuşturarak webservice ismini wsHrTest olarak girdim. Next'e basıyoruz.
5. Adımda, Mesaj Formatında, Generate Schema with Qualified Elements işaretli kalıyor ve SOAP Message formatı RPC/Literal olarak default değerlerde bırakarak Next tuşuna basıyoruz
6. Adımda paketin içinde Webservice olarak kullanılabileceğimiz programlar görünüyor. Örneğimizde sadece bir tane var onu seçip Next tuşuna basıyoruz
Bu noktadan sonra eğer type mapping'ler ile ilgili bir ayara yapmayacaksanız yada security vs özel bir uygulamaya gitmiyorsanız benim gibi Finish'e basabilirsiniz.
Artık webservice ile ilgili gerekli tüm dosyalar java, xml ve wsdl dosyası oluşmuş durumda.
Ayrıca altta HTTP content/Hex Content/Raw Message görünüm opsiyonlarını da kullanabilirsiniz.
Sonuç olarak JDeveloper ile bir çok kez default değerleri kullanarak önce bir web servis projesi oluşturduk, daha sonra veritabanı bağlantısı ile kurarak veritabanı paketinden sihirbaz yardımı ile web servis yaratmış olduk. Bunun bu kadar basit olması sayesinde farklı sistemler ile haberleşme konusunda eğer veritabanı paketi hazır ise bir kaç dakikada webservis oluşturulabiliniyor.
----------------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE PACKAGE pkg_EmployeeInformation
IS
FUNCTION get_EmployeeDepartment (EmployeeId_in NUMBER) RETURN VARCHAR2;
END;
/
CREATE OR REPLACE PACKAGE BODY pkg_EmployeeInformation
IS
FUNCTION get_EmployeeDepartment (EmployeeId_in NUMBER) RETURN VARCHAR2
IS
BEGIN
FOR REC IN (
SELECT d.department_name dname
FROM employees e, departments d
WHERE e.department_id=d.department_id
AND e.employee_id= EmployeeId_in
AND rownum=1
) LOOP
RETURN rec.dname;
END LOOP;
END;
END;
/
-----------------------------------------------------------------------------------------------------------------------








Hiç yorum yok:
Yorum Gönder