Oracle SOA Tips & Tricks

61
Ahmed Aboulnaga Technical Director Raastech Oracle SOA Tips & Tricks Nuremberg Convention Center East Room 15: Prag November 13, 2013 16:00 16:45

Transcript of Oracle SOA Tips & Tricks

Page 1: Oracle SOA Tips & Tricks

Ahmed Aboulnaga Technical Director Raastech

Oracle SOA Tips & Tricks

Nuremberg Convention Center East Room 15: Prag

November 13, 2013 16:00 – 16:45

Page 2: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 2 of 61 raastech.com

About Raastech

Systems integrator founded in 2009

Headquartered in the Washington DC area

Specializes in Oracle Fusion Middleware

Oracle Gold Partner & Reseller

Oracle SOA Specialized

Certified staff in multiple disciplines

OCE, OCA, OCP, ITIL, CISSP, PMP, etc.

Continued contributions to the technology community

Sponsor and volunteer of numerous users groups

Ongoing publishing of books, articles, whitepapers, and blogs

Regular presenters at major conferences

Page 3: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 3 of 61 raastech.com

About Me

Ahmed Aboulnaga

15+ years of Oracle middleware experience

Focus on Oracle Fusion Middleware, with emphasis on

SOA, identity management, and portal technologies

Oracle ACE, OCE, OCA

Author / Presenter / Blogger

President of WMOUG / EGOUG

Page 4: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 4 of 61 raastech.com

What is this presentation about?

For the experienced Oracle SOA technologist

Random tips and tricks surrounding the following product sets:

SOA Suite 11g

BAM 11g

OSB 11g

OWSM 11g

OSR 11g

Goal is to share things you may never have heard about or come across

Page 5: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 5 of 61 raastech.com

Agenda

1. A lot of random stuff

Page 6: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 6 of 61 raastech.com

Agenda

1. BAM stuff

2. OSB stuff

3. SOA Suite stuff

4. WebLogic stuff

5. Integration stuff

6. OSR stuff

Page 7: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 7 of 61 raastech.com

Agenda

1. BAM stuff

2. OSB stuff

3. SOA Suite stuff

4. WebLogic stuff

5. Integration stuff

6. OSR stuff

Page 8: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 8 of 61 raastech.com

Understand what BAM is designed for

Not a data repository… use OBIEE instead

Not intended for large amounts of data (think millions of records per data object)

Our mistake:

Instead of composite sensors, dumped huge amount of sensor data into BAM

Why is this a problem?

BAM unable to handle extremely large loads effectively

BAM reports are exceptionally weak

Who nowadays develops web apps that run only in IE?

Best used for aggregated data that needs to be reported against in near real-time

Page 9: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 9 of 61 raastech.com

Weak BAM reporting capabilities

No user sorting

No field expansion

Cumbersome navigation

Weak search capabilities

Page 10: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 10 of 61 raastech.com

BAM runs only on IE

Yes, I know the history of BAM… but still unacceptable

Page 11: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 11 of 61 raastech.com

Don’t forget about BAM purging

People tend to forget about purging BAM Data Objects

If data object is based on a database table:

Simply create a scheduled PL/SQL package to purge the data

Otherwise:

Use BAM Alerts

Page 12: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 12 of 61 raastech.com

Avoid BAM RMI Adapter

BAM Adapter comes in 2 flavors; RMI and SOAP

Page 13: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 13 of 61 raastech.com

Avoid BAM RMI Adapter

BAM Adapter comes in 2 flavors; RMI and SOAP

In your code:

eis/bam/rmi

eis/bam/soap

Avoid RMI because:

It is not as efficient as SOAP

Bug in BAM Adapter leads to BPEL threads not being released

Page 14: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 14 of 61 raastech.com

Understanding BAM inBatch=‘Y’

The BAM Adapter property inBatch batches requests into batches (Could this sentence sound any more messed up?)

Page 15: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 15 of 61 raastech.com

Understanding BAM inBatch=‘Y’

BAM Adapter reports ‘success’ 100% of the time, but

pushes the data as predetermined intervals

SOA Composite

Instance

SOA Composite

Instance

SOA Composite

Instance

BAM

inBatch=N

inBatch=N

inBatch=N

Page 16: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 16 of 61 raastech.com

Understanding BAM inBatch=‘Y’

BAM Adapter reports ‘success’ 100% of the time, but

pushes the data as predetermined intervals

SOA Composite

Instance

SOA Composite

Instance

