24 Mayıs 2010 Pazartesi

Exception Handling with JAX-RPC

SOAP Web Serviste; fault’lar sunucu tarafından istemci tarafına SOAP Fault formlar olarak sunulmaktadır. SOAP Fault’lar faultCode, faultString ve tercihe bağlı olarak detaylardan mevcuttur.JAX-RPC spesifikasyonu Java Exception’larını SOAP Fault larla ilişkilendirmek için bazı kurallar tanımlamıştır. Sunucu tarafında Java Exception’larını SOAP fault’lara ve yine aynı şekilde istemci tarafında SOAP faultları Java Exception’larla eşleştirir. Sunucu tarafından fırlatılan 4 çeşit Exception vardır.

1. java.rmi.RemoteException

2. java.lang.RuntimeException

3. javax.xml.rpc.soap.SOAPFaultException

4. Kullanıcı tarafından tanımlanan Exception’lar.

RemoteException

JAX-RPC, Service Endpoint Interface (SEI) içinde tanımlanan metodların hepsi java.rmi.RemoteException’ı fırlatmaktadır.

RuntimeException

Sunucu tarafında JAX-RPC calışma zamanında Runtim

e Exception fırlatırsa (Örn:NullPointerException), fırlatılan exception istemci tarafında SOAP Fault olarak algılanır. İstemci SOAP Fault’ları RuntimeException ya da SOAPFaultException olarak yakalayabilir.

SOAPFaultException

SOAPFaultException, özel bir RuntimeException da diyebiliriz. SOAPFaultException RuntimeException’a göre daha tanımlayıcıdır. SOAPFaultException genelde JAX-RPC handler’ı tarafından kullanılmaktadır.

Kullanıcı Exception

Kullanıcı Exception’ları iyi bir programlama pratigidir. JAX-RPC dünyasında yazılım geliştiriciler wsdl:operation’ın içinde wsdl:faults tanımlamaya ihtiyaç duyarlar. wsdl:operation birden fazla wsdl:fault tanımlamaya izin verir bu da Java daki biden fazla exception fırlatmasına izin vermesine benziyor. Her bir wsdl:fault SEI’deki bir exception’ı tanımlar. WSDL örneği ve bununla eşleşen Java sınıfı aşağıdaki gibidir.



















http://www.ibm.com/developerworks/webservices/library/ws-tip-jaxrpc.html

23 Mayıs 2010 Pazar

Service Oriented Architecture (SOA) Kavramları

SOA’nın amacı tüm dünyada servisler arasında iletişim sağlamaktır. SOA yeni bir mimari değil. Eskilerde ORB ve COM spesifikayyonları ile kullanılıyordu. Bu kavramlar zamanla genişledi yerlerini başka teknolojilere bıraktılar ya da genişletildi. Dizayn ya da yazılım geliştiriciler SOA’yı implement ederken geniş bir teknoloji yelpazesi kulanabiliyorlar. Bu teknolojiler aşağıadaki gibidir.








1. SOAP, RPC

2. REST

3. DCOM

4. CORBA

5. Web Services

6. DDS

7. WCF

Kavramları sırası ile açıklayalım.

SOAP: Simple Object Access Protocol’un kısaltmasıdır. XML tabanlı uygulamalar arası veri transferini HTTP uzerinde yapılmasına imkan sağlayan bir protokol spesifikasyondur. OSI modelinde application layer katmanını kullanmaktadır. SOAP, OSI modelinde transfer için HTTP ve SMTP uygulama protokollerini kullanmaktadır. Transfer protokolü olarak HTTP firewall’den dolayı daha tercih edilir. DCOM gibi firewall tarafından filtrelenen protokollere göre avantaj sağlamaktadır. XML formatının genişliğinden dolayı CORBA gibi teknolojilere göre daha yavaştır. SOAP Mesajının elemanları:

1. Envelope (Tüm SOAP mesajını içerir)

2. Header (SOAP mesajının header kısmını oluşturur. )

3. Body(SOAP mesajının önemli bir bölümüdür. Metodun adı, parametrik bilgilerini XML formatında gösterildiği yerdir.)
















RPC : Remote Procedure Call, ağ üzerinde farklı adres alanlarındaki başka bir bilgisayardaki proseduru çağırmak için kullanılır. RPC Transport katmanının üzerinde implement edilmiş. Nesne yönelimli yazılım prensiplerine göre yazılmış bundan dolayı Remote Invocation da diyebiliriz. RPC sürecini özetlemek gerekirse:

1. İstemci , Istemci Stub’ına çağrıda bulunur. Bu yerel çağrıda bulunmadır, çağrı parametrelerle birlikte stack yapısına koyulur.

2. İstemci Stub parametrelerini mesaj haline dönüştürür ve sunucu tarafına çağrıda bulunur.

3. Istemci Stub oluşturulan mesajı Transport katmanına iletir ve mesaj karşı makineye iletilir.

4. Sunucu tarafında; mesaj Trasport katmanından Sunucu Stub’a iletilir.

5. Sunucu tarafındaki Stub ile gelen mesaj karşılanır ve Demarshall edilir.

6. Sonuç olarak Sunucu Stub’ı kendi tatafındaki ilgili procedure çağırır.

REST (Representational State Transfer) Rest standart veya spesifikasyon değildir, mimari sitilidir. Yeni bir teknoloji değil. Anlaşılması gereken önemli bir kavram var ki o da REST in HTTP metodlarını destekliyor olmasıdır. Çoğu browserler sadece PUT ve GET metodlarını desteklerken HTTP ayrıca PUT DELETE OPTIONS HEAD TRACE ve CONNECT metodlarıda var. Bu metodlar Restful Web servisi tarafından kullanılmaktadır.

DCOM (Distributed Component Object Model) : Ağdaki bilgisayarlar üzerindeki yazılım uygulamaları arasında iletişimi sağlayan Microsoft teknolojisidir. Microsoft’s COM’un genişletilmiş halidir. Eklentilerde:

1. Marshalling – Serializing ve Deserializing

2. Dağıtık Garbage Collection

DCOM, CORBA teknolojisinin en büyük rakibidir. İki teknolojinin de firewall üzerinden zorlukları mevcut.







CORBA (Common Object Request Broker Architecture), Object Management Group(OMG) tarafında tanımlanmış bir standart, farklı programlama dillerinde yazılmış yazılım bileşenlerinin ağ üzerindeki farklı makinelerde iletişimi sağlayan teknolojidir. Özellikle belirtmek gerekir ki birden fazla platformu destekliyor.









1. Programlama Dili Bağımsız

2. İşletim Sistemi Bağımsız

3. Kullanılan Teknoloji bağımsız

4. Geniş Veri Tipi (Örn : ANY)

5. Sıkıştırma (Verileri Binary formda tutuyor)

WCF (Windows Communication Foundation) .NET framework tarafından geliştirilen Servis tabanlı uygulamalarla iletişim sağlamak için kullanılan teknolojidir. Bu teknolojide de WSDL arayüzü üzerinde istemci sunucu ile iletişime geçmektedir.