SlideShare a Scribd company logo
Exigen Services confidential Exigen Services confidential
Composite SOA Frameworks
Evgeny Epifantsev
December 2009
Updated 2012
Exigen Services confidential
Trainer contacts
• Evgeny Epifantsev
• Developer
• eepifantsev@exigenservices.com
2
Exigen Services confidential
Goals
3
ESB structure and technologies basis.
ESB frameworks
Exigen Services confidential
Agenda
• Service mapping (ESB) and routing (UDDI)
• Component containers: SCA/JBI/OSGi
• ESB overview.
4
Exigen Services confidential
Enterprise Service Bus
5
ESB
Requests
Responses
Requests
Responses
Service
Requester
Service
Provider
Phone with wap - WXML/HTTP
.NET - SOAP/HTTP
C++ - XML/JMS
SAP - BAPI
WebSphere 5.1 - SOAP/JMS
SAP - BAPI
External partner - SOAP/HTTPS
User application - RMI
Database – SQL
Application - XML/JMS
Exigen Services confidential
ESB capabilities
6
Routing
Message
transformation
Message
enhancement
Security
Transaction
management Service
orchestration
Process
choreography
Message
processing
Mapping
service
Protocol
transformation
BPM
ESB part 1
Service Design
Principles and Patterns
SOA
security
Web security
Exigen Services confidential
Routing: UDDI
Exigen Services confidential
UDDI – service routing
Client wants to call service 1 (client doesn’t know service1 endpoint )
1. All services are registered in UDDI
2. Client call UDDI “I need service1, where is it?”
3. UDDI search that service in repository and return service1 endpoint
4. Client call service1 on endpoint was got from UDDI
2
3
4
1
Exigen Services confidential
UDDI summary
Benefits:
 Simplify business-to-business (B2B) interaction
 Separate service from description
 Allow hot switch to other service location
 Providing Application Visibility at Design Time
Universal Description, Discovery and Integration
 UDDI provides a standards-based set of specifications for service description and
discovery. Extensible Markup Language (XML) which used for WSDL for describe services
 UDDI supports a highly flexible description of services with metainformation
(Service Layer Agreement)
 WS-SecurityPolicy
Exigen Services confidential
Service routing(Versions)
10
WSDL v1
MakeOrder (Person person)
saveOrTradeOrder(Person person)
WSDL 2
Exigen Services confidential
Service mapping (Person)
11
WSDL
Business service definition
MakeOrder (Person person)
MakeOrder (Person person)
saveOrTradeOrder(Person person)
Java
implementation service for
saveOrTradeOrder(Person person)
give me endpoint
http://example.com/saveOrplaceOrder
publish
2
3
4
5
1
Exigen Services confidential
Service mapping (Name , Address)
12
WSDL
Business service definition
MakeOrder (Person person)
MakeOrder (Person person)
saveOrTradeOrder(String name, String address)
Java
implementation service for
saveOrTradeOrder(String name, String address)
give me endpoint
http://example.com/saveOrplaceOrder_v2
publish
2
3
4
5
6
getPersonAddr(Person person)
1
Exigen Services confidential
Modules List
13
protocol
transformation
Message
processing
• ActiveMQ
• JBossMQ
• OracleAQ
• MQ Series
message
transformation
• xslt
• Smooks
• Doozer
• Xquery
• Oakland
routing
• Xpath
• Eip engine
• Camel
Transaction
• XA• Email
• ftp
• HTTP
• JTA
• TCP
• CXF
Service
choreography
• jBPM• Groovy
Script engine
Security
• Acegy
• JAAS
Service
orchestration
• BEPL
Exigen Services confidential
Component containers: JBI
Exigen Services confidential
JBI (JSR-208)
Java Business Integration (JBI) specification (Oracle)
 The goal of JBI is to create a standards-based architecture for integrating
middleware components to perform ESB capabilities
 The JBI Specs is not concerned about how external consumers or service providers
interact, but rather how internal consumers and providers interact
 JBI dependent on J2SE but not J2EE
 JBI defines two types of components
- Service Engines (process choreography, transactions, security, message
transformation, protocol transformation)
- Binding components ( XML, HTTP, MQ, IIOP)
15
Exigen Services confidential
JBI
16
jbi.xml - installation descriptor define a unique
component name and type along with the
classpath settings that are required during
installation and runtime of the component.
Life Cycle
Exigen Services confidential
JBI Specification architecture
17
BC – Binding components SE – Service Engine
Standard Can be open source
WSDL
WSDL
Exigen Services confidential
JBI Specification architecture
18
Standard Can be open source
WSDL
WSDL
Java / Swing Java / EJB Servlet
Exigen Services confidential
JBI summary
JBI advantages and the effect on commercial ESBs
 Third party Custom Service Engines (SE) and Binding Components (BC) can be
