4509.ppt

1,000 views
932 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,000
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • Support all WSDL semantics Extensible message exchange patterns Separation of logical and physical contracts Define service and tie it to a binding Apply QoS
  • 4509.ppt

    1. 1. Achieving SOA made easy with Celti Xfire
    2. 2. Agenda <ul><li>Services and SOA </li></ul><ul><li>CeltiXfire Project </li></ul><ul><li>Architecture </li></ul><ul><li>Components </li></ul><ul><li>Deployment Models </li></ul><ul><li>Building a Service with CeltiXfire </li></ul><ul><li>Q&A </li></ul>
    3. 3. <ul><li>From the OASIS SOA Reference Model : </li></ul><ul><ul><li>“ Service Oriented Architecture (SOA) is a paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains. ” </li></ul></ul><ul><ul><li>“ Services are the mechanism by which needs and capabilites are brought together.” </li></ul></ul><ul><li>A Service includes </li></ul><ul><ul><li>Requester </li></ul></ul><ul><ul><li>Provider </li></ul></ul><ul><ul><li>One or more message </li></ul></ul><ul><ul><li>exchange patterns </li></ul></ul>Services and SOA Requester Provider UDDI Registry SOAP WSDL
    4. 4. Services and SOA <ul><li>SOA is a technology independent style of design </li></ul><ul><ul><ul><li>Decoupled, coarse-grained components </li></ul></ul></ul><ul><ul><ul><li>Focus on r euse, granularity, modularity, composability, componentization, and interoperablity </li></ul></ul></ul><ul><ul><ul><li>Compliance to standards </li></ul></ul></ul><ul><ul><ul><li>Services identification and categorization, provisioning and delivery, and monitoring and tracking </li></ul></ul></ul><ul><li>Has been mapped successfully to CORBA, message oriented middleware, Web Services </li></ul>
    5. 5. Benefits of Service Oriented Design <ul><li>More flexibility (“business agility”) </li></ul><ul><li>Reduced cost of operation through consolidation </li></ul><ul><li>Higher quality </li></ul><ul><li>Reduced risk, cost and complexity for development </li></ul><ul><li>Lessen the dependencies on vendors </li></ul><ul><li>Good service design (partitioning) will outlive middleware or implementation technology </li></ul>
    6. 6. ESB for SOA <ul><li>Enterprise Service Bus (ESB) </li></ul><ul><ul><ul><li>Provides infrastructure that can be leveraged/used to implement SOA. </li></ul></ul></ul><ul><li>Characterics of an ESB </li></ul><ul><ul><ul><li>U ses XML as the standard communication language </li></ul></ul></ul><ul><ul><ul><li>Supports Web Services standards </li></ul></ul></ul><ul><ul><ul><li>S upports messaging (synchronous, asynchronous, point-to-point, publish-subscribe) </li></ul></ul></ul><ul><ul><ul><li>I ncludes standards-based adapters for integration with legacy systems </li></ul></ul></ul><ul><ul><ul><li>I ncludes support for service orchestration & choreography </li></ul></ul></ul><ul><ul><ul><li>I ncludes intelligent, content-based routing services </li></ul></ul></ul><ul><ul><ul><li>Provides tranformation services </li></ul></ul></ul><ul><ul><ul><li>Many more … </li></ul></ul></ul>
    7. 7. CeltiXfire Project History <ul><li>Celtix project i nitiated as open-source project on Objectweb in June 2005 under the sponsorship of IONA Technologies </li></ul><ul><ul><ul><li>To provide a feature-rich, open source Java ESB runtime </li></ul></ul></ul><ul><ul><ul><li>Celtix 1.0 released in May 2006 </li></ul></ul></ul><ul><li>XFire project initiated as open-source project on codehaus 2 ½ years ago </li></ul><ul><ul><ul><li>To build a next generation SOAP framework: easy-to-use, embeddable, high performance (StAX based). </li></ul></ul></ul><ul><li>CeltiXfire project accepted as incubating Apache project in August 2006 </li></ul>
    8. 8. CeltiXfire Project Goals (1) <ul><li>From our Apache proposal: </li></ul><ul><ul><li>“ Project CeltiXfire is a SOA infrastructure framework focused on implementation of JCP and web service standards while also providing extensibility for legacy integration ” </li></ul></ul><ul><li>Key point is the focus on standards and extensibility </li></ul>
    9. 9. CeltiXfire Project Goals (2) <ul><li>Merge of Celtix and XFire resulting in a fast, flexible, easy-to-use and embeddable SOA and WS framework </li></ul><ul><ul><ul><li>Provide Enterprise QoS and features (security, management, reliability, routing, …) </li></ul></ul></ul><ul><ul><ul><li>Offer choice of application models, incl. native JAX-WS </li></ul></ul></ul><ul><li>W ider, more active , vendor-neutral community </li></ul><ul><ul><ul><li>Diverse set of developers (Envoi Solutions, IONA, LogicBlaze, BEA and Red Hat) </li></ul></ul></ul><ul><ul><ul><li>Apache License </li></ul></ul></ul><ul><li>Cooperation with other open source projects </li></ul><ul><ul><ul><li>Synapse, Tuscany, ServiceMix </li></ul></ul></ul>
    10. 10. CeltiXfire Project Status <ul><li>Initial code drop in August 2006 </li></ul><ul><ul><ul><li>Including history of both projects </li></ul></ul></ul><ul><li>Currently merging Celtix and XFire codebases </li></ul><ul><ul><ul><li>Adopting a more message centric approach and combining the best of both projects </li></ul></ul></ul><ul><li>Releasing Milestones while incubating </li></ul><ul><ul><ul><li>First milestone: core functionality with proven stability </li></ul></ul></ul><ul><ul><ul><li>First release: all features from original projects and more, migration support for existing Celtix and XFire customers </li></ul></ul></ul><ul><li>In the meantime: </li></ul><ul><ul><ul><li>Celtix 1.0 still available on ObjectWeb, XFire on codehaus </li></ul></ul></ul>
    11. 11. Architectur e <ul><li>Extensibility </li></ul><ul><ul><ul><li>Extensible bus </li></ul></ul></ul><ul><ul><ul><li>Pluggable bindings and transports </li></ul></ul></ul><ul><li>Interceptor-based QoS </li></ul><ul><ul><ul><li>Transparently engage reliability by adding RM interceptors to the call chain </li></ul></ul></ul><ul><li>Service Model </li></ul><ul><ul><ul><li>Abstraction of underlying service contracts (WSDL 1.1, WSDL 2.0, Java interfaces) </li></ul></ul></ul><ul><li>Configuration-by-exception </li></ul><ul><ul><ul><li>All just works out-of-the-box, configuration only required to customize </li></ul></ul></ul>
    12. 12. Extensibility (1) <ul><li>Bus is a provider of shared resources and services to the CeltiXfire runtime </li></ul><ul><ul><ul><li>Dynamic discovery of available services </li></ul></ul></ul><ul><ul><ul><li>Deferred loading/activation of services (when needed) </li></ul></ul></ul><ul><li>Examples: </li></ul><ul><ul><ul><li>Binding Factory Manager, WSDL 1.1 Manager, … </li></ul></ul></ul><extension class=&quot;org. apache . cxf .bindings.BindingFactoryManagerImp l &quot; interface=&quot;org. apache . cxf .bindings.BindingFactoryManager&quot;/> <extension class= &quot; org.apache.cxf.bindings.soap.SoapBindingFactory &quot; deferred= &quot; true &quot; > <namespace>http://schemas.xmlsoap.org/wsdl/soap/</namespace> <namespace>http://schemas.xmlsoap.org/wsdl/soap/http</namespace> </extension>
    13. 13. Extensibility (2) <ul><li>Pluggability at multiple levels </li></ul><ul><ul><ul><li>Frontends, transports, bindings </li></ul></ul></ul>Component (service requestor/provider) JAX-WS XML SOAP CORBA ----------------- IIOP WS-RM, Routing, Security, Transactions, Transformations --- HTTP, JMS, FTP, … Binding QOS Transport Front-end Network CeltiXfire Bus JavaScript/E4X
    14. 14. Extensibility Example: CORBA Binding <ul><li>Developed by Yoko project </li></ul><ul><ul><ul><li>Incubating in Apache </li></ul></ul></ul><ul><ul><ul><li>Initial contributions from IONA & Trifork </li></ul></ul></ul><ul><ul><ul><li>Full IDL type support </li></ul></ul></ul><ul><li>CORBA binding use-cases </li></ul><ul><ul><ul><li>Expose legacy CORBA backends as Web Services </li></ul></ul></ul><ul><ul><ul><li>Conversely, allow CORBA clients invoke WS endpoints </li></ul></ul></ul><ul><ul><ul><li>Leverage ORB QoS </li></ul></ul></ul>
    15. 15. Standards support <ul><li>Java 5 </li></ul><ul><ul><li>pervasive usage of annotations, generics </li></ul></ul><ul><li>JAX-WS 2.0 </li></ul><ul><ul><li>sucessor to JAX-RPC 1.0 - annotation-driven, optional Java-first approach </li></ul></ul><ul><li>JAXB 2.0 </li></ul><ul><ul><li>much better coverage than JAX-RPC data binding </li></ul></ul><ul><li>SOAP 1. 1 </li></ul><ul><ul><li>XFire merge will also give us SOAP 1.2 & MTOM </li></ul></ul><ul><li>WSDL 1.1 </li></ul><ul><ul><li>2.0 support upcoming (based on Woden) </li></ul></ul>
    16. 16. Components - Transports <ul><li>Transport APIs </li></ul><ul><ul><ul><li>Symmetric concept of channels abandoned in favor of client/server specific model of conduits and destinations </li></ul></ul></ul><ul><ul><ul><li>Support for decoupled responses (only used in HTTP transport, by RM implementation) </li></ul></ul></ul><ul><li>HTTP </li></ul><ul><ul><ul><li>Jetty based, stand-alone HTTP server </li></ul></ul></ul><ul><ul><ul><li>Servlet support </li></ul></ul></ul><ul><li>JMS </li></ul><ul><ul><ul><li>Based on ActiveMQ </li></ul></ul></ul><ul><li>Future: FTP, Colocated, …? </li></ul>
    17. 17. Components - Bindings <ul><li>Message Bindings: </li></ul><ul><ul><ul><li>Realised as a set of interceptors (MustUnderstandInterceptor, ReadHeadersInterceptor, SoapInInterceptor, …) associated with phases (receive, read, protocol, …) </li></ul></ul></ul><ul><ul><ul><li>Currently supported: SOAP 1.1, XML </li></ul></ul></ul><ul><ul><ul><li>In work: SOAP 1.2, MTOM </li></ul></ul></ul><ul><ul><ul><li>Future: Fixed, tagged, …? </li></ul></ul></ul><ul><li>Data Bindings </li></ul><ul><ul><ul><li>Realised as implementations of DataReader/DataWriter interfaces. </li></ul></ul></ul><ul><ul><ul><li>Currently supported: JAXB 2.0, XMLBeans , JiBX, Castor </li></ul></ul></ul>
    18. 18. Components - Frontends <ul><li>JAX-WS 2.0 </li></ul><ul><ul><ul><li>JAX-WS components (Endpoint, Service, BindingProvider) built on top of/wrapping generic components </li></ul></ul></ul><ul><ul><ul><li>JAX-WS handlers executing in CeltiXfire interceptors </li></ul></ul></ul><ul><ul><ul><li>Wrapping of CeltiXfire Message into LogicalMessageContext, SOAPMessageContext </li></ul></ul></ul><ul><li>JavaScript 1, ECMAScript for XML (E4X) 2 </li></ul><ul><ul><ul><li>Service implementation is ‘annotated’ with JavaScript WebServiceProvider variable </li></ul></ul></ul><ul><ul><ul><li>Script is run in Provider type Endpoint – metadata and properties obtained from WebServiceProvider variable </li></ul></ul></ul>
    19. 19. Components – WS-* <ul><li>WS-Addressing </li></ul><ul><ul><ul><li>Multi-version support - natively 2005/08, also 2004/08 for RM </li></ul></ul></ul><ul><li>WS-RM </li></ul><ul><ul><ul><li>Fully-fledged implementation with message persistence </li></ul></ul></ul><ul><ul><ul><li>Transparently enabled with zero application impact </li></ul></ul></ul><ul><ul><ul><li>Keeping an eye on WS-RX group in OASIS </li></ul></ul></ul><ul><li>WS-I Basic Profile 1.1 </li></ul>
    20. 20. Components – Configuration <ul><li>Metadata model defines a component's configurable properties </li></ul><ul><ul><ul><li>Name, type, value space restrictions, default values </li></ul></ul></ul><ul><li>Consumers obtain values through Configuration interface </li></ul><ul><li>Configuration backed by Providers </li></ul><ul><ul><ul><li>H ide details of underlying source/format </li></ul></ul></ul><ul><ul><ul><li>C an be chained - c onsumers are unaware of which source provided the data (WSDL or Spring) </li></ul></ul></ul><ul><li>Built-in support for dynamic configuration updates using e.g. JMX </li></ul>
    21. 21. Components - Tooling <ul><li>Code generators </li></ul><ul><ul><ul><li>wsdl2java, java2wsdl, xsd2wsdl, wsdl2service, wsdl2soap , wsdl2xml </li></ul></ul></ul><ul><li>WSDL validator </li></ul><ul><li>Command line based tools provided OOTB </li></ul><ul><li>Graphical tools will be based on results from the Eclipse STP </li></ul><ul><ul><ul><li>Aims to provide tools, frameworks for SOA construction in 5 subprojects (Service Creation, SCA Assembly Model, SOA System, BPEL 2 Java, BPMN) </li></ul></ul></ul><ul><ul><ul><li>An opportunity for Open Source tooling for SOA/ESB related tools to be gathered in one place </li></ul></ul></ul>
    22. 22. Deployment Models <ul><li>Support for deploying into Servlet Engines </li></ul><ul><ul><ul><li>Tomcat </li></ul></ul></ul><ul><li>Support for deploying into J2EE Appservers </li></ul><ul><ul><ul><li>Geronimo, JOnAS </li></ul></ul></ul><ul><li>Support for deploying into JBI container </li></ul><ul><ul><ul><li>ServiceMix, OpenESB </li></ul></ul></ul><ul><ul><ul><li>(JBI-)internal/external consumer/provider </li></ul></ul></ul><ul><li>Support for running CeltiXfire inside Apache Tuscany </li></ul><ul><ul><ul><li>EnablesTuscany runtime to act as standalone web service </li></ul></ul></ul>
    23. 23. Building a Service with CeltiXfire <ul><li>Starting from WSDL: </li></ul><ul><ul><ul><li>Use wsdl2java to generate Service endpoint interface and Service class. </li></ul></ul></ul><ul><ul><ul><li>Server side: Implement servant (inherit from generated interface and/or use annotations only), create and publish endpoint. </li></ul></ul></ul><ul><ul><ul><li>Client side: Create service and proxy, invoke on proxy. </li></ul></ul></ul>
    24. 24. Server Side Object obj = new HelloWorldImpl (); Endpoint.publish(ADDRESS, obj); @WebService(serviceName=&quot;HelloWorldService&quot;) public class HelloWorldImpl implements HelloWorld { public String sayHello(String message) { return &quot;Hello to you too!&quot;; } } Server mainline Implementation Generated SEI WSDL @WebService(wsdlLocation = …, targetNamespace = …,…) public interface HelloWorld { @ResponseWrapper(…) @RequestWrapper(…) @WebResult(…) @WebMethod(operationName = &quot;sayHello&quot;) public String sayHello(String message) { @WebParam(…) return &quot;Hello to you too!&quot;; } } <xmlns:soap= &quot; http://schemas.xmlsoap.org/wsdl/soap/ &quot; … < binding name=&quot;HelloWorldBinding“ type=&quot;tns:HelloWorld&quot;> <soap:binding … > … </binding> … <service name=&quot;HelloWorldService&quot;> <port binding=&quot;tns:HelloWorldBinding&quot; name=&quot;HelloWorldPort&quot;> <soap:address location=&quot;http://localhost:9090/helloworld&quot;/> </port> </service> Namepace of first element in binding determines binding id/factory Namepace of first element in port determines transport id/factory
    25. 25. Client Side HelloWorldService service = new HelloWorldService (); HelloWorld proxy = S ervice.getHelloWorldPort(); System.out.println(proxy.sayHello(&quot;JavaZone&quot;)); <ul><li>using generated service and SEI </li></ul>Generated Service @WebServiceClient(name = &quot;HelloWorldService&quot;, targetNamespace=…) public class HelloWorldService extends Service { private final static URL WSDL_LOCATION; private final static QName SERVICE = … private final static QName PORT = … public HelloWorldService() { super(WSDL_LOCATION, SERVICE); } @WebEndpoint(name = &quot;HelloWorldPort&quot;) public HelloWorld getHelloWorldPort() { return (HelloWorld)super.getPort(PORT, HelloWorld.class); } } URL url = Client2.class.getResource(&quot;/HelloWorld.wsdl&quot;); String ns = &quot;http://cxf.apache.org/samples/HelloWorld&quot;; QName serviceName = new QName(ns, &quot;HelloWorldService&quot;); QName portName = new QName(ns, &quot;HelloWorldPort&quot;); Service service = Service.create(url, serviceName); HelloWorld proxy = service.getPort(portName, HelloWorld.class); System.out.println(proxy.sayHello(&quot;JavaZone&quot;)); <ul><li>or using generated SEI only </li></ul>
    26. 26. Getting Involved <ul><li>CeltiXFire </li></ul><ul><ul><ul><li>Mailing lists: [email_address] </li></ul></ul></ul><ul><ul><ul><li>IRC: #cxf on irc.codehaus.org </li></ul></ul></ul><ul><li>Celtix </li></ul><ul><ul><ul><li>Web: http://celtix.objectweb.org/ </li></ul></ul></ul><ul><ul><ul><li>Mailing lists: celtix-dev, celtix @objectweb.org </li></ul></ul></ul><ul><ul><ul><li>IRC: #celtix on irc.freenode.net </li></ul></ul></ul><ul><li>XFire </li></ul><ul><ul><ul><li>Web: http://xfire.codehaus.org </li></ul></ul></ul><ul><ul><ul><li>Mailing lists: dev, announce, scm, user @xfire.codehaus.org </li></ul></ul></ul><ul><ul><ul><li>IRC: #xfire on irc.codehaus.org </li></ul></ul></ul>
    27. 27. Questions & Answers

    ×