Your SlideShare is downloading. ×
Spring Web Service
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Spring Web Service

1,748
views

Published on

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

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
1,748
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
35
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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.
  • Transcript

    • 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.
    • 22. Spring WS Mimarisi
    • 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
    • 33. Spring WS Mimarisi
    • 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
    • 35. Teşekkürler
      Sorular..