Oracle Service Bus: - When to use, where to use and when not to use Session ID#: 244 Prepared by: Abhay Kumar Senior Consultant AST Corporation REMINDER Check in on the COLLABORATE mobile app
Specialized. Recognized. Preferred. The right partner makes all the difference. Our Services Oracle Partnership Oracle Specialized E-Business Suite Oracle Platinum Partner EBS Financial Management Business Intelligence/EPM Fusion Middleware CRM Managed Services Oracle University Project Advisory Services Pillar Partner SOA Business Intelligence Hyperion Oracle University Approved Education Center Oracle University Reseller Oracle Accelerator Implementer Certified OnDemand Implementer Small Business Strategy Council EBS Supply Chain Management EBS Human Capital Management BI Applications BI Foundation Hyperion Planning Service Oriented Architecture Application Development Framework Database Public Sector Oracle Excellence/Titan Award Winner 2013, 2011 & 2009 2011 Inc. Top Small Company Workplaces 2013, 2012 Inc. 5000 Fastest Growing Companies 2012 Best & Brightest Companies to Work For
Abhay Kumar Work for Application Software Technology, Naperville Illinois 8+ Years of Experience in Oracle Middleware Technologies Oracle IDM and SOA Certified Professional Worked for Clients such as Los Angeles Metropolitan Authority, LA Tri Metropolitan Transit Authority, Oregon Greater Orlando Airport Authority, Florida
Introduction of Oracle Service Bus aka OSB This is a subtitle or bulleted list
Quick Poll How many of you know Oracle SOA Suite? How many of you have used Oracle Service Bus? How many of you are aware of Oracle Service Bus? How may of you are new to Oracle Service Bus?
Oracle Service Bus Quick Introduction It is a lightweight integration Enterprise service bus. (ESB) It is designed to connect, mediate and manage interactions among diversified services. Provides Loose Coupling, Service Virtualization, Service Pooling and Throttling. Provides Service Aggregation, Location Transparency Works on VETRO Pattern viz Validate, Enrich, Design, Transform, Route and Operate. Oracle Service bus is an integral part of Oracle SOA Suite.
Place of OSB in Oracle SOA Suite
Oracle Service Bus Features
Components of OSB Proxy Service Request Pipeline handles request Response Pipeline and Error Pipeline handles response and error Business Service Talks to Service Provider
Enable Loose Coupling Enable loose Coupling by eliminating Point to Point Connection
Location Transparency Provide a virtual endpoint to the Service Consumer. Shield the changes of service provider from the service consumer. Modify Service Endpoints at runtime Provide Multiple Endpoints
Static Routing Route the messages from Service Consumer to one or more Service Providers based on the content of the messages. Use conditional branching, operational branching, dynamic routing or a routing table to evaluate which business service is to be called. Supported types of routing are operation based, content/payload based and header based.
Dynamic Routing Route the messages from Service Consumer to one or more Service Providers which is not know at design time. Use Business Rules to determine the destination service. Modify the endpoint URI of the business service by using the Routing Options. All the service provider must implement the same contract.
Message Transformation Transform the message formats from Text to XML by using Message Format Language. Transform messages to XML format using XQuery and XSLT. OSB supports XQuery Mapper tool. Read XML messages and write them as binary Messages.
Message Enrichment Make a call to another service provider to update the request message.. Use the service callout feature.
Protocol Transport Switching Allow multiple protocol/messages to participate in the service bus. OSB supports various types of protocol like SOAP,JMS,FTP, FILE,EMAIL,HTTP
Support Multiple Versions Simultaneously Enable Backward Compatibility by supporting multiple versions and isolating changes to service contract.
Service Result Caching Externally invoked service returns results which are reasonably static. Setup Service Result Caching to reduce load on the backend system and increase the response time. It user in memory data grid solution from oracle coherence. Monitor the service result cache hit ratio.
Traffic Management Throttling and Prioritization Restrict the message flow to a service provider. Limit the number of messages which will be processed concurrently by the business service. The messages are stored in a queue. Additionally define SLA alert rule based on throttling metrics.
Service Endpoint Management- Service Pooling Increases the availability and reliability of service providers by retrying errors like temporary network glitches. Configure the number of times a service can be retried and at what interval.
Service Endpoint Management- Load Balancing Makes service providers more highly available and scalable. In absence of a external load balancer make use of Business service load balancer. Marks the endpoint as offline and no further requests are sent to that url. Make use of different Load Balancing algorithm like round robin, random, random weighted etc.
Parallel Processing - Split Joins A service payload, which has individual messages needs to processed concurrently instead of sequentially. Static split join, the number of service providers to be called is known at design time. Dynamic split join, the number of times a service provider is to be called is calculated at runtime. Collect the responses from service provider and aggregates it.
Expose Legacy Applications as Webservice Expose the legacy applications as webservice by using the adapters from OSB For example use JCA adapters to connect to Database, Advanced Queues, EJB. Additionally make your service secure by using OWSM security at your Proxy Service.
Message Reliability using JMS Use weblogic jms to use minimize the loss of message. Configure the retries and delivery failure mechanism on the weblogic jms queue. Sequence the message using unit of work and unit of order. If the service provider is down the message can be retried later.
Native Java Support Expose the existing JAVA EJB as a webservice from OSB to leverage monitoring, alerting and reporting capabilities. Use JEJB transport to propagate the transaction and security context
SLA Monitoring and Alerting Provides a lightweight framework for monitoring the statistics like response time, execution time and sends out alerts. Define the condition and set up alert destinations like email, SNMP,JMS. etc. You can also view it on the OSB Dashboard. BAM can be integrated with OSB for alert viewing.
Bad Practices This is a subtitle or bulleted list
Long Running Stateful Process OSB is not meant for stateful processes Process which run for long time, like leave application programs The flow may sit for approvals for days. Solution: Use BPEL and BPMN
Complexity in Orchestration To many conditions in the flow. Chaining of services by using too many Service Callouts. Solution: Use BPEL and BPMN
Manual Intervention or Human Task OSB is not meant for business processes that human workflow tasks. Not to be used where the error requires a manual intervention. Solution: Use BPEL and BPM both support human approval tasks.
Correlation When the external web service called doesn't have WS- Addressing capability When the message travels through several services and response is solicited by the initial service from the last service directly For instance, request flow asynchronously pro1 -> pro2 -> pro3 and response is received from pro3 ->pro1. Solution: Use BPEL and create correlation sets.
Calling JAVA Jar files with business logic Do not use JAVA Callout from OSB to call jar files with business logic. Do not try to control threads from jar files which are called from OSB by using java callout. Use Java callout for transformations. Solution: Expose the business logic as a webservice and call that from OSB.
Bulk or Batch Data Movement Do not use OSB for moving huge data using JCA like moving bulk data from one database to use database. Use Streaming option in OSB if moving huge files, this does not allow the files to be manipulated. Solution: Use Tools like Oracle Data Integrator.
Execute SQLS Do not execute heavy SQL s directly from OSB using fnbea:execute-sql($datasource,$sql..) command. Should only be used to look up name value pair. If the result set is huge the performance goes down. Solution: Use JCA Adapters. Create Database Adapters in Jdeveloper and use them in OSB
Reference http://docs.oracle.com/cd/e17904_01/doc.1111/e15017/overview. htm http://www.oracle.com/technetwork/middleware/soasuite/learnmo re/where-and-when-to-use-osb-1885528.pdf
Questions
Please complete the session evaluation Session ID:244 We appreciate your feedback and insight You may complete the session evaluation either on paper or online via the mobile app
Thank You. Abhay Kumar akumar@astcorporation.com