SOA Interview Questions
SOA Interview Questions
WSDL is a document written in XML. The document describes a Web service. It specifies the location of the
service and the operations (or methods) the service exposes.
message A definition of an abstract message that may consist of multiple parts, each part may be of a
different type
portType An abstract set of operations supported by one or more endpoints (commonly known as an
interface); operations are defined by an exchange of messages
binding A concrete protocol and data format specification for a particular portType
The targetNamespace declares a namespace for other xml and xsd documents to refer to this schema. The
target prefix in this case refers to the same namespace and you would use it within this schema definition to
reference other elements, attributes, types, etc. also defined in this same schema definition.
Note: This element must appear as the first child node of <xsl:stylesheet> or <xsl:transform>.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
< xsl:call-template name="myTemplate">
< !-- Content: xsl -->
Page 3 of 49
< /xsl:call-template>
< stylesheet>
XA (Global Transaction): It involves more than one resource (different databases, queues, application
servers) all participate in one transaction. It uses two-phase commit to ensure that all resources either
all commit or rollback any particular transaction. When you have scenario like you need to connect to
two different databases, JMS Queue and application server, in this case you will use XA transaction that
means all resource participate in one transaction only.
For synchronous operations with a conditional filter, the echo option does not return a response to the
caller when the filter condition is set to false. Instead, it returns a null response.
The echo option is available for asynchronous operations only if the Oracle Mediator interface has a
callback operation. In this case, the echo is run on a separate thread.
FIFO(based on time)
Best Efforts
Page 5 of 49
When you choose to create dynamic routing rule then it creates a new business rule service component
that is wired to the Oracle Mediator service component within the SOA composite of the Oracle
Mediator service component. The business rule service component includes a rule dictionary. The rule
dictionary is a metadata container for the rule engine artifacts, such as fact types, rulesets, rules,
decision tables and so on.
Sequential parallel
Oracle Mediator evaluates routings and performs Oracle Mediator queues and evaluates routings in
the resulting actions sequentially. Sequential parallel in different threads.
routings are evaluated in the same thread and
transaction as the caller The messages of each Oracle Mediator service
component are retrieved in a weighted, round-
robin fashion to ensure that all Oracle Mediator
service
Page 6 of 49
Oracle Mediator always enlists itself into the Oracle Mediator initiates a new transaction for
global transaction propagated through the thread processing each parallel rule. The initiated
that is processing the incoming message. For transaction ends with an enqueue to the Oracle
example, if an Mediator parallel
Oracle Mediator never commits or rolls back Oracle Mediator commits or rolls back transactions
transactions propagated by external because it is the initiator of these transactions.
failure.
Question: How many faults can Oracle Mediator service engine throw ?
Answer: Only One
{http://schemas.oracle.com/mediator/faults}mediatorFault.
- See more at: http://www.soawork.com/2013/05/oracle-soa-interview-questions-
mediator.html#sthash.moSQfA3X.dpuf
Question: Difference between Read & Sync-Read operation in File & FTP adapter?
Answer: Read is used when Polling is required to be done while SyncRead is used when you need to
read the file in between the flow i.e you want to have a synchrnous communication.
If an invalid payload is provided, then ChunkedRead scenarios do not throw an exception. When a
translation exception (bad record violating the NXSD specification) is encountered, the return header is
populated with the translation exception message that includes details such as line and column where
the error occurred. All translation errors do not result in a fault. These errors are manifested as a value
in the return header. You must check the jca.file.IsMessageRejected and jca.file.RejectionReason header
values to ascertain whether an exception has occurred. Additionally, you can also check the
jca.file.NoDataFound header value.
For example, a BPEL process is writing files to a directory and a second BPEL process is polling the same
directory for files. If you want the second process to start polling the directory only after the first
process has written all the files, then you can use a trigger file. You can configure the first process to
create a trigger file at the end. The second process starts polling the inbound directory once it finds the
trigger file.
Page 9 of 49
JMS Queue
File
Answer: MDS stands for Oracle MetaData Service. It is central repository inside Oracle Fusion
Middleware. MDS purpose is to provide centralized store where we can keep, manage & access
metadata.
Metadata is often defined as data about data, or in other words, pieces of information that describes
and gives meaning to other information. Typical examples of metadata used by Oracle Fusion
Middleware components are XML files, XSD schema files, XSL transformations, SCA composites, BPEL
processes, WSDLs, business rules, Oracle ADF pages, JaveServer Pages (JSP), and Oracle ADF task flows,
among others.
The same metadata that is used during the design phase of application is used at application runtime
through the metadata service layer. This ensures consistency through the lifecycle of the application.
Metadata such as XML files or XSD schema files is usually shared among different components.
Therefore, it is not only necessary that those resources can be accessed easily and referenced by all the
components, but it is also important that they remain consistent; a change in the metadata should be
reflected in all the components that are referencing it. Having only one copy of each metadata resource
avoids unnecessary redundancy and guarantees that the changes are made in only one place.
Page 10 of 49
Answer: The idea behind file-based repositories is to allow developers to have a light repository
available in their local environment that can be easily adapted for development and tests; a file-based
repository relieves developers of having to configure and maintain an external database while providing
necessary functionality, such as file referencing and customizations. These kinds of repositories are
easily modified and maintained, since they define a directory structure similar to any other directory
structure inside an operating system. They can be navigated and altered using common shell commands
or any kind of visual file explorer application. The file-based repository is usually located inside the
Oracle JDeveloper home (JDEV_HOME/integration) if the default configuration is used.
Answer: The adf-config.xml file is a configuration file that is used to store MDS Configurations.
Question: Can we use both Catch block & fault handling framework in one BPEL?
Answer: Yes, we can have both Catch Block & Fault policies files in one BPEL.
{http://schemas.oracle.com/mediator/faults}mediatorFault.
Answer: Yes we can create custom faults in BPEL, these faults are usually called Business Faults and we
usually handle it by using specific Catch block.
Answer: We can keep these files either local to project or in MDS and in both the cases we have to
specify the path in composite.xml file. - See more at: http://www.soawork.com/2013/10/oracle-soa-
interview-question-error-handling.html#sthash.1MTQJ02i.dpuf
Answer: OWSM stands for Oracle Web Service Manager. Oracle Web Services Manager offers a
comprehensive and easy-to-use solution for policy management and security of service infrastructure. It
is a standalone platform for securing and managing access to web services.
Question: By how many ways we can add OWSM policy to Web Service?
Answer:
Question: When we call secured web service from SOA, which policy we will use “Client” or “Service”?
Answer: When we call secured web service from SOA then we add “Client” policy to reference partner
link and when we want to secure our web service then we use “Service” policy.
Answer: yes, we can apply one policy to all composites in one domain using policy sets.
Question: what is the scope of Policy Sets or where we can apply Policy sets ?
Answer:
· Application or Partition—all policy subjects of the specified type in an application or SOA partition
· Application module or SOA composite—all policy subjects of the specified type in an application
module or SOA composite
· Service or reference—all policy subjects of the specified type in a SOA service or reference
· Port or component—all policy subjects of the specified type in a port or SOA component
Answer: When we choose “Trigger File” checkbox, file adapter will not poll/read the file/files from
specified directory unless it sees trigger file in trigger file directory. Once trigger files is there in the
trigger file directory, file adapter will start polling the files.
Question: How to handle errors when we unable to read/poll a file using file adapter if that file is
corrupt?
Answer: We need to use File rejection handler to catch these types of error.
Page 15 of 49
Answer: When we want to read a file in between our BPEL flow then we use this option.
Answer: To read file from remote location we need to use FTP adapter.
Answer: when we want to read the file as it, means we don’t want to transform file content to XML
format then we use native format option. –
Transient Process: Transient processes do not incur dehydration during their process execution. If an
executing process experiences an unhandled fault or the server crashes, instances of a transient process
do not leave a trace in the system.
Durable Process: Durable processes incur one or more dehydration points in the database during
execution. Dehydration is triggered by one of the following activities:
· Receive activity
Answer: Yes, we can use bpel.config.auditLevel property inside composite.xml file for BPEL process
service component to set audit level for BPEL. This property takes precedence over audit level settings
at the SOA Infrastructure, service engine, and SOA composite application levels.
<component name="BPELProcess">
<property name="bpel.config.auditLevel">Off</property>
</component>
Answer: It adds dehydration overhead. This can become a problem if there are large numbers of
asynchronous processes waiting for a response since for every callback, a new thread/transaction is
needed and a callback needs to be matched to a correlation table which takes longer if there are a lot of
open processes. Design processes to be synchronous as much as possible, avoid nesting of asynchronous
processes also avoid synchronous processes calling asynchronous processes.
Page 17 of 49
Answer: No, we should avoid batch processing in BPEL as much as we can. Batch processing takes lot of
memory and causes a lot overhead for storing audit information. We should put the work to be done in
a separate BPEL process and optimize this process. Design for worst case scenarios. Implement retry
mechanisms in fault-policies. Implement your own scheduling mechanism to spread the load, if no
message level processing is needed, ODI might be an option.
· False: Activity is dehydrated immediately after execution and recorded in the dehydration store.
When idempotent is set to False, it provides better failover protection, but may impact performance if
the BPEL process accesses the dehydration store frequently.
· True (default): If Oracle BPEL Server fails; it performs the activity again after restarting. This is
because the server does not dehydrate immediately after the invoke and no record exists that the
activity executed. Some examples of where this property can be set to True are: read-only services (for
example, CreditRatingService) or local EJB/WSIF invocations that share the instance's transaction.
Page 18 of 49
Answer: This property is used when we use Flow or Flow N in BPEL. By default, Oracle BPEL Process
Manager executes in a single thread by executing the branches sequentially instead of in parallel. When
this property is set to True, the process manager creates a new thread to perform each branch's invoke
activity in parallel. This property is applicable to both durable and transient processes.
Answer: Until 11g Release 1 11.1.1.3, for XSLT operations in Oracle Mediator, the result was cached into
memory as a whole document in binary XML format. For large document processing, this caused out-of-
memory errors. Starting with 11g Release 1 11.1.1.4, the streamResultToTempFile property is available.
This property enables XSLT results to be streamed to a temporary file and then loaded from the
temporary file. Set streamResultToTempFile to yes when processing large payload using XSLT. The
default value is no.
<component name="Mediator1">
<implementation.mediator src="Mediator1.mplan"/>
<property name="streamResultToTempFile">yes</property>
</component>
This property is recommended only for processing large payloads. Enabling this property could reduce
performance for normal payloads.
Page 19 of 49
Question: Which property we have to use to process JMS, AQ or MQ messages on one node in cluster
environment.
Question: Which property we need to use to control number of message processed from MQ at one
time?
Question: Which property we need to use with singleton property to process the message in sequential
order for AQ?
Answer: We need to set activtionInstances=1 along with singleton property for AQ adapter in cluster
environment to process message in sequential order.
Page 20 of 49
Answer: No, by default we can’t set IncludeFiles property at run time. But Oracle provided one patch
(patchId=10380349), if we apply that then we can use set this property at run time.
Answer: This property is used when we don’t want to make the message visible to outside world for
some time. Message is visible and ready to read once that delay time expire message. This property is
set at Invoke for AQ adapter.
Answer: If the parameter is set to true, then the outbound Oracle File or FTP Adapter writes translated
data to a staging file and later streams the staging file to the target file. If the parameter is set to false,
then the outbound Oracle File or FTP Adapter does not use an intermediate staging file. It is defined in
Outbound JCA File.
Page 21 of 49
Question: Which application server required for Oracle SOA Suite tool ?
Answer: Mostly WebLogic server is used as application server for Oracle SOA Suite
tool.
Question: What is EM ?
Answer: EM stands for Enterprise Manager. It is webpage we deploy, test, monitor,
diagnose and resolve problem for composites. It is hosted on the Admin Server.
Question: What all schema we need for Oracle SOA Suite tool ?.
Answer: We require following schema.
1. MDS – This schema is used to store all the artifacts like WSDL, XML, XSD etc.
2. SOA_INFRA – This schema is used to store SOA Component Engine properties,
deployed composites, payloads, runtime metadata etc.
3. ORABAM – This schema is used to store the metadata that is related to BAM and its
components and this is optional schema.
4. ORASDPM – This schema is used to store metadata about the user messaging
systems.
Question: Can we have multiple composites with same name on SOA server ?.
Answer: Yes, we can have multiple composites with same name on SOA server but
this is possible when we have composites with revisions.
Question: If we have multiple composites on SOA server with same name then how
composites run ?.
Answer: If we have multiple composites with same name then only one composite will
act as default composite which will run only. But we can go to EM console and make
other composite default.
Question: Can we have more than one service component in one composite ?.
Answer: yes, we can have as many as service components in one composite but it is
not recommended, we should not have all the components in one composite itself.
Question: Can we more than one Service & Reference binding in one composite ?.
Answer: Yes, we can more than one service & reference binding in one composite, that
means we can have more than one entry & exist point for composite.
Question: What can be scenario where we have two service binding in one composite
?.
Answer: When a composite can be initiated either by direct call or by consuming the
Page 26 of 49
same message from JMS queue, in this scenario we have two entry point for same
composite.
Question: What can scenario where we have two reference binding in one composite
?.
Answer: Composite needs to send the message to first target by JMS queue and to
other target by writing the file, in this scenario we have two exist for composite.
Question: What all BPEL templates are available in SOA Suite tool ?.
Answer: Primarily we have three types of BPEL template in SOA Suite tool.
1. Synchronous BPEL Template
2. Asynchronous BPEL Template
3. OneWay BPEL Template
Question: What is default timeout time set for synchronous BPEL process ?.
Answer: Default setting is 30 seconds that means synchronous BPEL process needs to
complete the process within 30 seconds and if it exceeds this limit then it throw time out
error.
Question: Can we have handle Synchronous BPEL timeout error with error handlers ?.
Answer: No, we cannot handle timeout error with error handlers.
Question: What all activities we get when we generate BPEL using synchronous
template ?.
Answer: When we generate synchronous BPEL process then by default we get
―Receive‖ and ―Reply‖ activity. ―Receive‖ activity is used to receive the request message
and ―Reply‖ activity is used to send the response back.
Question: Can we have multiple reply activities in one synchronous BPEL process ?.
Answer: Yes, we can have more than 1 reply activity in synchronous BPEL process.
Question: What all activities we get when we generate BPEL using asynchronous
template ?.
Answer: When we generate asynchronous BPEL process then by default we get
―Receive‖ and ―CallBack‖ activity. ―Receive‖ activity is used to receive the request
message and ―CallBack‖ activity is used to send the response back.
Page 28 of 49
Question: What all activities we get when we generate BPEL using oneway template ?.
Answer: When we generate oneway BPEL process then by default we get ―Receive‖
activity. ―Receive‖ activity is used to receive the request message.
Question: What is the difference between sequential and parallel routing rule ?.
Answer: Below are the difference between sequential and parallel routing rules.
Sequential:
1. These routing rules evaluated and performed sequentially.
2. These routing rules executes in single thread.
3. Oracle Mediator never commits or rolls back transactions propagated by external
entities.
4. Oracle Mediator always enlists itself into the global transaction propagated through
the thread that is processing the incoming message.
Parallel
1. These routing rules evaluated and performed in parallel order.
2. These routing rules executes in parallel (multiples) threads.
3. Oracle Mediator commits or rolls back transactions because it is the initiator of these
transactions.
4. Oracle Mediator initiates a new transaction for processing each parallel rule.
Question: Can we have both sequential and parallel routing rules in one mediator?.
Answer: yes, we can have both sequential and parallel routing rules in one mediator.
Question: Which rule execute first if we have both sequential and parallel routing rules
in mediator ?.
Answer: If we have both sequential and parallel routing rules, first sequential routing
rules are evaluated and actions are performed, and then parallel routings are queued
for parallel execution.
Question: How many faults can Oracle Mediator service engine throw ?
Answer: Only One
{http://schemas.oracle.com/mediator/faults}mediatorFault.
Question: What we use in Business Rule when we need to define multiple rules ?.
Answer: We use Decision table when we need to define multiple rules with
corresponding actions in Business Rule component.
Question: What all outcomes we can have from Human Task component ?.
Answer: mainly we can have following outcomes from Human Task components but
apart from these there are others outcomes also.
1. Approve
2. Reject
develop our code using file based MDS then before we deploy our code to server, we
need to move all the files from file based MDS to DB based MDS.
• Packaged Application
• Oracle Application
Question: What all types of technologies adapters available in SOA Suite tool ?.
Answer: We have following technologies adapters in SOA Suite tool.
• File Adapter
• FTP Adapter
• JMS Adapter
• DB Adapter
• AQ Adapter
• Oracle Applications Adapter
• Socket Adapter
Question: What all files we get when we use these adapters in SOA Suite composite ?.
Answer: Generally we see following files when we use these technology adapters in
SOA Suite composite.
1. WSDL
2. JCA
3. XSD
4. Mapping File (In case of DB Adapter).
5. Properties File (In case of DB Adapter)
Question: What will happen if we specify wrong Outbound Connection Pool in Adapter
?.
Answer: If we specify wrong Outbound Connection Pool in adapter during development
then adapter throw an error during run time.
Question: What all differences we have between File and FTP adapters.
Answer: Following are the major differences between File and FTP adapter.
File Adapter
1. It is used to deal with local systems only.
2. Do not require any configuration to make this adapter work.
FTP Adapter
1. It is used to deal with remote systems.
Page 38 of 49
2. Outbound Connection Pool needs to be configured with FTP details to make this
adapter work.
Question: File & FTP adapters are known and Transactional or Non-Transactional
adapters?.
Answer: These adapters are known as non-transactional adapters as these adapters
does not support transactions.
Question: Do we have support for multiple directories in File & FTP adapter ?
Answer: Yes, we can specify more than one directory for these adapters. This is
applicable to both physical and logical directories.
Physical Path
1. As name suggest, we mention actual full path (physical) of directory
2. Not Flexible
3. We need to manual change this when difference environments has different paths
Logical Path
1. Here we can mention any logical name and actual value of that path define in
Composite.xml file.
2. Flexible as we can change it from EM console.
3. We can easily replace this path with the help of Config plan if we have difference
paths in different environments.
Question: What is the difference between Read and Sync Read operation ?.
Answer: We go for Read operation when we need to perform polling i.e. our process
start with polling for file and Sync Read operation is used when you need to read the file
in between the flow .
For example, a BPEL process is writing files to a directory and a second BPEL process
is polling the same directory for files. If you want the second process to start polling the
directory only after the first process has written all the files, then you can use a trigger
file. You can configure the first process to create a trigger file at the end. The second
process starts polling the inbound directory once it finds the trigger file.
Question: Can we change the file name and directory path at runtime ?.
Answer: yes, we can change the file name and directory path at run time, for that open
the Invoke activity used to invoke file/ftp adapter then go to Properties tab and update
the following properties for the same.
jca.file.FileName/jca.ftp.FileName
jca.file.Directory/jca.ftp.Directory
There is not transaction manager for this transaction as we are dealing with only one
resource at a time.
Question: How we can limit the number of rows fetched using database adapter ?
Answer: We can limit the number of rows fetched using ‖ Database Rows per
Transaction‖ property. For example, assume there are 10,000 rows at the start of a
polling interval and this field is set to 100. In standalone mode, a cursor iteratively reads
and processes 100 rows at a time until all 10,000 rows are processed, dividing the work
into 10,000/100=100 sequential transactional units
Page 42 of 49
Question: How we can limit the number of rows per XML message while sending the
message from database adapter to consumer ?.
Answer: By using ―Database Rows per XML Document‖ property.
JMS topic is based on publish subscribe model, here multiple listeners/consumer can
consume the same message. JMS topic is used when we need to transfer same data to
multiple places.
Question: Can we add custom header properties to JMS header while sending
message to JMS queue/topic?.
Answer: Yes, we can do that.
Question: How we can do retry once message roll back to JMS queue ?.
Answer: We have ―Deliver Failure‖ tab in JMS queue where we can set properties to do
retry after certain intervals.
Error Destination: If you choose ―Redirect‖ then choose the queue to which you want to
redirect message.
Question: Which property we need to use with singleton property to process the
message in sequential order for AQ.
Answer: We need to set activtionInstances=1 along with singleton property for AQ
adapter in cluster environment to process message in sequential order.
True
Question: When we call secured web service from SOA, which policy we will use
―Client‖ or ―Service‖?
Answer: When we call secured web service from SOA then we add ―Client‖ policy to
reference partner link and when we want to secure our web service then we use
―Service‖ policy.
Question: what is the scope of Policy Sets or where we can apply Policy sets ?
Answer: Below is the scope of Policy Sets.
Question: How many types of faults we can have in SOA Suite tool ?.
Answer: We categories fault into two categories.
1. Business Faults
2. Technical Faults
fails. For example, the WSDL of the process fails to load. A binding Fault is not
retryable. This type of fault usually must be fixed by human intervention.
Catch block
CatchAll block
Question: Which function we use to get Fault Name and Fault description in CatchAlll
block?
Answer: We use ora:getFaultName() to get fault name and ora:getFaultAsString()
function to get fault description in CatchAll block.
Question: What is the difference between Catch blocks and Fault Handling
Framework?
Answer: Following are the difference between these two.
5. replay
6. rethrow