swapped in and out without impacting applications or services
 Avoids “Vendor lock-in”
 We can swap in and out integration services (i.e. capabilities) we don’t need, creating
a lighter-weight solution that meets our specific needs
19
Exigen Services confidential
Component container: OSGI
Exigen Services confidential
OSGI - Open Services Gateway Initiative
21
Foo.jar
Bar.jar
Runtime class space
Load into JVM
Foo.jar
Bar.jar
• No borders between jar into JVM
• Can’t use many versions of one
library
low couplinghigh cohesion
Make something one, but done it perfect How module interact with other modules
Exigen Services confidential
Architecture
22
low coupling high cohesion
Bundle = JAR + modified MANIFEST.MF
Name
Version
Dependency
etc.
Bundle life cycle: INSTALLED, RESOLVED,
STARTING, ACTIVE,STOPPING, UNINSTALLED
Exigen Services confidential
Environment (pax runner)
23
# Javax
scan-bundle:mvn:javax.resource/com.springsource.javax.resource/1.5.0@5
scan-bundle:mvn:javax.xml.ws/com.springsource.javax.xml.ws/2.1.1@5
scan-bundle:mvn:javax.xml.bind/com.springsource.javax.xml.bind/2.1.7@5
scan-bundle:mvn:javax.activation/com.springsource.javax.activation/1.1.1@5
scan-undle:mvn:javax.xml.stream/com.springsource.javax.xml.stream/1.0.1@5
scan-bundle:mvn:javax.xml.soap/com.springsource.javax.xml.soap/1.3.0@5
scan-bundle:mvn:javax.wsdl/com.springsource.javax.wsdl/1.6.1@5
scan-bundle:mvn:javax.servlet/com.springsource.javax.servlet/2.5.0@5
scan-bundle:mvn:org.aopalliance/com.springsource.org.aopalliance/1.0.0@3
scan-bundle:mvn:org.aspectj/com.springsource.org.aspectj.lib/1.5.4@3
scan-bundle:mvn:org.aspectj/com.springsource.org.aspectj.runtime/1.5.4@3
scan-bundle:mvn:com.springsource.instrumented/org.springframework.aop.instrumented/2.5.7.RELEASE@3
scan-bundle:mvn:com.springsource.instrumented/org.springframework.beans.instrumented/2.5.7.RELEASE@3
scan-bundle:mvn:com.springsource.instrumented/org.springframework.context.instrumented/2.5.7.RELEASE@3
scan-bundle:mvn:com.springsource.instrumented/org.springframework.context.support.instrumented/2.5.7.RELEASE@3
scan-bundle:mvn:com.springsource.instrumented/org.springframework.core.instrumented/2.5.7.RELEASE@3
scan-bundle:mvn:com.springsource.instrumentation/com.springsource.management.instrumentation.springframework.context/…
scan-bundle:mvn:com.springsource.instrumentation/com.springsource.management.instrumentation.springframework.application…
scan-bundle:mvn:com.springsource.instrumentation/com.springsource.management.instrumentation.springframework.context.support
scan-bundle:mvn:com.springsource.instrumentation/com.springsource.management.instrumentation.springframework.beans/…
scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.monitoring/2.5.7.RELEASE/@5
scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.config/2.5.7.RELEASE/@5
scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.control/2.5.7.RELEASE/@5
scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.inventory/2.5.7.RELEASE/@5
scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.discovery.domain/2.5.7.RELEASE/@5
scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.discovery.resource/2.5.7.RELEASE/@5
com.springsource.instrumented.org.springframework.context.instrumented
com.springsource.instrumented.org.springframework.beans.instrumented
com.springsource.management.com.springsource.management.agent.monitoring
com.springsource.instrumentation.com.springsource.management.instrumentation.springframework.applicationcontext
Exigen Services confidential
OSGI summary
24
• Every bundle has his own class space. All data in bundle are private
• Bundle repository. Public only interfaces, not implementation
• Can be many version of one bundle in one OSGI framework
• Lifecycle management on the fly
• Strictly naming conversion
- bundle’s symbolic name
- version number
OSGI containers: Equinox , Apache Felix
knopflerfish
Exigen Services confidential
Component containers: SCA
Exigen Services confidential
SCA -Service Component Architecture
26
SCA - is a set of OASIS specifications which describe a model for building
applications and systems using a Service-Oriented Architecture.
<composite name="ExampleComposite" ...>
<component name="Component1"> ... </component>
<component name="Component2"> ... </component>
<component name="Component3"> ... </component>
</composite>
Component:
 Implementation: Java, C++, BEPL …
 Communication configuration: SCDL .composite file
