SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Mustafa DEMİR & Mustafa DAŞGIN Spring Web Service
Biz Kimiz ? Mustafa DEMİR ODTÜ BilgisayarMühendisliğiBölümü - 2005  Spring teknolojileri, JSF ve Hibernate Çevik uygulama geliştirme, TDD, TasarımÖrüntüleri http://demirm.blogspot.com mustafademir@gmail.com Mustafa DAŞGIN HacettepeÜniversitesiBilgisayarMühendisliğiBölümü - 2006  Spring teknolojileri, JSF ve Hibernate Refactoring, TDD, TasarımÖrüntüleri “Ucundan Java” http://mdasgin.blogspot.com dasgin@gmail.com
İçerik Web Service Nedir ? WS GeliştirimYaklaşımları NedenAnlaşmaÖnce ? Neden Spring WS ? Spring WS Terimleri Spring WS Mimarisi ÖrnekUygulama (Sunucu-İstemci) Kaynakça Sorular
Web Service Nedir ? Birağüzerindenfarklıplatformlaramensupmakinelerinbirlikteçalışabilirliğinidestekleyecekşekildetasarlananyazılımsistemleri. Servisvebileşenlerin “tekrarkullanılabilirliği” Web Service vs. RPC/RMI XML
WS GeliştirimYaklaşımları WSDL (Web Services Description Language) XML Belgesi Data Contract (XML Schema) WS’ninKonumu WS’ninSunduğuHizmetler (Operasyonlar) AnlaşmaÖnce (Contract First) AnlaşmaSonra (Contract Last)
AnlaşmaÖnceYaklaşımı WSDL belgesibazalınır Sunucuveistemcibirbirindenbağımsızgerçekleştirilir.  Büyükprojeleriçinidealdir. WSDL, SOAP ve XSD ayrıntısınagirilir. Öğrenimveuygulamasüresiniuzatır. İşmantığıdışındakiayrıntılarladauğraştırır.
AnlaşmaSonraYaklaşımı Gerçekleştirimbazalınır WSDL , SOAP ve XSD ayrıntısınagirilmez. Öğrenimveuygulamasüresikısadır. Sadeceişmantığıylailgilenmenizisağlar. Sunucuveistemcigeliştirimibirbirinebağımlıdır. BüyükProjeleriçin ideal değildir.
NedenAnlaşmaÖnce ? O/X Mapping Sorunları DavranışFarklılıkları Java – Altsınıf XSD – Kısıtlamalar <simpleType name="AirportCode">  	<restriction base="string">  	<pattern value="[A-Z][A-Z][A-Z]"/>  </restriction> </simpleType>
NedenAnlaşmaÖnce ? Desteklenmeyenveritipleri Java – java.util.TreeMap .Net – System.Collections.Hashtable XML – date tipi: 2007-04-04 Java Date ve Calendar sınıfı: 2007-04-04T00:00:00 <element name="GetFlightsRequest"> <complexType> <all> <element name="departureDate" type="date"/> <element name="from" type="string"/> <element name="to" type="string"/> </all> </complexType> </element>
NedenAnlaşmaÖnce ? Döngüsel İlişkiler public class Flight {  private String number;  private List<Passenger> passengers; }  public class Passenger {  private String name;  private Flight flight; } <flight number="KL1117"> <passengers> <passenger>  <name>ArjenPoutsma</name> <flight number="KL1117"> <passengers>  <passenger> <name>ArjenPoutsma</name> ...
NedenAnlaşmaÖnce ? Kırılganlık Anlaşma sonra yaklaşım ile anlaşmanın uzun süre sabit kalma garantisi yoktur. Kod değiştikçe anlaşma da değişir. Kullanılan Web Service mimarisinde değişikliğe gidilmesi üretilen anlaşmayı da değiştirir. Sunucu kodundan kaynaklı anlaşma değişikliği her defasında istemci kodlarının da değişikliğini gerektirir. Anlaşmanın yararlı olması için uzun süre sabit kalması gerekir.
NedenAnlaşmaÖnce ? Performans Anlaşma sonra yaklaşımda karşıya neyin gönderileceği belli değildir. Nesnenin ilişkili olduğu bir çok nesne XML’e dönüştürülüp gönderilebilir ve bu esnada performans ve cevap süreleri etkilenir. Anlaşmanın belli olduğu durumda XML’de neyin karşıya gönderileceği açıkça bellidir. Tekrar Kullanılabilirlik XSD bilgisini ayrı bir dosyada tanımlayarak tekrar kullanılabilirliğini sağlanabilir.
Neden Spring WS ? Anlaşma önce yaklaşımın eksikliklerini kapatır. WSDL  ve SOA ayrıntılarıyla uğraştırmaz. Sadece XSD şeması Öğrenim ve uygulama süresi çok kısadır Spring mantığını bilen geliştiriciler için. İş mantığı dışındaki ayrıntıların çoğunu üstlenir. Anlaşma ve gerçekleştirim arasındaki bağımlılığı azaltır.
Neden Spring WS ? Gelen XML mesajı, içeriğine göre herhangi bir nesneye mapping yapılabilir. XML mesajı çeşitli XML API’leri kullanılarak işlenebilir. (DOM, SAX, StAX, JDOM, dom4j, XOM) O/X Mapping modülü sayesinde çeşitli çatılar ile uyumlu çalışır. (JAXB 1 ve 2, Castor, XMLBeans, JiBX, and XStream) SOAP mesajlarının şifrelenmesi için WS-Security desteği sağlar. Spring Security(Acegi Security) ile bütünleşik çalışabilir böylece varsa Acegi ayarları SOAP servisleri için kullanılabilir.
İçerik Web Service Nedir ? WS GeliştirimYaklaşımları NedenAnlaşmaÖnce ? Neden Spring WS ? Spring WS Terimleri Spring WS Mimarisi ÖrnekUygulama (Sunucu-İstemci) Kaynakça Sorular
Spring WS Terimleri WebServiceMessage Platform bağımsız XML mesajlarını ifade eder. Web mesajlarındaki payload kısmına erişimi sağlar SoapMessage SOAP için gerekli operasyonları içeren arayüzdür. SOAP Envelope SOAP Action SOAP Header etc..
Spring WS Terimleri MessageFactory Sınıfları Web servis mesajları oluşturmayı sağlarlar. Farklı kaynaklardan (input streams) web servis mesajları oluşturmaya yardımcı olurlar. Gerçekleştirimleri: SaajSoapMessageFactory (SOAP with Attachments API for Java) JEE 1.4 ün parçası– uygulama sunucuları tarafından en çok desteklenen tür DOM API sini kullanır – SOAP mesajları bellekte tutulur. Büyük mesajlar için performanslı değildir.
Spring WS Terimleri MessageFactory Sınıfları AxiomSoapMessageFactory Axis 2 Object Model kullanır. STAX (Streaming API for XML) üzerine kuruludur. Büyük mesajlar için uygundur.
Veri Alış-Verişi HTTP Transport Yaygın şekilde kullanılmakta Servlet aracılığı ile yapılmakta <web-app>  <servlet>         <servlet-name>spring-ws</servlet-name>     <servlet-class>      org.springframework.ws.transport.http.MessageDispatcherServlet    </servlet-class>     <load-on-startup>1</load-on-startup>   </servlet>   <servlet-mapping>     <servlet-name>spring-ws</servlet-name>     <url-pattern>/*</url-pattern>   </servlet-mapping>  </web-app>
Veri Alış-Verişi HTTP Transport ... Otomatik WSDL Üretimi WsdlDefinition bean tanımları taranır. Bean id si ile dışarı açılır (expose) <bean id="orders" class="org.springframework.ws.wsdl.wsdl11.SimpleWsdl11Definition">        <constructor-arg value="/WEB-INF/wsdl/Orders.wsdl"/>  </bean> http://localhost:8080/spring-ws/orders.wsdl
Veri Alış-Verişi Spring MVC - DispatcherServlet JMS Transport Email Transport Embedded HTTP Server Transport Örnek uygulama da kullanılacak.
Spring WS Mimarisi
Spring WS Mimarisi 	    Sequence Diagram  Spring Referans dokümanından alınmıştır.
Endpoints Web servismesajlarının iletildiği noktalardır. İş katmanıile web servisarasındakiiletişimisağlar İş mantığı sonrası web servis cevabı oluşturulur ve dönülür. PayloadEndpoint arayüzünden gerçekleştirilir. public interface PayloadEndpoint {  /** * Invokes an operation. */ Source invoke(Source request) throws Exception;  }
Endpoints ... MessageEndpoint Arayüzü Mesajlar dışında message context e de ihtiyaç duyulması SOAP Header eklemek Mesaj içerisinden attachment almak vs.. Endpoint interceptor ler kullanılarak da yapılabilir.
Endpoints ... AbstractDomPayloadEndpoint W3C DOM API kullanılır. AbstractJDomPayloadEndpoint – JDOM API AbstractXomPayloadEndpoint – XOM API package sunum;  public class SampleEndpoint extends AbstractDomPayloadEndpoint {     protected Element invokeInternal(Element requestElement,  Document document) throws Exception { 	String requestText = requestElement.getTextContent();  	System.out.println("Request text: " + requestText);  	Element responseElement = document.createElementNS("http://samples", "response"); 	 	responseElement.setTextContent(“someResponseText");  	return responseElement;          }  }
Endpoints ... AbstractMarshallingPayloadEndpoint Java nesnelerine çevrilmiş xml mesajları kullanılır. package sunum;  public class MarshallingOrderEndpoint extends AbstractMarshallingPayloadEndpoint{  	protected Object invokeInternal(Object request) throws Exception {  		//do some job 	}  }
Endpoints ... Annotated Endpoints @Endpoint annotation ile kullanılır. Tek endpoint sınıfında birden fazla istem ele alınabilir. @PayloadRoot annotation ı ile sağlanır. package sunum;  @Endpoint public class AnnotationOrderEndpoint {  @PayloadRoot(localPart = "orderRequest", namespace = "http://samples")  	public Order getOrder(OrderRequest orderRequest) {  		// get order 	}  @PayloadRoot(localPart = "order", namespace = "http://samples")  	public void order(Order order) {  		// Create some order 	} }
Endpoint Mappings 	Gelen mesajların Endpoint lere iletilmesini sağlar. PayloadRootQNameEndpointMapping Gelen XML mesajlarına göre yapılır. <?xml version="1.0" encoding="UTF-8"?> <orderRequestxmlns="http://samples">     </orderRequest> <bean id="endpointMapping"        class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping">        <property name="mappings">  	<props>  	     <prop key="{http://samples}orderRequest">getOrderEndpoint</prop>  	</props>       </property>  </bean> <bean id="getOrderEndpoint" class=“somepackage.GetOrderEndPoint" />
Endpoint Mappings ... SoapActionEndpointMapping SOAP Action header a göre yapılır. MethodEndpointMapping(@EndPoint) PayloadRootAnnotationMethodEndpointMapping  (@PayloadRoot) Gelen XML mesajı SoapActionAnnotationMethodEndpointMapping	 (@SoapAction) SOAP Action Header
İçerik Web Service Nedir ? WS GeliştirimYaklaşımları NedenAnlaşmaÖnce ? Neden Spring WS ? Spring WS Terimleri Spring WS Mimarisi ÖrnekUygulama (Sunucu-İstemci) Kaynakça Sorular
ÖrnekUygulama Data Contract Hazırlanması (XML Şema) Sunucu Geliştirimi Annotation tabanlı WSDL Üretilmesi İstemci Geliştirimi
Spring WS Mimarisi
Kaynakça Spring Web Services Project Page http://static.springsource.org/spring-ws/sites/1.5/ http://static.springsource.org/spring-ws/sites/1.5/reference/html/index.html SOA: Principles of Service Design Thomas Erl, Prentice Hall
 Teşekkürler Sorular..

Weitere ähnliche Inhalte

Ähnlich wie Spring Web Service

WEB SERVİCE
WEB SERVİCE WEB SERVİCE
WEB SERVİCE AliMETN
 
Windows Server App Fabric Introduction
Windows Server App Fabric IntroductionWindows Server App Fabric Introduction
Windows Server App Fabric IntroductionBurak Selim Senyurt
 
Node js part 1 shared
Node js part 1 sharedNode js part 1 shared
Node js part 1 sharedEngin Yelgen
 
Microsoft Azure 08.2014
Microsoft Azure 08.2014Microsoft Azure 08.2014
Microsoft Azure 08.2014Mustafa Kuğu
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008mtcakmak
 
Hürriyet BBS - Tornado (Python Web Framework)
Hürriyet BBS - Tornado (Python Web Framework)Hürriyet BBS - Tornado (Python Web Framework)
Hürriyet BBS - Tornado (Python Web Framework)Selçuk Usta
 
ASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişSinan Bozkuş
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21Cihan Özhan
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciSinan Bozkuş
 
Introduction to Amazon Web Services
Introduction to Amazon Web ServicesIntroduction to Amazon Web Services
Introduction to Amazon Web ServicesAnkaraCloud
 
Dogus University-Web Application Security
Dogus University-Web Application SecurityDogus University-Web Application Security
Dogus University-Web Application Securitymtimur
 
Volkan Gul Ali Kusmus Osman Marangoz Service Oriented Architecture2
Volkan Gul   Ali Kusmus   Osman Marangoz   Service Oriented Architecture2Volkan Gul   Ali Kusmus   Osman Marangoz   Service Oriented Architecture2
Volkan Gul Ali Kusmus Osman Marangoz Service Oriented Architecture2Fatih Çengel
 
Spring framework egitimi ders 1. genel bir bakis
Spring framework egitimi   ders 1. genel bir bakisSpring framework egitimi   ders 1. genel bir bakis
Spring framework egitimi ders 1. genel bir bakisBaris Dere
 

Ähnlich wie Spring Web Service (20)

Flex blaze ds
Flex blaze dsFlex blaze ds
Flex blaze ds
 
WEB SERVİCE
WEB SERVİCE WEB SERVİCE
WEB SERVİCE
 
Primeface
PrimefacePrimeface
Primeface
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Windows Server App Fabric Introduction
Windows Server App Fabric IntroductionWindows Server App Fabric Introduction
Windows Server App Fabric Introduction
 
Node js part 1 shared
Node js part 1 sharedNode js part 1 shared
Node js part 1 shared
 
Microsoft Azure 08.2014
Microsoft Azure 08.2014Microsoft Azure 08.2014
Microsoft Azure 08.2014
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
 
Hürriyet BBS - Tornado (Python Web Framework)
Hürriyet BBS - Tornado (Python Web Framework)Hürriyet BBS - Tornado (Python Web Framework)
Hürriyet BBS - Tornado (Python Web Framework)
 
ASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a Geçiş
 
sunu (Asp.net -1)
sunu (Asp.net -1)sunu (Asp.net -1)
sunu (Asp.net -1)
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
 
Node js giriş (intro)
Node js giriş (intro)Node js giriş (intro)
Node js giriş (intro)
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
 
Introduction to Amazon Web Services
Introduction to Amazon Web ServicesIntroduction to Amazon Web Services
Introduction to Amazon Web Services
 
IBM Lotusphere İsdemir Portal
IBM Lotusphere İsdemir PortalIBM Lotusphere İsdemir Portal
IBM Lotusphere İsdemir Portal
 
Asp.net ajax
Asp.net ajaxAsp.net ajax
Asp.net ajax
 
Dogus University-Web Application Security
Dogus University-Web Application SecurityDogus University-Web Application Security
Dogus University-Web Application Security
 
Volkan Gul Ali Kusmus Osman Marangoz Service Oriented Architecture2
Volkan Gul   Ali Kusmus   Osman Marangoz   Service Oriented Architecture2Volkan Gul   Ali Kusmus   Osman Marangoz   Service Oriented Architecture2
Volkan Gul Ali Kusmus Osman Marangoz Service Oriented Architecture2
 
Spring framework egitimi ders 1. genel bir bakis
Spring framework egitimi   ders 1. genel bir bakisSpring framework egitimi   ders 1. genel bir bakis
Spring framework egitimi ders 1. genel bir bakis
 

Spring Web Service

  • 1. Mustafa DEMİR & Mustafa DAŞGIN Spring Web Service
  • 2. Biz Kimiz ? Mustafa DEMİR ODTÜ BilgisayarMühendisliğiBölümü - 2005 Spring teknolojileri, JSF ve Hibernate Çevik uygulama geliştirme, TDD, TasarımÖrüntüleri http://demirm.blogspot.com mustafademir@gmail.com Mustafa DAŞGIN HacettepeÜniversitesiBilgisayarMühendisliğiBölümü - 2006 Spring teknolojileri, JSF ve Hibernate Refactoring, TDD, TasarımÖrüntüleri “Ucundan Java” http://mdasgin.blogspot.com dasgin@gmail.com
  • 3. İçerik Web Service Nedir ? WS GeliştirimYaklaşımları NedenAnlaşmaÖnce ? Neden Spring WS ? Spring WS Terimleri Spring WS Mimarisi ÖrnekUygulama (Sunucu-İstemci) Kaynakça Sorular
  • 4. Web Service Nedir ? Birağüzerindenfarklıplatformlaramensupmakinelerinbirlikteçalışabilirliğinidestekleyecekşekildetasarlananyazılımsistemleri. Servisvebileşenlerin “tekrarkullanılabilirliği” Web Service vs. RPC/RMI XML
  • 5. WS GeliştirimYaklaşımları WSDL (Web Services Description Language) XML Belgesi Data Contract (XML Schema) WS’ninKonumu WS’ninSunduğuHizmetler (Operasyonlar) AnlaşmaÖnce (Contract First) AnlaşmaSonra (Contract Last)
  • 6. AnlaşmaÖnceYaklaşımı WSDL belgesibazalınır Sunucuveistemcibirbirindenbağımsızgerçekleştirilir. Büyükprojeleriçinidealdir. WSDL, SOAP ve XSD ayrıntısınagirilir. Öğrenimveuygulamasüresiniuzatır. İşmantığıdışındakiayrıntılarladauğraştırır.
  • 7. AnlaşmaSonraYaklaşımı Gerçekleştirimbazalınır WSDL , SOAP ve XSD ayrıntısınagirilmez. Öğrenimveuygulamasüresikısadır. Sadeceişmantığıylailgilenmenizisağlar. Sunucuveistemcigeliştirimibirbirinebağımlıdır. BüyükProjeleriçin ideal değildir.
  • 8. NedenAnlaşmaÖnce ? O/X Mapping Sorunları DavranışFarklılıkları Java – Altsınıf XSD – Kısıtlamalar <simpleType name="AirportCode"> <restriction base="string"> <pattern value="[A-Z][A-Z][A-Z]"/> </restriction> </simpleType>
  • 9. NedenAnlaşmaÖnce ? Desteklenmeyenveritipleri Java – java.util.TreeMap .Net – System.Collections.Hashtable XML – date tipi: 2007-04-04 Java Date ve Calendar sınıfı: 2007-04-04T00:00:00 <element name="GetFlightsRequest"> <complexType> <all> <element name="departureDate" type="date"/> <element name="from" type="string"/> <element name="to" type="string"/> </all> </complexType> </element>
  • 10. NedenAnlaşmaÖnce ? Döngüsel İlişkiler public class Flight { private String number; private List<Passenger> passengers; } public class Passenger { private String name; private Flight flight; } <flight number="KL1117"> <passengers> <passenger> <name>ArjenPoutsma</name> <flight number="KL1117"> <passengers> <passenger> <name>ArjenPoutsma</name> ...
  • 11. NedenAnlaşmaÖnce ? Kırılganlık Anlaşma sonra yaklaşım ile anlaşmanın uzun süre sabit kalma garantisi yoktur. Kod değiştikçe anlaşma da değişir. Kullanılan Web Service mimarisinde değişikliğe gidilmesi üretilen anlaşmayı da değiştirir. Sunucu kodundan kaynaklı anlaşma değişikliği her defasında istemci kodlarının da değişikliğini gerektirir. Anlaşmanın yararlı olması için uzun süre sabit kalması gerekir.
  • 12. NedenAnlaşmaÖnce ? Performans Anlaşma sonra yaklaşımda karşıya neyin gönderileceği belli değildir. Nesnenin ilişkili olduğu bir çok nesne XML’e dönüştürülüp gönderilebilir ve bu esnada performans ve cevap süreleri etkilenir. Anlaşmanın belli olduğu durumda XML’de neyin karşıya gönderileceği açıkça bellidir. Tekrar Kullanılabilirlik XSD bilgisini ayrı bir dosyada tanımlayarak tekrar kullanılabilirliğini sağlanabilir.
  • 13. Neden Spring WS ? Anlaşma önce yaklaşımın eksikliklerini kapatır. WSDL ve SOA ayrıntılarıyla uğraştırmaz. Sadece XSD şeması Öğrenim ve uygulama süresi çok kısadır Spring mantığını bilen geliştiriciler için. İş mantığı dışındaki ayrıntıların çoğunu üstlenir. Anlaşma ve gerçekleştirim arasındaki bağımlılığı azaltır.
  • 14. Neden Spring WS ? Gelen XML mesajı, içeriğine göre herhangi bir nesneye mapping yapılabilir. XML mesajı çeşitli XML API’leri kullanılarak işlenebilir. (DOM, SAX, StAX, JDOM, dom4j, XOM) O/X Mapping modülü sayesinde çeşitli çatılar ile uyumlu çalışır. (JAXB 1 ve 2, Castor, XMLBeans, JiBX, and XStream) SOAP mesajlarının şifrelenmesi için WS-Security desteği sağlar. Spring Security(Acegi Security) ile bütünleşik çalışabilir böylece varsa Acegi ayarları SOAP servisleri için kullanılabilir.
  • 15. İçerik Web Service Nedir ? WS GeliştirimYaklaşımları NedenAnlaşmaÖnce ? Neden Spring WS ? Spring WS Terimleri Spring WS Mimarisi ÖrnekUygulama (Sunucu-İstemci) Kaynakça Sorular
  • 16. Spring WS Terimleri WebServiceMessage Platform bağımsız XML mesajlarını ifade eder. Web mesajlarındaki payload kısmına erişimi sağlar SoapMessage SOAP için gerekli operasyonları içeren arayüzdür. SOAP Envelope SOAP Action SOAP Header etc..
  • 17. Spring WS Terimleri MessageFactory Sınıfları Web servis mesajları oluşturmayı sağlarlar. Farklı kaynaklardan (input streams) web servis mesajları oluşturmaya yardımcı olurlar. Gerçekleştirimleri: SaajSoapMessageFactory (SOAP with Attachments API for Java) JEE 1.4 ün parçası– uygulama sunucuları tarafından en çok desteklenen tür DOM API sini kullanır – SOAP mesajları bellekte tutulur. Büyük mesajlar için performanslı değildir.
  • 18. Spring WS Terimleri MessageFactory Sınıfları AxiomSoapMessageFactory Axis 2 Object Model kullanır. STAX (Streaming API for XML) üzerine kuruludur. Büyük mesajlar için uygundur.
  • 19. Veri Alış-Verişi HTTP Transport Yaygın şekilde kullanılmakta Servlet aracılığı ile yapılmakta <web-app> <servlet> <servlet-name>spring-ws</servlet-name> <servlet-class> org.springframework.ws.transport.http.MessageDispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-ws</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
  • 20. Veri Alış-Verişi HTTP Transport ... Otomatik WSDL Üretimi WsdlDefinition bean tanımları taranır. Bean id si ile dışarı açılır (expose) <bean id="orders" class="org.springframework.ws.wsdl.wsdl11.SimpleWsdl11Definition"> <constructor-arg value="/WEB-INF/wsdl/Orders.wsdl"/> </bean> http://localhost:8080/spring-ws/orders.wsdl
  • 21. Veri Alış-Verişi Spring MVC - DispatcherServlet JMS Transport Email Transport Embedded HTTP Server Transport Örnek uygulama da kullanılacak.
  • 23. Spring WS Mimarisi Sequence Diagram Spring Referans dokümanından alınmıştır.
  • 24. Endpoints Web servismesajlarının iletildiği noktalardır. İş katmanıile web servisarasındakiiletişimisağlar İş mantığı sonrası web servis cevabı oluşturulur ve dönülür. PayloadEndpoint arayüzünden gerçekleştirilir. public interface PayloadEndpoint { /** * Invokes an operation. */ Source invoke(Source request) throws Exception; }
  • 25. Endpoints ... MessageEndpoint Arayüzü Mesajlar dışında message context e de ihtiyaç duyulması SOAP Header eklemek Mesaj içerisinden attachment almak vs.. Endpoint interceptor ler kullanılarak da yapılabilir.
  • 26. Endpoints ... AbstractDomPayloadEndpoint W3C DOM API kullanılır. AbstractJDomPayloadEndpoint – JDOM API AbstractXomPayloadEndpoint – XOM API package sunum; public class SampleEndpoint extends AbstractDomPayloadEndpoint { protected Element invokeInternal(Element requestElement, Document document) throws Exception { String requestText = requestElement.getTextContent(); System.out.println("Request text: " + requestText); Element responseElement = document.createElementNS("http://samples", "response"); responseElement.setTextContent(“someResponseText"); return responseElement; } }
  • 27. Endpoints ... AbstractMarshallingPayloadEndpoint Java nesnelerine çevrilmiş xml mesajları kullanılır. package sunum; public class MarshallingOrderEndpoint extends AbstractMarshallingPayloadEndpoint{ protected Object invokeInternal(Object request) throws Exception { //do some job } }
  • 28. Endpoints ... Annotated Endpoints @Endpoint annotation ile kullanılır. Tek endpoint sınıfında birden fazla istem ele alınabilir. @PayloadRoot annotation ı ile sağlanır. package sunum; @Endpoint public class AnnotationOrderEndpoint { @PayloadRoot(localPart = "orderRequest", namespace = "http://samples") public Order getOrder(OrderRequest orderRequest) { // get order } @PayloadRoot(localPart = "order", namespace = "http://samples") public void order(Order order) { // Create some order } }
  • 29. Endpoint Mappings Gelen mesajların Endpoint lere iletilmesini sağlar. PayloadRootQNameEndpointMapping Gelen XML mesajlarına göre yapılır. <?xml version="1.0" encoding="UTF-8"?> <orderRequestxmlns="http://samples"> </orderRequest> <bean id="endpointMapping" class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping"> <property name="mappings"> <props> <prop key="{http://samples}orderRequest">getOrderEndpoint</prop> </props> </property> </bean> <bean id="getOrderEndpoint" class=“somepackage.GetOrderEndPoint" />
  • 30. Endpoint Mappings ... SoapActionEndpointMapping SOAP Action header a göre yapılır. MethodEndpointMapping(@EndPoint) PayloadRootAnnotationMethodEndpointMapping (@PayloadRoot) Gelen XML mesajı SoapActionAnnotationMethodEndpointMapping (@SoapAction) SOAP Action Header
  • 31. İçerik Web Service Nedir ? WS GeliştirimYaklaşımları NedenAnlaşmaÖnce ? Neden Spring WS ? Spring WS Terimleri Spring WS Mimarisi ÖrnekUygulama (Sunucu-İstemci) Kaynakça Sorular
  • 32. ÖrnekUygulama Data Contract Hazırlanması (XML Şema) Sunucu Geliştirimi Annotation tabanlı WSDL Üretilmesi İstemci Geliştirimi
  • 34. Kaynakça Spring Web Services Project Page http://static.springsource.org/spring-ws/sites/1.5/ http://static.springsource.org/spring-ws/sites/1.5/reference/html/index.html SOA: Principles of Service Design Thomas Erl, Prentice Hall

Hinweis der Redaktion

  1. The most important thing when doing contract-first Web service development is to try and think in terms of XML. This means that Java-language concepts are of lesser importance.nIn Spring-WS, you will implement Endpoints to handle incoming XML messages. There are two flavors of endpoints: message endpoints and payload endpoints. Message endpoints give access to the entire XML message, including SOAP headers. Typically, the endpoint will only be interested in the payload of the message, that is the contents of the SOAP body. In that case, creating a payload endpoint makes more sense.