© Yasin Hasan Karanfil (2007)
Netbeans 6.0 tüm geliştirme ortamlarını tek bir paket içinde toplayan bir sürüm yayınladı. Resmi yardım dokümanlarında J2ME platformundan web servislerine erişmek için iki yoldan bahsediliyor.
Netbeans web servislerine erişmek için iki katmanlı veya üç katmanlı istemcilerini otomatik olarak geliştirme yeteneğine sahiptir.
Java ME Web Service Client wizard
JSR-172 spesifikasyonuna göre iki katmanlı istemci geliştirmek için bu sihirbazı kullanabilirsiniz.
Fakat bunu çalıştırabilmek için mutlaka JSR – 172 destekli emulator ve cihazlara ihtiyaç duyacaksınız.
Mobile Client to Web Application Generator
JSR – 172 desteklemeyen cihazlarda kullanmak üzere üç katmanlı mobil web servis istemcisi oluşturur. Bu sihirbaz web servis istemcisi içeren bir web uygulamasına bağlanmak üzere bir servlet oluşturur.
Bu sihirbazı kullanmadan önce web servis istemcisi içeren bir web uygulamasına sahip olduğunuzdan emin olunuz.
Üç Katmanlı Mobil Web Servisleri Oluşturmak
The Mobile Client to Web Application Generator ile MIDP istemci, servlet ve MIDlet ile web servisi konuşturmaya yarayacak dosyalar oluşturacaktır.
İstemci ve oluşturulan orta katman servlet özel bir protokolle haberleşir. Servlet ve sunucu ise SOAP protokolü ile haberleşir.
The Mobile Client to Web Application Generator şunları oluşturur.
- JAVA ME istemci sınıfı
- Bir servlet ve diğer sınıfler
- Web Servis bilgilerinin tutulduğu bir XMl dosyası
Yeni bir mobil uygulama oluşturduktan sonra projeye sağ tıklayıp add new file kısmından MIDP bölümünden Mobile Client to Web Application kısmını seçin.
Daha sonra servletin ekleneceği Web Application’ı seçin. Yalnız bu Web Application mutlaka bir web servis istemcisine sahip olmalıdır.
Oluşturulacak servlet için bir isim girin. Mobil istemcinin Web Uygulamasında metodlar yoluyla mı yada web servis istemcisiyle mi bağlanacağını seçin.
Sonraki kısımda ise metod seçmişseniz metodlar, servis seçmişseniz servisler listelenecektir. Buradan kullanmak istediğiniz kısımları seçin.
Daha sonraki kısımda Generate stubs ile aktarılan her bir servis için istemci metodları oluşturulur.
Allow floating point kısmını seçerek float ve double veri tiplerine izin verebilirsiniz.
Finish tuşuna basarak işlemleri tamamlayın.
Server uygulamasını build ve deploy edin. Çünkü gerekli dosyalar server uygulaması içinde oluşturuldu.
Server uygulaması deploy edildikten sonra artık mobil uygulaması ile web servisine artık erişebilirsiniz.
Fakat şunlara mutlaka dikkat etmelisiniz.
Her bir WSDL dosyası için bir istemci desteklenmektedir. Daha fazla istemci oluşturabilir ya da birleşik bir servis oluşturup Mobile Client to Web Application Generator ile erişebilirsiniz.
Özel veri tipleri enumeration gibi ve diğer WS – I uyumlu olmayan veri tipleri için wrapper sınıfı oluşturulur ve bunun üzerinden Mobile Client to Web Application erişimi sağlar.
Secure (Güvenli) URL’ler firewall arkasındaysa ve özel Proxy ayarları gerektiriyorsa henüz Mobile Client to Web Application Generator tarafından desteklenmemektedir. Bunun için WSDL dosyasını kendiniz indirmelisiniz.
Web Servislerini oluşturabilmeniz için JDK 1.5 gereklidir. Eğer JDK 1.5’e sahip değilseniz veya JDK 1.4 ile limitli iseniz Tools -> Update Center kısmından gerekli modülleri indirebilirsiniz.
JAVA ME Web Services (JSR – 172) istemcisi oluşturmak
JSR 172 destekli cihazlarda çalıştırmak üzere iki katmanlı web servisi istemcileri oluşturmanız mümkündür. Bu istemci SOAP Protokolünü kullanarak direkt olarak web servisi ile konuşabilir.
Öncelikle JSR – 172 destekli bir cihaz veya emülatör sahibi olmanız beklenmektedir. Ayrıca WS – I uyumlu, bilgisayarınızda bulunan veya internet üzerinden erişilebilen bir WSDL dosyasına sahip olmalısınız.
Yeni bir mobil uygulama oluşturduktan sonra sağ tuş tıkla New File kısmından MIDP altından Java ME Web Service Client eklenir.
Daha sonra WSDL dosyası eklenir. WSDL dosyası ağda bir sunucuda ise adresi yazılır ve Retrieve WSDL ile dosya çekilir.
"WSDL file is not WS-I compliant as required by the specification," şeklinde bir hata alırsanız WSDL dosyasından istemci oluşturulamamış demektir. Bu durumda WSDL dosyasının stilini değiştirebilirsiniz. Diğer seçenek ise üç katmanlı istemci oluşturmaktır.
Bazı durumlarda CLDC 1.1 veri tiplerini CLDC 1.0 veri tiplerine dönüştürmeniz yani float ve double türündeki verileri string’e dönüştürmeniz gerekebilir. Bunun için “Convert floating point to String” seçeneğini işaretledikten sonra generate stubs tuşuna basın.
Otomatik oluşturulan dosyalar üzerinde değişiklik yapmamalısınız çünkü yeniden oluşturulduklarında yaptığınız değişiklikler kaybolacaktır.
Artık servisi kullanabilirsiniz. Fakat örneğin C:\Program Files\NetBeans 6.0\mobility8\WTK2.5.2\bin klasörü içindeki prefsw programından güvenlik ayarını maximum ayarlamak gerekir. Ayrıca projeyi deploy etmeden önce proje ayarları kısmından Application Descriptor kısmından API Permissions kısmından gerekli ayarları vermeniz gerekebilir.
Bu projede oluşturulan servis kolaylık açısından Microsoft Visual Studio ile oluşturulmuştur. Ve WSDL dosyasının URL adresi şu şekildedir.
http://localhost:1411/OrnekServis/Service.asmx?WSDL
Örneğin Microsoft Visual Studio ile oluşturduğunuz Service isimli bir servisten oluşturduğunuz servise şu şekilde ulaşabilirsiniz. service isimli package altında Service_Stub isimli bir java dosyası oluşturulduğunu görebilirsiniz.
public void commandAction(Command command, Displayable displayable) {
// write pre-action user code here
if (displayable == form) {
if (command == itemCommand) {
// write pre-action user code here
// write post-action user code here
service.Service_Stub srv = new service.Service_Stub();
try{
stringItem.setText(String.valueOf(srv.Topla(3, 5)));
}catch(Exception e){
stringItem.setText(e.getMessage());
}
}
}
// write post-action user code here
}
