Enterprise service bus part 2
- 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
- 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
- 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
- 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
- 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 +