5. WLST ile domain oluşturma
Weblogic Scripting tool (WLST) komut satırından sunucuları idare etme, yeni oluşturma veya güncelleme yapmak amacıyla kullanılan Java Scripting tabanlı Jython uygulamasıdır. Bunun konuya daha sonra daha geniş yer ayıracağımız için bu seferlik özet geçiyoruz. Weblogic sunucusunda WL_HOME\common\templates\scripts\wlst klasöründe örnek scriptler bulabilirsiniz.
WLST'yi kullanmak için öncelikle WL_HOME\common\bin\wlst.bin veya sh dosyanın çalıştırılması gerekiyor. Eğer orjinal template'den oluşturmak için aşağıdaki komut yeterlidir.
createDomain(domain Template, domain Dir, user, password)
Ancak daha detaylı bir domain yaratmak için aşağıdaki örnek yardımcı olacaktır.
#========================================================
# Weblogic template'den domain oluşturma
#========================================================
readTemplate('C:/app/oracle/product/Middleware/wlserver_10.3/common/templates/domains/wls.jar')
cd('Servers/AdminServer')
#========================================================
# Admin Sunucu ayarları
#========================================================
set('ListenAddress',''WLADMINIP'')
set('ListenPort', 8888)
#========================================================
# Admin Sunucusunu kaydetmek için şifre belirlemek gerekiyor
#========================================================
cd('/')
cd('Security/base_domain/User/weblogic')
cmo.setPassword(AdminServerPassword)
#========================================================
# Nodemanager ve makina oluşturma
#========================================================
cd('/')
create('WinMachine', 'Machine')
cd('/Machine/'+'WinMachine')
create('WinMachine', 'NodeManager')
cd('NodeManager/'+'WinMachine')
set('ListenAddress','localhost')
set('NMType', 'plain')
#========================================================
# Managed Sunucu Oluşturma
#========================================================
cd('/')
create('Server1', 'Server')
cd('Servers/'+'Server1')
set('ListenAddress','localhost')
set('ListenPort','8900')
set('Machine', 'WinMachine')
#========================================================
# Eğer önce yaratılmışsa üzerine yazması gerektiğini belirtiyoruz
#========================================================
setOption('OverwriteDomain', 'true')
#========================================================
# Domain yazılıyor ve wlst'den cıkış yapılıyor
#========================================================
writeDomain('/export/home/wlsuser/domains/wlsdom')
closeTemplate()
exit()
7 Mart 2012 Çarşamba
15 Şubat 2012 Çarşamba
Weblogic Sunucu Domainleri II
4. Unix Terminalden Sihirbaz ile Domain Oluşturm
Linux sunucularda xserver olmadığında devreye giren sihirbaz eskiden lynx ile interneti gezenler yada oracle forms 3 versiyonunu kullananlar için fazla zorluk çıkarmıyor. Aslında herhangi bir kullanıcı için ekrandaki talimatları izleyerek 5-6 dakika içinde domain oluşturmak mümkün1.Welcome
Enteria basarak seçili olan Create New Weblogic Domain'i kabul ederek devam ediyoruz
2. Select Domain Source
Tekrar enter'a basarak devam ediyoruz
3. Application Template Selection
Bu basamakta ihtiyaca göre hazır template'ler seçilebilinir. Bizim development ortamı için seçili olan Basic Weblogic Server Domain'i kabul etmek için enter'a basıp devam ediyoruz
4.Edit Domain Information
Domain ismini girip Enter'a basıyoruz, default değeri seçmek istersek önce yaptığımız gibi direkt enter'a basabiliriz.
5. Select the target domain directory for this domain
Default directory ile devam ediyoruz.
6.Configure Administrator User name and password
7. Domain Mode Configuration
Development ortamı hazırladığımız için direkt enter'a basıyoruz
8. Java SDK Selection
Development için tavsiye edilen Sun JDK ile devam ediyoruz. Eğer 64 bit makinaya kurulum yapılıyorsa önce 64 bir Sun JDK yüklenmeli ve böyle bir durumda Other Java SDK seçilmeli
9.Select Optional Configuration
Admin Server ve Managed Server oluştumak için 1 ve 2 ye basıp devam ediyoruz
10. Configure Adminstrative Server
Gerekirse port SSL ayarlarını yapıp devam ediyoruz
11. Configure Managed Servers
Managed Server(lar)'ın isimlerini yazıp devam ediyoruz
12. Configure Managed Servers
Bir önceki basamakta isim verdiğimiz sunucuların port / ssl ayarlarını yapıyoruz
13. Configure Clusters
Development ortamı için Cluster oluşturmadığımızdan direk enter ile geçiyoruz
14. Configure Machines
15. Configure Unix Machines
Bu örnekte Linuxta oluşturma işlemi yaptığımızdan bu basamaktaki machine kısmını geçiyoruz.
16. Assign Servers to Machines
Oluşturduğumuz makinaya sunucu atamak için numarasını yazıp enter'a basıyoruz
17.Assign Servers to Machines
2 ile select all'u seçiyorz
18. Assign Servers to Machines
Eklemeleri kontrol edip Accept yazarak kabul ediyoruz
19. Assign Servers to Machines
Enter ile veya Next yazarak son basamağa geliyoruz.
20. Creating Domain
Eğer herhangi bir sorun olmaz ise 10-15 saniye içinde yeni domain oluşturulmuş olacaktır.
Etiketler:
Administration,
Domain,
lınux,
unix,
Weblogic
12 Şubat 2012 Pazar
Weblogic Sunucu Domainleri I
1.Giriş
Weblogic sunucu kaynaklarının bir arada bulunması ile domain oluşur. Domain’de mutlaka bir Administrative Server (sunucu) bulunur ve domain kaynaklarının yönetilmesi bunun sayesinde yapılır. Kullanıcılar genelde kaynak her türlü programları (web, ejb,web servis) ve diğer kaynaklar için Managed Server oluştururlar. İhtiyaca göre bir kurulum ile birden fazla domain yada birden fazla kurulum ile bir domain kullanılabilinir.
Özet olarak Domain Yapısı aşağıdaki gibidir
- Administrative Server
- Managed Servers
- Kaynaklar ve Servisler (jdbc, jms, kaynak adaptörleri,güvenlik ayarları)
2.Domain kurulumu
Weblogic sunucusu kurulduktan sonra programların ve/veya servislerin kullanılabilmesi içi doğal olarak domain’e ihtiyacımız var. Bunun için bir kaç yol var;
- config.bat veya config.sh komutları yardımıyla sihirbaz kullanarak,
- Linux ortamında eğer xwindows mevcut değilse console yapısı ile
- WLST Weblogic skrip dilini kullanarak
- Son olarak da eğer daha önce oluşturulmuş template var ise bunları kullanarak
3.Sihirbaz Kullanarak Domain oluşturma
Bir çok durumda en kolay metod sihirbaz yardımı ile oluşturmaktır. İleride WLST script oluşturmak için de kuruluma hakim olmak adına sihirbaz iyi bir kaynak olarak da düşünülebilinir
1. Welcome
1. Welcome
2. Select Domain Source
Domain’ı kurma amacınıza göre gelen seçeneklerden bir veya daha fazlasını seçebilirsiniz. Minimum gereksinimler zaten default olarak seçilmiş geliyor. İleri derece web servisler için iki ek başlık var.
Basic Weblogic SIP Server geliştirme amaçlı SIP uygulamaları için (http://en.wikipedia.org/wiki/Session_Initiation_Protocol) Web Servis JAX-RPC , Java Apis for XML-based Remote Procedure Call (http://java.sun.com/developer/technicalArticles/WebServices/getstartjaxrpc/ ) Web Servis JAX-WS - Java API for XML Web Services (http://en.wikipedia.org/wiki/Java_API_for_XML_Web_Services) Eğer önceden oluşturduğunuz bir template var ise o şıkkı işaretlemek yeterli işaretleyip template dosyasını seçmek yeterli. Bu konuya ileride degineceğiz.
Önce domainin ismini yazıyoruz. Burada önemli olan isminin anlaşılabilir olması çünkü domainler çoğaldıkça hangi program hangi domainde çalışıyor bulmak zaman alabilir. Domain path için default olarak weblogic altındaki user_projects klasörünü gösteriyor ki bu da yeterli.
4. Configure Administrator User Name and Password
Weblogic Admin kullanıcısı ve şifresini tanımlama ekranı güvenlik için farklı bir isim düşünülebilir ancak development ortamı için weblogic yeterli. Sifre en az 1 numerik içeren ve en az 8 alfanumerik karakterden oluşmalı
Sunucunun başlangıç modu ve buna bağlı olarak Java Development Kit'i seçiyoruz, development mode için java sun jdk tavsiye edilirken güvenlik daha düşük olduğundan sunucu açılırken kullanıcı adı ve şifre sorulmaz. Production modu için Jrockit tavsiye edilirken açılışta kullanıcı adı ve şifre gerekiyor, en azından ilk açılış için. Biz development mode ile devam ediyoruz.
Her ne kadar özellikle development ortamı için sadece Admin Server kurup geliştirme ve testleri yapmak mümkün olsa da managed server oluşturup her türlü deployment ve tanımlamaların yapılması tavsiye ediliyor. Biz de bu şekilde devam ediyoruz
7. Configure Admin Server
Admin Server'ın portunu, SSL kullanıp kullanmayacağını kullanacaksa hangi porttan olacağını seçiyoruz. Bunlar daha sonra da rahatlıkla değiştirilebilinir.
8. Configure Managed Server
Bir önceki basamakta Admin server için yaptığımız ayarlar bu sefer Manager server(lar) için yapıyoruz.
Bir önceki basamakta Admin server için yaptığımız ayarlar bu sefer Manager server(lar) için yapıyoruz.
9. Configure Clusters
Eğer Cluster yapısı oluştumak istenirse ayarlar burada yapılıyor. Biz development ortamı için cluster olmadan devam ediyoruz. Ancak Production ortamında eğer lisans müsade ediyorsa çok yararlı olabilir.
10.Configure Machines
Managed server(lar) oluşturduğumuza göre bunları node manager yardımı ile yönetmek için Makine oluşturmakta fayda var, sunucun türüne göre windows veya unix seçilmeli ve ona gore ayarları giriyoruz.
11. Assign Servers to machine Managed server(lar) oluşturduğumuza göre bunları node manager yardımı ile yönetmek için Makine oluşturmakta fayda var, sunucun türüne göre windows veya unix seçilmeli ve ona gore ayarları giriyoruz.
Oluşturulan sunucuları bir önceki basamakta oluşturduğumuz makinaya bağlıyoruz
Son basamakta şu ana kadar yaptıklarımızı kontrol edip create tuşuna basıyoruz.
13. Creating Domain
Domain oluşturma sona erdiğinde yapılan işlemlerinde olduğu ekran geliyor. İstenirse admin server check box'a basılarak done tuşuna basıldıktan sonra çalıştırılabilir.
Etiketler:
Administration,
Domain,
Oracle,
Weblogic,
WLST
5 Şubat 2012 Pazar
Jdeveloper ve Webservice-III (Web Service Proxy)
Jdeveloper ve webservis serimizde son olarak Jdeveloperdan webservis (ws) proxy kullanarak ws çağırma konusunu eğileceğiz.
Her zaman oldugu gibi yeni bir application açıp web servise teknolojileri olan bir proje yaratiyoruz
1. projenin üzerinde farinin sağ tuşuna basıp
New-> Business Tier -> Web Service -> WebService proxy seçilir
ya da
Application Server Navigator -> Web Services -> javaOracleStatementwsPort
2. welcome sayfası geçildikten sonra bir önceki yarattığımız ws'i çağıracağımız için JAX-WS style'ı seçiyoruz
3. Çağıracağımız ws'nin WSDL dosyasını tanıtıyoruz
bu noktadan isterseniz default değerleri seçip devam edebilirsiniz ya da 4. ekranda paket isimlerini
belirleyip 6. ekranda Asynchronous method uyarattırmayıp, 7. ekranda güvenlik politikalarını kendi
ihtiyaçlarınıza göre düzenleyebilirsiniz.
Artık ws'i çağıracağımız proxy servisi hazır. Onu test etmek için ben ayrı bir sınıf oluşturdum
package callws;
import jawatows.JavaOracleStatementws;
import jawatows.JavaOracleStatementwsService;
public class invokeWS {
public invokeWS() {
super();
}
JavaOracleStatementwsService javaOracleStatementwsService;
public String invokeJavaOraclews(int empno)
{
javaOracleStatementwsService = new JavaOracleStatementwsService();
JavaOracleStatementws javaOracleStatementws = javaOracleStatementwsService.getJavaOracleStatementwsPort();
String result=javaOracleStatementws.getEmployeeDepartment(empno);
return result;
}
public static void main (String args[]){
invokeWS iws= new invokeWS();
String res=iws.invokeJavaOraclews(200);
System.out.println("res:"+res);
}
}
Her zaman oldugu gibi yeni bir application açıp web servise teknolojileri olan bir proje yaratiyoruz
1. projenin üzerinde farinin sağ tuşuna basıp
New-> Business Tier -> Web Service -> WebService proxy seçilir
ya da
Application Server Navigator -> Web Services -> javaOracleStatementwsPort
2. welcome sayfası geçildikten sonra bir önceki yarattığımız ws'i çağıracağımız için JAX-WS style'ı seçiyoruz
3. Çağıracağımız ws'nin WSDL dosyasını tanıtıyoruz
bu noktadan isterseniz default değerleri seçip devam edebilirsiniz ya da 4. ekranda paket isimlerini
belirleyip 6. ekranda Asynchronous method uyarattırmayıp, 7. ekranda güvenlik politikalarını kendi
ihtiyaçlarınıza göre düzenleyebilirsiniz.
Artık ws'i çağıracağımız proxy servisi hazır. Onu test etmek için ben ayrı bir sınıf oluşturdum
package callws;
import jawatows.JavaOracleStatementws;
import jawatows.JavaOracleStatementwsService;
public class invokeWS {
public invokeWS() {
super();
}
JavaOracleStatementwsService javaOracleStatementwsService;
public String invokeJavaOraclews(int empno)
{
javaOracleStatementwsService = new JavaOracleStatementwsService();
JavaOracleStatementws javaOracleStatementws = javaOracleStatementwsService.getJavaOracleStatementwsPort();
String result=javaOracleStatementws.getEmployeeDepartment(empno);
return result;
}
public static void main (String args[]){
invokeWS iws= new invokeWS();
String res=iws.invokeJavaOraclews(200);
System.out.println("res:"+res);
}
}
Jdeveloper ile Webservice-II (Java)
Önceki yazimda PL/SQL kodundan direkt ws (Web Servis) yaratmanin ne kadar kolay oldugunu gördük. Ayni sekilde herhangi bir java sinifini da ws'e çevirmek gayet kolay. Bunun için
1. Önce Application'i
2. Sonra ve ws teknolojilerine sahip projemizi olusturuyoruz.
3. Webservise icin kullanacagimiz java sinifini olusturuyoruz,ws'e cevirmeden once test etmek icin main metodunu da olusturmakta fayda var. Asagida görüldügü gibi ilk örnekte oldugu gibi HR semasini kullaniyoruz
package jawatows;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JavaOracleStatementws {
public JavaOracleStatementws() {
super();
}
public String getEmployeeDepartment(int empno){
String res ="";
int iCounter=0;
int deptid=0;
String deptname="";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:XE";
Connection conn =
DriverManager.getConnection(url,"hr","hr");
Statement stmt = conn.createStatement();
ResultSet rset =
stmt.executeQuery("SELECT d.department_name dname\n" +
" FROM employees e, departments d\n" +
" WHERE e.department_id=d.department_id\n" +
" AND e.employee_id="+ empno +
" AND rownum=1");
while (rset.next()) {
deptname = rset.getString(1);
}
stmt.close();
conn.close();
} catch (Exception e){
System.out.print("exception handled"+e);
}
return deptname;
}
public static void main (String args[]){
JavaOracleStatementws jw= new JavaOracleStatementws();
String res=jw.getEmployeeDepartment(200);
System.out.println("result: "+res);
}
}
test etmeden once oracle'in classes12.jar sinifinin classpath'inizde olup olmadigindan emin olun eger degilse
Application -> project properties Libraries and Classpath'ten ister klasoru ister jar dosyasini projeye ekleyebilisiniz.
bu işlemden sonra sınıfı çalıştırarak test ettik ve cevap dönünce ws'e çevirmek için hazırız.
4. ws'e çevirmek için sınıfın üzerinde sağ tuşa bastıktıktan sonra Create Web Servisi seçmek yeterli
Açılan sihirbazda 2. adımda Java EE 1.5, with support for JAX-WS Annotions seçeneğini işaretleyip Next'e basıyoruz 3.4 ve adımlardaki ws ismi port ismi soap binding seçeneklerini default değerlede bırakıyoruz
5. Bu adımda ws'de kullanılacak metodu seçiyoruz, bizim örneğimizde sadece bir tane var o da getEmployeeDepartment
Bu adımdan sonra özel ayarlamalarınız, güvenlik vs yok ise direkt olarak finish'e basabilirsiniz
Solda Jdeveloper projesi artık web tabanlı olduğu için Web Content altında WEB-INF klasörü ve onun altında web.xml dosyasını olusturdu ayrıca sınıfın iconu webservice olarak değişti
test etmeden once Integrated weblogic'in acik oldugundan emin olmak gerekiyor, eger degilse run -> start server instance(integratedWebLogicServer)'dan acilabilir
6. test etmek icin sınıfın üzerinde sağ tuşa bastıktıktan sonra Test Web Servisi seçtikten sonra
Target seçimi soruyor, application yada WLS secilebilir ben WLS sectim ve Integrated Web Logicde deploy edildikten sonra,
7. http analyzer sayfası açılıyor burada arg0'a istediğiniz degeri girip send request'e basarak test edebilirsiniz.
8. Ayrıca webservisi integrated veya herhangi bir sunucuya deploy edip burada test edebilirsiniz.
Bunun icin ya application war dosyası oluştururak yada herhangi bir sunucuya Jdeveloper'dan baglanarak yapabilirsiniz, ben direkt integrated weblogic'e deploy ettim, asağıda application server navigatorda görebilirsiniz.
Daha sonra integrated weblogic'e http://localhost:7101/console adresinden weblogic/weblogic1 (onceki versiyonlarda sifre welcome1 olmali) ile giris yaptiktan sonra deploymentlarda
aplikasyonu secerek bagli oldugu webservisin üzerine tıklayarak açılan test sayfasında test edebilirim.
Bütün bunlardan sonra en başa dönersek dikkat ettiyseniz java sınıfında önceki örnekte yarattığımız veritabanı paketini kullanmadık, ama kullanmak isteseydik aşağıdaki paketi kullanarak diğer tüm basamakları uygularsak aynı sonuca ulaşırız
package jawatows;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
public class JavaOracleCallablews {
public JavaOracleCallablews() {
super();
}
public String getEmployeeDepartment(int empno){
String res ="";
int iCounter=0;
int deptid=0;
String deptname="";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:XE";
Connection conn = DriverManager.getConnection(url,"hr","hr");
String call = "{ ? = call pkg_EmployeeInformation.get_EmployeeDepartment(?) }";
CallableStatement cstmt = conn.prepareCall(call);
cstmt.setQueryTimeout(1800);
cstmt.registerOutParameter(1, Types.VARCHAR);
cstmt.setInt(2, empno);
cstmt.executeUpdate();
deptname = cstmt.getString(1);
cstmt.close();
conn.close();
} catch (Exception e){
System.out.print("exception handled"+e);
}
return deptname;
}
public static void main (String args[]){
JavaOracleCallablews jw= new JavaOracleCallablews();
String res=jw.getEmployeeDepartment(200);
System.out.println("result: "+res);
}
}
1. Önce Application'i
3. Webservise icin kullanacagimiz java sinifini olusturuyoruz,ws'e cevirmeden once test etmek icin main metodunu da olusturmakta fayda var. Asagida görüldügü gibi ilk örnekte oldugu gibi HR semasini kullaniyoruz
package jawatows;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JavaOracleStatementws {
public JavaOracleStatementws() {
super();
}
public String getEmployeeDepartment(int empno){
String res ="";
int iCounter=0;
int deptid=0;
String deptname="";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:XE";
Connection conn =
DriverManager.getConnection(url,"hr","hr");
Statement stmt = conn.createStatement();
ResultSet rset =
stmt.executeQuery("SELECT d.department_name dname\n" +
" FROM employees e, departments d\n" +
" WHERE e.department_id=d.department_id\n" +
" AND e.employee_id="+ empno +
" AND rownum=1");
while (rset.next()) {
deptname = rset.getString(1);
}
stmt.close();
conn.close();
} catch (Exception e){
System.out.print("exception handled"+e);
}
return deptname;
}
public static void main (String args[]){
JavaOracleStatementws jw= new JavaOracleStatementws();
String res=jw.getEmployeeDepartment(200);
System.out.println("result: "+res);
}
}
test etmeden once oracle'in classes12.jar sinifinin classpath'inizde olup olmadigindan emin olun eger degilse
Application -> project properties Libraries and Classpath'ten ister klasoru ister jar dosyasini projeye ekleyebilisiniz.
bu işlemden sonra sınıfı çalıştırarak test ettik ve cevap dönünce ws'e çevirmek için hazırız.
4. ws'e çevirmek için sınıfın üzerinde sağ tuşa bastıktıktan sonra Create Web Servisi seçmek yeterli
Açılan sihirbazda 2. adımda Java EE 1.5, with support for JAX-WS Annotions seçeneğini işaretleyip Next'e basıyoruz 3.4 ve adımlardaki ws ismi port ismi soap binding seçeneklerini default değerlede bırakıyoruz
5. Bu adımda ws'de kullanılacak metodu seçiyoruz, bizim örneğimizde sadece bir tane var o da getEmployeeDepartment
Bu adımdan sonra özel ayarlamalarınız, güvenlik vs yok ise direkt olarak finish'e basabilirsiniz
Solda Jdeveloper projesi artık web tabanlı olduğu için Web Content altında WEB-INF klasörü ve onun altında web.xml dosyasını olusturdu ayrıca sınıfın iconu webservice olarak değişti
test etmeden once Integrated weblogic'in acik oldugundan emin olmak gerekiyor, eger degilse run -> start server instance(integratedWebLogicServer)'dan acilabilir
6. test etmek icin sınıfın üzerinde sağ tuşa bastıktıktan sonra Test Web Servisi seçtikten sonra
Target seçimi soruyor, application yada WLS secilebilir ben WLS sectim ve Integrated Web Logicde deploy edildikten sonra,
7. http analyzer sayfası açılıyor burada arg0'a istediğiniz degeri girip send request'e basarak test edebilirsiniz.
8. Ayrıca webservisi integrated veya herhangi bir sunucuya deploy edip burada test edebilirsiniz.
Bunun icin ya application war dosyası oluştururak yada herhangi bir sunucuya Jdeveloper'dan baglanarak yapabilirsiniz, ben direkt integrated weblogic'e deploy ettim, asağıda application server navigatorda görebilirsiniz.
aplikasyonu secerek bagli oldugu webservisin üzerine tıklayarak açılan test sayfasında test edebilirim.
Bütün bunlardan sonra en başa dönersek dikkat ettiyseniz java sınıfında önceki örnekte yarattığımız veritabanı paketini kullanmadık, ama kullanmak isteseydik aşağıdaki paketi kullanarak diğer tüm basamakları uygularsak aynı sonuca ulaşırız
package jawatows;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
public class JavaOracleCallablews {
public JavaOracleCallablews() {
super();
}
public String getEmployeeDepartment(int empno){
String res ="";
int iCounter=0;
int deptid=0;
String deptname="";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:XE";
Connection conn = DriverManager.getConnection(url,"hr","hr");
String call = "{ ? = call pkg_EmployeeInformation.get_EmployeeDepartment(?) }";
CallableStatement cstmt = conn.prepareCall(call);
cstmt.setQueryTimeout(1800);
cstmt.registerOutParameter(1, Types.VARCHAR);
cstmt.setInt(2, empno);
cstmt.executeUpdate();
deptname = cstmt.getString(1);
cstmt.close();
conn.close();
} catch (Exception e){
System.out.print("exception handled"+e);
}
return deptname;
}
public static void main (String args[]){
JavaOracleCallablews jw= new JavaOracleCallablews();
String res=jw.getEmployeeDepartment(200);
System.out.println("result: "+res);
}
}
Etiketler:
Java,
JAX-WS,
JDeveloper,
Weblogic,
Webservice
18 Ocak 2012 Çarşamba
Jdeveloper ile WebService-I (PL/SQL)
Şirket birleşmeleri, 3. parti yazılımların entegrasyonu derken Webservisler artık çok sık kullanılıyor. Özellikle SOA yapısında ağırlığı olan bu sistem Oracle Jdeveloper'ın geliştirme ortamı ile de çok kolay geliştirilebiliyor. Bir seri olarak düşündüğüm bu konuda ilk olarak en kolaya kaçıp PL/SQL paketlerinde webservice oluşturma konusuna değinceğim.
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.
Artı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.
Hemen test edebiliriz WsHrTest'in üzerinde sağ tuşa basarak Test Web Service'i seçtiğimizde eğer integrated server açılmadıysa önce onu açacaktır. Daha sonra HTTP Analyzer penceresi açılacak. Solda request employee id alanına örneğin 100 girip Send Request'e bastığınızda sağda Executive olarak cevabın geldiğini göreceksiniz
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;
/
-----------------------------------------------------------------------------------------------------------------------
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;
/
-----------------------------------------------------------------------------------------------------------------------
Kaydol:
Yorumlar (Atom)





