(Service Component Definition Language )
Exigen Services confidential
SCA structure
27
BEA, IBM, IONA, Oracle, SAP, Siebel Systems и Sybase
service
Reference Domain-defined communication
property
Bindings Webservice or other communication
ZIP
Exigen Services confidential
SCA application structure
28
Exigen Services confidential
SCA runtime
29
No specs how SCA should be implemented -
Several vendors Tuscany and Fabric3 , IBM …
Exigen Services confidential
SCA vs OSGI vs JBI
30
JBI vs OSGI:
SCA
OSGI – Declarative dependency management.
Low level integration. Mobile devices
JBI – Standard messaging processing
High level component integration.
Container model for an Enterprise Service Bus
SCA – A model on how to assemble composite applications
Language-independent
Policy support
Separate implementation and binding.
Vendor lock-in
Distributed heterogeneous system.
Exigen Services confidential
Requirements
31
IBM Oracle
Hardware Pentium at 2.4GHz or AMD Opteron (32-bit
only)
1 GB physical memory
Application Server IBM WebSphere Application Server 7.0 Oracle WebLogic
Java IBM Java SDK 6.0 SR6
IDE Integration Developer
Support standards JAXWS 2.1.1, JAXB 2.1.3, SAAJ 1.3 и StAX
1.0.
WS-Atomic Transactions
SecureFTP; Oracle BPEL PM;
SOAP/HTTP и SOAP/JMS, SOAP 1.2, WSDL 1.1, SAP, Siebel, PeopleSoft, JMS,
WebSphere MQ, SCA , REST, WS-BEPL
WS-Addressing, WS-I Basic Profile V1.1, WS-Security, WS-Reliable Messaging 1.0,
WS-Policy, UDDI v3
Data representation Service Message Object (extends SDO) XML, MFL
Deployment EAR
SCA, OSGI JBI, SCA, OSGI
Exigen Services confidential
Projects and technologies
32
JBI SCA OSGI Custom
IBM WebSphere 7.0 + +
Eclipse Swordfish
project 1.0
+ + +
OW2 PEtALS 3.1 + +
ServiceMix/Fuse 4.0 support +
OpenESB/GlassFish
2.2
+
Oracle ESB 11g + + +
JBoss ESB 4.10 +
WSO2 3.0 +
Mule 3.2.0 support +
Exigen Services confidential
Thank You!
Questions?
33

More Related Content