SOA Composite

Instance

BAM

inBatch=Y

inBatch=Y

inBatch=Y

Page 17: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 17 of 61 raastech.com

Understanding BAM inBatch=‘Y’

Works great, but if there is an error in a single BAM

record:

The entire batch fails

Unknown which record failed

Failure not always in SOA logs but sometimes in BAM logs

Page 18: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 18 of 61 raastech.com

Understanding BAM inBatch=‘Y’

BAM UP

BAM Goes DOWN

SOA Suite UP

SOA Suite Goes DOWN

• Requests are batched in SOA • Invocations always success

• Requests are batched in SOA • Invocations always success • Limit to how much can be

batched

• Batched requests are lost • Both are down!

Page 19: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 19 of 61 raastech.com

Agenda

1. BAM stuff

2. OSB stuff

3. SOA Suite stuff

4. WebLogic stuff

5. Integration stuff

6. OSR stuff

Page 20: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 20 of 61 raastech.com

OSB Summary

Pros

Stateless, so performance is superior

Caching, throttling, service virtualization

Can search indexes in payloads (if enabled)

Cons

Cannot reference MDS

Shared custom code required for DVM support

But cannot support multi-input DVMs

Severe limitations in transactional visibility, tracing, and metrics

WSDLs/XSDs must be copied locally

Page 21: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 21 of 61 raastech.com

OSB vs. BPEL Performance

1000 transactions (OSB) = 3:32 minutes

1000 transactions (BPEL) = 10:19 minutes

OSB is superior in performance to BPEL (68% better)

Service

OSB Med OSB OSB Med

Service

BPEL Med Med BPEL Med

Page 22: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 22 of 61 raastech.com

OSB vs. Composite Tracing

Page 23: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 23 of 61 raastech.com

OSB Report Action

OSB performs 2x to 4x faster than BPEL (great!)

OSB sucks in terms of transactional visibility

Consider using the Report Action to capture SOAP

headers and SOAP bodies

Consider creating a web service to log key metadata

(e.g., think BPEL sensors)

Page 24: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 24 of 61 raastech.com

OSB Report Action

Can filter by index

Header and body are displayed separately

Enabling header/body on both request/response is 4x slower

This is the only OSB functionality that is persisted

Page 25: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 25 of 61 raastech.com

OSB Report Action

For all Proxy Services, in the request stage:

1. Add a Report action for $header

2. Add a Report action for $body

3. Specify at least one “Key Name” for both

4. Add the “…Request” string to the name and use the same

value from the body

Page 26: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 26 of 61 raastech.com

Using JCA Adapters in OSB

OSB provides native adapters

JCA Adapters must be created in JDeveloper 11g

.JCA and .WSDL manually imported to OSB project

Not supported for all adapters (DB Adapter yes, FTP Adapter no)

Page 27: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 27 of 61 raastech.com

OSB Caching

Result Caching (Coherence) on Business Service

To be used with data that is not frequently updated (e.g., product info)

Will not re-query backend until it has expired

15% to 25% performance improvement with DB Adapter

Page 28: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 28 of 61 raastech.com

OSB on Exalogic – Problems

On OSB installations on Exalogic, the following problems

were experienced:

Client requests get a read time out error

The BEA-380000 error “Request Entity Too Large” appears in

the logs

OSB invocations retry multiple times every 5 minutes

OSB invocations invoke target service twice

Page 29: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 29 of 61 raastech.com

OSB on Exalogic – Solution

For all Business Services

1. Under HTTP Transport Configuration

2. Set “Use Chunked Streaming Mode” to “Disabled”

For all Proxy Services

1. View Message Flow

2. Edit Route Node(s)

3. Check on “Quality of Service” and set it to “Exactly Once”

Page 30: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 30 of 61 raastech.com

Securing OSB Services with OWSM

1. Click on the Proxy Service

2. Click on the “Policies” tab

3. Select “From OWSM Policy Store” and click “Add”

4. Select the policy “oracle/wss_username_token_service_policy”

5. Update, activate, and submit the changes

Page 31: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 31 of 61 raastech.com

Securing OSB services with OWSM

6. When testing, add the following SOAP header to the envelope:

<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<wsse:Security soap:mustUnderstand="1" xmlns:wsse="http://

docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">

<wsse:UsernameToken wsu:Id="UsernameToken-tk6qMWkQ5hl3Md2INvp16Q22"

xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

<wsse:Username>oratest</wsse:Username>

<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-

