Tag Archives: message

SOA – a quick view


What is SOA?

SOA is standard based method of system development and integration

What are the benefits?

  • Reusability
  • Integration
  • Interoperability
  • Agile development
  • Scalability
  • Cost Efficient

What are all the ways to implement services?

  • Point to point approach
  • Vendor specific implementation
  • CORBA
  • Web services
  • SCA-style implementation

What are Services?

  • Building blocks of SOA
  • Interface and message structure definitions
  • Standard protocol for interoperability

What are SOA standards?


What is SCA [Service Component Architecture]?

SCA provides a programming model for building applications using SOA

What are the difference between SOA and SCA?

  • SOA is an approach or implementation style and SCA uses SOA to build a composite application
  • SOA is architectural style but SCA is assembly model and defines/design

What are the elements of SCA?

What is SDO [Service Data Object]?

  • Representation of data source in XML format and specifes methods to create, delete and modify data
  • Simplify and unify the way in which applications handles the data

What is EDN [Event Driven Network]?

  • To handle asynchronous messaging arising from a business event
  • Supports publish and subscribe model
  • Aligns with Event driven Architecture [EDA]



Quick look at the mediator component


What is Oracle Mediator Component?

Mediator is the load balancer which can route, filter, validate and transform data from the service providers to external references

  • Route: determines the service component to which the message has to be sent
  • Validate: validate the incoming payload information
  • Filter: Filters the payload for specific information before routing it to the specific component
  • Transformation: Transforms data from one xsd format to another using XSL Mapper

the code specific to mediator in the composite.xml will be like

<component name="ConversionMediator">
<implementation.mediator src="ConversionMediator.mplan"/>
</component>

Mediator component in the design view consist of

Name: Name of the mediator component

WSDL Url: the service provider URL

Port Type: The port on which the request message is sent

Resequence Level: Whether the sequencing of the incoming message will be taken care commonly[Operation] or for each component [component]

Priority: priority set for parallel routing rule

validate XSD: validate the schema for the incoming message

Callouts: specifies java classes for extra logic in programmatic way

Resequence:

Standard -> the incoming message will be sequence based on the sequence id

Best Effort -> sequencing based on the best possible way

FIFO ->  sequencing of message based on the time of the arrival of the message

Static Routing:

routing rule based on static information

Filter -> content based or header based routing

Transform -> using xsl mapper file

validate -> using schematron file

Assign -> assign header,payload values of the message from source to target

sequential -> rule executed one after the other

Parallel -> rule executed in parallel. Priorities are given to the parallel rule

Dynamic Routing:

routing rule based on external rule which keeps changing based on the invocation context

Fault Handling: This is handled in composite or at the component[mediator] level by specifying fault policies

Event Handling: A mediator can subscribe or publish an event

oracle.fabric.common.FabricInvocationException


Bump….
I got this error yesterday when I tried to deploy a dummy soa composite

Error Message: {http://schemas.oracle.com/bpel/extension}remoteFault
Fault ID    default/Project1!3.0*ad3d0394-9602-4482-9429-fc45d624bb5b/ProcessHello/3-BpInv0-BpSeq0.3-3
Fault Time    Sep 3, 2010 1:07:55 PM
Non Recoverable System Fault :
<bpelFault><faultType> <message>0</message></faultType>
<remoteFault xmlns="http://schemas.oracle.com/bpel/extension">
<part name="summary">
<summary>oracle.fabric.common.FabricInvocationException</summary>
</part>
<part name="detail"><detail>null</detail></part>
<part name="code"><code>null</code></part>
</remoteFault></bpelFault>

for the above error the solution is the deploy the soa composite along with the deployment plan

right-click the composite and click on generate

when u deploy the soa composite you will have to select the
‘Use the SOA configuration option’ and locate the file

The sample config plan will be like

<?xml version="1.0" encoding="UTF-8"?>
<SOAConfigPlan xmlns:jca="http://platform.integration.oracle/blocks/adapter/fw/metadata" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:orawsp="http://schemas.oracle.com/ws/2006/01/policy" xmlns:edl="http://schemas.oracle.com/events/edl" xmlns="http://schemas.oracle.com/soa/configplan">
 <composite name="Project1">
 <!--Add search and replace rules for the import section of a composite
 Example:
 <searchReplace>
 <search>http://my-dev-server</search>
 <replace>http://my-test-server</replace>
 <searchReplace>
 <searchReplace>
 <search>8888</search>
 <replace>8889</replace>
 <searchReplace>-->
 <import>
 <searchReplace>
 <search/>
 <replace/>
 </searchReplace>
 </import>
 <service name="orderprocessor_client_ep">
 <binding type="ws">
 <attribute name="port">
 <replace>http://xmlns.oracle.com/SOAApplication_jws/Project1/OrderProcessor#wsdl.endpoint(orderprocessor_client_ep/OrderProcessor_pt)</replace>
 </attribute>
 </binding>
 <callback>
 <binding type="ws">
 <attribute name="port">
 <replace>http://xmlns.oracle.com/SOAApplication_jws/Project1/OrderProcessor#wsdl.endpoint(orderprocessor_client_ep/OrderProcessorCallback_pt)</replace>
 </attribute>
 </binding>
 </callback>
 </service>
 <!--Add search and replace rules for the component properties
 For components and service/reference bindings, you can add policy references.
 Example:
 <component name="*">
 <wsp:PolicyReference orawsp:category="management" orawsp:status="enabled" URI="oracle/log_policy"/>
 </component>-->
 <component name="OrderProcessor">
 <property name="activationAgent.LoadData.className">
 oracle.tip.adapter.fw.agent.jca.JCAActivationAgent
 </property>
 <property name="activationAgent.LoadData.portType">
 <replace>execute_ptt</replace>
 </property>
 </component>
 <reference name="StoreFrontService">
 <binding type="ws"/>
 </reference>
 </composite>
 <!--To configure monitor.config:
 <property name="enabled"><replace>true</replace></property>
 <property name="dataObjectsFolder"><searchReplace><search>mydev</search><replace>myproduction</replace></searchReplace></property>

 sample properties to configure for adapter:
 medmq1

 To add search and replace rules for wsdls, xsd and jca files
 Example:
 <searchReplace>
 <search>http://my-dev-server</search>
 <replace>http://my-test-server</replace>
 <searchReplace>
 <searchReplace>
 <search>8888</search>
 <replace>8889</replace>
 <searchReplace>
 -->
 <wsdlAndSchema name="OrderProcessor.wsdl|StoreFront.wsdl|xsd/BPELProcess1.xsd|xsd/OrderProcessor.xsd|xsd/singleString.xsd|xsd/StoreFront.xsd|xsd/StoreFrontProcessor.xsd">
 <searchReplace>
 <search/>
 <replace/>
 </searchReplace>
 </wsdlAndSchema>
</SOAConfigPlan>

Adding custom message in ADF UI


The complete steps are given here

http://download.oracle.com/docs/cd/E12839_01/web.1111/b31974/bcadvgen.htm#BABEFGCI

also download the sample from here