Mustafa DEMİR<br />&<br />Mustafa DAŞGIN<br />Spring Web Service<br />
Biz Kimiz ?<br />Mustafa DEMİR<br />ODTÜ BilgisayarMühendisliğiBölümü - 2005 <br />Spring teknolojileri, JSF ve Hibernate<...
İçerik<br />Web Service Nedir ?<br />WS GeliştirimYaklaşımları<br />NedenAnlaşmaÖnce ?<br />Neden Spring WS ?<br />Spring ...
Web Service Nedir ?<br />Birağüzerindenfarklıplatformlaramensupmakinelerinbirlikteçalışabilirliğinidestekleyecekşekildetas...
WS GeliştirimYaklaşımları<br />WSDL (Web Services Description Language)<br />XML Belgesi<br />Data Contract (XML Schema)<b...
AnlaşmaÖnceYaklaşımı<br />WSDL belgesibazalınır<br />Sunucuveistemcibirbirindenbağımsızgerçekleştirilir. <br />Büyükprojel...
AnlaşmaSonraYaklaşımı<br />Gerçekleştirimbazalınır<br />WSDL , SOAP ve XSD ayrıntısınagirilmez.<br />Öğrenimveuygulamasüre...
NedenAnlaşmaÖnce ?<br />O/X Mapping Sorunları<br />DavranışFarklılıkları<br />Java – Altsınıf<br />XSD – Kısıtlamalar<br /...
NedenAnlaşmaÖnce ?<br />Desteklenmeyenveritipleri<br />Java – java.util.TreeMap<br />.Net – System.Collections.Hashtable<b...
NedenAnlaşmaÖnce ?<br />Döngüsel İlişkiler<br />public class Flight { <br />private String number; <br />private List&lt;P...
NedenAnlaşmaÖnce ?<br />Kırılganlık<br />Anlaşma sonra yaklaşım ile anlaşmanın uzun süre sabit kalma garantisi yoktur.<br ...
NedenAnlaşmaÖnce ?<br />Performans<br />Anlaşma sonra yaklaşımda karşıya neyin gönderileceği belli değildir. Nesnenin iliş...
Neden Spring WS ?<br />Anlaşma önce yaklaşımın eksikliklerini kapatır.<br />WSDL  ve SOA ayrıntılarıyla uğraştırmaz. Sadec...
Neden Spring WS ?<br />Gelen XML mesajı, içeriğine göre herhangi bir nesneye mapping yapılabilir.<br />XML mesajı çeşitli ...
İçerik<br />Web Service Nedir ?<br />WS GeliştirimYaklaşımları<br />NedenAnlaşmaÖnce ?<br />Neden Spring WS ?<br />Spring ...
Spring WS Terimleri<br />WebServiceMessage<br />Platform bağımsız XML mesajlarını ifade eder.<br />Web mesajlarındaki payl...
Spring WS Terimleri<br />MessageFactory Sınıfları<br />Web servis mesajları oluşturmayı sağlarlar.<br />Farklı kaynaklarda...
Spring WS Terimleri<br />MessageFactory Sınıfları<br />AxiomSoapMessageFactory<br />Axis 2 Object Model kullanır.<br />STA...
Veri Alış-Verişi<br />HTTP Transport<br />Yaygın şekilde kullanılmakta<br />Servlet aracılığı ile yapılmakta<br />&lt;web-...
Veri Alış-Verişi<br />HTTP Transport ...<br />Otomatik WSDL Üretimi<br />WsdlDefinition bean tanımları taranır.<br />Bean ...
Veri Alış-Verişi<br />Spring MVC - DispatcherServlet<br />JMS Transport<br />Email Transport<br />Embedded HTTP Server Tra...
Spring WS Mimarisi<br />
Spring WS Mimarisi<br />	    Sequence Diagram <br />Spring Referans dokümanından alınmıştır.<br />
Endpoints<br />Web servismesajlarının iletildiği noktalardır.<br />İş katmanıile web servisarasındakiiletişimisağlar<br />...
Endpoints ...<br />MessageEndpoint Arayüzü<br />Mesajlar dışında message context e de ihtiyaç duyulması<br />SOAP Header e...
Endpoints ...<br />AbstractDomPayloadEndpoint<br />W3C DOM API kullanılır.<br />AbstractJDomPayloadEndpoint – JDOM API<br ...
Endpoints ...<br />AbstractMarshallingPayloadEndpoint<br />Java nesnelerine çevrilmiş xml mesajları kullanılır.<br />packa...
Endpoints ...<br />Annotated Endpoints<br />@Endpoint annotation ile kullanılır.<br />Tek endpoint sınıfında birden fazla ...
Endpoint Mappings<br />	Gelen mesajların Endpoint lere iletilmesini sağlar.<br />PayloadRootQNameEndpointMapping<br />Gele...
Endpoint Mappings ...<br />SoapActionEndpointMapping<br />SOAP Action header a göre yapılır.<br />MethodEndpointMapping(@E...
İçerik<br />Web Service Nedir ?<br />WS GeliştirimYaklaşımları<br />NedenAnlaşmaÖnce ?<br />Neden Spring WS ?<br />Spring ...
ÖrnekUygulama<br />Data Contract Hazırlanması (XML Şema)<br />Sunucu Geliştirimi<br />Annotation tabanlı<br />WSDL Üretilm...
Spring WS Mimarisi<br />
Kaynakça<br />Spring Web Services Project Page<br />http://static.springsource.org/spring-ws/sites/1.5/<br />http://static...
 Teşekkürler<br />Sorular..<br />
Upcoming SlideShare
Loading in …5
×

Spring Web Service

2,143 views

Published on

Anlaşma-Önce ve Anlaşma-Sonra Web Service geliştirim yöntemleri ve Başlangıç düzeyinde Spring Web Service.

Published in: Self Improvement, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,143
On SlideShare
0
From Embeds
0
Number of Embeds
46
Actions
Shares
0
Downloads
43
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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.
  • Spring Web Service

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

    ×