profile-1.0#PasswordText">password123</wsse:Password>

</wsse:UsernameToken>

</wsse:Security>

</soap:Header>

Page 32: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 32 of 61 raastech.com

Agenda

1. BAM stuff

2. OSB stuff

3. SOA Suite stuff

4. WebLogic stuff

5. Integration stuff

6. OSR stuff

Page 33: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 33 of 61 raastech.com

Securing SOA services with OWSM

1. Navigate to the composite, scroll down, and click on the reference

2. Click on the “Policies” tab

3. Attach the policy “oracle/wss_username_token_service_policy”

Page 34: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 34 of 61 raastech.com

Optimized calls if using ServiceURL

Ensure that URLs used for composite-to-composite invocations are

identical to the setting in ServerURL

SOA Suite optimizes these calls (uses RMI internally)

Page 35: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 35 of 61 raastech.com

Optimized calls if using ServiceURL

Ensure that URLs used for composite-to-composite invocations are

identical to the setting in ServerURL

SOA Suite optimizes these calls (uses RMI internally)

soa_server1 soa_server2

ohs1 ohs2

soadev-vip

Page 36: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 36 of 61 raastech.com

Avoid Mediator Parallel Routing Rules

See this presentation for details why:

http://www.raastech.com/raastech/library/ Raastech_2013_Collaborate_SOASuite11gPerformance.pdf

This is because of the poor design that Oracle has chosen for avoiding thread starvation

Edit all “*.mplan” files for your asynchronous Mediator operations and change the executionType as follows:

OLD: executionType="direct"

NEW: executionType="queued"

Page 37: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 37 of 61 raastech.com

100 messages 98 messages

Wait 1 second

No messages here

Wait 1 second

No messages here

Wait 1 second

No messages here

99 messages

Avoid Mediator Parallel Routing Rules

Page 38: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 38 of 61 raastech.com

Consider 1-way BPEL Instead of Queues

Queues are great ways to

force asynchronicity of

your integration

But using 1-way BPEL

async invocations

achieves the same thing

No need to maintain a

queue; BPEL recovery

tables are used internally

BPEL

BPEL

Page 39: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 39 of 61 raastech.com

Use MDS for all WSDLs

Consider ORAMDS instead of HTTP for composite-to-

composite invocations

Removes the composite loading dependency

(It’s still translated to an optimized call behind the scenes)

<reference name="AsyncStatus" ui:wsdlLocation="oramds:/apps/WSDLs/AsyncStatus.wsdl">

<interface.wsdl interface="http://xmlns.oracle.com/AsyncStatus#wsdl.interface(execute_ptt)"/>

<binding.ws location="oramds:/apps/WSDLs/AsyncStatus.wsdl"

port="http://xmlns.oracle.com/AsynStatus#wsdl.endpoint(AsyncStatus_ep/execute_pt)"

soapVersion="1.1“/>

</reference>

Page 40: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 40 of 61 raastech.com

Agenda

1. BAM stuff

2. OSB stuff

3. SOA Suite stuff

4. WebLogic stuff

5. Integration stuff

6. OSR stuff

Page 41: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 41 of 61 raastech.com

Singleton property with JMS Topics

For inbound JMS Adapter from a topic, use the

“singleton” property to avoid consumption of multiple

messages in a cluster

For more information:

<service name="JMSConsume" ui:wsdlLocation="JMSConsume.wsdl">

<interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/jms/JMS#wsdl.interface(Consume_ptt)"/>

<binding.jca config="JMSConsume_jms.jca">

<property name="singleton">true</property>

</binding.jca>

</service>

Single message consumption from distributed topic in WebLogic Server 11g http://blog.raastech.com/2012/04/single-message-consumption-from.html

Understanding the "singleton" property with WebLogic JMS topics http://blog.raastech.com/2012/07/understanding-singleton-property-with.html

Page 42: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 42 of 61 raastech.com

Singleton property with JMS Topics

Forwarding Policy Replicated

Page 43: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 43 of 61 raastech.com

Singleton property with JMS Topics

Forwarding Policy Replicated (with Singleton property)

Page 44: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 44 of 61 raastech.com

Singleton property with JMS Topics

Forwarding Policy Partitioned

Page 45: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 45 of 61 raastech.com

Singleton property with JMS Topics

Forwarding Policy Partitioned (with Singleton property)

Page 46: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 46 of 61 raastech.com

Avoid Distributed Topics

Not possible to have truly highly available JMS destinations