Enterprise service bus part 2

  • 1. Exigen Services confidential Exigen Services confidential Composite SOA Frameworks Evgeny Epifantsev December 2009 Updated 2012
  • 2. Exigen Services confidential Trainer contacts • Evgeny Epifantsev • Developer • eepifantsev@exigenservices.com 2
  • 3. Exigen Services confidential Goals 3 ESB structure and technologies basis. ESB frameworks
  • 4. Exigen Services confidential Agenda • Service mapping (ESB) and routing (UDDI) • Component containers: SCA/JBI/OSGi • ESB overview. 4
  • 5. Exigen Services confidential Enterprise Service Bus 5 ESB Requests Responses Requests Responses Service Requester Service Provider Phone with wap - WXML/HTTP .NET - SOAP/HTTP C++ - XML/JMS SAP - BAPI WebSphere 5.1 - SOAP/JMS SAP - BAPI External partner - SOAP/HTTPS User application - RMI Database – SQL Application - XML/JMS
  • 6. Exigen Services confidential ESB capabilities 6 Routing Message transformation Message enhancement Security Transaction management Service orchestration Process choreography Message processing Mapping service Protocol transformation BPM ESB part 1 Service Design Principles and Patterns SOA security Web security
  • 8. Exigen Services confidential UDDI – service routing Client wants to call service 1 (client doesn’t know service1 endpoint ) 1. All services are registered in UDDI 2. Client call UDDI “I need service1, where is it?” 3. UDDI search that service in repository and return service1 endpoint 4. Client call service1 on endpoint was got from UDDI 2 3 4 1
  • 9. Exigen Services confidential UDDI summary Benefits:  Simplify business-to-business (B2B) interaction  Separate service from description  Allow hot switch to other service location  Providing Application Visibility at Design Time Universal Description, Discovery and Integration  UDDI provides a standards-based set of specifications for service description and discovery. Extensible Markup Language (XML) which used for WSDL for describe services  UDDI supports a highly flexible description of services with metainformation (Service Layer Agreement)  WS-SecurityPolicy
  • 10. Exigen Services confidential Service routing(Versions) 10 WSDL v1 MakeOrder (Person person) saveOrTradeOrder(Person person) WSDL 2
  • 11. Exigen Services confidential Service mapping (Person) 11 WSDL Business service definition MakeOrder (Person person) MakeOrder (Person person) saveOrTradeOrder(Person person) Java implementation service for saveOrTradeOrder(Person person) give me endpoint http://example.com/saveOrplaceOrder publish 2 3 4 5 1
  • 12. Exigen Services confidential Service mapping (Name , Address) 12 WSDL Business service definition MakeOrder (Person person) MakeOrder (Person person) saveOrTradeOrder(String name, String address) Java implementation service for saveOrTradeOrder(String name, String address) give me endpoint http://example.com/saveOrplaceOrder_v2 publish 2 3 4 5 6 getPersonAddr(Person person) 1
  • 13. Exigen Services confidential Modules List 13 protocol transformation Message processing • ActiveMQ • JBossMQ • OracleAQ • MQ Series message transformation • xslt • Smooks • Doozer • Xquery • Oakland routing • Xpath • Eip engine • Camel Transaction • XA• Email • ftp • HTTP • JTA • TCP • CXF Service choreography • jBPM• Groovy Script engine Security • Acegy • JAAS Service orchestration • BEPL
  • 15. Exigen Services confidential JBI (JSR-208) Java Business Integration (JBI) specification (Oracle)  The goal of JBI is to create a standards-based architecture for integrating middleware components to perform ESB capabilities  The JBI Specs is not concerned about how external consumers or service providers interact, but rather how internal consumers and providers interact  JBI dependent on J2SE but not J2EE  JBI defines two types of components - Service Engines (process choreography, transactions, security, message transformation, protocol transformation) - Binding components ( XML, HTTP, MQ, IIOP) 15
  • 16. Exigen Services confidential JBI 16 jbi.xml - installation descriptor define a unique component name and type along with the classpath settings that are required during installation and runtime of the component. Life Cycle
  • 17. Exigen Services confidential JBI Specification architecture 17 BC – Binding components SE – Service Engine Standard Can be open source WSDL WSDL
  • 18. Exigen Services confidential JBI Specification architecture 18 Standard Can be open source WSDL WSDL Java / Swing Java / EJB Servlet
  • 19. Exigen Services confidential JBI summary JBI advantages and the effect on commercial ESBs  Third party Custom Service Engines (SE) and Binding Components (BC) can be swapped in and out without impacting applications or services  Avoids “Vendor lock-in”  We can swap in and out integration services (i.e. capabilities) we don’t need, creating a lighter-weight solution that meets our specific needs 19
  • 21. Exigen Services confidential OSGI - Open Services Gateway Initiative 21 Foo.jar Bar.jar Runtime class space Load into JVM Foo.jar Bar.jar • No borders between jar into JVM • Can’t use many versions of one library low couplinghigh cohesion Make something one, but done it perfect How module interact with other modules
  • 22. Exigen Services confidential Architecture 22 low coupling high cohesion Bundle = JAR + modified MANIFEST.MF Name Version Dependency etc. Bundle life cycle: INSTALLED, RESOLVED, STARTING, ACTIVE,STOPPING, UNINSTALLED
  • 23. Exigen Services confidential Environment (pax runner) 23 # Javax scan-bundle:mvn:javax.resource/com.springsource.javax.resource/1.5.0@5 scan-bundle:mvn:javax.xml.ws/com.springsource.javax.xml.ws/2.1.1@5 scan-bundle:mvn:javax.xml.bind/com.springsource.javax.xml.bind/2.1.7@5 scan-bundle:mvn:javax.activation/com.springsource.javax.activation/1.1.1@5 scan-undle:mvn:javax.xml.stream/com.springsource.javax.xml.stream/1.0.1@5 scan-bundle:mvn:javax.xml.soap/com.springsource.javax.xml.soap/1.3.0@5 scan-bundle:mvn:javax.wsdl/com.springsource.javax.wsdl/1.6.1@5 scan-bundle:mvn:javax.servlet/com.springsource.javax.servlet/2.5.0@5 scan-bundle:mvn:org.aopalliance/com.springsource.org.aopalliance/1.0.0@3 scan-bundle:mvn:org.aspectj/com.springsource.org.aspectj.lib/1.5.4@3 scan-bundle:mvn:org.aspectj/com.springsource.org.aspectj.runtime/1.5.4@3 scan-bundle:mvn:com.springsource.instrumented/org.springframework.aop.instrumented/2.5.7.RELEASE@3 scan-bundle:mvn:com.springsource.instrumented/org.springframework.beans.instrumented/2.5.7.RELEASE@3 scan-bundle:mvn:com.springsource.instrumented/org.springframework.context.instrumented/2.5.7.RELEASE@3 scan-bundle:mvn:com.springsource.instrumented/org.springframework.context.support.instrumented/2.5.7.RELEASE@3 scan-bundle:mvn:com.springsource.instrumented/org.springframework.core.instrumented/2.5.7.RELEASE@3 scan-bundle:mvn:com.springsource.instrumentation/com.springsource.management.instrumentation.springframework.context/… scan-bundle:mvn:com.springsource.instrumentation/com.springsource.management.instrumentation.springframework.application… scan-bundle:mvn:com.springsource.instrumentation/com.springsource.management.instrumentation.springframework.context.support scan-bundle:mvn:com.springsource.instrumentation/com.springsource.management.instrumentation.springframework.beans/… scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.monitoring/2.5.7.RELEASE/@5 scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.config/2.5.7.RELEASE/@5 scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.control/2.5.7.RELEASE/@5 scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.inventory/2.5.7.RELEASE/@5 scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.discovery.domain/2.5.7.RELEASE/@5 scan-bundle:mvn:com.springsource.management/com.springsource.management.agent.discovery.resource/2.5.7.RELEASE/@5 com.springsource.instrumented.org.springframework.context.instrumented com.springsource.instrumented.org.springframework.beans.instrumented com.springsource.management.com.springsource.management.agent.monitoring com.springsource.instrumentation.com.springsource.management.instrumentation.springframework.applicationcontext
  • 24. Exigen Services confidential OSGI summary 24 • Every bundle has his own class space. All data in bundle are private • Bundle repository. Public only interfaces, not implementation • Can be many version of one bundle in one OSGI framework • Lifecycle management on the fly • Strictly naming conversion - bundle’s symbolic name - version number OSGI containers: Equinox , Apache Felix knopflerfish
  • 26. Exigen Services confidential SCA -Service Component Architecture 26 SCA - is a set of OASIS specifications which describe a model for building applications and systems using a Service-Oriented Architecture. <composite name="ExampleComposite" ...> <component name="Component1"> ... </component> <component name="Component2"> ... </component> <component name="Component3"> ... </component> </composite> Component:  Implementation: Java, C++, BEPL …  Communication configuration: SCDL .composite file (Service Component Definition Language )
  • 27. Exigen Services confidential SCA structure 27 BEA, IBM, IONA, Oracle, SAP, Siebel Systems и Sybase service Reference Domain-defined communication property Bindings Webservice or other communication ZIP
  • 28. Exigen Services confidential SCA application structure 28
  • 29. Exigen Services confidential SCA runtime 29 No specs how SCA should be implemented - Several vendors Tuscany and Fabric3 , IBM …
  • 30. Exigen Services confidential SCA vs OSGI vs JBI 30 JBI vs OSGI: SCA OSGI – Declarative dependency management. Low level integration. Mobile devices JBI – Standard messaging processing High level component integration. Container model for an Enterprise Service Bus SCA – A model on how to assemble composite applications Language-independent Policy support Separate implementation and binding. Vendor lock-in Distributed heterogeneous system.
  • 31. Exigen Services confidential Requirements 31 IBM Oracle Hardware Pentium at 2.4GHz or AMD Opteron (32-bit only) 1 GB physical memory Application Server IBM WebSphere Application Server 7.0 Oracle WebLogic Java IBM Java SDK 6.0 SR6 IDE Integration Developer Support standards JAXWS 2.1.1, JAXB 2.1.3, SAAJ 1.3 и StAX 1.0. WS-Atomic Transactions SecureFTP; Oracle BPEL PM; SOAP/HTTP и SOAP/JMS, SOAP 1.2, WSDL 1.1, SAP, Siebel, PeopleSoft, JMS, WebSphere MQ, SCA , REST, WS-BEPL WS-Addressing, WS-I Basic Profile V1.1, WS-Security, WS-Reliable Messaging 1.0, WS-Policy, UDDI v3 Data representation Service Message Object (extends SDO) XML, MFL Deployment EAR SCA, OSGI JBI, SCA, OSGI
  • 32. Exigen Services confidential Projects and technologies 32 JBI SCA OSGI Custom IBM WebSphere 7.0 + + Eclipse Swordfish project 1.0 + + + OW2 PEtALS 3.1 + + ServiceMix/Fuse 4.0 support + OpenESB/GlassFish 2.2 + Oracle ESB 11g + + + JBoss ESB 4.10 + WSO2 3.0 + Mule 3.2.0 support +