Expectation:

1. With 1 consumer, if code is deployed to all 4 nodes of the cluster, the message is

consumed only once

2. Message is equally available to all nodes of the cluster, so if any node fails, the

message is still available and can be consumed without manual intervention

Reality:

Point #1 is not possible if you set the forwarding policy to “Replicated”

Point #2 is not possible if the destination’s forwarding policy is set to “Partitioned”

Since these are the only two options available, unable to satisfy both

requirements

See http://blog.raastech.com/2012/07/5-reasons-why-oracle-weblogic-server.html

Page 47: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 47 of 61 raastech.com

Avoid Distributed Topics

Cannot have durable subscribers on distributed topics

SOA Producer

SOA Consumer

SOA Consumer

SOA Consumer

Page 48: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 48 of 61 raastech.com

Avoid Distributed Topics

Cannot have durable subscribers on distributed topics

SOA Producer

SOA Consumer

SOA Consumer

SOA Consumer

Page 49: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 49 of 61 raastech.com

Agenda

1. BAM stuff

2. OSB stuff

3. SOA Suite stuff

4. WebLogic stuff

5. Integration stuff

6. OSR stuff

Page 50: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 50 of 61 raastech.com

Direct Binding in OSB? Yes or No?

1. Edit the business service

2. For Protocol, select “soa-direct”

3. For Load Balancing Algorithm, select “round-robin”

4. For Endpoint URI, use the format shown in the screenshot

Page 51: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 51 of 61 raastech.com

Direct Binding in SOA? Yes or No?

1. Edit the proxy service

2. Under Transport Configuration, modify Protocol to “sb”

3. In the OSB proxy service, Export WSDL via the icon and save it to your local file system

4. Extract the contents of the JAR file to your local file system

5. Create a Direct Binding reference

Enter a name

Ensure that Type is a “Reference”

Ensure that Reference Target is “Oracle Service Bus”

Manually import the WSDL and all referenced WSDLs/XSDs into the project

The Reference Binding Details will be automatically populated

Page 52: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 52 of 61 raastech.com

Direct Binding in SOA? Yes or No?

Page 53: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 53 of 61 raastech.com

Direct Binding? Yes or No?

No

Avoid direct binding between SOA Suite and OSB

SOAP is a better performant protocol than RMI

Page 54: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 54 of 61 raastech.com

PassThroughHeader Property

Do you need to use the “passThroughHeader” property?

Allows elements in the header to pass from one

composite to another

Otherwise, elements in the header that are not explicitly

referenced will be dropped before they are passed to the

next composite.

<component name="UpdateCustomer">

<implementation.mediator src="UpdateCustomer.mplan"/>

<property name="passThroughHeader">true</property>

</component>

Page 55: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 55 of 61 raastech.com

Agenda

1. BAM stuff

2. OSB stuff

3. SOA Suite stuff

4. WebLogic stuff

5. Integration stuff

6. OSR stuff

Page 56: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 56 of 61 raastech.com

Why consider a service registry?

Over time, most organizations encounter the following

problems:

No central service registry

Creation of duplicate/redundant services

Difficult to obtain interface specifics on existing services

Page 57: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 57 of 61 raastech.com

Service

Oracle Service Registry

Some screenshots from: http://biemond.blogspot.com/2009/12/using-oracle-service-registry-in-soa.html

SOA Suite

OSR

Register Service Configure SOA Suite

Service

Service

Page 58: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 58 of 61 raastech.com

Avoid Oracle Service Registry

Do not use at all

Was a hot topic 10 years ago, not so much nowadays

Nobody really does dynamic service lookup

OSR, at best, can be used as a service catalogue

Consider Oracle Enterprise Repository (OER)

Page 59: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 59 of 61 raastech.com

Agenda

1. BAM stuff

2. OSB stuff

3. SOA Suite stuff

4. WebLogic stuff

5. Integration stuff

6. OSR stuff

7. Summary

Page 60: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 60 of 61 raastech.com

Summary

BAM: Use it for what it is intended for

OSB: Superior performance, poor visibility

SOA Suite: A lot of things to consider; learning about all

aspects of the products takes time and experience

WebLogic Server: Avoid JMS topics

Integration: Avoid direct binding

OSR: Avoid altogether

Page 61: Oracle SOA Tips & Tricks

© Raastech, Inc. 2013 | All rights reserved. Slide 61 of 61 raastech.com

Contact Information

Ahmed Aboulnaga

Technical Director

[email protected]