<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-34655362</id><updated>2012-02-10T08:20:15.666-08:00</updated><category term='Java EE6'/><category term='JSF Framework'/><category term='JPA'/><category term='jQuery'/><category term='JSP'/><category term='Java EE'/><category term='Cache'/><category term='OSB'/><category term='Java Specification'/><category term='Performance Monitor'/><category term='Java IO'/><category term='Java Frameworks'/><category term='XML'/><category term='BPM'/><category term='Java VM'/><category term='Reference Docs'/><category term='SOA/SCA/SDO'/><category term='Coherence'/><category term='Oracle PL/SQL'/><category term='Security'/><category term='SOA'/><category term='WebLogic'/><category term='Java SDK'/><category term='Oracle Fusion Middleware'/><category term='RIA Framework'/><category term='EJB'/><category term='Webservice'/><category term='Linux'/><category term='ODI'/><category term='Code Sample'/><category term='Persistence'/><category term='SpringSource'/><category term='MDS'/><category term='o'/><category term='Quartz'/><title type='text'>Play Java</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default?start-index=101&amp;max-results=100'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>136</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-34655362.post-3471328183975525709</id><published>2012-02-10T08:19:00.000-08:00</published><updated>2012-02-10T08:19:10.071-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>Abstract WSDL vs. Concrete WSDL</title><content type='html'>&lt;b&gt;Abstract WSDL&lt;/b&gt;(definitions )&lt;br /&gt;&lt;br /&gt;An Abstract WSDL&amp;nbsp;contains only Messages, PortTypes, and Operations&lt;br /&gt;Abstract WSDL consists of the structure of the message that is like what operation, what is the input, what is the ouput and what is the fault message used by each operation&amp;nbsp;to communicate with the web service, and their format.&lt;br /&gt;An abstract WSDL document describes what the web service does, but not how it does it or how to contact it. An abstract WSDL document defines:&amp;nbsp;the operations provided by the web service.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Concrete WSDL&lt;/b&gt;(implementation)&lt;br /&gt;Concrete WSDL has all the things that the abstract wsdl has in addition it has transport(http,jms) details to tell&amp;nbsp;how the web service communicates and where you can reach it.&amp;nbsp;&amp;nbsp;A concrete WSDL document contains the abstract WSDL definitions, and also defines:&amp;nbsp;the communication protocols and data encodings used by the web service,&amp;nbsp;the port address that must be used to contact the web service.&amp;nbsp;SOAP clients must retrieve the concrete WSDL file before sending a SOAP request to the service.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Abstract WSDL:- Used on server side,contains request,response and type of operation performed.&lt;br /&gt;Concrete WSDL:- Used on client side,contains abstract wsdl and transport used.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-3471328183975525709?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/3471328183975525709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=3471328183975525709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/3471328183975525709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/3471328183975525709'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2012/02/abstract-wsdl-vs-concrete-wsdl.html' title='Abstract WSDL vs. Concrete WSDL'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-7794165970553039438</id><published>2012-02-09T21:24:00.000-08:00</published><updated>2012-02-09T21:26:27.783-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>BPEL - How to handle an embeded XML message in a fault</title><content type='html'>In the development, the third part service returns a fault with a XML as a fault detail.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-bCHlBZSbsGM/TzSkRskdddI/AAAAAAAAAHw/-Il38vet-DY/s1600/xml_message.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="123" src="http://3.bp.blogspot.com/-bCHlBZSbsGM/TzSkRskdddI/AAAAAAAAAHw/-Il38vet-DY/s640/xml_message.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;In order to get the real error message, I have to parse this XML to get the error code and error message.&lt;br /&gt;&lt;br /&gt;In SOA Suite, there is a function named as&amp;nbsp;parseXML.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;parseXML&lt;/b&gt;&lt;br /&gt;This function parses a string to a DOM element.&lt;br /&gt;&lt;b&gt;Signature:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;oratext:parseXML(contentString)&lt;br /&gt;&lt;b&gt;Arguments:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;contentString - The string that this function parses to a DOM element.&lt;br /&gt;&lt;b&gt;Property IDs:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;namespace-uri: http://schemas.oracle.com/xpath/extension&lt;br /&gt;namespace-prefix: oratext&lt;br /&gt;&lt;br /&gt;First, I need to get the XML message in the element &amp;lt;WL_FAULT_DETAIL&amp;gt;. The code is the follow.&amp;nbsp;By this, I will be able to get a XML element&amp;nbsp;&amp;lt;WL_FAULT_DETAIL&amp;gt;, which contains a XML string.&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;oraext:parseXML($RuntimeFault.detail)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The follow code will parse the XML string held by&amp;nbsp;element&amp;nbsp;&amp;lt;WL_FAULT_DETAIL&amp;gt; to a XML.&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;oraext:parseXML(oraext:parseXML($RuntimeFault.detail))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above expression means:&lt;br /&gt;1. Parse the detail to a XML and this XML contains another XML string like the follow.&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #674ea7; font-size: x-small;"&gt;&amp;lt;ser:ServiceFault xmlns:ser="http://rci.rogers.com/schemas/ServiceFault"&amp;gt;&amp;lt;ser:Error id="1" lang="en"&amp;gt;&amp;lt;ser:ErrorCode&amp;gt;SYSTEM FAILURE&amp;lt;/ser:ErrorCode&amp;gt;&amp;lt;ser:Description&amp;gt;[com.bea.nonxml.common.MFLException.create(MFLException.java:221) at com.bea.nonxml.common.MFLException.create(MFLException.java:344) at com.bea.nonxml.readers.NonXMLReaderVisitor.nextToken(NonXMLReaderVisitor.java:155) at com.bea.nonxml.readers.TokenNonXMLReader.nextToken(TokenNonXMLReader.java:44) at com.bea.wli.variables.util.ProcessXMLTokenReader.next(ProcessXMLTokenReader.java:56) at com.bea.wli.variables.util.TokenSourceSerializer.process(TokenSourceSerializer.java:284) at com.bea.wli.variables.ProcessXML.storeXML(ProcessXML.java:338) at com.bea.wli.variables.ProcessXML.storeTokenSource(ProcessXML.java:349) at com.bea.wli.variables.ProcessXML.&amp;amp;lt;init&amp;gt;(ProcessXML.java:124) at com.bea.wli.variables.XmlObjectVariableFactory.createProxy(XmlObjectVariableFactory.java:332) at com.bea.wli.variables.XmlObjectVariableFactory.createProxy(XmlObjectVariableFactory.java:298) at com.bea.wli.variables.MflObject.convertToXmlObject(MflObject.java:299)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #674ea7; font-size: x-small;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #674ea7; font-size: x-small;"&gt;sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) a...]&amp;lt;/ser:Description&amp;gt;&amp;lt;ser:Value&amp;gt;RSSP&amp;lt;/ser:Value&amp;gt;&amp;lt;/ser:Error&amp;gt;&amp;lt;/ser:ServiceFault&amp;gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;2. Pass the above text as a string to parseXML to get another XML and the root element will be&amp;nbsp;&lt;span class="Apple-style-span" style="color: #674ea7;"&gt;&amp;lt;ser:ServiceFault&amp;gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Then, it will be very esay to get the error code and error message by getChildElement function.&lt;br /&gt;Error Code is&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;ora:getChildElement(ora:getChildElement(oraext:parseXML(oraext:parseXML($RuntimeFault.detail)),1),1)&lt;/span&gt;&lt;br /&gt;Error Message is&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;ora:getChildElement(ora:getChildElement(oraext:parseXML(oraext:parseXML($RuntimeFault.detail)),1),2)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-7794165970553039438?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/7794165970553039438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=7794165970553039438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/7794165970553039438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/7794165970553039438'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2012/02/bpel-how-to-handle-embeded-xml-message.html' title='BPEL - How to handle an embeded XML message in a fault'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-bCHlBZSbsGM/TzSkRskdddI/AAAAAAAAAHw/-Il38vet-DY/s72-c/xml_message.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-4743231984570813142</id><published>2012-02-07T14:29:00.000-08:00</published><updated>2012-02-07T14:29:25.050-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>OSB - System Error Code - BEA-380001</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;When the OSB got some exception from the routing, a fault with error code&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;BEA-380000 &lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;and message Internal Server Error will be created and save in fault. The exception returned by a service will be saved in the message body. If we just log out the falut, we will not know what exactly happen in the process. In order to get the real reason, we need to get the falut from message body and return these exception info to the client side. That will be help on the problem investigation.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;The follow message will be help on the problem investigation.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: x-small; line-height: 16px;"&gt;fn-bea:inlinedXML($body/soap-env:Fault/detail)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-4743231984570813142?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/4743231984570813142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=4743231984570813142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4743231984570813142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4743231984570813142'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2012/02/osb-system-error-code-bea-380001.html' title='OSB - System Error Code - BEA-380001'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-4620029957491991949</id><published>2012-02-07T13:04:00.000-08:00</published><updated>2012-02-07T13:50:03.793-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>OSB - System Error Code - BEA-380000</title><content type='html'>Server found but service not available, a BEA-380000 error code will be got with Not Found in description:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;lt;con:fault &amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;xmlns:con="http://www.bea.com/wli/sb/context"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:errorCode&amp;gt;BEA-380000&amp;lt;/con:errorCode&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:reason&amp;gt;Not Found&amp;lt;/con:reason&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:location&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:node&amp;gt;RouteNode1&amp;lt;/con:node&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:path&amp;gt;response-pipeline&amp;lt;/con:path&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/con:location&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/con:fault&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Server not running on same port,&amp;nbsp;a BEA-380000 error code will be got with&amp;nbsp;Socket Closed&amp;nbsp;in description:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;lt;con:fault &amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;xmlns:con="http://www.bea.com/wli/sb/context"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:errorCode&amp;gt;BEA-380000&amp;lt;/con:errorCode&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:reason&amp;gt;General runtime error: Socket Closed&amp;lt;/con:reason&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:location&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:node&amp;gt;RouteNode1&amp;lt;/con:node&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:path&amp;gt;request-pipeline&amp;lt;/con:path&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/con:location&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/con:fault&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Timeout set on Business Service triggering (Target service still processing and Socket gets closed because of preconfigured timeout value on BS), a BEA-380000 error code will be got with SocketTimeOut exception stacktrace in Description.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;lt;con:fault &amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;xmlns:con="http://www.bea.com/wli/sb/context"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:errorCode&amp;gt;BEA-380000&amp;lt;/con:errorCode&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:reason&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[WliSbTransports:381304]Exception in HttpOutboundMessageContext.RetrieveHttpResponseWork.run: java.net.SocketTimeoutException&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;java.net.SocketTimeoutException&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;nbsp;at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse$SocketTimeoutNotification.&amp;lt;clinit&amp;gt;(AsyncResponseHandler.java:551)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;nbsp;at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse.handleTimeout(AsyncResponseHandler.java:396)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;nbsp;at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse.timeout(AsyncResponseHandler.java:502)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;nbsp;at weblogic.socket.SocketMuxer$TimerListenerImpl.timerExpired(SocketMuxer.java:1052)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;nbsp;at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;nbsp;at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;nbsp;at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;nbsp;at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/con:reason&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:location&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:node&amp;gt;RouteNode1&amp;lt;/con:node&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:path&amp;gt;response-pipeline&amp;lt;/con:path&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/con:location&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/con:fault&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Timeout while obtaining connection to remote server,&amp;nbsp;a BEA-380000 error code will be got with Connect Timed Out&amp;nbsp;in Description.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&amp;lt;con:fault &amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;xmlns:con="http://www.bea.com/wli/sb/context"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:errorCode&amp;gt;BEA-380000&amp;lt;/con:errorCode&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:reason&amp;gt;General runtime error: connect timed out&amp;lt;/con:reason&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:location&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:node&amp;gt;RouteNode1&amp;lt;/con:node&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;con:path&amp;gt;request-pipeline&amp;lt;/con:path&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/con:location&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/con:fault&amp;gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-4620029957491991949?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/4620029957491991949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=4620029957491991949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4620029957491991949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4620029957491991949'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2012/02/osb-system-error-code.html' title='OSB - System Error Code - BEA-380000'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-5008262393935729787</id><published>2012-02-02T14:10:00.000-08:00</published><updated>2012-02-02T14:10:10.173-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebLogic'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Specification'/><title type='text'>Subversion for Oracle WebLogic workshop.</title><content type='html'>Reference &lt;a href="http://blogs.oracle.com/simonthorpe/entry/subversion_source_control_in_o"&gt;http://blogs.oracle.com/simonthorpe/entry/subversion_source_control_in_o&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now that the server is up and running, I want to enable my development environment to use it. I have installed on my workstation the 10g release of Workshop for Weblogic. You have two choices for this environment, Subclipse and Subversive. I decided on Subclipse for no other reason than it was listed first :)&lt;br /&gt;&lt;br /&gt;Before we do anything with Workshop, I actually ran into a bug which limits the ability to install Subclipse via the "Software Updates" mechanism directly in the IDE. There is a workaround for this problem detailed below.&lt;br /&gt;&lt;br /&gt;Comment out the com.* import lines in your %BEA_HOME%\wlportal_10.3\eclipse\features\com.bea.wlp_10.3.0\feature.xml, like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;requires&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;import plugin="org.eclipse.core.runtime" version="3.3" match="compatible"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;import plugin="org.eclipse.ui" version="3.3" match="compatible"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;!--&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;import feature="com.m7.nitrox" version="1.0.20" match="compatible"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;import feature="com.bea.workshop.cmdline.feature" version="1.0.30" match="compatible"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;import feature="com.bea.workshop.common.feature" version="1.1.40" match="compatible"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;import feature="com.bea.workshop.upgrade81.feature" version="1.0.30" match="compatible"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;import feature="com.bea.workshop.web.feature" version="1.0.20" match="compatible"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;import feature="com.bea.workshop.wls.feature" version="1.1.30" match="compatible"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;import feature="com.bea.workshop.xmlbeans.feature" version="1.0.30" match="compatible"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;&amp;lt;/requires&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Then restart Workshop&lt;/em&gt;&lt;br /&gt;Once you've done this follow these instructions to download and install the  subversion client.&lt;br /&gt;Start Workshop for WebLogic and go to "Help &amp;gt; Software  Updates &amp;gt; Find and Install..." then select &lt;em&gt;Search for new features to  install&lt;/em&gt;. Click on &lt;em&gt;New Remote Site&lt;/em&gt; and enter; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Name = &lt;strong&gt;subclipse 1.6&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;URL =  &lt;strong&gt;http://subclipse.tigris.org/update_1.6.x&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;Once  added, ensure that this site is the only one checked in the sites to include in  the search and hit &lt;em&gt;Finish&lt;/em&gt;. You will be presented with a tree to choose  the components, I selected the following;&lt;br /&gt;&lt;img alt="workshop_subclipse01.gif" border="0" height="515" src="http://blogs.oracle.com/simonthorpe/resource/images/workshop_subclipse01.gif" width="600" /&gt;&lt;br /&gt;&lt;br /&gt;Agree to the licenses&lt;br /&gt;&lt;br /&gt;&lt;img alt="workshop_subclipse02.gif" border="0" height="515" src="http://blogs.oracle.com/simonthorpe/resource/images/workshop_subclipse02.gif" width="600" /&gt;&lt;br /&gt;&lt;br /&gt;Accept the optional component;&lt;br /&gt;&lt;br /&gt;&lt;img alt="workshop_subclipse03.gif" border="0" height="515" src="http://blogs.oracle.com/simonthorpe/resource/images/workshop_subclipse03.gif" width="600" /&gt;&lt;br /&gt;&lt;br /&gt;Finally hit finish to install everything. Note  these are not signed packages so you'll need to agree also to install the  unsigned components. At the end you'll be asked to restart Workshop.&lt;br /&gt;&lt;br /&gt;&lt;img alt="workshop_subclipse04.gif" border="0" height="515" src="http://blogs.oracle.com/simonthorpe/resource/images/workshop_subclipse04.gif" width="600" /&gt; &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Checkout test project from subversion in Workshop for WebLogic&lt;/h2&gt;&lt;br /&gt;Ok,  nearly there. Now its time to checkout that test repository I created during the  server setup.&lt;br /&gt;In Workshop go to "File &amp;gt; New &amp;gt; Other" and in the  resulting dialog find the SVN section and choose &lt;em&gt;Checkout Projects from  SVN&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="workshop_subclipse05.gif" height="500" src="http://blogs.oracle.com/simonthorpe/resource/images/workshop_subclipse05.gif" width="500" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select &lt;em&gt;Create a new repository  location&lt;/em&gt;. It now asks for the URL to the server, remember this is in the  format SVN://servername/respository my example is shown below. The client will  attempt to connect after which you can select the URL to get to the &lt;em&gt;Check  Out As&lt;/em&gt; dialog.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="workshop_subclipse06.gif" height="500" src="http://blogs.oracle.com/simonthorpe/resource/images/workshop_subclipse06.gif" width="500" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The check out dialog now asks what you want to  do with the project. If you want you can create a new project using the  Workshop's wizard. However I just wanted to add a vanilla project so selected  &lt;em&gt;Check out as a project in the workspace&lt;/em&gt;, like below and hit  &lt;strong&gt;Finish&lt;/strong&gt;. It also warns me that i'm checking out the entire root  which is fine for this test.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="workshop_subclipse07.gif" height="500" src="http://blogs.oracle.com/simonthorpe/resource/images/workshop_subclipse07.gif" width="500" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You will now have an empty project folder in  Workshop. You can take a look at all the version control options now by right  clicking on the project and selecting the &lt;strong&gt;Team&lt;/strong&gt; menu. Here you  have access to all the branching, merging etc features.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-5008262393935729787?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/5008262393935729787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=5008262393935729787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5008262393935729787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5008262393935729787'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2012/02/subversion-for-oracle-weblogic-workshop.html' title='Subversion for Oracle WebLogic workshop.'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-4411549963765430905</id><published>2012-01-26T11:35:00.000-08:00</published><updated>2012-02-10T08:20:15.679-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>OSB - How to change the logging level</title><content type='html'>&lt;b&gt;Problem:&lt;/b&gt;&lt;br /&gt;I created a proxy service and added a Log action to log out the message body, but I didn't see the log on WebLogic console.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;The problem is related with log level as the default level is higher than info level. Change the log level will solve &amp;nbsp;it.&lt;br /&gt;&lt;br /&gt;1. Enter the WSL admin console&lt;br /&gt;2. Click on Environment-&amp;gt;Servers&lt;br /&gt;3. Click on Admin Server (or the appropriate server name of yours)&lt;br /&gt;4. Select Logging tab&lt;br /&gt;5. Click Advanced&lt;br /&gt;6. Set&amp;nbsp;Severity Level of&amp;nbsp;Standard Out to Debug.&lt;br /&gt;7. Click Save&lt;br /&gt;&lt;br /&gt;After that, maybe a restart is needed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-4411549963765430905?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/4411549963765430905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=4411549963765430905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4411549963765430905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4411549963765430905'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2012/01/osb-how-to-use-logging.html' title='OSB - How to change the logging level'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-4085545577559719826</id><published>2012-01-26T11:22:00.000-08:00</published><updated>2012-01-26T11:36:09.773-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>OSB - XQuery expression validation failed.</title><content type='html'>&lt;b&gt;Problem:&lt;/b&gt;&lt;br /&gt;OSB fault cannot be used directly in exception hanlder and got an error message as "Xquery expression validation failed: The variable "fault" cannot be used here. "&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;In the exception handler, first use "Assign" to assign the $fault to a variable, e.g. $myFault, then you can use the variable as what you need.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-4085545577559719826?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/4085545577559719826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=4085545577559719826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4085545577559719826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4085545577559719826'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2012/01/osb-xquery-expression-validation-failed.html' title='OSB - XQuery expression validation failed.'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-1375990378070400257</id><published>2012-01-20T07:59:00.000-08:00</published><updated>2012-01-20T07:59:56.851-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='o'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>BPEL - Handle array with a varaible as index</title><content type='html'>Recently, I worked on a project and used array to save all of exceptions catched in a loop. I set the value to the array used a variable as index, but it doesn't work. I tested it with a number directly, it works well. By the colleague help, I eventually fixed this issue and make the array work with a variable as index.&lt;br /&gt;&lt;br /&gt;The tricky thing is the table on the edit assign supports right click and can pop up a menu. The menu is the magic.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-l35g1kfcH1U/TxmKlXQQIHI/AAAAAAAAAHk/VqNn0AyF6Uk/s1600/bpel_array_tips.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" nfa="true" src="http://4.bp.blogspot.com/-l35g1kfcH1U/TxmKlXQQIHI/AAAAAAAAAHk/VqNn0AyF6Uk/s320/bpel_array_tips.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;﻿From the menu, select the &lt;strong&gt;insertMissingToData&lt;/strong&gt;, then the array setting will work.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The change to the element is &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;lt;copy &lt;span style="color: red;"&gt;bpelx:insertMissingToData="yes"&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-1375990378070400257?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/1375990378070400257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=1375990378070400257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/1375990378070400257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/1375990378070400257'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2012/01/bpel-handle-array-with-varaible-as.html' title='BPEL - Handle array with a varaible as index'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-l35g1kfcH1U/TxmKlXQQIHI/AAAAAAAAAHk/VqNn0AyF6Uk/s72-c/bpel_array_tips.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-7965091756301484091</id><published>2011-11-21T13:34:00.000-08:00</published><updated>2011-11-21T13:39:14.482-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Using Preference in Oracle SOA 11g</title><content type='html'>In the Oracle SOA 11g, how can we config the timeout of a callback service at runtime? Where can we put these property? A preferences in composite.xml will solve these questions in BPEL process.&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Where to add?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;In the composite.xml, locate the component element.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt; &amp;lt;component name="SubmitOrder" version="2.0"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: Times, 'Times New Roman', serif;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;implementation.bpel src="SubmitOrder.bpel"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: Times, 'Times New Roman', serif;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;property name="bpel.preference.timeout"&amp;gt;PT90S&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: Times, 'Times New Roman', serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/component&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then we can use the function ora:getPreference(preferenceName) in a bpel process.&lt;br /&gt;&lt;br /&gt;Note: The preference have a prefix and you doesn't need it when you reference it. The prefix is 'bpel.preference'.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;How to config it in production?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;In Oracle SOA Suite 11g, we can change the value of prefences with Enterprise Manager, which url is http://hostname:port/em.&lt;br /&gt;&lt;br /&gt;1. Find the SOA domain, in my example, it is Farm_soa_domain\Weblogic Domain\soa_domain&lt;br /&gt;2. Right click on the domain name and select ‘System MBean Browser’ from the popup menu.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-psDUaE01_hI/Tsq5xdNJd6I/AAAAAAAAAG8/o085KyHs4Y8/s1600/1.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-psDUaE01_hI/Tsq5xdNJd6I/AAAAAAAAAG8/o085KyHs4Y8/s1600/1.bmp" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;4. From the right frame, locate your component. The navigate path is&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Application Defined MBeans\oracle.soa.config\Server:{server name}\SCAComposite\{project name}\SCAComposite.SCAComponent\{component name}.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-MZq9s_RHYgQ/Tsq8-NWkfOI/AAAAAAAAAHM/GRhyZVU0ZrM/s1600/2.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="398" src="http://4.bp.blogspot.com/-MZq9s_RHYgQ/Tsq8-NWkfOI/AAAAAAAAAHM/GRhyZVU0ZrM/s640/2.bmp" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;5. Click on the Attribute 'Properties', the preference will be displayed.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-lzCQdTw0oZ0/Tsq9fPhLBpI/AAAAAAAAAHU/fYaPv_XmSNw/s1600/3.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="395" src="http://1.bp.blogspot.com/-lzCQdTw0oZ0/Tsq9fPhLBpI/AAAAAAAAAHU/fYaPv_XmSNw/s640/3.bmp" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;You can modified it and apply the new value to that property.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-7965091756301484091?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/7965091756301484091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=7965091756301484091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/7965091756301484091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/7965091756301484091'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/11/using-preference-in-oracle-soa-11g.html' title='Using Preference in Oracle SOA 11g'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-psDUaE01_hI/Tsq5xdNJd6I/AAAAAAAAAG8/o085KyHs4Y8/s72-c/1.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-5505550264096289035</id><published>2011-10-17T07:18:00.000-07:00</published><updated>2011-10-17T07:18:37.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>What does BPM/BPMN add to SOA Suite?</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px;"&gt;Oracle has just released Oracle SOA Suite and Oracle BPM Suite 11.1.1.4 (often referred to as ‘Patch Set 3,’) the second release that includes comprehensive support for both Business Process Modeling Notation (BPMN) and Business Process Execution Language (BPEL) for modeling and executing business processes.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;For the detail, you can find at&amp;nbsp;&lt;a href="http://redstack.wordpress.com/2011/01/15/what-bpm-adds-to-soa-suite/"&gt;http://redstack.wordpress.com/2011/01/15/what-bpm-adds-to-soa-suite/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-5505550264096289035?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/5505550264096289035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=5505550264096289035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5505550264096289035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5505550264096289035'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/what-does-bpmbpmn-add-to-soa-suite.html' title='What does BPM/BPMN add to SOA Suite?'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-6777784675582678704</id><published>2011-10-13T10:23:00.000-07:00</published><updated>2011-10-13T10:24:19.629-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Calling Java Classes from SOA Suite 11g</title><content type='html'>(From&amp;nbsp;&lt;a href="http://niallcblogs.blogspot.com/2009/11/calling-java-classes-from-soa-suite-11g.html"&gt;http://niallcblogs.blogspot.com/2009/11/calling-java-classes-from-soa-suite-11g.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;Essentially the same procedure, from a development perspective, as in 10g -&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;but under the hood we're using the 11g Infrastructure layer.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;The Oracle documentation can be found at&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bp_java.htm#BABCBEJJ" style="color: #5588aa; font-family: Georgia, serif; line-height: 20px; text-decoration: none;"&gt;http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bp_java.htm#BABCBEJJ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;Here's a simple example based on WSDL Java binding, later posts will cover bpel:exec etc. -&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #333333; font-family: Georgia, serif; font-size: 17px; line-height: 20px;"&gt;&lt;strong&gt;1. Create a generic Application/Project in Jdev 11g&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;1.1. Add 2 classes -&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; line-height: 20px;"&gt;Cust&lt;/strong&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; line-height: 20px;"&gt;Greeting&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;Cust -&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;package cccwsif;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public class Cust {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;private String custName1;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;private String custName2;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;private String custXMASgreeting;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public Cust() {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;super();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public void setCustName1(String custName1) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;this.custName1 = custName1;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public String getCustName1() {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;return custName1;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public void setCustName2(String custName2) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;this.custName2 = custName2;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public String getCustName2() {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;return custName2;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public void setCustXMASgreeting(String custXMASgreeting) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;this.custXMASgreeting = custXMASgreeting;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public String getCustXMASgreeting() {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;return custXMASgreeting;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;Greeting -&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;package cccwsif;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public class Greeting {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public Greeting() {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;super();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;public Cust XMASgreet(Cust c){&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;String g = "Happy Christmas " + c.getCustName1() + " " +&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;c.getCustName2();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;c.setCustXMASgreeting(g);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;return c;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;1.2. expose Greeting as a Web Service&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;1.2.1. Right-mouse click on&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; line-height: 20px;"&gt;Greeting&lt;/strong&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;1.2.2. Then select "Create Web Service..."&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/SvP27tnbkAI/AAAAAAAAAYc/oRc9cNcdpiE/s1600-h/aa.jpg" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400931883865051138" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/SvP27tnbkAI/AAAAAAAAAYc/oRc9cNcdpiE/s400/aa.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 246px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;1.2.3. Accept defaults for all steps up until step 9.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;1.2.4. Additional Classes --&amp;gt; Include "Cust" class&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP271o3vEI/AAAAAAAAAYk/x8JbxcDMn0Q/s1600-h/bb.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400931886018575426" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP271o3vEI/AAAAAAAAAYk/x8JbxcDMn0Q/s400/bb.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 248px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;1.2.5. open the wsdl file and set nillable=false&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP28DmmrmI/AAAAAAAAAYs/IXGUccJiKCs/s1600-h/cc.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400931889767165538" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP28DmmrmI/AAAAAAAAAYs/IXGUccJiKCs/s400/cc.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 228px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;1.2.6. open the GreetingService-java-wsdl-mapping.xml file&lt;br /&gt;1.2.7. check the mapping order&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/SvP28cx_4eI/AAAAAAAAAY0/xEYQQtffxww/s1600-h/dd.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400931896525840866" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/SvP28cx_4eI/AAAAAAAAAY0/xEYQQtffxww/s400/dd.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 208px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;1.3. Add the Java Binding to the WSDL&lt;br /&gt;1.3.1. Open the wsdl in "Design" mode&lt;br /&gt;1.3.2. Click the + by Bindings&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/SvP28ne-XsI/AAAAAAAAAY8/zO0TiWB04ps/s1600-h/ee.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400931899398840002" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/SvP28ne-XsI/AAAAAAAAAY8/zO0TiWB04ps/s400/ee.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 369px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;1.3.3. Click the&amp;nbsp;&lt;strong&gt;Map&lt;/strong&gt;&amp;nbsp;button&lt;br /&gt;1.3.4. select the Cust class&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/SvP3j3rm_lI/AAAAAAAAAZE/ib8Wx6QFS24/s1600-h/ff.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400932573761699410" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/SvP3j3rm_lI/AAAAAAAAAZE/ib8Wx6QFS24/s400/ff.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 128px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;1.3.5. Amend the Service entry in the WSDL as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP3kf6hGlI/AAAAAAAAAZM/A_QxPfWCXfM/s1600-h/gg.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400932584561646162" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP3kf6hGlI/AAAAAAAAAZM/A_QxPfWCXfM/s400/gg.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 81px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;1.4. Jar up the project&lt;br /&gt;1.4.1. File --&amp;gt; New --&amp;gt; Deployment Profile --&amp;gt; Jar&lt;br /&gt;1.4.2. Deploy to Jar&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/SvP3kd6fbJI/AAAAAAAAAZU/UXpOdLwHmOM/s1600-h/hh.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400932584024665234" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/SvP3kd6fbJI/AAAAAAAAAZU/UXpOdLwHmOM/s400/hh.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 102px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 17px;"&gt;&lt;strong&gt;2. Create a SOA App in JDev 11g&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;2.1. Copy the WSDL into the project&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/SvP3klgj1nI/AAAAAAAAAZc/3VULakP-ejo/s1600-h/ii.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400932586063386226" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/SvP3klgj1nI/AAAAAAAAAZc/3VULakP-ejo/s400/ii.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 204px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;2.2. Drop a BPEL service component onto the designer&lt;/div&gt;&lt;div&gt;2.2.1. Set input / output as follows -&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP3k9S3SAI/AAAAAAAAAZk/WVcKAIT3oqk/s1600-h/jj.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400932592448391170" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP3k9S3SAI/AAAAAAAAAZk/WVcKAIT3oqk/s400/jj.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 380px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/SvP4Oq_p_yI/AAAAAAAAAZs/SlFdGacjKyw/s1600-h/kk.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400933309090496290" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/SvP4Oq_p_yI/AAAAAAAAAZs/SlFdGacjKyw/s400/kk.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 245px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;2.3. Add a partner Link to the process, pointing to the imported WSDL&lt;/div&gt;&lt;div&gt;2.3.1. Add Assign - Invoke - Assign Activities&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/SvP4O_NV01I/AAAAAAAAAZ0/0ezKkAWxPAc/s1600-h/ll.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400933314516603730" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/SvP4O_NV01I/AAAAAAAAAZ0/0ezKkAWxPAc/s400/ll.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 368px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/SvP4O5nYZII/AAAAAAAAAZ8/D-PoB9-vE0o/s1600-h/mm.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400933313015211138" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/SvP4O5nYZII/AAAAAAAAAZ8/D-PoB9-vE0o/s400/mm.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 325px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;2.3.2 Assign input / output vars in the 2 Assigns&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;2.4. Copy the Jar file from the previous project to the SOA Project sca-inf\lib directory&lt;/div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/SvP4PUrGo_I/AAAAAAAAAaE/GC_ET3NrsOI/s1600-h/nn.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400933320278582258" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/SvP4PUrGo_I/AAAAAAAAAaE/GC_ET3NrsOI/s400/nn.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 140px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;2.5. Deploy the SOA App&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 17px;"&gt;3&amp;nbsp;&lt;strong&gt;Test&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP4PqbQ4fI/AAAAAAAAAaM/HjPp5KoW2r8/s1600-h/oo.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400933326117724658" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP4PqbQ4fI/AAAAAAAAAaM/HjPp5KoW2r8/s400/oo.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 143px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP4lrcY2XI/AAAAAAAAAaU/KCRbggJS_4k/s1600-h/pp.jpg" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5400933704347998578" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/SvP4lrcY2XI/AAAAAAAAAaU/KCRbggJS_4k/s400/pp.jpg" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 184px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-6777784675582678704?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/6777784675582678704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=6777784675582678704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/6777784675582678704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/6777784675582678704'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/calling-java-classes-from-soa-suite-11g.html' title='Calling Java Classes from SOA Suite 11g'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gWwhpxFZjGs/SvP27tnbkAI/AAAAAAAAAYc/oRc9cNcdpiE/s72-c/aa.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-5102569888035250310</id><published>2011-10-13T09:05:00.000-07:00</published><updated>2011-10-13T09:06:16.759-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>SOA Suite 11g - FTP Adapter</title><content type='html'>(From &lt;a href="http://niallcblogs.blogspot.com/2011/07/soa-suite-11g-ftp-adapter.html"&gt;http://niallcblogs.blogspot.com/2011/07/soa-suite-11g-ftp-adapter.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;Here is a simple lab demonstrating use of the FTP adapter.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;I'm using FileZilla as my FTP Server.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;I created the following directories&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-M8Lfl9sR-Xg/ThMSxueb_1I/AAAAAAAACOc/UUWXve61e0Q/s1600/1.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625861005014466386" src="http://3.bp.blogspot.com/-M8Lfl9sR-Xg/ThMSxueb_1I/AAAAAAAACOc/UUWXve61e0Q/s400/1.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 97px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;FTP Server Configuration&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;I create a user NiallC/NiallC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;and configure the shared folders as follows -&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-ARSc5YqX54I/ThMTHsLxI-I/AAAAAAAACOk/dpy_qemIO30/s1600/2.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625861382356411362" src="http://1.bp.blogspot.com/-ARSc5YqX54I/ThMTHsLxI-I/AAAAAAAACOk/dpy_qemIO30/s400/2.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 268px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;Create FTP Adapter artifacts using WLS Console&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;Deployments --&amp;gt; FtpAdapter --&amp;gt; Configuration --&amp;gt; Outbound Connection Pools --&amp;gt; New&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-h0ZlqL9-EKw/ThMT6cqk1sI/AAAAAAAACOs/9FhEWEMJ0EY/s1600/3.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625862254363989698" src="http://3.bp.blogspot.com/-h0ZlqL9-EKw/ThMT6cqk1sI/AAAAAAAACOs/9FhEWEMJ0EY/s400/3.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 196px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;Edit the properties as follows -&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;host=localhost&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;password=NiallC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;port=21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;username=NiallC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;serverType=win&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-maMxwN8KrLY/ThMU3sAuN5I/AAAAAAAACPM/7ARpF2CTOx0/s1600/4.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625863306455431058" src="http://2.bp.blogspot.com/-maMxwN8KrLY/ThMU3sAuN5I/AAAAAAAACPM/7ARpF2CTOx0/s400/4.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 101px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-h3CqOJjW-Fg/ThMU3F-hvdI/AAAAAAAACPE/eU4UpKqT6JU/s1600/5.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625863296245677522" src="http://3.bp.blogspot.com/-h3CqOJjW-Fg/ThMU3F-hvdI/AAAAAAAACPE/eU4UpKqT6JU/s400/5.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 94px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-qnrCpdQZ5zc/ThMU2oK8MfI/AAAAAAAACO8/wozgH7Gy4Fs/s1600/6.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625863288244679154" src="http://4.bp.blogspot.com/-qnrCpdQZ5zc/ThMU2oK8MfI/AAAAAAAACO8/wozgH7Gy4Fs/s400/6.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 88px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-e6Ar7_VFA3Y/ThMVOHY6IfI/AAAAAAAACPU/CWaeLVlO6iU/s1600/8.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625863691761754610" src="http://4.bp.blogspot.com/-e6Ar7_VFA3Y/ThMVOHY6IfI/AAAAAAAACPU/CWaeLVlO6iU/s400/8.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 96px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-SrDhaAp7f8o/ThMU2X_TXyI/AAAAAAAACO0/MmtQq8h5BGM/s1600/7.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625863283900899106" src="http://2.bp.blogspot.com/-SrDhaAp7f8o/ThMU2X_TXyI/AAAAAAAACO0/MmtQq8h5BGM/s400/7.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 97px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;Create a new SOA app&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-c2tUd6BzaJQ/ThMV7t6_yYI/AAAAAAAACPc/IU7Drpf7xaM/s1600/9.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625864475199392130" src="http://3.bp.blogspot.com/-c2tUd6BzaJQ/ThMV7t6_yYI/AAAAAAAACPc/IU7Drpf7xaM/s400/9.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 79px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;In this example I read in an(GET) order and then write it out (PUT).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-eyBg8jeA8p8/ThMXQSiQaUI/AAAAAAAACQM/vhJUR8oq3J8/s1600/15.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625865928136747330" src="http://3.bp.blogspot.com/-eyBg8jeA8p8/ThMXQSiQaUI/AAAAAAAACQM/vhJUR8oq3J8/s400/15.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 313px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;Configure the read adapter as follows -&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-7ARBpBDNETA/ThMWYZ9dMTI/AAAAAAAACP0/jJ4YYGAajks/s1600/10.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625864968057205042" src="http://4.bp.blogspot.com/-7ARBpBDNETA/ThMWYZ9dMTI/AAAAAAAACP0/jJ4YYGAajks/s400/10.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 288px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 295px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;&lt;a href="http://3.bp.blogspot.com/-bTVFPwdhb0Q/ThMWYGzdbaI/AAAAAAAACPs/Y9d5OANWxR4/s1600/11.GIF" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625864962915003810" src="http://3.bp.blogspot.com/-bTVFPwdhb0Q/ThMWYGzdbaI/AAAAAAAACPs/Y9d5OANWxR4/s400/11.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 331px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 306px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-hQs91Fdjyf0/ThMWXw1Ib8I/AAAAAAAACPk/lwZ8PUHvf7o/s1600/12.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625864957016436674" src="http://1.bp.blogspot.com/-hQs91Fdjyf0/ThMWXw1Ib8I/AAAAAAAACPk/lwZ8PUHvf7o/s400/12.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 380px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;Configure the write adapter as follows -&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-lPrrHYOGQLM/ThMWvwXq2WI/AAAAAAAACQE/yuITn08FZkY/s1600/13.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625865369209723234" src="http://3.bp.blogspot.com/-lPrrHYOGQLM/ThMWvwXq2WI/AAAAAAAACQE/yuITn08FZkY/s400/13.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 400px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 354px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-bcIQ8gKnpNM/ThMWvvFwSNI/AAAAAAAACP8/ZezaY5SDnUM/s1600/14.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 20px; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5625865368866146514" src="http://4.bp.blogspot.com/-bcIQ8gKnpNM/ThMWvvFwSNI/AAAAAAAACP8/ZezaY5SDnUM/s400/14.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 273px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;Add the Mediator and specify the transformation.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;That's it.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;App at&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;https://docs.google.com/leaf?id=0B7YrnfO7h717ODc1ZTY2MTgtMTMzNS00ZTM4LWFkM2UtYjcyNjExMWMzOWIy&amp;amp;hl=en_US&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-5102569888035250310?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/5102569888035250310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=5102569888035250310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5102569888035250310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5102569888035250310'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/soa-suite-11g-ftp-adapter.html' title='SOA Suite 11g - FTP Adapter'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-M8Lfl9sR-Xg/ThMSxueb_1I/AAAAAAAACOc/UUWXve61e0Q/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-2417779608999693425</id><published>2011-10-13T08:54:00.000-07:00</published><updated>2011-10-13T08:58:01.860-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Invoking SOA Composite as part of a global transaction</title><content type='html'>(From &lt;a href="http://niallcblogs.blogspot.com/2011/06/invoking-soa-composite-as-part-of.html"&gt;http://niallcblogs.blogspot.com/2011/06/invoking-soa-composite-as-part-of.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="post-body entry-content" id="post-body-3606828737490613040" style="line-height: 1.6em; margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Scenario: Java client calls SOA Suite composite to process an order as part of a global transaction. The SOA composite is expose as an EJB service. The composite contains 1 BPEL process that itself calls an EJB service to update our Orders DB.&lt;br /&gt;&lt;br /&gt;I'm using SCOTT's schema and have already created a datasource on WLS for it.&lt;br /&gt;&lt;br /&gt;name: scottDS&lt;br /&gt;jndi: jdbc/scottDS&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1. Create DB Table - test&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;Create table test (id number(2), quantity number(2));&lt;br /&gt;&lt;strong&gt;Step 2. Create a stateless session EJB to update this table&lt;/strong&gt;&lt;br /&gt;create a new application/project in JDev and include a statelsss session EJB 2.1&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-8f8xzUk8n0w/Te4lOdbdhYI/AAAAAAAACIE/jv4MAOhO0nY/s1600/1.GIF" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615466715725792642" src="http://3.bp.blogspot.com/-8f8xzUk8n0w/Te4lOdbdhYI/AAAAAAAACIE/jv4MAOhO0nY/s400/1.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 180px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-PAJ73bya568/Te4lN3sbXoI/AAAAAAAACH8/AZV_VTd0sjE/s1600/2.GIF" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615466705596407426" src="http://3.bp.blogspot.com/-PAJ73bya568/Te4lN3sbXoI/AAAAAAAACH8/AZV_VTd0sjE/s400/2.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 195px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-uDVRVNfCV6M/Te4lNplURcI/AAAAAAAACH0/zQUiWE9GHww/s1600/3.GIF" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615466701808485826" src="http://3.bp.blogspot.com/-uDVRVNfCV6M/Te4lNplURcI/AAAAAAAACH0/zQUiWE9GHww/s400/3.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 119px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-gzWlD7PCWpE/Te4lNU_5F3I/AAAAAAAACHs/1SgJIUpdu2M/s1600/4.GIF" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615466696282806130" src="http://3.bp.blogspot.com/-gzWlD7PCWpE/Te4lNU_5F3I/AAAAAAAACHs/1SgJIUpdu2M/s400/4.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 278px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Inqzix7Vy2I/Te4lNFJz6zI/AAAAAAAACHk/icIRe7QPYcc/s1600/5.GIF" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615466692029442866" src="http://4.bp.blogspot.com/-Inqzix7Vy2I/Te4lNFJz6zI/AAAAAAAACHk/icIRe7QPYcc/s400/5.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 325px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;strong&gt;Step 2.1 - Add the following business method&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;public String callDB(int id, int quantity) {&lt;br /&gt;Connection connection = null;&lt;br /&gt;DataSource dataSource = null;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; /*&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * 1. Create an InitialContext.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * 2. From the initial context, lookup the logical datasource reference&amp;nbsp; that is in the deployment descriptor.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp; &amp;nbsp; InitialContext initialcontext = new InitialContext();&lt;br /&gt;&amp;nbsp; &amp;nbsp; dataSource = (DataSource)initialcontext.lookup("jdbc.scottDS");&lt;/div&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="post-body entry-content" style="line-height: 1.6em; margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println("***** Got Datasource...");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; // Check to see if the datasource is valid&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; if(dataSource==null){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.err.println("*** DataSource retrieved is null, did you add the code?");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new ServletException("DataSource retrieved is null");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; connection = dataSource.getConnection();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; Statement stmt = connection.createStatement();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; String insert = "insert into test values(" + id + "," + quantity + ")";&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; System.out.println("INSERT = " + insert);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; stmt.executeUpdate(insert);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; ResultSet rset = stmt.executeQuery("Select to_char(sysdate) from dual");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; while (rset.next()){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println("*** Date = " + rset.getString(1));&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif; line-height: 20px;"&gt;}catch (Exception e)&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif; line-height: 20px;"&gt;{&lt;/span&gt;&lt;div class="post-body entry-content" style="margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;&amp;nbsp; &amp;nbsp; System.err.println("*** init() Exception, " + e.getMessage());&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;&amp;nbsp; &amp;nbsp; System.err.println(e);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;return "Ok";&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em;"&gt;Step 3 - Deploy and view the JNDI tree&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;specify jndi name before deploying -&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;&lt;a href="http://3.bp.blogspot.com/-HGB-wVIpO7k/Te4m5UJlnAI/AAAAAAAACIM/Jjq0B06Xrqk/s1600/6.GIF" style="color: #5588aa; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615468551480908802" src="http://3.bp.blogspot.com/-HGB-wVIpO7k/Te4m5UJlnAI/AAAAAAAACIM/Jjq0B06Xrqk/s400/6.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 148px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;div class="post-body entry-content" style="margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;a href="http://1.bp.blogspot.com/-FZQoylot2Ks/Te4pPN48LRI/AAAAAAAACIU/TWqGG8ZYLcg/s1600/1.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615471126780849426" src="http://1.bp.blogspot.com/-FZQoylot2Ks/Te4pPN48LRI/AAAAAAAACIU/TWqGG8ZYLcg/s400/1.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 231px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;div class="post-body entry-content" style="margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em;"&gt;Step 4 - Create a new SOA App in Jdeveloper&lt;/strong&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Create a SOA Composite app&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Add the ejb jar from the previous project to the apps classpath.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;(We really only need the interface!)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-TGSK7it0_DI/Te4ul_BoTSI/AAAAAAAACJE/EUwFcMN4cAg/s1600/2.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615477015485893922" src="http://4.bp.blogspot.com/-TGSK7it0_DI/Te4ul_BoTSI/AAAAAAAACJE/EUwFcMN4cAg/s400/2.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 119px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-wOXFq_gC45c/Te4sJPR7DCI/AAAAAAAACI8/xB5RVGA4cg4/s1600/1.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615474322609736738" src="http://4.bp.blogspot.com/-wOXFq_gC45c/Te4sJPR7DCI/AAAAAAAACI8/xB5RVGA4cg4/s400/1.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 60px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-8D6dxl-Ex7s/Te4sIpa9RtI/AAAAAAAACI0/a1xFdYke2UQ/s1600/2.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615474312447084242" src="http://4.bp.blogspot.com/-8D6dxl-Ex7s/Te4sIpa9RtI/AAAAAAAACI0/a1xFdYke2UQ/s400/2.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 250px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-KbMqq9X6z4c/Te4sH6Og9TI/AAAAAAAACIs/pBKmJLLtob8/s1600/3.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615474299778430258" src="http://4.bp.blogspot.com/-KbMqq9X6z4c/Te4sH6Og9TI/AAAAAAAACIs/pBKmJLLtob8/s400/3.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 250px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Create the following input xsd&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;a href="http://3.bp.blogspot.com/-2AkA_77aZOc/Te4sHtiMYWI/AAAAAAAACIk/bpI6UzU01ws/s1600/4.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615474296371306850" src="http://3.bp.blogspot.com/-2AkA_77aZOc/Te4sHtiMYWI/AAAAAAAACIk/bpI6UzU01ws/s400/4.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 400px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 265px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;div class="post-body entry-content" style="margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-fnyJo-ynrhg/Te4sHb09MkI/AAAAAAAACIc/D0K952E6eqA/s1600/5.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615474291618165314" src="http://3.bp.blogspot.com/-fnyJo-ynrhg/Te4sHb09MkI/AAAAAAAACIc/D0K952E6eqA/s400/5.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 400px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 372px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Create a synchronous BPEL process&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-C4u5Td1gQC4/Te4umKbRdlI/AAAAAAAACJM/7148qXkUWhg/s1600/1.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615477018546239058" src="http://2.bp.blogspot.com/-C4u5Td1gQC4/Te4umKbRdlI/AAAAAAAACJM/7148qXkUWhg/s400/1.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 274px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Create an EJB reference&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-SkypV8YTJok/Te5_R8Rn2RI/AAAAAAAACK8/ck54W44P3c8/s1600/6.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615565731592132882" src="http://3.bp.blogspot.com/-SkypV8YTJok/Te5_R8Rn2RI/AAAAAAAACK8/ck54W44P3c8/s400/6.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 201px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-nmzwwuJue7Y/Te4vlPOUW0I/AAAAAAAACJc/JpOriodwqYI/s1600/4.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615478102165838658" src="http://1.bp.blogspot.com/-nmzwwuJue7Y/Te4vlPOUW0I/AAAAAAAACJc/JpOriodwqYI/s400/4.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 140px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Wire up&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;a href="http://1.bp.blogspot.com/-JlCRJnslYTk/Te4vk02Z1_I/AAAAAAAACJU/_EU7FcgrWgQ/s1600/5.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615478095086213106" src="http://1.bp.blogspot.com/-JlCRJnslYTk/Te4vk02Z1_I/AAAAAAAACJU/_EU7FcgrWgQ/s400/5.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 93px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;div class="post-body entry-content" style="margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Add the Invoke to the BPEL process&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-dprKWOqNAbc/Te4w90nvLxI/AAAAAAAACKE/2_SLScq3Njs/s1600/1.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615479624033054482" src="http://3.bp.blogspot.com/-dprKWOqNAbc/Te4w90nvLxI/AAAAAAAACKE/2_SLScq3Njs/s400/1.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 400px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 374px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Add the required Assigns, before and after&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-daMLkB1UmAw/Te4w9lOM5BI/AAAAAAAACJ8/zP87m4EM4hg/s1600/2.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615479619899417618" src="http://3.bp.blogspot.com/-daMLkB1UmAw/Te4w9lOM5BI/AAAAAAAACJ8/zP87m4EM4hg/s400/2.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 215px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-EPRATjaUNjg/Te4w9Oex_SI/AAAAAAAACJ0/ShFW8yFUH0I/s1600/3.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615479613794942242" src="http://2.bp.blogspot.com/-EPRATjaUNjg/Te4w9Oex_SI/AAAAAAAACJ0/ShFW8yFUH0I/s400/3.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 224px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-VT9xtokyNKY/Te4w88qL3pI/AAAAAAAACJs/N8_puzcJRak/s1600/4.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615479609010937490" src="http://3.bp.blogspot.com/-VT9xtokyNKY/Te4w88qL3pI/AAAAAAAACJs/N8_puzcJRak/s400/4.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 219px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em;"&gt;Step 5 - Expose the composite as an EJB Service&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-7F91cyBfLZA/Te403RilpuI/AAAAAAAACKk/oh-n5fkyVfA/s1600/1.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615483909583513314" src="http://3.bp.blogspot.com/-7F91cyBfLZA/Te403RilpuI/AAAAAAAACKk/oh-n5fkyVfA/s400/1.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 285px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-1UXzOgfm-Qw/Te403E0uMhI/AAAAAAAACKc/HhscP4shtk8/s1600/2.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615483906169909778" src="http://3.bp.blogspot.com/-1UXzOgfm-Qw/Te403E0uMhI/AAAAAAAACKc/HhscP4shtk8/s400/2.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 82px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-OMz93ymodf8/Te4022NEqKI/AAAAAAAACKU/Z-GU_fgtXCs/s1600/3.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615483902245513378" src="http://4.bp.blogspot.com/-OMz93ymodf8/Te4022NEqKI/AAAAAAAACKU/Z-GU_fgtXCs/s400/3.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 59px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Make InputOrder and OrderType serializable&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-_Yj-wvK99c4/Te41AUWR2DI/AAAAAAAACKs/HWyFkfpMe5Y/s1600/4.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615484064956012594" src="http://3.bp.blogspot.com/-_Yj-wvK99c4/Te41AUWR2DI/AAAAAAAACKs/HWyFkfpMe5Y/s400/4.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 36px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 376px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Deploy and view in JNDI tree&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em;"&gt;Step 6 Create the EJB client in the SOA project&lt;/strong&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;package demoejbtxsoa;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import java.lang.reflect.InvocationHandler;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import java.lang.reflect.Method;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import java.lang.reflect.Proxy;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import java.util.Hashtable;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import javax.naming.Context;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import javax.naming.InitialContext;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import javax.naming.NamingException;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import processorder.demo_ejb_tx_soa.demo_ejb_tx_soa_app.com.oracle.xmlns.InputOrder;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import processorder.demo_ejb_tx_soa.demo_ejb_tx_soa_app.com.oracle.xmlns.OrderType;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import processorder.demo_ejb_tx_soa.demo_ejb_tx_soa_app.com.oracle.xmlns.ProcessOrder;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import processorder.demo_ejb_tx_soa.demo_ejb_tx_soa_app.com.oracle.xmlns.ProcessResponse;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;public class MyEJBClient {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;public static void main(String [] args) throws Throwable {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;try {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;final Context context = getInitialContext();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;Proxy proxy = (Proxy)context.lookup("ejb/SOAEJBService");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;// preparing the method to be called on the remote EJB&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;Method method =&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;ProcessOrder.class.getDeclaredMethod("process", new Class[] {InputOrder.class});&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;InputOrder id = new InputOrder();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;id.setId(23);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;id.setCustName("NiallC");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;id.setQuantity(7);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;OrderType ot = new OrderType();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;ot.setComments("Good Customer");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;ot.setProduct("Oracle SOA Suite 11g");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;ot.setProductGroup("FMW");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;ot.setProductKey(new Long(12345));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;id.setOrder(ot);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;InvocationHandler handler = Proxy.getInvocationHandler(proxy);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;ProcessResponse response = (ProcessResponse)handler.invoke(proxy, method, new Object[] { id });&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;} catch (Exception ex) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;ex.printStackTrace();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;private static Context getInitialContext() throws NamingException {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;Hashtable env = new Hashtable();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;// WebLogic Server 10.x connection details&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;env.put( Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" );&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;env.put(Context.PROVIDER_URL, "t3://127.0.0.1:7001");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;env.put(Context.SECURITY_PRINCIPAL, "weblogic");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;env.put(Context.SECURITY_CREDENTIALS, "welcome1");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;return new InitialContext( env );&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 1.6em;"&gt;Run the client &amp;nbsp;and &lt;/span&gt;c&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;heck the DB&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-iFIYZ5vs_K0/Te5ttLRt2II/AAAAAAAACK0/kfy8hAZuCU0/s1600/5.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615546408266225794" src="http://2.bp.blogspot.com/-iFIYZ5vs_K0/Te5ttLRt2II/AAAAAAAACK0/kfy8hAZuCU0/s400/5.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; display: block; height: 69px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 228px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em;"&gt;Step 7 JTA enable...&lt;/strong&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Add the following code to the EJB Client -&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;import javax.transaction.UserTransaction;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;public final static String JTA_USER_XACT = "javax.transaction.UserTransaction";&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;UserTransaction ut = (UserTransaction)context.lookup(JTA_USER_XACT);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;ut.begin();&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;//ut.rollback();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 1.6em;"&gt;ut.commit();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-p1Iz9ClbTAw/Te6EisxdjjI/AAAAAAAACLE/F3wabSxs3sg/s1600/1.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615571517046623794" src="http://4.bp.blogspot.com/-p1Iz9ClbTAw/Te6EisxdjjI/AAAAAAAACLE/F3wabSxs3sg/s400/1.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 139px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Define BPEL to participate in the global TX.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;Add this property to BPEL specification in composite.xml&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-b0JO5ocsWkA/Te6H2bRlc9I/AAAAAAAACL8/DpzU65HFVYE/s1600/8.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615575154481787858" src="http://3.bp.blogspot.com/-b0JO5ocsWkA/Te6H2bRlc9I/AAAAAAAACL8/DpzU65HFVYE/s400/8.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 15px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;a href="http://2.bp.blogspot.com/-rm_XvQru43U/Te6FGm_3vNI/AAAAAAAACLM/H5PcT1QcriQ/s1600/2.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615572133971737810" src="http://2.bp.blogspot.com/-rm_XvQru43U/Te6FGm_3vNI/AAAAAAAACLM/H5PcT1QcriQ/s400/2.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 64px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;div class="post-body entry-content" style="margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;strong style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em;"&gt;Test&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;commit()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-VeoZ-FZQUjk/Te6F8FQUY9I/AAAAAAAACLc/oVWswebehAM/s1600/3.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615573052626854866" src="http://1.bp.blogspot.com/-VeoZ-FZQUjk/Te6F8FQUY9I/AAAAAAAACLc/oVWswebehAM/s400/3.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 307px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-7qfvZhR9CoI/Te6F76adJMI/AAAAAAAACLU/FEOOm_rVxNE/s1600/4.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615573049716581570" src="http://1.bp.blogspot.com/-7qfvZhR9CoI/Te6F76adJMI/AAAAAAAACLU/FEOOm_rVxNE/s400/4.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 100px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 225px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 1.6em;"&gt;rollback()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-EI5CTcAhA9U/Te6HSfhfi0I/AAAAAAAACL0/jopwBGgmbbQ/s1600/5.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615574537146960706" src="http://1.bp.blogspot.com/-EI5CTcAhA9U/Te6HSfhfi0I/AAAAAAAACL0/jopwBGgmbbQ/s400/5.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 266px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-khTH1q1dUh8/Te6HK0nWE8I/AAAAAAAACLs/0Im5x2ej6J0/s1600/6.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615574405369697218" src="http://2.bp.blogspot.com/-khTH1q1dUh8/Te6HK0nWE8I/AAAAAAAACLs/0Im5x2ej6J0/s400/6.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 55px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 374px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-3rwe9INY0MQ/Te6HKhXCllI/AAAAAAAACLk/2Sb7bjstmsM/s1600/7.GIF" style="color: #5588aa; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; text-decoration: none;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5615574400201037394" src="http://1.bp.blogspot.com/-3rwe9INY0MQ/Te6HKhXCllI/AAAAAAAACLk/2Sb7bjstmsM/s400/7.GIF" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; cursor: pointer; display: block; height: 100px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 227px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-2417779608999693425?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/2417779608999693425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=2417779608999693425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/2417779608999693425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/2417779608999693425'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/invoking-soa-composite-as-part-of.html' title='Invoking SOA Composite as part of a global transaction'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-8f8xzUk8n0w/Te4lOdbdhYI/AAAAAAAACIE/jv4MAOhO0nY/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-2270213395344628714</id><published>2011-10-07T14:55:00.000-07:00</published><updated>2011-10-07T14:55:03.543-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Composite Status in SOA Suite 11g console</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="post-body entry-content" id="post-body-4850767058444398289" style="text-align: left;"&gt;(From &lt;a href="http://niallcblogs.blogspot.com/2009/10/composite-status-in-soa-suite-11g.html"&gt;http://niallcblogs.blogspot.com/2009/10/composite-status-in-soa-suite-11g.html&lt;/a&gt;)&lt;/div&gt;&lt;div class="post-body entry-content" id="post-body-4850767058444398289" style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="post-body entry-content" id="post-body-4850767058444398289" style="text-align: left;"&gt;The Composite instance completes successfully however the state is not updated in the instance list? Then check&amp;nbsp;that you have the following set.&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/SuAMfxZvzBI/AAAAAAAAAVM/eaSaXPOdsU4/s1600-h/aa.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5395326093566659602" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/SuAMfxZvzBI/AAAAAAAAAVM/eaSaXPOdsU4/s1600/aa.jpg" style="display: block; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: left;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="post-body entry-content" id="post-body-4850767058444398289"&gt;&lt;div class="post-body entry-content" id="post-body-4850767058444398289"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="post-body entry-content" id="post-body-4850767058444398289"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-body entry-content" id="post-body-4850767058444398289"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-2270213395344628714?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/2270213395344628714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=2270213395344628714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/2270213395344628714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/2270213395344628714'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/composite-status-in-soa-suite-11g.html' title='Composite Status in SOA Suite 11g console'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gWwhpxFZjGs/SuAMfxZvzBI/AAAAAAAAAVM/eaSaXPOdsU4/s72-c/aa.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-5105792196433726044</id><published>2011-10-07T14:38:00.000-07:00</published><updated>2011-10-07T14:39:03.276-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>BPEL - Checking input XML for optional elements</title><content type='html'>(From &lt;a href="http://niallcblogs.blogspot.com/2008/04/checking-input-xml-for-optional.html"&gt;http://niallcblogs.blogspot.com/2008/04/checking-input-xml-for-optional.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div class="post-header"&gt;&lt;div class="post-header-line-1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-body entry-content" id="post-body-3347580024754681427"&gt;&lt;div&gt;The scenario - Check whether the optional &lt;strong&gt;Title&lt;/strong&gt; element is  present in the input XML payload to the BPEL process. If it isn't present, then  add it with the default value "DefaultValue".&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The XSD -&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/SBHvi_8ohXI/AAAAAAAAAGE/m7NuBT8PF7Q/s1600-h/aaa1.jpg"&gt;&lt;img alt="" border="0" height="185" id="BLOGGER_PHOTO_ID_5193195229895230834" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/SBHvi_8ohXI/AAAAAAAAAGE/m7NuBT8PF7Q/s640/aaa1.jpg" style="display: block; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center;" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;The input XML -&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/SBHvi_8ohYI/AAAAAAAAAGM/viWJC9IseYI/s1600-h/aaa2.jpg"&gt;&lt;img alt="" border="0" height="177" id="BLOGGER_PHOTO_ID_5193195229895230850" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/SBHvi_8ohYI/AAAAAAAAAGM/viWJC9IseYI/s640/aaa2.jpg" style="display: block; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center;" width="640" /&gt;&lt;/a&gt;  I created a simple synchronous BPEL process with input and output variable set  to outputCustomerData. I added a transform activity.&lt;br /&gt;&lt;br /&gt;The following will check whether the element is present and set the default  value, if necessary.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/SBHxO_8ohZI/AAAAAAAAAGU/1dZqSdmqH4Q/s1600-h/aaa3.jpg"&gt;&lt;img alt="" border="0" height="177" id="BLOGGER_PHOTO_ID_5193197085321102738" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/SBHxO_8ohZI/AAAAAAAAAGU/1dZqSdmqH4Q/s640/aaa3.jpg" style="display: block; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center;" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-5105792196433726044?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/5105792196433726044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=5105792196433726044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5105792196433726044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5105792196433726044'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/bpel-checking-input-xml-for-optional.html' title='BPEL - Checking input XML for optional elements'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gWwhpxFZjGs/SBHvi_8ohXI/AAAAAAAAAGE/m7NuBT8PF7Q/s72-c/aaa1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-8732251812523088787</id><published>2011-10-07T14:23:00.000-07:00</published><updated>2011-10-07T14:25:10.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>BPEL - Debug Logging using Sensors – Part 1</title><content type='html'>(From &lt;a href="http://technology.amis.nl/blog/3326/debug-logging-in-bpel-using-sensors-part-1"&gt;http://technology.amis.nl/blog/3326/debug-logging-in-bpel-using-sensors-part-1&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;When developing and/or debugging BPEL processes, the Oracle BPEL Console is your best friend. Every change to every variable, every activity that was executed, everything is right there for you to inspect, whether the instance is still in-flight or already completed. But although this sounds like the ultimate debugging tool, I’m sure you’ve noticed like me that when your processes get really big (which they tend to do rather quickly), there’s two reasons why debugging can be difficult. The first is plain and simple “information overload”. If your audit flow contains hundreds of activities and possibly thousands of variable data changes, finding an individual piece of information is not trivial. I find the second reason, however, to be of even more profound impact: the BPEL console will not show you the execution path through your process flow (which would indicate which parts of the code got executed, and which didn’t), but rather it displays a long, sequential list of Activities that were executed. Especially if you have a lot of switch and/or pick statements, and if your code contains loops (in which case each iteration will add all executed Activities to the list), determining “what happened” during execution of your instance from this long, long audit trail might prove a challenge.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In a “mini-series” of Blog entries, I will share a number of techniques that I have used in situations like this, to extract logging/debug information from a BPEL process instance using BPEL Sensors. This first entry will focus on a simple, straightforward form of logging, using a “Variable Sensor” to provide a sort of “management summary” of the execution of a BPEL process instance.&lt;br /&gt;&lt;br /&gt;Using Sensors for Logging and Debugging&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BPEL Sensors can be very useful to extract information from the execution of a process. Basically, they come in three flavours: Activity Sensors, Fault Sensors and Variable Sensors. The first type is ideal to have a BPEL process trigger “events”, as you can configure them to “fire” when individual Activities in your process get executed. You even get to specify if they need to fire on activation (i.e. before the Activity is executed), on completion, on faults, when compensation is invoked, or on all these events. Finally, you can pass any amount of process data along to it, allowing the “Sensor Action” associated with the Sensor to use that information, for instance by posting it on a queue, storing it in the database, sending it to a BAM server, or invoking custom Java code with it. &lt;br /&gt;&lt;br /&gt;Sometimes I use Activity Sensors for debugging purposes, by adding them to critical activities that determine process behavior, and adding process variables to them so that I can see those bits of information that were crucial at that particular moment in process execution. This is a very powerful method and I will show some examples in future Blog entries, but often, my needs are more simple, and all I really need is a BPEL equivalent of a good old Log4J statement in Java code:&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: #0b5394;"&gt;log.debug(‘Entering Order line loop, with ‘+orderlines.size()+’ order lines’);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;&lt;span style="color: black;"&gt;&lt;strong&gt;Simple logging using Variable Sensors&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-JRx6imKYjAs/To9tXAsTSdI/AAAAAAAAAGg/G3vIwh0U2PI/s1600/image91.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" kca="true" src="http://2.bp.blogspot.com/-JRx6imKYjAs/To9tXAsTSdI/AAAAAAAAAGg/G3vIwh0U2PI/s1600/image91.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;Configure Sensors for Logging purposes &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;To incorporate Sensor based logging in our process, there are two tasks to perform. The first part is configuration. You only need to do this once for the entire process. In terms of Log4J, it would compare to the code at the top of the class, defining the "log" variable that we can write to.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;Log log = LogFactory.getLog(this.getClass());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In fact, this is incredibly similar to what we will do in BPEL! We also start by adding a variable, “LogMessage”, to the process, and then we add a Variable Sensor to it that will process all changes that are made to it. To get started, click on the “Variables” icon on the process diagram (x) (see screenshot below).&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;For simple logging like this, where the log messages are just simple strings, the “Variable Sensor” comes in handy. This type of Sensor is triggered every time a change is made to a process variable. So, unlike Activity Sensors where you need to specify exactly where in the process flow you want that sensor to fire, with Variable Sensors you only define it once and it fires automatically each and every time in your process when changes are made to the process variable it is assigned to. So basically, to get some simple debug logging going, all you need is to create one “Log” variable, add a Variable Sensor to it, and just by assigning a new value to it anywhere in the process where you need logging, the Sensor fires and processes the value of the variable.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;So, how does this work? As an example, let’s take the BPEL process flow below. This is a simple demo flow and, as mentioned before, for simple flows the BPEL Console works perfectly well all by itself. Just imagine this is part of a much bigger process, and you would need to figure out what happened in this part of the flow by inspecting hundreds of audit trail entries.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt; &amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image101.gif" /&gt;&lt;br /&gt;In the window that pops up, create a new Variable called “LogMessage”, of  type xsd:string.&lt;br /&gt;&amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image121.gif" /&gt;&lt;br /&gt;Click “OK” to close this window, then select the newly created “LogMessage”  variable and click on the “Edit” button:.&lt;br /&gt;&amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image151.gif" /&gt;&lt;br /&gt;Select the “Sensors” tab, and press the “Create” button to create a Variable  Sensor:.&lt;br /&gt;&amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image171.gif" /&gt;&lt;br /&gt;Name the sensor “LogSensor”, and use the little icon on the right of the  “Target” field to select the “LogMessage” variable. It’s kinda weird you need to  do this since you entered this window from the “Edit Variable – LogMessage”  window, but oh well….&lt;br /&gt;&amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image181.gif" /&gt;&lt;br /&gt;A Sensor is like a trigger definition that indicates _when_ it fires. But in  order to make it _do_ something, you’ll need to tie it to a “Sensor Action”. In  PL/SQL terms, a “Sensor” is like a table trigger that invokes a PL/SQL  procedure, and the “Sensor Action” is the procedure that it invokes. The Sensor  Action (procedure) can therefore be re-used by many Sensors (triggers).&lt;br /&gt;You can create a Sensor Action within the current dialog, by clicking the  “Add” button in the “Sensor Actions” section. In the “Sensor Action Chooser” you  can pick previously defined Sensor Actions, but since we have not created one  yet, we’ll do that now. Notice that there are two flavors to choose from: BAM  Sensor Actions, and regular “Sensor Action”. Choose the latter..&lt;br /&gt;&amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image192.gif" /&gt;&lt;br /&gt;In the dialog that pops up, call the Sensor Action “LogAction”, and leave  “Publish Type” to “Database”. This means that the Sensor events (including their  data) will be written to a pre-defined database tables in the BPEL dehydration  store. In this case (this being a Variable Sensor), that table is  “VARIABLE_SENSOR_VALUES”. Unfortunately, you can NOT define your own table. But  for debug logging purposes like ours this is ideal, especially since the BPEL  console has maintenance facilities to clean up this table. In fact, as you’ll  see later, there is not even any need to query this table, as its contents will  be shown in the BPEL Console when inspecting the process instance..&lt;br /&gt;&amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image201.gif" /&gt;&lt;br /&gt;Press OK, and see how the newly created LogAction is tied to the LogSensor on  the LogMessage variable. Also notice you could have multiple Sensor Actions  could be tied to a single LogSensor, allowing you, for instance, to write to the  database AND post to a JMS queue..&lt;br /&gt;&lt;img align="bottom" border="0" hspace="0" src="http://technology.amis.nl/blog/wp-content/images/image21.gif" /&gt;&lt;br /&gt;OK this dialog, and see the summary: You have a LogMessage variable, with a  sensor called “LogSensor” on it, which is tied to the “LogAction” Sensor Action  (which will publish to the database). &lt;br /&gt;&amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image22.gif" /&gt;&lt;br /&gt;&lt;br /&gt;This concluded the configuration part. Although it may seem like a lot of  work the first time, I promise that this takes under a minute once you’ve done  this a few times. And, remember, you only need to do this once for the entire  process. The actual "log statements" are far simpler to create, as we’ll see  next.&lt;br /&gt;&lt;h3&gt;Adding "Log statements" to your Process&amp;nbsp;&lt;/h3&gt;What we have now is a LogMessage variable which is “rigged” so that every  change to it will automatically be published to the database (and, as you will  see later, is also automatically visible in the BPEL console). All we need to do  now is start creating our "log statements" in the BPEL process. This simply  means: assigning values to the “LogMessage” variable at places in your process  flow that currently interest you.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;You can add new Assign activities to your process to do this, or just  add Copy Operations to existing Assigns activities in your process. In the  “Assign” dialog, select the LogMessage variable on the right (notice the cool  “sensor” icon to the left of it), and (typically) the ‘Expression’ type on the  left. You could log simple strings by just typing something like ‘Hello, this is  debug logging’ (don’t forget the single quotes), or use the Expression Builder  to mix your log statements with dynamic values (typically with the ‘concat’  statement, with which you can concatenate an arbitrary number of strings,  separated by commas).&lt;br /&gt;&amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image26.gif" /&gt;&lt;br /&gt;Below is the result of adding a simple, static log statement to an existing  Assign activity:.&lt;br /&gt;&amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image33.gif" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Result&amp;nbsp;&lt;/h3&gt;Now I’m sure you are wondering where this logging turns up after initiating a  process instance. Well, our “LogAction” Sensor Action published to the database,  but fortunately you won’t have to go to the database and query that table to  retrieve the logging information. When looking at the Flow of an individual  instance in the BPEL Console, one of the tabs reads “Sensor Values”. Below, you  can see the result from adding some log statements to the Process we started out  with.&lt;br /&gt;&amp;nbsp;&lt;img src="http://technology.amis.nl/blog/wp-content/images/image34.gif" /&gt;&lt;br /&gt;So there you have it. Simple, log4J style logging that requires just a little  setting up at Process level, and then simply some Copy rules to a single  “LogMessage” variable to create logging that is conveniently accessible from the  BPEL console. &lt;br /&gt;&lt;h3&gt;Cleaning up&lt;/h3&gt;To wrap things up: how to clean things up after you’re done debugging. When  you no longer need your log statements, there’s a couple of things to do. First,  you can purge all sensor values from the BPEL tables, by going to the  “Instances” tab in the BPEL Console and clicking the “Purge All Sensor Data”  button. Then, in JDeveloper, have some options. You can:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Disable logging for now (but you might want to turn it back on  later)&lt;/strong&gt;&lt;br /&gt;To do this, simple delete the LogSensor from the LogMessage  variable. The LogMessage variable and log statements remain in your code but  will take hardly any time during execution, and no sensors will fire (and  therefore no database activity to the sensor tables will take place). All you  need to do to turn logging on again at a later point is recreate the LogSensor  and assign it to the LogAction (which will still be there).  &lt;img src="http://technology.amis.nl/blog/wp-content/images/image35.gif" /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Remove all trace of logging&lt;/strong&gt; &lt;ul&gt;&lt;li&gt;Delete the LogMessage variable from the BPEL process. &lt;/li&gt;&lt;li&gt;Rebuild the process and notice the compilation errors. Clicking on them will  lead you to all the Copy operations where you wrote to the LogMessage variable.  If this is the only operation in the Assign, remove the assign, otherwise just  remove the Copy operation. &lt;/li&gt;&lt;li&gt;Rebuild the process to make sure you’ve gotten rid of them all. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;That it for now. In the next part, I will show how you can use Activity  Sensors if using a simple xsd:string as log message does not suffice, and you  need more information about the BPEL process state in your log. In the third  (and probably final) part, I will show how you can use a custom Java  SensorAction, to be able to use the Log4J logging framework to deal with your  log messages.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-8732251812523088787?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/8732251812523088787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=8732251812523088787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/8732251812523088787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/8732251812523088787'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/bpel-debug-logging-using-sensors-part-1.html' title='BPEL - Debug Logging using Sensors – Part 1'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-JRx6imKYjAs/To9tXAsTSdI/AAAAAAAAAGg/G3vIwh0U2PI/s72-c/image91.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-5074402868904957465</id><published>2011-10-07T14:06:00.000-07:00</published><updated>2011-10-07T14:12:50.231-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>BPEL - Access the variables in embedded Java (2)</title><content type='html'>How do you call getVariableData() if you have to accept a string value from the client and process it further in a Java code.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Problem:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;I have used the following syntax -&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;String firstName = ((Element)getVariableData(“inputVariable”, “payload”, “/client:myBPELProcess/client:input”)).getNodeValue();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;firstName&lt;/strong&gt; is always coming out to be a null value even though I pass the input value as string say “test”(after deployment of the BPEL process).&lt;br /&gt;&lt;br /&gt;If I am calling getNodeName() instead then it is correctly giving me the right node as “ns1:input”, but it seems getNodeValue() is having some problems.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Anwser: &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;The payload is a text element and the value is for the text element. &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;String firstName = ((Element)getVariableData( “inputVariable”, “payload”, "/client:myBPELProcess/client:input”)).getFirstChild().getNodeValue();&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-5074402868904957465?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/5074402868904957465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=5074402868904957465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5074402868904957465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5074402868904957465'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/bpel-access-variables-in-embedded-java_07.html' title='BPEL - Access the variables in embedded Java (2)'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-3679379100084969021</id><published>2011-10-07T14:03:00.000-07:00</published><updated>2011-10-07T14:04:14.314-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Embedding Java in BPEL process</title><content type='html'>(From &lt;a href="http://technology.amis.nl/blog/2387/embedding-java-in-bpel-process"&gt;http://technology.amis.nl/blog/2387/embedding-java-in-bpel-process&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Oracle BPEL has a special Activity called "Java Embedding", that allows you to include some "inline" Java code into a BPEL process. Unfortunately, you don’t get Java type-in support in the editor behind the Java Embedding activity, which makes coding a lot more difficult. Furthermore, it is&amp;nbsp;not straightforward to find out what kind of methods are available for you to invoke. When I recently had to use a Java Embedding myself, I found a way to work around this and learned some interesting things about the methods available to you when writing embedded Java code into a BPEL process.&lt;br /&gt;&lt;br /&gt;For starters, to find out where my embedded code ends up at runtime, I put the following, simple statement in a "Java Embedding":&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;System.out.println("Java Embedding superclass: "+this.getClass().getSuperclass().getName());&lt;br /&gt;&lt;br /&gt;This told me that the class that the BPEL compiler creates for this Java embedding extends "com.collaxa.cube.engine.ext.BPELXExecLet", which can be found in orabpel.jar. This is an abstract class, with an abstract "execute()" method, and the code in this method is the code that you provide in the Java Embedding editor. Unfortunately, there is no Javadoc available for this class but there is Javadoc for its superclass (BaseBPELExecLet, click on the link to see the Javadoc).&lt;br /&gt;&lt;br /&gt;With this knowledge, it is easy to create a temporary Java class where we can create the code for the Java Embedding activity with full type-in support. My advice would be to create it in a separate JDeveloper project. Add the "BPM Workflow" library to it (Project Properties =&amp;gt; Libraries), and create a new Java class that extends the BPELXExecLet class. You’ll need to implement the abstract "execute" method, and here you can create your Java code with full type-in support. When you’re done, you can copy-paste the logic inside the execute method to the editor of the Java Embedding in your BPEL process. There is only one caveat: when your typing code you should not use Alt-Enter to create imports in your Java class; you should always use fully qualified class names or the BPEL compilation process will fail later. &lt;br /&gt;&lt;br /&gt;Using type-in support (type this. and wait for a while or press CTRL-space if you are in a hurry, or CTRL-ALT-space if you are in a hurry _and_ want only smart suggestions), a number of interesting methods appear which can be invoked from your code. Some especially useful methods that I have used in the past are:&lt;br /&gt;&lt;br /&gt;•checkpoint(): forces dehydration. &lt;br /&gt;•setIndex(int i, String s): stores the value of String s in CI_INDEXES, a table in the dehydration store with the current instance id as PK, and six "index" columns in which you can store data. Typically used to enable you to correlate a unique key for the process in the user domain with the technical BPEL instance ID, for track&amp;amp;trace purposes. &lt;br /&gt;•getVariableData(): equivalent of bpws:getVariableData() in BPEL process, gives access to any data in the BPEL process &lt;br /&gt;•setVariableData(): equivalent of bpws:setVariableData() in BPEL process, allows you to change any data in the BPEL process &lt;br /&gt;•addAuditTrailEntry(): puts a log message in the Audit trail &lt;br /&gt;•getInstanceId(): gets the current instance id &lt;br /&gt;•getParentId(): gets the instance id of the BPEL process which invoked the current process &lt;br /&gt;•getRootId(): gets the instance id of the first BPEL process in the calling chain &lt;br /&gt;•getPreference(): gives access to descriptor properties. &lt;br /&gt;&lt;br /&gt;But this is just a brief summary, there are many more methods you can invoke. One last method at your disposal that is very powerful is: getLocator(). With the com.oracle.bpel.client.Locator this method returns, you get access to pretty much anything in the BPEL Domain, and one thing you might want to do is to get access to the current BPEL process instance. I ran across this situation where I needed the name of the BPEL process to which the current instance belonged, and although many attributes of the current instance are available through methods in the BPELXExecLet superclass, the ProcessId is not one of them.&lt;br /&gt;&lt;br /&gt;The code to obtain a handle to the current BPEL instance using the Locator would look something like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;String instanceId = Long.toString(this.getInstanceId());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;// Define variables to use;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;com.oracle.bpel.client.IInstanceHandle instance;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;com.oracle.bpel.client.IInstanceHandle[] instances;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;com.oracle.bpel.client.util.WhereCondition cond;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;// Set the whereclause&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;cond = new com.oracle.bpel.client.util.WhereCondition( "cikey = ?" ); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;cond.setLong(1, this.getInstanceId()); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;// Perform the query using the Locator&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;instances = this.getLocator().listInstances(cond); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;instance = instances[0];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;// Store the name of the BPEL process in the CI_INDEXES table&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;setIndex(1, instance.getProcess().getProcessId().toString());&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Unfortunately, the code above will fail to find the instance if it has not yet been persisted to the dehydration store. Of course, a call to this.checkpoint(); at the beginning of this code could easily fix that, but this has performance implications. &lt;br /&gt;&lt;br /&gt;While trying to find a solution to this problem, I had a feeling that since so much attributes of the current instance _are_ available through superclass methods, it should be possible to obtain the current process instance without performing a query through the Locator. With this in mind, I came across yet another intriguing method in the BPELXExecLet class: getFromEnvironment(String key). Some debugging code later I had found my answer: when using the key "__cube-instance", I could obtain an instance of com.collaxa.cube.engine.core.ICubeInstance, which allowed me access to the ProcessId I needed:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;com.collaxa.cube.engine.core.ICubeInstance instance; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;instance = (com.collaxa.cube.engine.core.ICubeInstance)getFromEnvironment("__cube-instance"); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;setIndex(1,instance.getProcessId()); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Shorter, better performance because 1.) no query needed and 2.) no (additional) dehydration needed, so as long as they don’t change that funky key this’ll do nicely ;-)&lt;br /&gt;&lt;br /&gt;This last bit was specific to one particular problem I had to solve recently, but I hope that the first part of this post contains some information that might be of value when you create your own Java Embeddings in a BPEL process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-3679379100084969021?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/3679379100084969021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=3679379100084969021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/3679379100084969021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/3679379100084969021'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/embedding-java-in-bpel-process.html' title='Embedding Java in BPEL process'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-6454542912545317816</id><published>2011-10-05T14:45:00.000-07:00</published><updated>2011-10-05T14:45:08.134-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>BPEL - Get a value from array of element in a loop.</title><content type='html'>In a loop, the counter is a incremental value with the loop.&lt;br /&gt;&lt;br /&gt;Directly use the variable to get the value of specific postion in the array in BPEL 2.0.&lt;br /&gt;$inputVariable.payload/client:input[$counter]&lt;br /&gt;&lt;br /&gt;Use XML manipulatioin in BPEL2.0.&lt;br /&gt;ora:getElement('inputVariable', 'payload', '/client:process/client:input', $counter)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-6454542912545317816?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/6454542912545317816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=6454542912545317816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/6454542912545317816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/6454542912545317816'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/bpel-get-value-from-array-of-element-in.html' title='BPEL - Get a value from array of element in a loop.'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-1384023047568566543</id><published>2011-10-05T12:15:00.000-07:00</published><updated>2011-10-05T13:59:27.174-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>BPEL - Access the variables in embedded Java</title><content type='html'>&lt;span style="font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;span style="color: black;"&gt;(From &lt;/span&gt;&lt;a href="http://niallcblogs.blogspot.com/2008/01/bpel-embedded-java.html"&gt;&lt;span style="color: black;"&gt;http://niallcblogs.blogspot.com/2008/01/bpel-embedded-java.html&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;try{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String status = "Bronze";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* accessing a process variable of type string */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String country = (String)getVariableData("v_country");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* accessing a variable within the complex type - customer */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Element country1 = (Element)getVariableData("inputVariable", "payload","/ns1:customer/ns1:Country");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String c1 = country1.getTextContent();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* writes to the audit trail - will then be visible in BPEL console at runtime*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addAuditTrailEntry("country is: " + country);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addAuditTrailEntry("country1 is: " + c1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (country.equalsIgnoreCase("Ireland")){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = "Gold";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* setting the output variable within the complex type - customer */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; setVariableData("outputVariable", "payload", "/ns1:customer/ns1:Status", status);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addAuditTrailEntry("status is: " + status);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;}catch (Exception e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addAuditTrailEntry(e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Add the following line before the bpelx:exec tag to import the Element class&lt;br /&gt;&amp;lt;import location="org.w3c.dom.Element" importType="http://schemas.oracle.com/bpel/extension/java"/&amp;gt;&lt;br /&gt;&lt;br /&gt;Calling an external Java class in a Java activity&lt;br /&gt;Jar up the Java class you want to use and copy the jarfile to the BPEL&lt;br /&gt;system\services\lib directory.&lt;br /&gt;In this example, my class is called CustomerStatus&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;try{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String status = "Bronze";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String country = (String)getVariableData("v_country");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Element country1 = (Element)getVariableData("inputVariable", "payload","/ns1:customer/ns1:Country");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String c1 = country1.getTextContent();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addAuditTrailEntry("country is: " + country);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addAuditTrailEntry("country1 is: " + c1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CustomerStatus cs = new CustomerStatus();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = cs.getStatus(country);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; setVariableData("outputVariable", "payload", "/ns1:customer/ns1:Status", status);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addAuditTrailEntry("status is: " + status);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;}catch (Exception e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addAuditTrailEntry(e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Add any classes needed to import using &amp;lt;import/&amp;gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-1384023047568566543?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/1384023047568566543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=1384023047568566543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/1384023047568566543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/1384023047568566543'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/10/bpel-access-variables-in-embedded-java.html' title='BPEL - Access the variables in embedded Java'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-3807193324837932819</id><published>2011-09-27T08:53:00.000-07:00</published><updated>2011-09-27T08:55:51.764-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Oracle SOA Suite 11g - How to use its native logging mechanism</title><content type='html'>(From &lt;a href="http://mazanatti.info/index.php?/archives/48-SOA-Suite-11g-how-to-use-its-native-logging-mechanism.html"&gt;http://mazanatti.info/index.php?/archives/48-SOA-Suite-11g-how-to-use-its-native-logging-mechanism.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you ever wondered how to generate log messages inside SOA Suite's logging files (diagnostics.log), here are the directions.&lt;br /&gt;&lt;br /&gt;From JDeveloper, with a BPEL flow opened, do this:&lt;br /&gt;&lt;br /&gt;■Insert some imports at the top of the source (first ones inside process tag):&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;lt;bpelx:exec import="java.util.logging.Logger" /&amp;gt; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;lt;bpelx:exec import="java.util.logging.Level" /&amp;gt; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;lt;bpelx:exec import="oracle.fabric.logging.LogFormatter" /&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;■Insert a Java Embedding action with the following code:&lt;br /&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;Logger logger = Logger.getLogger("oracle.soa.Logger"); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;LogFormatter.configFormatter(logger); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;logger.log(Level.INFO, "some message");&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's it, basically. The trick is to configure the logger instance using SOA Fabric's LogFormatter.&lt;br /&gt;&lt;br /&gt;To avoid doing these steps every time you need to log something, you can use a class.&lt;br /&gt;■Create a new Java Class inside your composite project, with the code below:&lt;br /&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;package info.mazanatti.soa; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;import java.util.logging.Level; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;import java.util.logging.Logger; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;import oracle.fabric.logging.LogFormatter; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;public class CustomLogger() { &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; private static final Logger logger = Logger.getLogger("oracle.soa.Logger"); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; static { &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LogFormatter.configFormatter(logger); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; } &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; public static final void log(String message) { &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logger.log(Level.INFO, message); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; } &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;■Call the function from your Java Embedding actions:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;info.mazanatti.soa.CustomLogger.log("some message");&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After building, deploying and running your process, this is what you're going to see from Enterprise Manager's Log page.&lt;br /&gt;&lt;br /&gt;&lt;div class="serendipity_imageComment_img"&gt;&lt;img alt="" class="serendipity_image_center" height="706" src="http://mazanatti.info/uploads/misc/soa-log-3.png" width="627" /&gt;&lt;/div&gt;&lt;div class="serendipity_imageComment_img"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Here's the JDeveloper project using both methods: &lt;a href="http://mazanatti.info/files/LoggingBPEL.zip"&gt;LoggingBPEL.zip&lt;/a&gt;. This  code has "&lt;strong&gt;info.mazanatti.Logger&lt;/strong&gt;" instead of  "&lt;strong&gt;oracle.soa.Logger&lt;/strong&gt;" as showed above. If you want to know why,  keep reading this post :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There's one detail you may have seen that  deserves some explanation: I passed a specific package and class  (&lt;strong&gt;oracle.soa.Logger&lt;/strong&gt;) in order to retrieve a logger instance. I  did this 'cause this package is configured by default when installing the  product, and this releases us of some configuration.&lt;br /&gt;&lt;br /&gt;But, if you want to  use a specific log level for your messages without messing with anything else,  the best way to do so is to define a new package and configure it accordingly.  Here's how.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Define the package you want to use. I'm going with  &lt;strong&gt;"info.mazanatti"&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Locate the file &lt;strong&gt;logging.xml&lt;/strong&gt; of your server and open it.  Inside the domain folder, navigate to  /config/fmwconfig/servers/server_name.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Warning: &lt;/span&gt;you have to configure the logging.xml file of  each SOA instance (server).&lt;/strong&gt; Not the most cluster-friendly procedure,  but that's the way it is.&lt;/li&gt;&lt;li&gt;Include a XML block like this, specifying your package and the lowest log  level you want:&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;logger name="info.mazanatti" level="WARNING:1"&amp;gt; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;handler name="odl-handler" /&amp;gt; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/logger&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Start your domain&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Helvetica, sans-serif;"&gt;Meanwhile, go back to JDeveloper and change the getLogger parameter  (&lt;strong&gt;hint&lt;/strong&gt;: the class doesn't need to exist, only the package name  is actually used):&lt;/span&gt;&lt;div class="syntaxhighlighter  java" id="highlighter_189107" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;div class="bar                          " style="color: #134f5c;"&gt;&lt;/div&gt;&lt;div class="lines"&gt;&lt;div class="line alt1" style="color: #134f5c;"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td class="number"&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&lt;code class="java plain"&gt;Logger logger =  Logger.getLogger(&lt;/code&gt;&lt;code class="java string"&gt;"info.mazanatti.Logger"&lt;/code&gt;&lt;code class="java plain"&gt;);  &lt;/code&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2" style="color: #134f5c;"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td class="number"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td class="content"&gt;&lt;code class="java plain"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;LogFormatter.configFormatter(logger);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2" style="color: #134f5c;"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td class="number"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td class="content"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace;"&gt;&lt;code class="java plain"&gt;logger.log(Level.INFO, &lt;/code&gt;&lt;code class="java string"&gt;"some message"&lt;/code&gt;&lt;code class="java plain"&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Deploy the process to the server, and it's done.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;The  &lt;strong&gt;odl-handler&lt;/strong&gt; mentioned above is the one that writes to  &lt;strong&gt;diagnostics.log&lt;/strong&gt;. There are other handlers, but I'm not getting  into them - if you want, take a look at the &lt;strong&gt;log_handlers&lt;/strong&gt; block  inside logging.xml to figure out what the other handlers do ;-)&lt;br /&gt;&lt;br /&gt;And  here's the list of log levels and its relation to java.util.logging.Level, in  case you want to use values other than Level.INFO:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div align="center" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;strong&gt;logging.xml&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;java.util.logging.Level&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;INTERNAL_ERROR:1&lt;/td&gt; &lt;td&gt;SEVERE.intValue()+100&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;ERROR:1&lt;/td&gt; &lt;td&gt;SEVERE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;WARNING:1&lt;/td&gt; &lt;td&gt;WARNING&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;NOTIFICATION:1&lt;/td&gt; &lt;td&gt;INFO&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;NOTIFICATION:16&lt;/td&gt; &lt;td&gt;CONFIG&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;TRACE:1&lt;/td&gt; &lt;td&gt;FINE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;TRACE:16&lt;/td&gt; &lt;td&gt;FINER&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;TRACE:32&lt;/td&gt; &lt;td&gt;FINEST&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Since we're here, a little  extra bit of information: to view the logging configuration, you must open  Enterprise Manager and navigate to "Log Configuration", as showed below.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="serendipity_imageComment_center" jquery1317050183398="8" shadowid="ds4882" style="position: relative; width: 595px; z-index: 4; zoom: 1;"&gt;&lt;div class="serendipity_imageComment_img" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;img alt="" class="serendipity_image_center" height="553" src="http://mazanatti.info/uploads/misc/soa-log-1.png" width="595" /&gt;&lt;/div&gt;&lt;div class="serendipity_imageComment_img"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Then, a page with data from the logging.xml file will be presented.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="serendipity_imageComment_center" jquery1317050183398="9" shadowid="ds7697" style="position: relative; width: 636px; z-index: 6; zoom: 1;"&gt;&lt;div class="serendipity_imageComment_img" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;img alt="" class="serendipity_image_center" height="458" src="http://mazanatti.info/uploads/misc/soa-log-2.png" width="636" /&gt;&lt;/div&gt;&lt;div class="serendipity_imageComment_img" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="serendipity_imageComment_img"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;If you're not seeing your package listed, don't worry. &lt;strong&gt;It will not show  up here, ever.&lt;/strong&gt; Can't say why, but know that &lt;strong&gt;the configuration  is saved and effective&lt;/strong&gt;. In case you want to change the log level of  your custom package, you don't have to edit the xml files again.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;At this page, select the option "Loggers with Persistent Log Level State"  from the "View" dropdown&lt;/span&gt;&lt;/li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;At the bottom of the new page, a section called "Specify Loggers" will show  up. Type your package name and select the new Level, then click "Apply" at the  top of the page&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Take a look at your logging.xml file, the new value  will be there.&lt;br /&gt;Again, here's the source code: &lt;a href="http://mazanatti.info/files/LoggingBPEL.zip"&gt;LoggingBPEL.zip&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-3807193324837932819?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/3807193324837932819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=3807193324837932819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/3807193324837932819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/3807193324837932819'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/oracle-soa-suite-11g-how-to-use-its.html' title='Oracle SOA Suite 11g - How to use its native logging mechanism'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-3092547120339840929</id><published>2011-09-27T08:40:00.000-07:00</published><updated>2011-09-27T08:40:00.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Oracle SOA Suite Log File Rotation</title><content type='html'>(From &lt;a href="http://blogs.oracle.com/kavinmehta/entry/soa-suite-log-file-rotation"&gt;http://blogs.oracle.com/kavinmehta/entry/soa-suite-log-file-rotation&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In &amp;lt;ORACLE_HOME&amp;gt;/opmn/conf/opmn.xml, apply the following changes for each OC4J you want to modify log file settings&lt;br /&gt;&lt;br /&gt;•Add -Dstdstream.filesize=FILE_SIZE_IN_MB -Dstdstream.filenumber=TOTAL_NO_OF_FILES parameters in the &amp;lt;java-options&amp;gt;. For example, if you want to limit log file size to 10MB and total number of files to be created to 10 than add&lt;br /&gt;-Dstdstream.filesize=10 -Dstdstream.filenumber=10&lt;br /&gt;&lt;br /&gt;•Add -out and -err parameters to the &amp;lt;oc4j-options&amp;gt; to specify standard output and standard error log files.&lt;br /&gt;-out $ORACLE_HOME/opmn/logs/soa_log.out -err $ORACLE_HOME/opmn/logs/soa_log.err&lt;br /&gt;&lt;br /&gt;Apply the changes and restart OC4J. If you are just restarting OC4J make sure to reload opmn before restarting.&lt;br /&gt;&lt;br /&gt;After restart you should be able to see log files soa_log_YYYY_MM_DD_HH_MI_SS.out and &amp;nbsp;soa_log_YYYY_MM_DD_HH_MI_SS.err created under $ORACLE_HOME/opmn/logs/&amp;lt;oc4j_name&amp;gt;_&amp;lt;group_name&amp;gt;_&amp;lt;jvm_id&amp;gt; folder&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-3092547120339840929?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/3092547120339840929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=3092547120339840929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/3092547120339840929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/3092547120339840929'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/oracle-soa-suite-log-file-rotation.html' title='Oracle SOA Suite Log File Rotation'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-936972890412167325</id><published>2011-09-27T08:37:00.000-07:00</published><updated>2011-09-27T08:40:14.812-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Using Oracle SOA Suite Command-Line Upgrade Tool to merge Multiple BPEL Projects Into a Single Composite</title><content type='html'>&lt;h3 class="entry-title"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(From&lt;a href="http://blogs.oracle.com/kavinmehta/entry/using_oracle_soa_suite_command"&gt; http://blogs.oracle.com/kavinmehta/entry/using_oracle_soa_suite_command&lt;/a&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="entry-body"&gt;&lt;br /&gt;Most important benefit of using command line tool is the ability to merge  multiple projects (BPEL, ESB) in to single composite.&lt;br /&gt;Required ANT build files are located under &lt;br /&gt;&amp;lt;JDEV_HOME&amp;gt;\bin &lt;br /&gt;OR&lt;br /&gt;&lt;fmw_soa_home&gt;&amp;lt;FMW_SOA_HOME&amp;gt;\bin&lt;/fmw_soa_home&gt;&lt;br /&gt;Since my machine has got both, i have used FMW_SOA_HOME as ORACLE_HOME&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Set SOA Environment using soaversion.sh (.cmd) located under ORACLE_HOME/bin  directory &lt;/li&gt;&lt;li&gt;Run the Ant project from ORACLE_HOME/bin directory, as follows: &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;ant -f &lt;a href="http://www.blogger.com/post-edit.g?blogID=34655362&amp;amp;postID=936972890412167325&amp;amp;from=pencil" name="sthref343"&gt;&lt;/a&gt;ant-sca-upgrade.xml -Dsource sourceDir -Dtarget  targetDir -DappName app_name&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;To combine multiple BPEL projects into a single composite, provide multiple  source directories as part of the -Dsource property on the command line. Use  colon (:) or a semicolon (;) as path separators. Also use double quotes to  identify the multiple source directories to prevent Ant from parsing the input  in an unexpected manner &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;ant -f ORACLE_HOME/bin/&lt;a href="http://www.blogger.com/post-edit.g?blogID=34655362&amp;amp;postID=936972890412167325&amp;amp;from=pencil" name="sthref347"&gt;&lt;/a&gt;ant-sca-upgrade.xml -Dsource  "sourceDir1:sourceDir2" -Dtarget targetDir -DappName app_name&lt;/blockquote&gt;This way you will see your multiple projects created under one composite&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-936972890412167325?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/936972890412167325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=936972890412167325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/936972890412167325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/936972890412167325'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/using-oracle-soa-suite-command-line.html' title='Using Oracle SOA Suite Command-Line Upgrade Tool to merge Multiple BPEL Projects Into a Single Composite'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-1290033861754090476</id><published>2011-09-27T08:34:00.000-07:00</published><updated>2011-09-27T08:36:39.304-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Oracle BPEL Fault Policy Framework handling custom business faults</title><content type='html'>(From &lt;a href="http://www.xenta.nl/blog/2009/02/14/oracle-bpel-fault-policy-framework-handling-custom-business-faults/"&gt;http://www.xenta.nl/blog/2009/02/14/oracle-bpel-fault-policy-framework-handling-custom-business-faults/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From the Oracle forum and from the comments on my article about &lt;a href="http://www.it-eye.nl/weblog/2007/09/10/oracle-bpel-10133-fault-policy-management/" modo="false"&gt;Oracle BPEL Fault Policy Management&lt;/a&gt; i get a lot of questions  about how to let the framework handle my own custom defined ‘business  faults’.&lt;br /&gt;In certain situations the default set of faults defined by Oracle  aren’t suited enough and you need to define your own faults.&lt;br /&gt;If we look into  the examples which got supplied by Oracle we can see an example over &lt;a href="http://www.oracle.com/technology/products/ias/bpel/htdocs/pdf/orabpel-Training-Segment06.pdf"&gt;here&lt;/a&gt;.  In this example they defined their own NegativeCredit-fault.&lt;br /&gt;The Oracle BPEL Fault Policy Framework by default only handles the faults  which are getting returned on an invoke-activity.&lt;br /&gt;So we have our own custom  fault and the knowledge we can only let this fault getting catched by the  framework by use of an invoke.&lt;br /&gt;So we need atleast for this testscenario 2  bpel processes. One mainprocess which calls a subprocess, and this subprocess  will throw the custom business fault.&lt;br /&gt;This fault will get propogated back to  the mainprocess and in here we will be able to let the framework handle the  fault.&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/bpel-invoke.png?w=300"&gt;&lt;/a&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/bpel-invoke.png"&gt;&lt;img alt="bpel-invoke" class="aligncenter size-full wp-image-23" height="215" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/bpel-invoke.png" title="bpel-invoke" width="469" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;BPEL Processes&lt;/strong&gt;&lt;br /&gt;Mainprocess&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/mainprocess.png"&gt;&lt;img alt="mainprocess" class="aligncenter size-full wp-image-30" height="249" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/mainprocess.png" title="mainprocess" width="470" /&gt;&lt;/a&gt;&lt;br /&gt;Subprocess&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/subprocess.png"&gt;&lt;img alt="subprocess" class="aligncenter size-full wp-image-31" height="334" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/subprocess.png" title="subprocess" width="470" /&gt;&lt;/a&gt;&lt;br /&gt;Just a simple invoke of the subprocess from the mainprocess. The subprocess  with throw a fault, and this fault will be catched in the mainprocess.&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/throw.png"&gt;&lt;img alt="throw" class="aligncenter size-full wp-image-21" height="406" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/throw.png" title="throw" width="439" /&gt;&lt;/a&gt;&lt;br /&gt;The fault to be thrown&lt;br /&gt;From the console start the mainprocess and wait till it comes back with a  fault message&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/invoke-faulted.png"&gt;&lt;img alt="invoke-faulted" class="aligncenter size-full wp-image-25" height="142" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/invoke-faulted.png" title="invoke-faulted" width="151" /&gt;&lt;/a&gt;&lt;br /&gt;Click the activity to see the thrown fault&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;"{http://nl.iteye/integration/faults/business}BusinessFault" has been thrown.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;businessFault xmlns="http://nl.iteye/integration/faults/business"&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;lt;part name="payload"&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;businessFault xmlns="http://nl.iteye/integration/faults/business"&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;faultCode&amp;gt;999&amp;lt;/faultCode&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;faultMessage&amp;gt;Something went wrong!&amp;lt;/faultMessage&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/businessFault&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;lt;/part&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;/businessFault&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ok nice!&lt;br /&gt;So the custom fault we defined in the subprocess reaches the  mainprocess.&lt;br /&gt;Now we need to config the fault policy framework so it will get  active on our custom business fault.&lt;br /&gt;From the fault we pasted above we need  the faultname (BusinessFault) and the namespace  (http://nl.iteye/integration/faults/business).&lt;br /&gt;Edit /bpel/domains/default/config/fault-policies/DefaultPolicy.xml and add  the next fault :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;faultName xmlns:flt="http://nl.iteye/integration/faults/business" name="flt:BusinessFault"&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;lt;condition&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;action ref="ora-human-intervention"/&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;lt;/condition&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;/faultName&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;For testing we will just let this fault getting handled by  human-intervention.&lt;br /&gt;Now restart the components&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt; opmnctl stopall&lt;br /&gt;opmnctl startall&lt;br /&gt;Now start the mainprocess again and wait till it fails.&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/invoke-faulted-framework.png"&gt;&lt;img alt="invoke-faulted-framework" class="aligncenter size-full wp-image-27" height="142" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/invoke-faulted-framework.png" title="invoke-faulted-framework" width="151" /&gt;&lt;/a&gt;It looks like the framework got active (activity yellow  marked) on our custom business fault.&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/invoke-faulted-audit.png"&gt;&lt;img alt="invoke-faulted-audit" class="aligncenter size-full wp-image-26" height="301" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/invoke-faulted-audit.png" title="invoke-faulted-audit" width="470" /&gt;&lt;/a&gt;&lt;br /&gt;Go to the activities-tab&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/list-activities.png"&gt;&lt;img alt="list-activities" class="aligncenter size-full wp-image-28" height="31" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/list-activities.png" title="list-activities" width="470" /&gt;&lt;/a&gt;&lt;br /&gt;And click the activity which faulted.&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/edit-activity.png"&gt;&lt;img alt="edit-activity" class="aligncenter size-full wp-image-24" height="273" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/edit-activity.png" title="edit-activity" width="470" /&gt;&lt;/a&gt;&lt;br /&gt;Now we can edit some of the values and let the  subprocess get re-invoked.&lt;br /&gt;So, at this moment we’re able to throw our custom business faults and let  them getting catched by the framework. Since the fault is only getting catched  on the invoke of a partnerlink, we aren’t able to let our custom business fault  getting throwned to the process in which we maybe want do something with the  data for which we actually throwed the custom business fault. So maybe we want  to stay in the subprocess and somehow get the custome business fault thrown  inhere, let the framework catch it and update the values of this subprocess with  new values an re-execute the subprocess.&lt;br /&gt;The next solution will get this done.&lt;br /&gt;The mainprocess won’t get changed  but in the subprocess we will invoke a new process called AllBusinessFaults.&lt;br /&gt;New subprocess 2&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/subprocess2.png"&gt;&lt;img alt="subprocess2" class="aligncenter size-full wp-image-32" height="326" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/subprocess2.png" title="subprocess2" width="469" /&gt;&lt;/a&gt;&lt;br /&gt;AllBusinessFaults&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/all-business-faults.png"&gt;&lt;img alt="all-business-faults" class="aligncenter size-full wp-image-22" height="323" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/all-business-faults.png" title="all-business-faults" width="470" /&gt;&lt;/a&gt;&lt;br /&gt;The AllBusinessFaults will throw the custom business fault we ‘request’ back  on the invoke in this subprocess. Now it wil get catched by the framework and we  will be able to change the values of the subprocess instead of the  mainprocess.&lt;br /&gt;&lt;a href="http://www.xenta.nl/blog/wp-content/uploads/2009/02/list-activities2.png"&gt;&lt;img alt="list-activities2" class="aligncenter size-full wp-image-29" height="31" src="http://www.xenta.nl/blog/wp-content/uploads/2009/02/list-activities2.png" title="list-activities2" width="469" /&gt;&lt;/a&gt;&lt;br /&gt;By using the AllBusinessFaults bpel service like a sort of composite service,  we can add the custom business faults in it and throw the one we would like to  get thrown. This will work if the collection of custom business faults isn’t  that big. I’m sure there will be better solutions for this, but for the scenario  i wanted to describe inhere it was good enough for me.&lt;br /&gt;&lt;strong&gt;Question&lt;/strong&gt;&lt;br /&gt;In the examples i provided i don’t use the  fault-part of a synchronous invoke to propegate the soap-fault back to the  caller, i just throw the fault. The bpel engine itself throws the fault back to  the first-level. Whats best practice on this one ?&lt;br /&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/?jtxmtmo3oli" target="_blank"&gt;BPEL Sources&lt;/a&gt;  (First part of article with mainprocess/subprocess)&lt;br /&gt;&lt;a href="http://www.mediafire.com/?4znydomxnni" target="_blank"&gt;BPEL Sources&lt;/a&gt;  (Second part of article with mainprocess/subprocess/allbusinessfaults)&lt;br /&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.it-eye.nl/weblog/2007/09/10/oracle-bpel-10133-fault-policy-management/" modo="false"&gt;Oracle BPEL 10.1.3.3 Fault Policy Management&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-1290033861754090476?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/1290033861754090476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=1290033861754090476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/1290033861754090476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/1290033861754090476'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/oracle-bpel-fault-policy-framework.html' title='Oracle BPEL Fault Policy Framework handling custom business faults'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-8941890270291105129</id><published>2011-09-27T08:27:00.000-07:00</published><updated>2011-09-27T08:28:25.572-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='ODI'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Complete Installation and configuration of Oracle Data Integrator (ODI), ODI Web Services with JDeveloper, BPEL</title><content type='html'>&lt;b&gt;(From&amp;nbsp;&lt;/b&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/entry/complete_installation_and_conf"&gt;http://blogs.oracle.com/kavinmehta/entry/complete_installation_and_conf&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div class="entry-body"&gt;&lt;h2&gt;Installing Oracle Data Integrator, Oracle Data Profiling, Oracle Data  Quality &lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Click on setup.exe . Click Next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image1.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image1_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="464" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check "Oracle Data Integrator, Oracle Data Profiling, Oracle Data Quality  10.1.3.5.0" and click next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image51.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image51_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="464" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check "Complete" and Click next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image9.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image9_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="464" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Specify ODI Home name and location. Click Next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image131.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image131_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="464" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Specify port, click Next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image17.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image17_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="464" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Specify host name and ports, I left them at default ones. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image211%5B1%5D.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image211%5B1%5D_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="464" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Again left at default one &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image25.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image25_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="464" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check summary and click Install &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image291.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image291_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="464" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h2&gt;Configuring Repository&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;After install is finished execute the script to create master and work  repository user. You can use the one I did &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;-- tablespace for master repository &lt;br /&gt;create tablespace ts_odim &lt;br /&gt;&amp;nbsp;  logging &lt;br /&gt;&amp;nbsp; datafile 'C:\oracle\ora10g\database\oradata\orcl\ts_odim.dbf'  &lt;br /&gt;&amp;nbsp; size 32m &lt;br /&gt;&amp;nbsp; autoextend on; &lt;br /&gt;-- tablespace for work repository &lt;br /&gt;create tablespace ts_odiw &lt;br /&gt;&amp;nbsp; logging  &lt;br /&gt;&amp;nbsp; datafile 'C:\oracle\ora10g\database\oradata\orcl\ts_odiw.dbf' &lt;br /&gt;&amp;nbsp; size  32m &lt;br /&gt;&amp;nbsp; autoextend on; &lt;br /&gt;create temporary tablespace tmp_odi &lt;br /&gt;&amp;nbsp; tempfile  'C:\oracle\ora10g\database\oradata\orcl\tmp_odi.dbf' &lt;br /&gt;&amp;nbsp; size 32m &lt;br /&gt;&amp;nbsp;  autoextend on ; &lt;br /&gt;-- USER SQL &lt;br /&gt;CREATE USER snpm IDENTIFIED BY snpm123 &lt;br /&gt;DEFAULT TABLESPACE  TS_ODIM &lt;br /&gt;TEMPORARY TABLESPACE TMP_ODI; &lt;br /&gt;GRANT CONNECT, RESOURCE TO snpm; &lt;br /&gt;CREATE USER snpw IDENTIFIED BY snpw123 &lt;br /&gt;DEFAULT TABLESPACE TS_ODIW  &lt;br /&gt;TEMPORARY TABLESPACE TMP_ODI; &lt;br /&gt;GRANT CONNECT, RESOURCE TO snpw;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Launch bin/repcreate.bat or bin/repcreate.sh to create Master Repository.  Complete fields and click OK &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image11.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image11_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="355" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;When prompted, click OK &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image5.png"&gt;&lt;img alt="image" border="0" height="124" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image5_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;To connect to the Master repository launch the Topology Manager script  (bin/topology.bat or bin/topology.sh) &lt;/li&gt;&lt;li&gt;Click on the button New &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image91%5B1%5D.png"&gt;&lt;img alt="image" border="0" height="196" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image91%5B1%5D_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click on Test to check the connection is working. Validate by OK, then OK.  Topology Manager opens. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image13.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image13_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="452" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_84.png"&gt;&lt;img alt="image" border="0" height="129" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_37.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="288" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;The default password of the SUPERVISOR is SUNOPSIS. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_86.png"&gt;&lt;img alt="image" border="0" height="174" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_38.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="429" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;In the icon list Topology -&amp;gt; Repositories -&amp;gt; Work repositories, click  with the right button, &lt;br /&gt;then choose Insert work repository. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image281.png"&gt;&lt;img alt="image" border="0" height="295" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image281_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;In the connection window, complete the parameters and click OK &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_92.png"&gt;&lt;img alt="image" border="0" height="502" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_41.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="477" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click JDBC tab &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_94.png"&gt;&lt;img alt="image" border="0" height="495" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_42.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="471" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_96.png"&gt;&lt;img alt="image" border="0" height="214" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_43.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="376" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_98.png"&gt;&lt;img alt="image" border="0" height="129" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_44.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="288" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_100.png"&gt;&lt;img alt="image" border="0" height="440" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_45.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="431" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;New Work Repository can be seen in topology manager now &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image46.png"&gt;&lt;img alt="image" border="0" height="295" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image46_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;To connect to a work repository and launch the Designer module &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image49.png"&gt;&lt;img alt="image" border="0" height="303" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image49_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click on the button New &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_106.png"&gt;&lt;img alt="image" border="0" height="173" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_48.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="429" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Complete the fields, test connection and click ok &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image591.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image591_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="426" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Now connect to work rep using SUPERVISOR/SUNOPSIS &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_112.png"&gt;&lt;img alt="image" border="0" height="173" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_51.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="429" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;New Designer window will open up for current repository &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image67.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image67_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h2&gt;Deploying ODI Web Applications - Lightweight Designer&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Open Enterprise Manager console &lt;/li&gt;&lt;li&gt;Click oc4j_odi - Applications - Deploy &lt;/li&gt;&lt;li&gt;Browse to location&amp;nbsp;&amp;lt;ODI_DOWNLOAD_DIR&amp;gt;\setup\Manual and select  oracledilwd.war file (Lightweight Designer) &lt;/li&gt;&lt;/ul&gt;&amp;nbsp; &lt;br /&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image83.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image83_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click Next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image80.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image80_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Accept default values, click Next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image861.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image861_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click Deploy &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image89.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image89_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check deployment report for any errors and click Return. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image92.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image92_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Test Application at http://oc4j_host:oc4j_port/oracledilwd/ &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_88.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_39.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Configuring Repository Connections&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Lightweight Designer connects the repositories though JDBC datasource.  Update data-sources.xml to have connection pool and datasources configured as  below. &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;managed-data-source user="snpm" password="snpm123" connection-pool-name="ODI_CONNECTION_POOL" jndi-name="jdbc/ORACLE_MASTER" name="ODI_MASTER_DS"/&amp;gt;&lt;br /&gt;&amp;lt;managed-data-source user="snpw" password="snpw123" connection-pool-name="ODI_CONNECTION_POOL" jndi-name="jdbc/ORACLE_WORK" name="ODI_WORK_DS"/&amp;gt;&lt;br /&gt;&amp;lt;connection-pool name="ODI_CONNECTION_POOL"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" url="jdbc:oracle:thin:@//localhost:1521/orcl"/&amp;gt;&lt;br /&gt;&amp;lt;/connection-pool&amp;gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Add the entries to link the datasource in the application context. Edit  web.xml located under &amp;lt;OC4J_ODI&amp;gt;\applications\oracledilwd\oracledilwd\WEB-INF\web.xml &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;resource-ref&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;Oracle Datasource for the Master Repository&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;res-ref-name&amp;gt;jdbc/ORACLE_MASTER&amp;lt;/res-ref-name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;res-type&amp;gt;javax.sql.DataSource&amp;lt;/res-type&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;res-auth&amp;gt;Container&amp;lt;/res-auth&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;res-sharing-scope&amp;gt;Unshareable&amp;lt;/res-sharing-scope&amp;gt;&lt;br /&gt;&amp;lt;/resource-ref&amp;gt;&lt;br /&gt;&amp;lt;resource-ref&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;Oracle Datasource for the Work Repository&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;res-ref-name&amp;gt;jdbc/ORACLE_WORK&amp;lt;/res-ref-name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;res-type&amp;gt;javax.sql.DataSource&amp;lt;/res-type&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;res-auth&amp;gt;Container&amp;lt;/res-auth&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;res-sharing-scope&amp;gt;Unshareable&amp;lt;/res-sharing-scope&amp;gt;&lt;br /&gt;&amp;lt;/resource-ref&amp;gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Define the Lightweight Designer login information to the work repositories.  Edit repositories.xml located under&amp;nbsp;&amp;lt;OC4J_ODI\applications\oracledilwd\oracledilwd\ &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&amp;lt;login name="My Work Repository"&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;master  name="jdbc/ORACLE_MASTER" masterDriver="oracle.jdbc.OracleDriver"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;work name="jdbc/ORACLE_WORK" workName="WORKREP"/&amp;gt;&lt;br /&gt;&amp;lt;/login&amp;gt;&lt;/blockquote&gt;&lt;h2&gt;Deploying ODI Web Applications - Metadata Navigator&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Click oc4j_odi - Applications - Deploy &lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image95.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image95_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Browse to location&amp;nbsp;&amp;lt;ODI_DOWNLOAD_DIR&amp;gt;\setup\Manual and select  oracledimn.war file (Metadata Navigator). Click Next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image98.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image98_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Accept defaults, click Next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image101.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image101_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click Deploy &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image104.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image104_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check deployment report for any errors and click Return. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image107.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image107_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Test Application at http://oc4j_host:oc4j_port/oracledimn/ &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_108.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb_49.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h4&gt;Configuring Repository Connections&lt;/h4&gt;To configure the connections to your repositories in the web application, we  need to follow two steps. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Configure the connection to the work repository in Designer. &lt;/li&gt;&lt;li&gt;Copy the snps_login_work.xml file from&amp;nbsp;&amp;lt;ODI_HOME&amp;gt;\oracledi\bin  directory into&amp;nbsp;&amp;lt;OC4J_ODI&amp;gt;\applications\oracledimn\oracledimn\WEB-INF/WEB_INF &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Configuring Apache Axis 2 (ver 1.2)&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Download Axis 1.2 WAR file from &lt;a href="http://ws.apache.org/axis2/download/1_2/download.cgi" title="http://ws.apache.org/axis2/download/1_2/download.cgi"&gt;http://ws.apache.org/axis2/download/1_2/download.cgi&lt;/a&gt;.  It would be a zip file download, simply rename it to axis2.war &lt;/li&gt;&lt;li&gt;Click oc4j_odi - Applications - Deploy &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image18.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image18_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Provide WAR file location and click next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image6.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image6_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Provide WAR file location and click next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image91.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image91_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Provide WAR file location and click next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image14.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image14_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Provide WAR file location and click next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image22.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image22_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Provide WAR file location and click next &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image26.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image26_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Access Axis application at &lt;a href="http://oc4j_host:oc4j_port/axis2/axis2-web/index.jsp" title="http://kavmehta-us.us.oracle.com:7777/axis2/axis2-web/index.jsp"&gt;http://oc4j_host:oc4j_port/axis2/axis2-web/index.jsp&lt;/a&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image30.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image30_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click on the Validate button, the happy axis page will appear: &lt;a href="http://localhost:8888/axis2/axis2-web/HappyAxis.js"&gt;http://oc4j_host:oc4j_port/axis2/axis2-web/HappyAxis.js&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Click on the Administration link will take you to &lt;a href="http://localhost:8888/axis2/axis2-admin%C2%A0"&gt;http://oc4j_host:oc4j_port/axis2/axis2-admin  &lt;/a&gt;the default username/password are: admin/axis2&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image35.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image35_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deploy odi-public-ws.aar located under &amp;lt;ODI_DOWNLOAD_DIR&amp;gt;\oracledi\tools\web_services using the "Upload Service"  link or drop into webapps/axis2/web-inf/services directory &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image47.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image47_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deployment confirmation page showing success (or in cases will show errors)  &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image55.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image55_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Copy odiInvoke.wsil from &amp;nbsp;&amp;lt;ODI_DOWNLOAD_DIR&amp;gt;\oracledi\tools\web_services to &amp;lt;OC4J_ODI&amp;gt;\applications\axis2\axis2\axis2-web\OdiInvoke.wsil &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;Change Location attribute from &lt;br /&gt;location="./services/OdiInvoke?wsdl"&lt;br /&gt;to&lt;br /&gt;location="/axis2/services/OdiInvoke?wsdl"&lt;/blockquote&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_2.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;h2&gt;Configuring JDeveloper&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;To show local WSIL registry uncomment External Source for WSIL lcoated under &amp;lt;JDEV_HOME&amp;gt;\integration\bpm\designer\config\serviceexplorer_plugin.xml  &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image59.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image59_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create inspection.wsil&amp;nbsp; manually to the same directory where  serviceexplorer_plugin.xml is located.&amp;nbsp;&amp;lt;JDEV_HOME&amp;gt;\integration\bpm\designer\config\inspection.wsil &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xmlns:wsilwsdl="http://schemas.xmlsoap.org/ws/2001/10/inspection/wsdl/"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;link referencedNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; location=:/axis2/axis2-web/OdiInvoke.wsil"&amp;gt;:/axis2/axis2-web/OdiInvoke.wsil"&amp;gt;:/axis2/axis2-web/OdiInvoke.wsil"&amp;gt;:/axis2/axis2-web/OdiInvoke.wsil"&amp;gt;:/axis2/axis2-web/OdiInvoke.wsil"&amp;gt;:/axis2/axis2-web/OdiInvoke.wsil"&amp;gt;http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/axis2/axis2-web/OdiInvoke.wsil&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;abstract&amp;gt;Oracle Data Integrator Public Web Service&amp;lt;/abstract&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/link&amp;gt;&lt;br /&gt;&amp;lt;/inspection&amp;gt;&lt;/blockquote&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image68.png"&gt;&lt;img alt="image" border="0" height="294" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image68_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Restart JDeveloper and you should be able to see service in "Service  Explorer". You can now use it with BPEL, AIA, OSB or any other service aware  application. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image731.png"&gt;&lt;img alt="image" border="0" height="364" src="http://blogs.oracle.com/kavinmehta/resource/WindowsLiveWriter-CompleteInstallationandconfigurationofOr_B03B/image731_thumb.png" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="image" width="364" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-8941890270291105129?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/8941890270291105129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=8941890270291105129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/8941890270291105129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/8941890270291105129'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/complete-installation-and-configuration.html' title='Complete Installation and configuration of Oracle Data Integrator (ODI), ODI Web Services with JDeveloper, BPEL'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-4036729717885107872</id><published>2011-09-08T08:55:00.000-07:00</published><updated>2011-09-08T08:55:19.535-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>WLI Database Event Generator and the Oracle Database Adapter</title><content type='html'>&lt;a href="http://www.oracle.com/technetwork/topics/soa/wli-event-generator-odb-adapt-01-095095.html"&gt;WLI Database Event Generator and the Oracle Database Adapter&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-4036729717885107872?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/4036729717885107872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=4036729717885107872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4036729717885107872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4036729717885107872'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/wli-database-event-generator-and-oracle.html' title='WLI Database Event Generator and the Oracle Database Adapter'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-5833186947971302089</id><published>2011-09-08T08:52:00.000-07:00</published><updated>2011-09-08T08:53:57.745-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>WLI File Control and the Oracle File Adapter</title><content type='html'>&lt;a href="http://www.oracle.com/technetwork/topics/soa/wli-file-control-oracle-file-adapte-100684.html"&gt;WLI File Control and the Oracle File Adapter&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-5833186947971302089?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/5833186947971302089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=5833186947971302089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5833186947971302089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5833186947971302089'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/wli-file-control-and-oracle-file.html' title='WLI File Control and the Oracle File Adapter'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-154312888868822743</id><published>2011-09-08T08:50:00.000-07:00</published><updated>2011-09-08T08:50:02.652-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Configure a SOAScheduler for a Composite in SOA Suite 11g</title><content type='html'>&lt;a href="http://www.oracle.com/technetwork/middleware/soasuite/learnmore/soascheduler-186798.pdf"&gt;http://www.oracle.com/technetwork/middleware/soasuite/learnmore/soascheduler-186798.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-154312888868822743?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/154312888868822743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=154312888868822743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/154312888868822743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/154312888868822743'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/configure-soascheduler-for-composite-in.html' title='Configure a SOAScheduler for a Composite in SOA Suite 11g'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-67426156505082153</id><published>2011-09-08T08:42:00.000-07:00</published><updated>2011-09-08T08:42:45.680-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Working with Transactions</title><content type='html'>(From &lt;a href="http://www.oracle.com/technetwork/articles/soa/wli-bpel-transactions-088255.html"&gt;http://www.oracle.com/technetwork/articles/soa/wli-bpel-transactions-088255.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Introduction&lt;/h2&gt;Transactions have always been the center of the  universe when designing any application. Transactions were easier to  define and manage back when developers could to control them through  code. The options may have been limited, but developers knew what to  expect.&lt;br /&gt;Over the last decade, through the advent of Java 2  Enterprise Edition (J2EE) and other technologies, developers were  encouraged to leave transactions to the container. But for developers  with a limited understanding of container-based services, this can  present an obstacle.&lt;br /&gt;Things can get even worse when transaction  demarcations are created automatically within the container, leaving  developers with a very limited understanding of what is happening.&lt;br /&gt;This  article is an effort to unlock the mysteries of the container-managed  and container-defined transactions within WebLogic Integration (WLI) and  Oracle BPEL Process Manager (BPEL PM).&lt;br /&gt;A common misconception  about Oracle BPEL Process Manager is that it does not support global XA  transaction groups. The likely cause of this misconception is that  unlike WLI, BPEL PM includes no activity specifically labeled "start  transaction" or "stop transaction." Instead, a transaction group is  implicitly delineated, based on the types of activities involved.&lt;br /&gt;Let's  start with a very simple WLI transaction example to see how it can be  implemented in BPEL PM. After that we'll deal with more advanced topics,  such as compensating transactions.&lt;br /&gt;&lt;h2&gt;A simple transactional process&lt;/h2&gt;In  this example, a process performs an update to three databases and  enqueues a JMS message. All resources are XA-enabled and the process  forms a global transaction.&lt;br /&gt;&lt;h3&gt;Implementing the process in WLI&lt;/h3&gt;Similar  to BPEL PM, business processes in WLI are transactional in nature.  Every step of a process is executed within the context of a JTA  transaction. A transaction ensures that one or more operations execute  as an atomic unit of work. If one of the operations within a transaction  fails, all operations are                           &lt;em&gt;rolled-back&lt;/em&gt;  so that the application is returned to its prior state. Depending on  whether the business process logic is defined such that it is stateful  or stateless, there may be one or more transactions within the context  of a given business process.&lt;br /&gt;When starting a business process,  the process participates in the caller's transaction or starts a new  transaction if none exists. If there are no implicit or explicit  transaction boundaries, the process executes within a single  transaction.&lt;br /&gt;In the first example, our business process invokes  four synchronous XA calls. The process is synchronous and stateless. The  container manages this transaction.&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="WLI simple transactions" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/115102.jpg" /&gt;&lt;/div&gt;Because  no implicit or explicit transaction boundaries are defined, WLI will  automatically make the entire process run in a single XA transaction. If  there is a problem with any of the data sources (for example, if a  database is down, or the JMS queue is unreachable), and no exception  handler has been defined, the whole transaction will roll back.&lt;br /&gt;When building a business process in WLI,                           &lt;em&gt;implicit transaction&lt;/em&gt;  boundaries are formed, based on where blocking elements are placed in  the process. The transaction boundaries within a business process change  as nodes are added to the business process.&lt;br /&gt;&lt;em&gt;Implicit transactions&lt;/em&gt; are implicit both because their behavior is automatically determined (or                           &lt;em&gt;implied&lt;/em&gt;) by the business process logic and because they are not visible in the process diagram.&lt;br /&gt;&lt;em&gt;Implicit transaction&lt;/em&gt;  boundaries are formed based on where blocking elements are placed in  the process. These boundaries change as process nodes are added to the  business process. Additionally, a business process is stateless by  default, and blocking elements that change transaction boundaries can  change the process to be stateful.&lt;br /&gt;The following nodes change the transactional behavior in business processes in WLI:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Any receive (blocking) nodes (Client Request or Control Receive nodes)&lt;/li&gt;&lt;li&gt;A Parallel group node&lt;/li&gt;&lt;li&gt;An Event Choice node&lt;/li&gt;&lt;li&gt;Existing  transaction boundaries are unaffected by adding one or more nodes  (within those boundaries) that do not themselves force a transaction  boundary.&lt;/li&gt;&lt;/ul&gt;Illustrated below is an example of a business  process with an implicit transaction. The Control Receive node is a  blocking element in the business process and therefore creates a new  transaction&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="implicit transactions" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/107086.gif" /&gt;&lt;/div&gt;Additionally,  WLI provides the ability to explicitly define a transaction by using  the "Transaction" node within the WLI palette. This gives developers the  ability to group certain nodes in a transaction boundary and have  localized roll-back that will not affect the implicit process  transaction. By incorporating the "Transaction" node into the simple  example above it is possible to perform two distinct transactions  instead of one. The diagram below shows the first two database updates  in one transaction, and the JMS enqueue and third database update in a  separate transaction.&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="WLI explicit transactions" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127887.jpg" /&gt;&lt;/div&gt;By  explicitly specifying a transaction scope within the WLI process, we  force WLI to complete the open transaction (the transactions do not nest  here) and begin a new, separate transaction. If we were to add  additional steps after the explicit end of the transaction scope, they  would also begin their own, new, implicit XA transaction. Nested  transactions are not supported in WLI.&lt;br /&gt;If the WLI process is a  stateless process (sync or async), it will always execute in one and  only one implicit transaction. Explicit transactions cannot be defined  in synchronous processes or in stateless asynchronous processes. So,  referring to the above example, simply adding the transaction node to a  stateless process converted it into a stateful process.&lt;br /&gt;Additionally, the following restrictions apply to explicit transactions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The selected nodes must be contiguous&lt;/li&gt;&lt;li&gt;The selected nodes cannot include a Client Request or Control Receive node&lt;/li&gt;&lt;li&gt;The selected nodes cannot be inside the client request/response nodes of a synchronous process&lt;/li&gt;&lt;li&gt;The  selected nodes cannot include a Parallel or Event Choice group node  where including them in an explicit transaction would nest the  transaction for their branches.&lt;/li&gt;&lt;li&gt;The selected nodes cannot be inside an existing explicit transaction&lt;/li&gt;&lt;/ul&gt;For more information about transaction handling in WLI, see the documentation covering                           &lt;a href="http://edocs.bea.com/wli/docs102/bpguide/bpguideTransaction.html" rel="nofollow" title="Transaction Boundaries in Guide to Building Business Processes"&gt;Transaction Boundaries.&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Implementing the process in BPEL PM&lt;/h3&gt;In  BPEL PM, as in WLI, every BPEL process executes in the context of one  or more transactions. When a process starts to execute, the process  manager does one of two things with transactions:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It starts a new transaction for the process.&lt;/li&gt;&lt;li&gt;It enlists the process in an already open transaction.&lt;/li&gt;&lt;/ol&gt;BPEL  uses this transaction to update process state in the database (this is  called "dehydration") and also to log audit events in the database. Even  if all this is turned off, the process manager will still execute  processes in a transaction context. When invoked through a Web Service  interface, BPEL will use the first option, since no transaction context  will be available. When invoked through the Java API in a transactional  environment, the process manager may use either option, depending on the  parameters used in the call.&lt;br /&gt;BPEL will try to squeeze as many  activities into a single transaction as possible. Only a few activities  actually cause the process manager to update the process state in the  database and commit the transaction. A given activity does not always  cause a transaction to be committed: sometimes the process may keep the  same transaction context because of the properties associated with the  activity.&lt;br /&gt;In our simple scenario the default transactional  behavior is similar to that in WLI. When a process is instantiated and  there is no current transaction context, a new transaction is created.  As in WLI, certain activities in BPEL will naturally delineate XA  transactions and will force a transaction to end. These activities cause  the state of the BPEL process to be quiesced to the dehydration store.  When the process resumes from this type of activity, a new transaction  will be started. The diagram below illustrates the same steps as above,  as implemented in BPEL as a single, implicit transaction.&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="BPEL simple transactions" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/115118.jpg" /&gt;&lt;/div&gt;To  perform the second use case, where we'd like to split our transaction  into two separate transactions, in BPEL, we need to deliberately end the  first transaction. This can be done explicitly through the use of the  "checkpoint" method inside a Java Exec activity, as shown below.&lt;br /&gt;&lt;br /&gt;&amp;lt;bpelx:exec name="checkpointJavaExec" language="java" version="1.4"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;![CDATA[&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;checkpoint();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;]]&amp;gt;&lt;br /&gt;&amp;lt;/bpelx:exec&amp;gt;&lt;br /&gt;&lt;div&gt;In addition to "wait and receive" and other activities that cause  dehydration (writing BPEL process state to the database and committing  the transaction), transactions can also be committed after an invoke by  setting the                           &lt;em&gt;idempotent&lt;/em&gt; property on the target partner link to                           &lt;em&gt;false&lt;/em&gt;. If                           &lt;em&gt;idempotent&lt;/em&gt; is set to                           &lt;em&gt;false&lt;/em&gt;,  the invoke activity is dehydrated immediately after execution and  recorded in the dehydration store. This will end the initial transaction  and start a new transaction. The diagram below shows how this can be  implemented.&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.oracle.com/technetwork/topics/soa/bpel-explicit-115054.jpg"&gt;                          &lt;img alt="BPEL explicit transactions" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103647.jpg" /&gt;                        &lt;/a&gt;                        &lt;br /&gt;&lt;a href="http://www.oracle.com/technetwork/topics/soa/bpel-explicit-115054.jpg"&gt;View full size image&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;When  BPEL calls an adapter, the ESB, or another process in the same BPEL  domain, it has the option to either include the target in the same  transaction, or to start a separate transaction. This behavior is  controlled by the                           &lt;em&gt;transaction&lt;/em&gt; property in the partner link. If the                           &lt;em&gt;transaction&lt;/em&gt; property value is set to                           &lt;em&gt;participate&lt;/em&gt;, the callee is enlisted in the current transaction. If the                           &lt;em&gt;transaction&lt;/em&gt;  property is set to any other value, the callee executes in a separate  transaction. This is great for ensuring that multiple database updates  are included as part of the same transaction, but be aware that there is  a downside.&lt;br /&gt;If any callee rolls back the transaction, the  current BPEL process state is also rolled back to the last commit. If  there has been no commit and the process was invoked through a  synchronous interaction, the process will seem to disappear from the  face of the earth. To minimize the impact, the database adapter will  throw an error rather than rollback the transaction — if doing so will  not affect transactional integrity. (Basically, you can do                            &lt;strong&gt;one&lt;/strong&gt; DB update without rolling back, but if you do                           &lt;strong&gt;two&lt;/strong&gt;, an error will cause a rollback.)&lt;br /&gt;One  final thing to be aware of is that in BPEL, a flow activity (which is  used to designate activities for parallel execution) is actually  processed sequentially unless it encounters an activity that will cause  the thread to be suspended. This is efficient, but defeats one of the  use cases of the flow, which is to perform multiple operations in  parallel to reduce service latency. BPEL provides the                            &lt;code&gt;nonBlockingInvoke=true&lt;/code&gt; partner link property to  cause invokes to a synchronous service to be treated internally as calls  to an asynchronous service. Internally, the process waits for the  message on the JMS queue, causing the transaction to be completed. At  the same time, a new thread is started to perform the synchronous call  and place the result in the queue. This allows the other legs of flow to  execute in parallel.&lt;br /&gt;&lt;h2&gt;Beyond XA: compensating transactions&lt;/h2&gt;The  examples above address the behaviors when all of the resources are  XA-compliant. When there are activities that are not XA-compliant,  compensating transactions must be built into the process. Both WLI and  BPEL provide a mechanism to do this through the use of exception  handlers.&lt;br /&gt;Also, BPEL includes the concept of an invocable  Compensating Transaction. This is similar to an exception handler, and  is defined at the scope level. However, it is explicitly invoked only by  the "Compensate" activity. Compensation is intended to allow the  application of reversing operations to systems that cannot participate  in transactions, or when it has been decided that the systems should not  operate as part of transactions. For example, a Web Service might allow  inventory to be decremented, but an error makes it necessary to roll  back the process. In this case, a compensation handler would be defined  to call the Web Service to increment the inventory, effectively  providing a reversing transaction. This allows you to define rollback  activities and associate them with the code that performs the operations  that may need to be reversed. This is also very useful in that it  allows some exceptions to be handled without undoing all of the work.&lt;br /&gt;If  a scope requires a compensation handler, the service that requires  compensation should be marked as non-idempotent by setting the  "idempotent" property value to "false." This will cause Oracle BPEL  Process Manager to start a new transaction after invoking the  non-transactional resource.&lt;br /&gt;The following diagram illustrates an  example of the use of Compensation Handlers, and an explicit  forward-based compensation model. Note the explicit call in the                            &lt;code&gt;catchAll&lt;/code&gt; block of the second scope, invoking                           &lt;code&gt;&lt;compensate&gt;&lt;/compensate&gt;&lt;/code&gt;.&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.oracle.com/technetwork/topics/soa/bpelwithcompensation-115079.jpg"&gt;                          &lt;img alt="compensating transactions with BPEL" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/110744.jpg" /&gt;                        &lt;/a&gt;                        &lt;br /&gt;&lt;a href="http://www.oracle.com/technetwork/topics/soa/bpelwithcompensation-115079.jpg"&gt;View full size image&lt;/a&gt;&lt;/div&gt;&lt;h2&gt;Key Takeaways and Recommendations&lt;/h2&gt;Both  WLI and BPEL PM manage global XA transactions, both tools initiate an  implicit transaction when the process gets instantiated, and similar  activities in both WLI and BPEL force the end of transactions. Note,  however, that unlike WLI, Oracle BPEL Process Manager not only allows  multiple transactions to occur in an asynchronous stateful process, it  also allows them to be defined in a synchronous process. With the  addition of compensation, BPEL provides a standard and reliable  mechanism for providing compensating transactions for non-transactional  resources.&lt;br /&gt;BPEL is inherently a stateful language. Oracle BPEL  Process Manager uses XA transactions to manage that state, and allows XA  transactions to extend beyond the boundaries of the active BPEL  process.&lt;br /&gt;The general rules about what causes a commit are  straightforward, and the BPEL process will commit the transaction and  start a new one after the following activities:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;receive&lt;/strong&gt;  - Unless it is the first receive in the process and the process was  called with a "transaction=participate" property (possibly by marking it  as such in the partner link of a calling process), in which case the  process participates in the existing transaction.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;checkpoint()&lt;/strong&gt; - Call in a Java Exec activity&lt;/li&gt;&lt;li&gt;&lt;strong&gt;onMessage&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;wait&lt;/strong&gt; - For very short waits (up to two or three seconds), the process manager will not commit the transaction.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;onAlarm&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;invoke&lt;/strong&gt; - Only if the partner link is non-idempotent (can be marked with the "idempotent" partner link property).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;End of process flow&lt;/strong&gt; - Only if the process is not participating in the caller's transaction (the corollary of the receive).&lt;/li&gt;&lt;/ul&gt;The table below summarizes the transaction status when performing different activities.&lt;br /&gt;&lt;table bgcolor="#000000" border="0" cellpadding="2" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;             &lt;td align="center" bgcolor="#c0c0c0" valign="top"&gt;&lt;strong&gt;Activity&lt;/strong&gt;&lt;/td&gt;             &lt;td align="center" bgcolor="#c0c0c0" valign="top"&gt;&lt;strong&gt;Transaction Status                               &lt;br /&gt;in BPEL Process&lt;/strong&gt;&lt;/td&gt;             &lt;td align="center" bgcolor="#c0c0c0" valign="top"&gt;&lt;strong&gt;Transaction Status                               &lt;br /&gt;in Target Process or Adapter&lt;/strong&gt;&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Receive&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;N/A&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Receive with Property "transaction=participate"&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Use Existing Transaction from Caller&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;N/A&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Invoke Synchronous Process&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Use Existing Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Invoke Synchronous Process with Partner Link Property "transaction=participate"&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Use Existing Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Use Existing BPEL Transaction&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Invoke Synchronous Process with Partner Link Property "idempotent=false"&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Invoke Synchronous Process with Partner Link Property "nonBlockingInvoke=true"&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Invoke Asynchronous Process&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Use Existing Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Invoke Asynchronous Process with Partner Link Property "transaction=participate"&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Use Existing Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Invoke Synchronous Process with Partner Link Property "idempotent=false"&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Wait &amp;lt; a couple of seconds&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Use Existing Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;N/A&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Wait &amp;gt; a couple of seconds&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;N/A&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;checkpoint()&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;New Transaction&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;N/A&lt;/td&gt;         &lt;/tr&gt;&lt;tr&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Flow&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;Use Existing Transaction for all parallel activities&lt;/td&gt;             &lt;td bgcolor="#ffffff" style="text-indent: 3px;" valign="top"&gt;N/A&lt;/td&gt;         &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-67426156505082153?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/67426156505082153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=67426156505082153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/67426156505082153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/67426156505082153'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/working-with-transactions.html' title='Working with Transactions'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-6779631664192751288</id><published>2011-09-08T08:24:00.000-07:00</published><updated>2011-09-08T08:24:31.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Setting Web Service and JCA Adapter Endpoints Dynamically in Oracle SOA Suite</title><content type='html'>(From &lt;a href="http://www.oracle.com/technetwork/topics/soa/dynamic-endpoints-100390.html"&gt;http://www.oracle.com/technetwork/topics/soa/dynamic-endpoints-100390.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Introduction&lt;/h1&gt;Most business processes use some form of integration with  external systems. These might be file systems, web services, message  queues, databases or backend applications. In many cases, the endpoints  for those systems (queue name, URL, file directory, etc.) will be  different for development, testing, and production. In other cases the  endpoints can change during the application's life cycle.&lt;br /&gt;In these situations, a developer can change the endpoint  property in question within the business process, and then recompile,  redeploy, retest, and so on. This is obviously a time-consuming and  error-prone process. A better strategy is to keep potentially changing  endpoints dynamic.&lt;br /&gt;Ideally, an administrator would set the endpoint property  values in an administration console. The business process would then  read and set values at run-time.&lt;br /&gt;This article describes how dynamic endpoints can be handled in Oracle WebLogic Integration (WLI) and Oracle SOA Suite.&lt;br /&gt;&lt;h1&gt;Dynamic Endpoints in WLI&lt;/h1&gt;Most controls in WLI allow the specification of                                 &lt;strong&gt;dynamic properties&lt;/strong&gt;,  which are passed as an XML variable at run-time. These dynamic  properties overwrite the properties that were defined for the control at  design-time.&lt;br /&gt;In order to set the dynamic properties, an XML variable  has to be created that conforms to the control's dynamic-property schema  and is used in thecontrol's                                 &lt;strong&gt;setProperties()&lt;/strong&gt; method. The current property settings can be retrieved using the                                 &lt;strong&gt;getProperties()&lt;/strong&gt; method.&lt;br /&gt;Let's take the email control as an example. The                                 &lt;strong&gt;setProperties()&lt;/strong&gt; method of this control accepts an                                 &lt;strong&gt;EmailControlPropertiesDocument&lt;/strong&gt; parameter. The                                 &lt;strong&gt;EmailControlPropertiesDocument&lt;/strong&gt;  type is an XML Beans class that is generated out of the corresponding  schema element defined in                                 &lt;strong&gt;DynamicProperties.xsd&lt;/strong&gt;, which is located in the system folder of the Schemas project of the WLI application.&lt;br /&gt;The following is an example of an XML variable used to set dynamic properties for an email control:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;EmailControlProperties&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;smtp-address&amp;gt;myorg.mymailserver.com:25&amp;lt;/smtp-address&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;from-name&amp;gt;Joe User&amp;lt;/from-name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;from-address&amp;gt;joe.user@myorg.com&amp;lt;/from-address&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;reply-to-address&amp;gt;reply@myorg.com&amp;lt;/reply-to-address&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;reply-to-name&amp;gt;Joe User&amp;lt;/reply-to-name&amp;gt;&lt;br /&gt;&amp;lt;/EmailControlProperties&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The control properties are often retrieved through an XML MetaData Cache control. (see                                 &lt;a href="http://download.oracle.com/docs/cd/E14981_01/wli/docs1031/controls/controlsXMLMetadataMBeans.html"&gt;XML MetaData Cache Control&lt;/a&gt;).&lt;br /&gt;This control retrieves an XML document at run-time from  the WLI cache that was created by an administrator through the WLI admin  console. The content of the xml document can be changed at any time  without affecting the deployed applications.&lt;br /&gt;&lt;h1&gt;Dynamic Endpoints in SOA Suite&lt;/h1&gt;Message header properties can be configured for Web  service binding components or JCA adapter binding components that are  part of a deployed SOA composite application. Oracle JCA Adapters expose  the properties specific to underlying back-end operations as header  elements and allow the manipulation of these elements within a business  process.&lt;br /&gt;(See                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10231/life_cycle.htm#BABHIHCJ"&gt;Using Header Properties for Oracle JCA Adapters&lt;/a&gt;)&lt;br /&gt;Oracle JCA Adapters properties can also be added,  deleted, or reverted from the Oracle Enterprise Manager Fusion  Middleware Control Console (EM). The properties listed below are  classified based on adapter behaviour when properties are added,  deleted, or updated.&lt;br /&gt;&lt;h2&gt;The InteractionSpec or ActivationSpec Properties&lt;/h2&gt;Properties in this group require the adapter endpoint to  be recycled. The values of properties in this group can be changed from  the EM console. However, property-dependency constraint validation  requires that Oracle JDeveloper be used to make changes (adding or  removing) to the composition of these properties.&lt;br /&gt;(See                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10231/life_cycle.htm#BABGDIGA"&gt;The InteractionSpec or ActivationSpec Properties&lt;/a&gt;)&lt;br /&gt;&lt;h2&gt;Endpoint Properties&lt;/h2&gt;The adapter is notified of changes to these properties  without restarting the endpoint. Properties that belong to this group  can be added or removed. The endpoint properties represent auxiliary  tuning properties that an adapter might want to expose. The auxiliary  tuning properties include various time intervals, thresholds, and other  values. These endpoint properties are not exposed through the                                  &lt;em&gt;interactionspec&lt;/em&gt; or                                 &lt;em&gt;activationspec&lt;/em&gt; properties.&lt;br /&gt;(See                               &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10231/life_cycle.htm#BABDGGEB"&gt;Endpoint Properties&lt;/a&gt;)             &lt;h2&gt;Configuring the End Point Properties for an Adapter&lt;/h2&gt;A number of BPEL activities, including                                 &lt;strong&gt;invoke&lt;/strong&gt;,                                 &lt;strong&gt;receive&lt;/strong&gt;, and                                 &lt;strong&gt;reply&lt;/strong&gt; and the                                 &lt;strong&gt;onMessage&lt;/strong&gt; branch of pick activities, provide a                                 &lt;strong&gt;Properties&lt;/strong&gt; tab. Header properties for JCA adapters can be set trough this tab.&lt;br /&gt;In order to use this functionality, the property value is  assigned to a string variable. This variable can then be used in the  properties tab, as described in the use case sample below.&lt;br /&gt;(See                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bp_appx_ref.htm#CIAHDJHB"&gt;Introduction to BPEL Activities&lt;/a&gt; for a description of the properties tab in BPEL activities.)&lt;br /&gt;The                                 &lt;a href="http://aseng-wiki.us.oracle.com/asengwiki/display/ASDevFabric/Setting+endpoints+dynamically#Settingendpointsdynamically-http://fmwdocs.us.oracle.com/doclibs/fmw/11gr1_final/integration.1111/e10224/med_dvm.htm"&gt;Domain Value Maps&lt;/a&gt;  in SOA Suite are similar in concept to the XML Meta Data cache in WLI.  Domain Value Maps can be used to retrieve information at run-time. The  use of Domain Value Maps will be addressed in an upcoming article in  this series.&lt;br /&gt;Configuring message header properties for Web service  binding components or JCA adapters through Enterprise Manager Oracle JCA  Adapters and Web Services are either Service or Reference Binding  Components within a SOA Suite composite application. Binding components  are network protocols and services that connect the SOA platform with  the outside world. Message header properties can be configured for Web  service binding components or for JCA adapter binding components.&lt;br /&gt;(See                               &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10226/soasuite_intro.htm#CEGFEGDE"&gt;Understanding Binding Components&lt;/a&gt;)             For more information about endpoint properties, see the  chapter Configuring Service and Reference Binding Components in the  Oracle Fusion Middleware Administrator's Guide for Oracle SOA Suite.&lt;br /&gt;The following adapters support header properties:             &lt;ul&gt;&lt;li&gt;Oracle AQ Adapter (see                                   &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10231/adptr_propertys.htm#CIHCHGJJ"&gt;Oracle AQ Adapter Properties&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Oracle Database Adapter (see                                   &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10231/adptr_propertys.htm#CIHJIDCH"&gt;Oracle Database Adapter Properties&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Oracle File and FTP Adapter (see                                   &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10231/adptr_propertys.htm#CHDEDJEA"&gt;Oracle File and FTP Adapters Properties&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Oracle JMS Adapter (see                                   &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10231/adptr_propertys.htm#CIHFDCCF"&gt;Oracle JMS Adapter Properties&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Oracle MQ Series Adapter (see                                   &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10231/adptr_propertys.htm#CHDGECDF"&gt;Oracle MQ Series Adapter Properties&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Oracle Socket Adapter (see                                   &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10231/adptr_propertys.htm#CHDJAJHD"&gt;Oracle Socket Adapter Properties&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;For more information about Oracle JCA Adapters properties, see                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10231/adptr_propertys.htm#CIHJIEED"&gt;Oracle JCA Adapter Properties&lt;/a&gt;.&lt;br /&gt;To configure JCA adapter or Web Services properties,  select the Properties tab of the adapter or web service in Enterprise  Manager.&lt;br /&gt;(See                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10226/bc_config.htm#CEGJFDFH"&gt;Configuring Service and Reference Binding Component Properties&lt;/a&gt;).&lt;br /&gt;The following section explains this process in more detail.&lt;br /&gt;&lt;h2&gt;Configuring the End Point Properties for an Adapter through Oracle Enterprise Manager&lt;/h2&gt;A variety of Oracle SOA Suite administration  (configuration, monitoring, and management) tasks can be performed from  the                                 &lt;strong&gt;Enterprise Manager Console&lt;/strong&gt;. One of these tasks is to configure the end point properties for a JCA adapter.&lt;br /&gt;The properties of an adapter are usually defined in                                 &lt;strong&gt;Oracle JDeveloper&lt;/strong&gt;  during design time. However, it is possible to edit or add predefined  properties or to create or delete properties at a later stage.&lt;br /&gt;&lt;h3&gt;Editing a Predefined Property for an Adapter&lt;/h3&gt;To edit a predefined property for an inbound adapter,  navigate to the SOA composite application by using either of the  following options:&lt;br /&gt;&lt;span&gt;From the SOA Infrastructure Menu:&lt;/span&gt;             &lt;ol&gt;&lt;li&gt;Click                                   &lt;strong&gt;Home&lt;/strong&gt;.                                 &lt;br /&gt;The SOA Infrastructure page is displayed.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click the                                   &lt;strong&gt;Deployed Composites&lt;/strong&gt; tab.                                 &lt;br /&gt;The list of deployed composite applications is displayed.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;In the                                   &lt;strong&gt;Composite&lt;/strong&gt; section, click a specific SOA composite application.                                 &lt;br /&gt;The SOA composite home page is displayed.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click the                                   &lt;strong&gt;inbound/outbound adapter (service/reference)&lt;/strong&gt; from the                                   &lt;strong&gt;Services and References&lt;/strong&gt; section in the right panel.                                 &lt;br /&gt;The Service Home page is displayed.&lt;/li&gt;&lt;/ol&gt;&lt;span&gt;From the SOA Folder in the Navigator:&lt;/span&gt;             &lt;ol&gt;&lt;li&gt;Under soa-infra, click a specific SOA composite application.                                 &lt;br /&gt;The SOA Composite home page is displayed.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click the inbound/outbound adapter (service/reference) from the                                   &lt;em&gt;Services and References&lt;/em&gt; section in the right panel.                                 &lt;br /&gt;The Service Home page is displayed.&lt;/li&gt;&lt;/ol&gt;&lt;h4&gt;Edit a predefined property&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;Click                                   &lt;strong&gt;Properties&lt;/strong&gt; to see a list of the currently defined binding properties.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select the property to be edited.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Edit the value in the                                   &lt;strong&gt;Value&lt;/strong&gt; text box.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click                                   &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Adding Predefined Properties for an Adapter&lt;/h3&gt;To add a predefined property for an adapter:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Navigate to the SOA composite application as described above.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add a predefined property:                 &lt;ol type="i"&gt;&lt;li&gt;Click the                                       &lt;strong&gt;Properties&lt;/strong&gt; tab to see a list of the currently defined binding properties.&lt;/li&gt;&lt;li&gt;Click the                                       &lt;strong&gt;Add&lt;/strong&gt; button. A new empty row is appended to the existing list of properties.&lt;/li&gt;&lt;li&gt;Click the                                       &lt;strong&gt;Select Values&lt;/strong&gt; icon in the                                       &lt;strong&gt;Name&lt;/strong&gt; field of the new row.                                     &lt;br /&gt;The                                       &lt;strong&gt;Properties&lt;/strong&gt; dialog is displayed.&lt;/li&gt;&lt;li&gt;Select a property that is valid for the  particular adapter from the list of properties, and then click                                        &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Click                                       &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Creating a New Property for an Adapter&lt;/h3&gt;To create a new property for an inbound adapter:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Navigate to the SOA composite application as described above                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Create a new property:                 &lt;ol type="i"&gt;&lt;li&gt;Click the                                       &lt;strong&gt;Properties&lt;/strong&gt; tab to see the list of the currently defined binding properties.                                     &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click the                                       &lt;strong&gt;Add&lt;/strong&gt; button.                                     &lt;br /&gt;A new empty row is appended to the existing list of properties.&lt;/li&gt;&lt;li&gt;Specify the property name and value in the                                       &lt;strong&gt;Name&lt;/strong&gt; and the                                       &lt;strong&gt;Value&lt;/strong&gt; fields of the new row.                                     &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click                                       &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Deleting a Property for an Adapter&lt;/h3&gt;To delete a property for an inbound adapter:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Navigate to the SOA composite application as described above                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Delete a property:                 &lt;ol type="i"&gt;&lt;li&gt;Click the                                       &lt;strong&gt;Properties&lt;/strong&gt; tab to see a list of the currently defined binding properties.&lt;/li&gt;&lt;li&gt;Select the property you want to delete, and then click                                       &lt;strong&gt;Delete&lt;/strong&gt;.                                     &lt;br /&gt;A message asking you to confirm your action is displayed.&lt;/li&gt;&lt;li&gt;Click                                       &lt;strong&gt;OK&lt;/strong&gt; to confirm.&lt;/li&gt;&lt;li&gt;Click                                       &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Reverting a Property Value for an Adapter&lt;/h3&gt;You can revert only those properties that you have  changed. Also note that you can perform the revert operation only on the  existing property values and not on those that were added from the  predefined list of properties or those that you created.&lt;br /&gt;To revert a property value for an inbound adapter:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Navigate to the SOA composite application as described above.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Revert a property value for an inbound adapter:                 &lt;ol type="i"&gt;&lt;li&gt;Click the                                       &lt;strong&gt;Properties&lt;/strong&gt; tab to see a list of the currently defined binding properties.                                     &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select the property you want to revert, and then click                                       &lt;strong&gt;Revert&lt;/strong&gt;.                                     &lt;br /&gt;A message asking you to confirm your action is displayed.&lt;/li&gt;&lt;li&gt;Click                                       &lt;strong&gt;OK&lt;/strong&gt; to confirm.&lt;/li&gt;&lt;li&gt;Click                                       &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;For more information, please see                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10226/ad_config.htm#CEGHAHJB"&gt;Configuring the End Point Properties for an Inbound Adapter&lt;/a&gt; and                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10226/ad_config.htm#CEGEJACB"&gt;Configuring the End Point Properties for an Outbound Adapter&lt;/a&gt;.&lt;br /&gt;&lt;h1&gt;Use Case Example: Change the file name and directory before writing a file&lt;/h1&gt;This example will demonstrate how the endpoints (file  name and directory) for a file control (in WLI) and a file adapter (in  SOA Suite) can be changed dynamically. In order to keep it simple and to  the point, we will create a process that does nothing but write a  message to a file. A real-world use case would be much more complicated.&lt;br /&gt;&lt;h2&gt;Implementing the use case in WLI&lt;/h2&gt;The WLI use case is not described in great detail as it  is assumed that the audience knows how to implement a dynamic file  control in WLI. The focus area is the implementation of the use case in  SOA Suite.&lt;br /&gt;A file control is used to write a file to a local  directory. As with many other controls, the file control also provides  dynamic properties to dynamically set endpoints:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version= '1.0' encoding= 'UTF-8' ?&amp;gt;&lt;br /&gt;&amp;lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"&lt;br /&gt;targetNamespace="http://demo/demoCustomer1"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;xmlns:cu="http://demo/demoCustomer1"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="customer"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:element ref="cu:key"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:element ref="cu:firstname"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:element ref="cu:lastname"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:element ref="cu:address"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/xs:element&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="key" type="xs:string"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="firstname" type="xs:string"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="lastname" type="xs:string"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="address" type="xs:string"/&amp;gt;&lt;br /&gt;&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In our sample, the WLI process is started by a Client Request Node  which expects a customer XML document as input. An XML MetaData Cache  control is used to read the file directory and file name values. A  transformation control is used to create the properties for the file  control. And finally, the properties are set through the the file  control's setProperties() method. The file control's write method is  then used to write the customer message to the file.&lt;br /&gt;While some of the steps in this process could be consolidated, they are shown as single steps in order to simplify the sample.&lt;br /&gt;The JPD is illustrated in Figure 1.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/107426.jpg" width="155" /&gt;             &lt;div&gt;Figure 1: JPD&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Implementing the use case in SOA Suite&lt;/h2&gt;This section will describe the same use case, as implemented in SOA Suite.&lt;br /&gt;In this use case, a business process is started via a web  service call with a customer xml message. The business process uses a  file adapter to write the customer information to a file.&lt;br /&gt;The following section will describe how the process is  deployed and tested, and then demonstrate how the adapter endpoint  properties can be changed by using the adapter header properties within  the process, or through the Enterprise Manager console.&lt;br /&gt;&lt;br clear="all" /&gt;             &lt;h3&gt;Create a SOA Application and Project&lt;/h3&gt;To get started:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a new                                   &lt;em&gt;SOA Application&lt;/em&gt; in JDeveloper.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/122219.jpg" /&gt;             &lt;ol start="2"&gt;&lt;li&gt;Name it                                   &lt;strong&gt;SOASuiteWLIEssentials&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/116797.jpg" /&gt;             &lt;ol start="3"&gt;&lt;li&gt;Create a new                                   &lt;em&gt;Project&lt;/em&gt; named                                   &lt;strong&gt;DynamicEndpoints&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;ol start="4"&gt;&lt;li&gt;Click                                   &lt;strong&gt;Finish&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/114441.jpg" /&gt;             &lt;h3&gt;Create the BPEL Process&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;In the composite, drag-and-drop a                                   &lt;em&gt;BPEL Process&lt;/em&gt; component onto the                                   &lt;em&gt;Components&lt;/em&gt; swim lane.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126822.jpg" /&gt;             &lt;ol start="2"&gt;&lt;li&gt;In the                                   &lt;em&gt;Create BPEL Proces&lt;/em&gt;s dialog, specify the following settings:                 &lt;ol type="i"&gt;&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; WriteCustomer&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Template:&lt;/strong&gt; One Way BPEL Process&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Service Name:&lt;/strong&gt; writecustomer_client&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Expose as a SOAP Service:&lt;/strong&gt; Checked&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Input:&lt;/strong&gt;                     &lt;ol type="a"&gt;&lt;li&gt;Click the flashlight icon to open                                           &lt;em&gt;Type Chooser&lt;/em&gt; window.&lt;/li&gt;&lt;li&gt;Click the                                           &lt;em&gt;Import Schema File&lt;/em&gt; icon.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126062.jpg" /&gt;             &lt;ol start="3" type="a"&gt;&lt;li&gt;Choose the customer XML schema from your local disk.&lt;/li&gt;&lt;li&gt;Check                                   &lt;em&gt;Copy to Project&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/115595.jpg" /&gt;             &lt;ol start="5" type="a"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Choose the root element of your schema&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126304.jpg" /&gt;             &lt;ol start="8" type="a"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126010.jpg" /&gt;             &lt;ol start="9" type="a"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;The WSDL for this service is created automatically  using this information. Note that the input type specified here goes in  to the WSDL for this service.&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Adding a File Adapter&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Drag-and-drop a                                   &lt;em&gt;File Adapter&lt;/em&gt; to the                                   &lt;em&gt;External References&lt;/em&gt; swim lane. This file adapter will write each customer to a text file.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121627.jpg" /&gt;             &lt;ol start="2"&gt;&lt;li&gt;Name the service                                   &lt;strong&gt;WriteCustomerData&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127584.jpg" /&gt;             &lt;ol start="3"&gt;&lt;li&gt;Click                                   &lt;strong&gt;Next&lt;/strong&gt;.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select the option to                                   &lt;em&gt;Define from operation and schema.&lt;/em&gt;                                 &lt;br /&gt;&lt;br /&gt;This feature allows you to use the file operation and schema to define the WSDL automatically.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126038.jpg" /&gt;             &lt;ol start="5"&gt;&lt;li&gt;Click                                   &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Select the                                   &lt;em&gt;Write File operation&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126003.jpg" /&gt;             &lt;ol start="7"&gt;&lt;li&gt;Click                                   &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Specify the following settings, leaving all others with their default values:                 &lt;ol type="i"&gt;&lt;li&gt;Directory for Outgoing Files:                                       &lt;strong&gt;c:\temp&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;File Naming Convention:                                       &lt;strong&gt;customer_%SEQ%.xml&lt;/strong&gt;  to write the files with increasing sequence numbering. You can see  additional options for numbering files in a drop down menu as soon as  you enter                                       &lt;strong&gt;%&lt;/strong&gt; in the field&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121663.jpg" /&gt;             &lt;ol start="9"&gt;&lt;li&gt;Click                                   &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Browse for the schema that represents the content we will write (customer.xsd)&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/110290.jpg" /&gt;             &lt;ol start="11"&gt;&lt;li&gt;Choose the root element&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126304.jpg" /&gt;             &lt;ol start="12"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/125996.jpg" /&gt;             &lt;ol start="13"&gt;&lt;li&gt;Click                                   &lt;strong&gt;Next&lt;/strong&gt;, then                                   &lt;strong&gt;Finish&lt;/strong&gt; to complete the File Adapter wizard and return to the composite.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121629.jpg" /&gt;             &lt;h3&gt;Wire the BPEL Process and the File Adapter&lt;/h3&gt;Next, wire the BPEL process and the file adapter and complete the interface definitions.&lt;br /&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/106348.jpg" /&gt;             The wired components resemble the image below:&lt;br /&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121648.jpg" /&gt;             Wiring the components in the composite automatically creates a partner link reference inside the BPEL process.&lt;br /&gt;&lt;h3&gt;Designing the BPEL Process&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Double-click the BPEL component to open the                                   &lt;em&gt;BPEL editor&lt;/em&gt;.                                 &lt;br /&gt;&lt;br /&gt;Notice the                                   &lt;em&gt;WriteCustomerData&lt;/em&gt;  partnerlink already in the References swim lane because you wired it in  the composite. The editors keep the references in sync between the BPEL  process and the composite.&lt;/li&gt;&lt;li&gt;Drag-and-drop an                                   &lt;em&gt;Invoke&lt;/em&gt; activity from the Component Palette to an insertion point under the                                   &lt;strong&gt;receiveInput&lt;/strong&gt; activity.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/122498.jpg" /&gt;             &lt;ol start="3"&gt;&lt;li&gt;Drag the wire from the                                   &lt;em&gt;Invoke&lt;/em&gt; activity to the                                   &lt;strong&gt;WriteCustomerData&lt;/strong&gt; partner link. This tells the BPEL process to invoke the file adapter.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/118841.jpg" /&gt;             &lt;ol start="4"&gt;&lt;li&gt;In the                                   &lt;em&gt;Edit Invoke&lt;/em&gt; dialog, specify the following:                 &lt;ol type="i"&gt;&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; WriteCustomerData&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Input Variable:&lt;/strong&gt; Click the green plus icon and then click                                       &lt;strong&gt;OK&lt;/strong&gt; to create a new global variable, accepting the default name and type.                                     &lt;br /&gt;&lt;br /&gt;The variable designated for the input will contain  the data that will be sent to the service when it is invoked. It is  automatically created with the correct type expected by the service.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121623.jpg" /&gt;             &lt;ol start="5"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126076.jpg" /&gt;             &lt;ol start="6"&gt;&lt;li&gt;click                                   &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;Your BPEL process should now resemble the image below:&lt;br /&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120026.jpg" /&gt;             We've created the variables that will be used when interacting with the                                 &lt;strong&gt;WriteCustomerData&lt;/strong&gt; service, but they haven't been populated. Let's populate the input variable first.&lt;br /&gt;In BPEL,                                 &lt;em&gt;Assign&lt;/em&gt;  activities are used to assign data to variables. In this case you want  to assign the customer information to the                                  &lt;strong&gt;WriteCustomerData&lt;/strong&gt; service.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Drag-and-drop an                                   &lt;em&gt;Assign&lt;/em&gt; activity above your                                   &lt;em&gt;Invoke&lt;/em&gt; activity.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121655.jpg" /&gt;             &lt;ol start="2"&gt;&lt;li&gt;Double-click the                                   &lt;em&gt;Assign&lt;/em&gt; activity to edit it.&lt;/li&gt;&lt;li&gt;Click the                                   &lt;em&gt;General&lt;/em&gt; tab and change the name to                                   &lt;strong&gt;assignCustomerData&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126057.jpg" /&gt;             &lt;ol start="4"&gt;&lt;li&gt;Click the                                   &lt;em&gt;Copy Operation&lt;/em&gt; tab&lt;/li&gt;&lt;li&gt;Click the green plus icon and select                                   &lt;em&gt;Copy Operation&lt;/em&gt; to open the                                   &lt;em&gt;Create Copy Operation&lt;/em&gt; dialog.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/107470.jpg" /&gt;             &lt;ol start="6"&gt;&lt;li&gt;Specify the following: In the                                   &lt;em&gt;From&lt;/em&gt; side, select                                   &lt;em&gt;Variables &amp;gt; Process &amp;gt; Variables &amp;gt; inputVariable &amp;gt;payload &amp;gt; ns2:customer&lt;/em&gt;&lt;/li&gt;&lt;li&gt;In the                                   &lt;em&gt;To&lt;/em&gt; side, select                                   &lt;em&gt;Variables &amp;gt; Process &amp;gt; Variables &amp;gt;WriteCustomerData_Write_InputVariable &amp;gt; body &amp;gt; ns2:customer&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126064.jpg" /&gt;             &lt;ol start="8"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;The Assign dialog should now resemble the image below:&lt;br /&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126054.jpg" /&gt;             &lt;ol start="9"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt; to return to the BPEL process.&lt;/li&gt;&lt;li&gt;Click the green check button in the upper left of the BPEL process to validate the process.&lt;/li&gt;&lt;/ol&gt;All the warnings should go away. The process should resemble the image below:&lt;br /&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126026.jpg" /&gt;             The input variable to                                 &lt;strong&gt;WriteCustomerData&lt;/strong&gt; is now populated.&lt;br /&gt;&lt;ol start="11"&gt;&lt;li&gt;Save the BPEL process.&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Deploying the SOA Composite&lt;/h3&gt;Before the BPEL process can be tested, the composite has to be deployed with Oracle JDeveloper.&lt;br /&gt;Before you start the deployment, please make sure that your SOA Server is running.&lt;br /&gt;Please check                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/sca_lifecycle.htm#CACBGDCG"&gt;Deploying SOA Composite Applications&lt;/a&gt;  to learn how to deploy SOA composite applications with Oracle  JDeveloper and scripting tools and create configuration plans that  enable you to move SOA composite applications to and from development,  test, and production environments.&lt;br /&gt;Please check                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10226/soacompapp_deploy.htm#CHDDFEGH"&gt;Deploying SOA Composite Application&lt;/a&gt;s  to learn how to deploy, redeploy, and undeploy a SOA composite  application from Oracle Enterprise Manager Fusion Middleware Control  Console (EM).&lt;br /&gt;When deploying the composite from within JDeveloper, the log should look similar to the example below:&lt;br /&gt;&lt;div&gt;             &lt;pre&gt;[07:32:39 PM] ----  Deployment started.  ----&lt;br /&gt;[07:32:39 PM] Target platform is  (Weblogic 10.3).&lt;br /&gt;[07:32:39 PM] Running dependency analysis...&lt;br /&gt;[07:32:39 PM] Building...&lt;br /&gt;[07:33:06 PM] Deploying profile...&lt;br /&gt;[07:33:06 PM] Updating revision id for the SOA Project&lt;br /&gt;'DynamicEndpoints.jpr' to '1.0'..&lt;br /&gt;[07:33:06 PM] Wrote Archive Module to D:\1WLI\2SOASuiteMigration\testProjects\JDev\11gPS1\&lt;br /&gt;SOASuiteWLIEssentials\DynamicEndpoints\deploy\sca_DynamicEndpoints_rev1.0.jar&lt;br /&gt;[07:33:06 PM] Deploying sca_DynamicEndpoints_rev1.0.jar to AdminServer [SGEIB01.emea.bea.&lt;br /&gt;com:7001] &lt;br /&gt;[07:33:06 PM] Processing sar=/D:/1WLI/2SOASuiteMigration/testProjects/JDev/11gPS1/SOASuiteWLIE&lt;br /&gt;ssentials/DynamicEndpoints/deploy/sca_DynamicEndpoints_rev1.0.jar&lt;br /&gt;[07:33:06 PM] Adding sar file - D:\1WLI\2SOASuiteMigration\testProjects\JDev\11gPS1\SOASuite&lt;br /&gt;WLIEssentials\DynamicEndpoints\deploy\sca_DynamicEndpoints_rev1.0.jar&lt;br /&gt;[07:33:06 PM] Preparing to send HTTP request for deployment&lt;br /&gt;[07:33:07 PM] Creating HTTP connection to host:SGEIB01.emea.bea.com, &lt;br /&gt;port:7001&lt;br /&gt;[07:33:08 PM] Sending internal deployment descriptor&lt;br /&gt;[07:33:08 PM] Sending archive - sca_DynamicEndpoints_rev1.0.jar&lt;br /&gt;[07:33:28 PM] Received HTTP response from the server, response code=200&lt;br /&gt;[07:33:28 PM] Successfully deployed archive sca_DynamicEndpoints_rev1.0.jar to AdminServer&lt;br /&gt; [SGEIB01.emea.bea.com:7001] &lt;br /&gt;[07:33:28 PM] Elapsed time for deployment:  48 seconds&lt;br /&gt;[07:33:28 PM] ----  Deployment finished.  ----&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Testing the BPEL Process&lt;/h3&gt;After successful deployment, you can initiate the composite service through                                 &lt;em&gt;Oracle Enterprise Manager Fusion Middleware Control Console&lt;/em&gt; (EM).&lt;br /&gt;&lt;ol&gt;&lt;li&gt;To log in to Enterprise Manager, use Internet  Explorer 7, Mozilla Firefox 2.0.0.2, or Firefox 3.0.x to access the  following URL:                                   &lt;em&gt;http://host_name:port/em&lt;/em&gt;, where                                   &lt;em&gt;host_name&lt;/em&gt; is the name of the host on which Enterprise is installed and                                   &lt;em&gt;port&lt;/em&gt; is the port number of your admin server.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Enter                                   &lt;em&gt;weblogic/password&lt;/em&gt; and click                                   &lt;strong&gt;Login&lt;/strong&gt;.                                 &lt;br /&gt;&lt;br /&gt;(See                                   &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10226/gettingstarted.htm#BEIDGGAD"&gt;Getting Started with Administering Oracle SOA Suite&lt;/a&gt; for more information.)&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121661.jpg" /&gt;             &lt;ol start="3"&gt;&lt;li&gt;Go to                                   &lt;em&gt;SOA - soa_infra&lt;/em&gt;, then locate and click                                   &lt;strong&gt;DynamicEndpoints&lt;/strong&gt; composite on the EM dashboard to access the composite homepage&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121642.jpg" /&gt;             &lt;ol start="4"&gt;&lt;li&gt;Once on the page, you can test a composite service by clicking on the                                   &lt;strong&gt;Test&lt;/strong&gt; button...&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/117952.jpg" /&gt;             &lt;ol start="5"&gt;&lt;li&gt;Filling out the payload...&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126484.jpg" /&gt;             &lt;ol start="6"&gt;&lt;li&gt;And clicking on the button                                   &lt;strong&gt;Test Web Service&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121650.jpg" /&gt;             If all goes as planned, a new file customer_1.xml will be created in                                 &lt;em&gt;C:\temp&lt;/em&gt;.&lt;br /&gt;&lt;h3&gt;Change the File Adapter End point at Run-time Through the Properties Tab of the Invoke Activity&lt;/h3&gt;This sample will show how the adapter end-point can be  changed at run-time. It's very similar to the WLI use case where the  information is retrieved through an XML Meta Data Cache control and set  as properties to the control.&lt;br /&gt;As mentioned above, a Domain Value Map would be used to  retrieve the values for the adapter properties. In order to keep this  article simple, the sample BPEL process will use hard coded values for  those properties and the use of Domain Value Pairs will be explained  separately&lt;br /&gt;.             &lt;h4&gt;Create variables for the properties&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;If the Structure window (by default on the top left  of JDeveloper) is not visible, go to View - Structure.                                  &lt;br /&gt;&lt;/li&gt;&lt;li&gt;In the Structure window click on                                   &lt;em&gt;Variables - Process - Variables&lt;/em&gt; and click the green plus sign:                                 &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126028.jpg" /&gt;             &lt;ol start="3"&gt;&lt;li&gt;In the                                   &lt;em&gt;Create Variable&lt;/em&gt; window, define:                 &lt;ol type="i"&gt;&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; outputFolder&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Simple Type:&lt;/strong&gt; click on the type chooser icon to select the type of the variable&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/119781.jpg" /&gt;             &lt;ol start="3" type="i"&gt;&lt;li&gt;Choose                                   &lt;em&gt;string&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126044.jpg" /&gt;             &lt;ol start="4" type="i"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/108323.jpg" /&gt;             &lt;ol start="5" type="i"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ol start="6" type="i"&gt;&lt;li&gt;Repeat the process for a second string variable                                   &lt;strong&gt;fileName&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/110986.jpg" /&gt;             &lt;h4&gt;Assign values to the variables&lt;/h4&gt;This is where the                                 &lt;em&gt;Domain Value Maps&lt;/em&gt; would be used in a real-life use case. However, for this examples we'll use hard coded values.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add an                                   &lt;em&gt;assign&lt;/em&gt; activity to the BPEL process, between                                   &lt;em&gt;assignCustomerData&lt;/em&gt; and                                   &lt;em&gt;WriteCustomerData&lt;/em&gt; with                                   &lt;em&gt;Name&lt;/em&gt;:                                   &lt;strong&gt;setProperties&lt;/strong&gt;.                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;In the                                   &lt;em&gt;Copy Operation&lt;/em&gt; tab, add two copy operations:                 &lt;ol type="i"&gt;&lt;li&gt;Click on the green plus sign and choose                                       &lt;em&gt;Copy Operation&lt;/em&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/110693.jpg" /&gt;             &lt;ol start="2" type="i"&gt;&lt;li&gt;On the left side, choose                                   &lt;em&gt;Expression&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;Enter a new output file directory, e.g. "                                 &lt;strong&gt;C:\files\output&lt;/strong&gt;".&lt;/li&gt;&lt;li&gt;Choose the variable                                   &lt;strong&gt;outputFolder&lt;/strong&gt; on the right side.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121582.jpg" /&gt;             &lt;ol start="5" type="i"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;Repeat these steps to set a new output file name to the variable filename.&lt;br /&gt;The assign activity should now resemble the image below:&lt;br /&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126036.jpg" /&gt;             &lt;ol start="6" type="i"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;h4&gt;Set the properties for the file adapter&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;Open the invoke activity WriteCustomerData                                 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Go to the Properties tab                 &lt;ol type="i"&gt;&lt;li&gt;Scroll down to jca.file.Directory&lt;/li&gt;&lt;li&gt;Click the browse button in the                                       &lt;em&gt;Value&lt;/em&gt; field&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127562.jpg" /&gt;             &lt;ol start="3" type="i"&gt;&lt;li&gt;Browse variables&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126001.jpg" /&gt;             &lt;ol start="4" type="i"&gt;&lt;li&gt;Choose variable outputFolder&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126035.jpg" /&gt;             &lt;ol start="5" type="i"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/107423.jpg" /&gt;             &lt;ol start="7" type="i"&gt;&lt;li&gt;Scroll to                                   &lt;em&gt;jca.file.FileName&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Choose variable                                   &lt;em&gt;fileName&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/117785.jpg" /&gt;             &lt;ol start="9" type="i"&gt;&lt;li&gt;Click                                   &lt;strong&gt;OK&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;The BPEL process should now resemble the image below:&lt;br /&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/124125.jpg" /&gt;             Re-deploy the composite and test the BPEL process again.  There should now be a file with the new name in your newly chosen  directory&lt;br /&gt;&lt;h3&gt;Change the File Adapter end point in Enterprise Manager&lt;/h3&gt;Instead of setting the properties dynamically in the BPEL  process, you can also make changes to the JCA adapter and web services  properties in Enterprise Manager.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Click on the                                   &lt;strong&gt;DynamicEndpoints&lt;/strong&gt; composite and scroll down to                                   &lt;em&gt;Services and References&lt;/em&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/105420.jpg" /&gt;             &lt;ol start="2"&gt;&lt;li&gt;Click on                                   &lt;strong&gt;WriteCustomerData&lt;/strong&gt; (the file adapter)&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126052.jpg" /&gt;             &lt;ol start="3"&gt;&lt;li&gt;Click on the                                   &lt;em&gt;Properties&lt;/em&gt; tab and change the                                   &lt;em&gt;PhysicalDirectory&lt;/em&gt; and                                   &lt;em&gt;FileNameConvention&lt;/em&gt;. Make sure the output directory exists.&lt;/li&gt;&lt;/ol&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121632.jpg" /&gt;             &lt;ol&gt;&lt;li&gt;Click                                   &lt;strong&gt;Apply&lt;/strong&gt;, then                                   &lt;strong&gt;Yes&lt;/strong&gt;, then                                   &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;Re-deploy the composite and test the BPEL process again.  There should now be a file with the new name in your newly chosen  directory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-6779631664192751288?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/6779631664192751288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=6779631664192751288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/6779631664192751288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/6779631664192751288'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/setting-web-service-and-jca-adapter.html' title='Setting Web Service and JCA Adapter Endpoints Dynamically in Oracle SOA Suite'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-946200253189707065</id><published>2011-09-08T08:21:00.000-07:00</published><updated>2011-09-08T08:21:13.767-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Dynamic Data Lookup in a Business Process</title><content type='html'>(From &lt;a href="http://www.oracle.com/technetwork/topics/soa/dynamic-data-lookup-endpoints-geib-092046.html"&gt;http://www.oracle.com/technetwork/topics/soa/dynamic-data-lookup-endpoints-geib-092046.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Meta Data Cache Control in Oracle WebLogic Integration and Domain Value Maps in SOA Suite&lt;/h2&gt;&lt;div&gt;&lt;h1&gt;Introduction&lt;/h1&gt;Many common integration use cases include the lookup of  dynamic data at run-time from within a business process. Examples for  this include address data, an endpoint for an adapter (for example, the  URL for a web service or the location of a file), or the mapping from  the vocabulary in one domain to another vocabulary in a different  domain.&lt;br /&gt;These data share a common trait: they can change at any  time and must not be tied directly to the business process. In an ideal  scenario, an administrator can update the information in a console in  real-time without having to change any code and re-compile or re-deploy  the application. This scenario also offers improved performance and the  availability of the data across a cluster.&lt;br /&gt;The retrieval of dynamic data is achieved in Oracle WebLogic Integration (WLI) through an                                 &lt;a href="http://download.oracle.com/docs/cd/E14981_01/wli/docs1031/controls/controlsXMLMetadataMBeans.html"&gt;XML MetaData Cache Control&lt;/a&gt;,  which works on a key-value pair, where the key is a string and the  value is an XML document. The value is set by an administrator in the  WLI admin console and retrieved at run-time within a business process.&lt;br /&gt;The same can be achieved in Oracle SOA Suite with Domain  Value Maps (DVM) where dynamic data retrieval is only one possible use  case, but the one that is of specific interest for WLI users.&lt;br /&gt;This article introduces both concepts, and describes the use of Domain Value Maps in SOA Suite 11g in detail.&lt;br /&gt;In order to make this article less theoretical, a sample  is used to illustrate the usage of Domain Value Maps from within a BPEL  process. This sample explains step-by-step how to look up a file name  and location at run-time before a message is written to a file.&lt;br /&gt;The use case builds on a sample that was explained in                                 &lt;a href="http://www.oracle.com/technetwork/topics/soa/dynamic-endpoints-100390.html"&gt;Setting Web Service and JCA Adapter Endpoints Dynamically in Oracle SOA Suite&lt;/a&gt;, another article in the                                 &lt;a href="http://www.oracle.com/technetwork/articles/soa/index-085039.html"&gt;SOA Suite Essentials for WLI Users series&lt;/a&gt;. It is highly recommended to work through that article first before going through this use case.&lt;br /&gt;&lt;h1&gt;XML MetaData Cache Control in WLI&lt;/h1&gt;The                                 &lt;em&gt;WLI XML MetaData Cache Control&lt;/em&gt; is used for fast access to a managed set of key-value pairs. The key is of type                                 &lt;em&gt;string&lt;/em&gt; and the value contains                                 &lt;em&gt;XML data&lt;/em&gt;.&lt;br /&gt;These key-value pairs can be retrieved within a business process from the                                 &lt;em&gt;XML MetaData Cache&lt;/em&gt; through the                                 &lt;em&gt;get&lt;/em&gt; method of the control, where the                                 &lt;em&gt;key&lt;/em&gt; is the input parameter and the                                 &lt;em&gt;value&lt;/em&gt;  (the XML message) is the return parameter. The corresponding entries  can then be extracted from the XML message and used to set dynamic  control properties (or other dynamic data).&lt;br /&gt;An administrator manages the entries in the cache (                               &lt;em&gt;add&lt;/em&gt;,                                 &lt;em&gt;delete&lt;/em&gt;,                                 &lt;em&gt;update&lt;/em&gt;) through the WLI Administration Console without touching the process.&lt;br /&gt;The                                 &lt;em&gt;XML MetaData Cache&lt;/em&gt;  is a global, domain-wide cache. Data from the cache is made available  on a permanent basis throughout a cluster through file-based storage.&lt;br /&gt;For more information on the                                 &lt;em&gt;WLI XML MetaData Cache&lt;/em&gt;, please see                                 &lt;a href="http://download.oracle.com/docs/cd/E14981_01/wli/docs1031/controls/controlsXMLMetadataMBeans.html"&gt;XML MetaData Cache Control&lt;/a&gt; and                                 &lt;a href="http://download.oracle.com/docs/cd/E14981_01/wli/docs1031/adminhelp/xmlcache.html#wp1125283"&gt;XML Cache&lt;/a&gt; in                                 &lt;em&gt;Using the WebLogic Integration Administration Console&lt;/em&gt;.&lt;br /&gt;&lt;h1&gt;Domain Value Maps (DVM) in SOA Suite&lt;/h1&gt;The original intent of Domain Value Maps (DVM) in SOA  Suite was to map from one vocabulary, used in a given domain, to another  vocabulary used in a different domain. For example, one domain might  use a long name to represent a city (Boston) while another domain may  use a short name to represent the same city (BO). In such cases, you can  directly map the values by using DVMs. A direct mapping of values  between two or more domains is known as point-to-point mapping.&lt;br /&gt;Each DVM typically holds a specific category of mappings  among multiple applications. For example, one DVM might hold mappings  for city codes and another might hold mappings for state codes.&lt;br /&gt;&lt;strong&gt;Qualifiers&lt;/strong&gt; are supported in addition to  direct mapping. A mapping may not be valid unless qualified with  additional information. For example, a DVM containing city code to city  name mapping may have multiple mappings from                                  &lt;em&gt;KN&lt;/em&gt; to                                 &lt;em&gt;Kensington&lt;/em&gt;  because Kensington is a city in Canada as well as in the USA. So, this  mapping requires a qualifier (                               &lt;em&gt;USA&lt;/em&gt; or                                 &lt;em&gt;Canada&lt;/em&gt;) for validation.&lt;br /&gt;&lt;strong&gt;Multiple qualifiers&lt;/strong&gt; can also be specified. Qualifiers are used only to qualify the mappings and cannot be looked up.&lt;br /&gt;A                                 &lt;strong&gt;qualifier order&lt;/strong&gt;  is used to find the best match during lookup at runtime. The order of a  qualifier varies from highest to lowest depending on the role of the  qualifier in defining a more exact match. A state qualifier, for  example, can have a higher order than a country qualifier, as a matching  state indicates a more exact match.&lt;br /&gt;DVMs support hierarchical lookup. If a qualifier value is  specified during a lookup and no exact match is found, the lookup  mechanism tries to find a more generalized match by setting the higher  order qualifiers to a "". It proceeds until a match is found, or until a  match is not found with all qualifiers set to a "".&lt;br /&gt;One value in a DVM can also be mapped to multiple values (                               &lt;strong&gt;One-to-Many Mapping Support&lt;/strong&gt;). For example, a domain value map for                                 &lt;em&gt;Payment Terms&lt;/em&gt; can contain mapping of payment terms to three values, such as                                 &lt;em&gt;discount percentage&lt;/em&gt;,                                 &lt;em&gt;discount period&lt;/em&gt;, and                                 &lt;em&gt;total payment period&lt;/em&gt;.&lt;br /&gt;In addition to this vocabulary mapping, Domain Value Maps  can also be used to look up data at run-time, for example dynamic  properties for a J2EE Connector Architecture (JCA) Adapter.&lt;br /&gt;This lookup can be used within a BPEL process or a Mediator component for example before calling an adapter service.&lt;br /&gt;For additional information on DVMs, please see                                 &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/med_dvm.htm#insertedID0"&gt;Working with Domain Value Maps&lt;/a&gt; and                                 &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/med_dvm.htm#CACCEHFJ"&gt;Editing a Domain Value Map&lt;/a&gt;.&lt;br /&gt;&lt;h2&gt;JDeveloper and SOA Composer&lt;/h2&gt;DVMs can be created and edited in Oracle JDeveloper. For more details on this please see                                 &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/med_dvm.htm#CACDBJHD"&gt;Creating Domain Value Maps&lt;/a&gt;,                                 &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/med_dvm.htm#CACCEHFJ"&gt;Editing a Domain Value Map&lt;/a&gt;,                                 &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/med_dvm.htm#CBBGDIIE"&gt;Creating a Domain Value Map Use Case for Hierarchical Lookup&lt;/a&gt; and                                 &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/med_dvm.htm#CACIIDBB"&gt;Creating a Domain Value Map Use Case For Multiple Values&lt;/a&gt;.&lt;br /&gt;By using JDeveloper, the application has to be recompiled  and redeployed every time a change is made to the values in the DVM. In  order to avoid this, the SOA Composer offers support for editing DVMs  at runtime (starting from SOA Suite 11gR1 PS1).&lt;br /&gt;DVM Metadata can either be associated with one SOA composite, or it can be shared across different composites.&lt;br /&gt;The SOA Composer is an EAR file which is installed as  part of SOA installation. It offers complete functionality to manage  DVMs at runtime. You can view and edit a DVM in the Composer after it  has been created in JDeveloper. The second part of the SOA Suite use  case sample below will explain step-by-step how this is done.&lt;br /&gt;For more information, please see                                 &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/med_dvm_ui.htm"&gt;Using SOA Composer with Domain Value Maps&lt;/a&gt;.&lt;br /&gt;&lt;h1&gt;Use Case Example&lt;/h1&gt;The following sections will describe how dynamic  properties (file name and output directory) are retrieved at run-time in  a business process using the                                 &lt;em&gt;XML Meta DataCache Control&lt;/em&gt; for a file control in WLI, and using                                 &lt;em&gt;Domain Value Maps&lt;/em&gt; for a File Adapter in SOA Suite, .&lt;br /&gt;As mentioned, this can also be done in a Mediator  component. But a BPEL process was chosen here to show the similarities  to a business process in WLI.&lt;br /&gt;As always, it is assumed that readers are familiar with  the WLI concepts, so the WLI use case will not be described in much  detail. The focus will be on the implementation in SOA Suite, which will  be explained step-by-step.&lt;br /&gt;Please make sure you are familiar with the article                                 &lt;a href="http://www.oracle.com/technetwork/topics/soa/dynamic-endpoints-100390.html"&gt;Setting Web Service and JCA Adapter Endpoints Dynamically in Oracle SOA Suite&lt;/a&gt;, as this sample builds on the one that was implemented in that article.&lt;br /&gt;&lt;h2&gt;Implementing the Use Case in WLI&lt;/h2&gt;As explained in                                 &lt;a href="http://www.oracle.com/technetwork/topics/soa/dynamic-endpoints-100390.html"&gt;Setting Web Service and JCA Adapter Endpoints Dynamically in Oracle SOA Suite&lt;/a&gt;, a file control is used to write a file to a local directory.&lt;br /&gt;The WLI process is started by a                                 &lt;em&gt;Client Request Node&lt;/em&gt; which expects a customer XML document as input. An                                 &lt;em&gt;XML MetaData Cache control&lt;/em&gt; (                               &lt;em&gt;get file properties&lt;/em&gt; in Figure 1) is used to read the file directory and file name values. A                                 &lt;em&gt;transformation control&lt;/em&gt;  is used to create the properties for the file control. And finally, the  properties are set through the file control's                                  &lt;em&gt;setProperties()&lt;/em&gt; method. The file control's                                 &lt;em&gt;write method&lt;/em&gt; is then used to write the customer message to the file.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127216.jpg" width="309" /&gt;&lt;/div&gt;The                                 &lt;em&gt;XML MetaData Cache&lt;/em&gt; control operates on XML messages. The following schema will be used to retrieve the file control properties:&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version= '1.0' encoding= 'UTF-8' ?&amp;gt;&lt;br /&gt;&amp;lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&lt;br /&gt;&amp;nbsp;elementFormDefault="qualified" targetNamespace="http://demo/fileInfo"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;xmlns:fi="http://demo/fileInfo"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="fileInfo"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:element ref="fi:fileDirectory"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:element ref="fi:fileName"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/xs:element&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="fileName" type="xs:string"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="fileDirectory" type="xs:string"/&amp;gt;&lt;br /&gt;&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;&lt;br /&gt;The xml document used in the sample defines the file name and output directory for the file:&lt;br /&gt;&lt;br /&gt;&amp;lt;fi:fileInfoxmlns:dem="http://demo/Address"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;fi:fileDirectory&amp;gt;C:/files/output&amp;lt;/fi:fileDirectory&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;fi:fileName&amp;gt;customerTest.xml&amp;lt;/fi:fileName&amp;gt;&lt;br /&gt;&amp;lt;/fi:fileInfo&amp;gt;&lt;br /&gt;&lt;br /&gt;The process receives a customer document which includes an element key as part of the message:&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version= '1.0' encoding= 'UTF-8' ?&amp;gt;&lt;br /&gt;&amp;lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&lt;br /&gt;elementFormDefault="qualified" targetNamespace="http://demo/demoCustomer1"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;xmlns:cu="http://demo/demoCustomer1"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="customer"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:element ref="cu:key"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:element ref="cu:firstname"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:element ref="cu:lastname"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;xs:element ref="cu:address"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/xs:element&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="key" type="xs:string"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="firstname" type="xs:string"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="lastname" type="xs:string"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name="address" type="xs:string"/&amp;gt;&lt;br /&gt;&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;&lt;br /&gt;This element is extracted from the message and used as input to the XML MetaDataCache control.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Implementing the Use Case in SOA Suite&lt;/h2&gt;Domain Value Maps can be created in a SOA Composite  application of Oracle JDeveloper and used to look up dynamic data at  run-time.&lt;br /&gt;To create the SOA Application, Project, composite, BPEL  process and file adapter for this use case sample, please follow the  steps in the "Implementing the use case in SOA Suite" section of the  article                                 &lt;a href="http://www.oracle.com/technetwork/topics/soa/dynamic-endpoints-100390.html"&gt;Setting Web Service and JCA Adapter Endpoints Dynamically in Oracle SOA Suite&lt;/a&gt;, including the section "Change the File Adapter end point at run-time through the Properties tab of the Invoke activity".&lt;br /&gt;&lt;h3&gt;Create a new Domain Value Map (DVM) in JDeveloper&lt;/h3&gt;The DVM is created in                                 &lt;strong&gt;JDeveloper&lt;/strong&gt; initially. It can then be changed at any time in                                 &lt;strong&gt;SOA Composer&lt;/strong&gt;.&lt;br /&gt;The values in the DVM will be the property values for the  output directory and file name for a given customer. In order to  identify the right values, we will use the key element in the customer  schema.&lt;br /&gt;We will only create one set of values for the sample, but you can have any number of rows in the DVM with different key values.&lt;br /&gt;In the Application Navigator, right-click the                                 &lt;em&gt;DynamicEndpoints&lt;/em&gt; project and select                                 &lt;strong&gt;New&lt;/strong&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/124600.jpg" width="384" /&gt;&lt;/div&gt;Expand the                                 &lt;em&gt;SOA Tier&lt;/em&gt; node, and then select the                                 &lt;em&gt;Transformations&lt;/em&gt; category.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120838.jpg" width="561" /&gt;&lt;/div&gt;In the Items list, select                                 &lt;em&gt;Domain Value Map(DVM)&lt;/em&gt; and click                                 &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;The                                 &lt;em&gt;Create Domain Value Map(DVM)&lt;/em&gt; File dialog is displayed.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In the File Name field, enter the name of the domain value map file:                                   &lt;strong&gt;fileProperties.dvm&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;In the Description field, enter a description for the domain value map&lt;/li&gt;&lt;li&gt;Enter:                 &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Key&lt;/strong&gt; for the first Domain Name&lt;/li&gt;&lt;li&gt;&lt;strong&gt;1&lt;/strong&gt; for the first Domain Value                                     &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;FileDirectory&lt;/strong&gt; for the second Domain Name                                     &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;C:\files\output&lt;/strong&gt; or another output directory for the first Domain Value. Please make sure the chosen directory exists&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;Additional entries are added in the following step.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/124583.jpg" width="500" /&gt;&lt;/div&gt;Click OK&lt;br /&gt;The                                 &lt;em&gt;Domain Value Map(DVM) Editor&lt;/em&gt; is displayed:&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127210.jpg" width="587" /&gt;&lt;/div&gt;A file,                                 &lt;strong&gt;fileProperties.dvm&lt;/strong&gt;, gets created and appears in the                                 &lt;em&gt;Application Navigator&lt;/em&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/105923.jpg" width="238" /&gt;&lt;/div&gt;After you have created a DVM, you can edit it and make  adjustments to the presentation of data in the                                  &lt;em&gt;Domain Value Map Editor&lt;/em&gt;.&lt;br /&gt;All we need to do is add a column for "                               &lt;em&gt;FileName&lt;/em&gt;".&lt;br /&gt;Click on the green "+" to add a new                                 &lt;strong&gt;Domain&lt;/strong&gt;&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127250.jpg" width="458" /&gt;&lt;/div&gt;Enter "                               &lt;strong&gt;FileName&lt;/strong&gt;", and set the Qualifier to "                               &lt;em&gt;false&lt;/em&gt;"&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120805.jpg" width="300" /&gt;&lt;/div&gt;Click "OK"&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120822.jpg" width="558" /&gt;&lt;/div&gt;Add a new output file name in the                                 &lt;em&gt;Domain Value&lt;/em&gt; field.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/119754.jpg" width="558" /&gt;&lt;/div&gt;Save your changes.&lt;br /&gt;This concludes the creation of the initial DVM.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120868.jpg" width="558" /&gt;&lt;/div&gt;&lt;h2&gt;Assign the values from the DVM to the property values&lt;/h2&gt;Open the                                 &lt;em&gt;WriteCustomer&lt;/em&gt;  BPEL process that was created in a previous step. This BPEL process  includes an assign activity which hard codes the file adapter properties  to the string variables                                 &lt;em&gt;outputFolder&lt;/em&gt; and                                 &lt;em&gt;fileName&lt;/em&gt;.&lt;br /&gt;Instead of the two existing copy operations, we will  create new operations that lookup the values using the previously  created DVM and assign it to the property variable.&lt;br /&gt;Open the assign activity                                 &lt;em&gt;assignProperties&lt;/em&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/111647.jpg" width="420" /&gt;&lt;/div&gt;Delete the two                                 &lt;em&gt;copy operations&lt;/em&gt; in the activity.&lt;br /&gt;Create a new                                 &lt;em&gt;copy operation&lt;/em&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120844.jpg" width="489" /&gt;&lt;/div&gt;Choose                                 &lt;em&gt;Expression&lt;/em&gt; in the                                 &lt;em&gt;Type&lt;/em&gt; dropdown list on the left hand side and open the                                 &lt;em&gt;XPath Expression Builder&lt;/em&gt; by clicking on the little icon&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/117456.jpg" width="552" /&gt;&lt;/div&gt;Choose                                 &lt;em&gt;DVMFunctions&lt;/em&gt; in the                                 &lt;em&gt;Functions&lt;/em&gt; drop-down list on the lower right.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127180.jpg" width="517" /&gt;&lt;/div&gt;Choose the                                 &lt;em&gt;lookupValue1M&lt;/em&gt; function and hit                                 &lt;em&gt;Insert Into Expression&lt;/em&gt;.&lt;br /&gt;Please note that the usage and syntax of the function is described in the                                 &lt;em&gt;Description&lt;/em&gt; window.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126805.jpg" width="522" /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;The first parameter is the DVM file, enter "                                 &lt;strong&gt;fileProperties.dvm&lt;/strong&gt;"&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120845.jpg" width="526" /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;The second parameter is the name of the source column, please enter "                                 &lt;em&gt;Key&lt;/em&gt;"&lt;/li&gt;&lt;li&gt;The third parameter is the name of the source value,  which is the key value in our sample. We get the value of this  parameter from the element                                   &lt;em&gt;key&lt;/em&gt; in the customer variable (which is the input variable).&lt;/li&gt;&lt;li&gt;In the BPEL Variables window, please expand the variable                                   &lt;em&gt;inputVariable&lt;/em&gt; and choose the element                                   &lt;em&gt;key&lt;/em&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120787.jpg" width="510" /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Click the                                   &lt;em&gt;Insert Into Expression&lt;/em&gt; button&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/111791.jpg" width="518" /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;The last parameter is the target column name, "                                 &lt;em&gt;FileDirectory&lt;/em&gt;" in our case.&lt;/li&gt;&lt;/ul&gt;You can also choose more than one target column. The  output will be an XML fragment that includes all those values. But as we  want to assign one value to a string variable, we split this into two  copy operations.&lt;br /&gt;The DVM function now looks like this:&lt;br /&gt;&lt;div&gt;             &lt;pre&gt;dvm:lookupValue1M("fileProperties.dvm", "Key",&lt;br /&gt;bpws:getVariableData('inputVariable','payload','/ns2:customer/ns2:key&lt;br /&gt;'), "FileDirectory")&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120777.jpg" width="473" /&gt;&lt;/div&gt;Click                                 &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;Choose the property variable                                 &lt;em&gt;outputFolder&lt;/em&gt; on the right hand side.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120772.jpg" width="567" /&gt;&lt;/div&gt;Click                                 &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;If you see an error regarding the DVM function, it should go away once you click                                 &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;Repeat these steps to assign a value to the variable                                 &lt;em&gt;fileName&lt;/em&gt;&lt;br /&gt;The DVM function looks like this:&lt;br /&gt;&lt;div&gt;             &lt;pre&gt;dvm:lookupValue1M("fileProperties.dvm", "Key",&lt;br /&gt;bpws:getVariableData('inputVariable','payload','/ns2:customer/ns2:key&lt;br /&gt;'), "FileName")&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120794.jpg" width="566" /&gt;&lt;/div&gt;The assign activity should now look like this:&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/122008.jpg" width="419" /&gt;&lt;/div&gt;Click                                 &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;That's all you have to do to create the DVM lookup.&lt;br /&gt;The BPEL process looks like this:&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/119251.jpg" width="586" /&gt;&lt;/div&gt;Re-deploy the composite and test the BPEL process again.  Make sure the value of the key element is                                  &lt;strong&gt;1&lt;/strong&gt;.&lt;br /&gt;Check if the output directory and file name are the ones  you defined in the DVM and not the ones originally defined in the file  adapter.&lt;br /&gt;&lt;h2&gt;Change the Domain Value Map at runtime.&lt;/h2&gt;You might have to target the SOA Composer first as it is not targeted in development environments by default.&lt;br /&gt;To check if you can use the Composer, please log into Enterprise Manager (EM) at                                 &lt;span&gt;http://host_name:port/em&lt;/span&gt; where                                 &lt;em&gt;host_name&lt;/em&gt; is the name of the host on which Enterprise Manager is installed and                                 &lt;em&gt;port&lt;/em&gt; is the port number of your admin server. Enter weblogic/                               &lt;em&gt;password&lt;/em&gt; and click                                 &lt;strong&gt;Login&lt;/strong&gt;.&lt;br /&gt;Open the Application Deployments under                                 &lt;strong&gt;Farm_soaDomain&lt;/strong&gt;.&lt;br /&gt;If you don't see                                 &lt;em&gt;composer (serverName)&lt;/em&gt; as a deployed component, please follow the steps in the next section. If you can see it, please skip the next section.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127274.jpg" width="492" /&gt;&lt;/div&gt;&lt;h3&gt;Target SOA Composer in WebLogic Server administration console&lt;/h3&gt;Log into WLS console at http://host_name:port/console  where host_name is the name of the host and port is the port number of  your admin server.&lt;br /&gt;The console application is deployed on first access, which might take a few minutes.&lt;br /&gt;Click on                                 &lt;em&gt;Deployments&lt;/em&gt; in the Domain Structure on the left hand side.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120804.jpg" width="463" /&gt;&lt;/div&gt;The composer will be in state                                 &lt;em&gt;Installed&lt;/em&gt;. You have to target it and                                 &lt;em&gt;start&lt;/em&gt; it&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127208.jpg" width="549" /&gt;&lt;/div&gt;Click on                                 &lt;em&gt;composer&lt;/em&gt; and choose the tab                                 &lt;strong&gt;Targets&lt;/strong&gt;.&lt;br /&gt;Check the box left of                                 &lt;em&gt;composer&lt;/em&gt; and hit the                                 &lt;em&gt;Change Targets&lt;/em&gt; button.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/114860.jpg" width="488" /&gt;&lt;/div&gt;Check                                 &lt;em&gt;AdminServer&lt;/em&gt; and click                                 &lt;strong&gt;Yes&lt;/strong&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120853.jpg" width="520" /&gt;&lt;/div&gt;Go back to the deployments by clicking on                                 &lt;em&gt;Deployments&lt;/em&gt; in the                                 &lt;em&gt;Domain Structure&lt;/em&gt; on the left.&lt;br /&gt;Check the box in front of composer and click                                 &lt;em&gt;Start - Servicing all requests&lt;/em&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/119167.jpg" width="573" /&gt;&lt;/div&gt;After a while, the state will change to                                 &lt;em&gt;Active&lt;/em&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/108906.jpg" width="464" /&gt;&lt;/div&gt;Go back to                                 &lt;em&gt;Enterprise Manager&lt;/em&gt; and make sure the composer is now available under                                 &lt;em&gt;Application Deployment&lt;/em&gt;.&lt;br /&gt;&lt;h3&gt;View the previously created DVM in SOA Composer&lt;/h3&gt;Log into SOA Composer at                                 &lt;span&gt;http://host_name:port/soa/composer&lt;/span&gt; where                                 &lt;em&gt;host_name&lt;/em&gt; is the name of the host and                                 &lt;em&gt;port&lt;/em&gt; is the port number of your admin server.&lt;br /&gt;If there is a problem opening the Composer, make sure it's properly deployed and targeted (see previous step).&lt;br /&gt;Select                                 &lt;em&gt;Open DVM&lt;/em&gt; from the Open menu.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120846.jpg" width="390" /&gt;&lt;/div&gt;The                                 &lt;em&gt;Select a DVM to open&lt;/em&gt; dialog appears.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127257.jpg" width="523" /&gt;&lt;/div&gt;Choose                                 &lt;em&gt;fileProperties.dvm&lt;/em&gt; and click                                 &lt;strong&gt;Open&lt;/strong&gt;.&lt;br /&gt;The selected DVM opens in view mode.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/104797.jpg" width="432" /&gt;&lt;/div&gt;&lt;h3&gt;Edit the DVM in SOA Composer&lt;/h3&gt;By default, DVMs open in the view mode. For editing a DVM, you need to change the mode to                                 &lt;em&gt;edit session&lt;/em&gt; by clicking the                                 &lt;em&gt;Edit&lt;/em&gt; menu item.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120850.jpg" width="433" /&gt;&lt;/div&gt;The DVM opens in edit session.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127268.jpg" width="428" /&gt;&lt;/div&gt;Now you can:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Add&lt;/strong&gt; rows&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Edit&lt;/strong&gt; rows&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Delete&lt;/strong&gt; rows&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Add a new row to the DVM&lt;/h3&gt;Click                                 &lt;em&gt;Add Domain Values&lt;/em&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/115442.jpg" width="427" /&gt;&lt;/div&gt;The                                 &lt;em&gt;Add Domain Values&lt;/em&gt; dialog is displayed.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120821.jpg" width="408" /&gt;&lt;/div&gt;Enter the values using a different key than 1.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/106841.jpg" width="287" /&gt;&lt;/div&gt;Click                                 &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;The entered values are added to the DVM.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120854.jpg" width="409" /&gt;&lt;/div&gt;&lt;h3&gt;Edit a row in the DVM&lt;/h3&gt;Select the row that you want to edit.&lt;br /&gt;Click                                 &lt;em&gt;Edit Domain Values&lt;/em&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120807.jpg" width="409" /&gt;&lt;/div&gt;The                                 &lt;em&gt;Edit Domain Values&lt;/em&gt; dialog is displayed.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120856.jpg" width="410" /&gt;&lt;/div&gt;Edit the values as required and click                                 &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127271.jpg" width="408" /&gt;&lt;/div&gt;&lt;h3&gt;Save the DVM&lt;/h3&gt;Every time a DVM is opened in                                 &lt;em&gt;edit session&lt;/em&gt;,  a sandbox is created per DVM, per user. If you save your changes, the  changes are saved in your sandbox. For saving the changes, you must  click the                                 &lt;em&gt;Save&lt;/em&gt; menu item.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120773.jpg" width="409" /&gt;&lt;/div&gt;If your changes are saved successfully, you get a notification.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/115591.jpg" width="408" /&gt;&lt;/div&gt;You can also revert a DVM to the last saved state by clicking the Revert menu item.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127211.jpg" width="517" /&gt;&lt;/div&gt;A confirmation dialog is displayed.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120851.jpg" width="407" /&gt;&lt;/div&gt;Click                                 &lt;strong&gt;Yes&lt;/strong&gt; to revert your changes.&lt;br /&gt;&lt;h3&gt;Committing Changes at Runtime&lt;/h3&gt;You must commit the changes in order to save them  permanently. Once you commit the changes, runtime picks up the changes  and saves them in the MDS repository. In a session, you can save your  changes without committing them too. In such a case, the DVM remains in  the Saved state. You can reopen the DVM and commit the changes later.&lt;br /&gt;Click the                                 &lt;em&gt;Commit&lt;/em&gt; menu option.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120579.jpg" width="408" /&gt;&lt;/div&gt;A confirmation dialog is displayed.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120865.jpg" width="408" /&gt;&lt;/div&gt;Click                                 &lt;strong&gt;Yes&lt;/strong&gt; to commit your changes.&lt;br /&gt;After you've saved your changes, test the BPEL process again to make sure the changed values are used.&lt;br /&gt;&lt;h3&gt;Delete a row in DVM&lt;/h3&gt;Select the rows that you want to delete and click                                 &lt;em&gt;Delete Domain Values&lt;/em&gt;.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/115160.jpg" width="407" /&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127203.jpg" width="407" /&gt;&lt;/div&gt;&lt;h3&gt;Conflict Detection&lt;/h3&gt;SOA Composer detects the conflicts that can occur among  concurrent users. You will see a warning if you open a DVM that is being  edited by another user.&lt;br /&gt;However, if you still want to edit the DVM, click                                 &lt;strong&gt;Yes&lt;/strong&gt; and make the modifications.&lt;br /&gt;If the other user makes changes to the DVM and commits  the changes, you will see a warning if you attempt to commit your  changes:&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103383.jpg" width="399" /&gt;             &lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;If you click                                 &lt;strong&gt;Yes&lt;/strong&gt; and commit your changes, your changes will overwrite the changes made by the other user.&lt;br /&gt;&lt;h1&gt;Key Takeaways and Recommendations&lt;/h1&gt;The sample above illustrates how Domain Value Maps can be  used within a BPEL process or Mediator to look up dynamic data at  run-time and how the data can easily be changed by an administrator  without the need to move through the complete, rigorous IT re-deployment  process.&lt;br /&gt;Although this was not originally the intended use-case  for DVM, it provides a compelling and complete solution to the challenge  of migrating dynamic WLI behaviour.&lt;br /&gt;Domain Value Maps are simple to setup in JDeveloper  initially and to manage in production using Composer. Furthermore, the  administrator has simple production tooling for dynamically changing  application behaviour without the need for knowledge of XML.&lt;br /&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SOA Suite provides complete and integrated support for all WLI use cases and techniques&lt;/li&gt;&lt;li&gt;SOA Suite provides a mechanism for achieving dynamic lookup for applications that is analogous to that provided in WLI                 &lt;ul&gt;&lt;li&gt;Qualifiers enhance the power of dynamic lookup of runtime values&lt;/li&gt;&lt;li&gt;DVM integration reduces code complexity by enabling cleaner process models&lt;/li&gt;&lt;li&gt;SOA Composer enables lower operation cost allowing operations to focus on                                       &lt;em&gt;what&lt;/em&gt; to change, not on                                       &lt;em&gt;how&lt;/em&gt; to change XML&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;SOA Suite and DVM enable systematic reuse of dynamic  data across applications with DVM in SOA Suite composites (including  mediator and BPEL PM).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-946200253189707065?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/946200253189707065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=946200253189707065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/946200253189707065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/946200253189707065'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/dynamic-data-lookup-in-business-process.html' title='Dynamic Data Lookup in a Business Process'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-1304147421764477425</id><published>2011-09-08T07:51:00.000-07:00</published><updated>2011-09-08T07:56:19.309-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Oracle WebLogic Integration's Custom Control and SOA Suite Spring Component</title><content type='html'>(From &lt;a href="http://www.oracle.com/technetwork/topics/soa/wli-custom-control-spring-component-091819.html"&gt;http://www.oracle.com/technetwork/topics/soa/wli-custom-control-spring-component-091819.html&lt;/a&gt;)&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 24px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 24px; font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Custom Java code is an essential part of  every Oracle WebLogic Integration (WLI) business process (JPD).  Although most components of Oracle SOA Suite are XML-centric, Oracle is  adding support for Spring components to give the developer full Java  support and a powerful IOC container. The Spring components are  available since SOA Suite 11g PS2.&lt;br /&gt;This article explains how a Spring  component in SOA Suite provides the same functionality as a Custom  control in WLI. It uses the example of a logger component to describe  step-by-step how the Spring component is implemented and deployed.&lt;br /&gt;This article is intended for WLI developers and architects who want to get started with SOA Suite 11g.&lt;br /&gt;&lt;h2&gt;Custom Control in WLI&lt;/h2&gt;WLI uses a custom control to encapsulate  Java code (e.g. access to a resource or application functionality)  which can then be used in a WLI process (JPD) by dragging-and-dropping  the control method into the process.&lt;br /&gt;Users can build their own custom  controls that are based on the same framework on which system controls  are based. A user designs a custom control from the ground up, designing  its interface and implementation, and adding other controls as needed.&lt;br /&gt;&lt;h2&gt;Spring Component in SOA Suite&lt;/h2&gt;Oracle SOA Suite uses its Spring Java component to implement specific business logic in Java, without ever worrying about XML.&lt;br /&gt;Spring (see                                 &lt;a href="http://www.springsource.com/"&gt;SpringSource&lt;/a&gt;) is an IOC container (Inversion of Control; see                                 &lt;a href="http://martinfowler.com/articles/injection.html"&gt;Inversion of Control Containers and the Dependency Injection&lt;/a&gt;  by Martin Fowler) that allows dependency injection via configuration.  So while it presents a little overhead when exposing one JavaBean  without any dependencies, the more external components are needed, the  easier it becomes to use.                             &lt;br /&gt;While the main components of Oracle SOA  Suite are based on XML as data-exchange format, the goal of this  component is to allow seamless Java integration and hence the reuse of  Java components and skills. Once a component is implemented, it can be  subsequently exposed as service, and invoked from other components such  as BPEL.&lt;br /&gt;Using Java classes in a composite can be easily achieved through following a few steps.&lt;br /&gt;a) Create a                                 &lt;em&gt;Java interface&lt;/em&gt;, and expose the methods that should be publicly available.                             &lt;br /&gt;&lt;div&gt;&lt;pre&gt;public interface IInternalPartnerSupplier&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Get a price for a list of orderItems&lt;br /&gt;     * @param pOrderItems the list of orderitems&lt;br /&gt;     * @return the price&lt;br /&gt;     */&lt;br /&gt;    public double getPriceForOrderItemList(List&lt;orderitem&gt; pOrderItems)&lt;br /&gt;        throws InternalSupplierException;&lt;br /&gt;}&lt;br /&gt;&lt;/orderitem&gt;&lt;/pre&gt;&lt;/div&gt;b) Create an                                 &lt;em&gt;implementation&lt;/em&gt; of this interface.                             &lt;br /&gt;&lt;div&gt;&lt;pre&gt;public class InternalSupplierMediator implements IInternalPartnerSupplier&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Get the price for a list of orderItems and write the quote via&lt;br /&gt;     * injected reference&lt;br /&gt;     * @param pOrderItems the list of orderItems&lt;br /&gt;     * @return the price for the list of orderItems&lt;br /&gt;     */&lt;br /&gt;    @Override&lt;br /&gt;    public double getPriceForOrderItemList(List&lt;orderitem&gt; pOrderItems)&lt;br /&gt;        throws InternalSupplierException&lt;br /&gt;    {&lt;br /&gt;        // just return a default price - or do something else ..&lt;br /&gt;        return 0.0;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/orderitem&gt;&lt;/pre&gt;&lt;/div&gt;c) Create a                                 &lt;em&gt;spring component&lt;/em&gt;, which also gives you a                                 &lt;em&gt;spring context&lt;/em&gt;, and create a  bean, which describes the class created in Step b). Give it a name (so  it can be referenced) and declare the class.                             &lt;br /&gt;&lt;div&gt;&lt;pre&gt;&lt;bean class="com.otn.sample.fod.soa.internalsupplier.InternalSupplierMediator" id="InternalPartnerSupplierMediator" scope="prototype"&gt;&lt;br /&gt;&lt;/bean&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;d) Create an &lt;sca:service&gt; that  exposes a bean as a service. A component must have a service declared,  in order to be usable by other components' references.&lt;/sca:service&gt;&lt;br /&gt;&lt;div&gt;&lt;pre&gt;&lt;sca:service name="IInternalPartnerSupplier" target="InternalPartnerSupplierMediator" type="com.otn.sample.fod.soa.internalsupplier.IInternalPartnerSupplier"&gt;&lt;br /&gt;&lt;/sca:service&gt;&lt;/pre&gt;&lt;/div&gt;Once a spring component, including a  service, is created, it can be wired to any other component, as  illustrated in Figure 1, below.&lt;br /&gt;&lt;div&gt;&lt;img alt="Figure 1" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/125754.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 1&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Use case example: a simple logging component&lt;/h2&gt;A very common example of a WLI Custom  Control is a custom logger which is used at certain points in a process.  In this case, we will log the name of the process, the instance ID and a  log message.&lt;br /&gt;&lt;h3&gt;Implementing the use case in WLI&lt;/h3&gt;This use case is not described in great  detail as it is assumed that the audience knows how to create and use  custom controls in WLI. The focus area is the Spring component in SOA  Suite.&lt;br /&gt;The logger control in WLI consists of two java files:&lt;br /&gt;The interface class                                 &lt;em&gt;LoggerControl.java&lt;/em&gt;                             &lt;br /&gt;&lt;div&gt;&lt;pre&gt;package sample.oracle.otn.soaessentials.javainteg.controls;&lt;br /&gt;/**&lt;br /&gt; * Simple logger interface&lt;br /&gt; * @author simone.geib@oracle.com&lt;br /&gt; * @author clemens.utschig@oracle.com&lt;br /&gt; */&lt;br /&gt;import org.apache.beehive.controls.api.bean.ControlInterface;&lt;br /&gt;&lt;br /&gt;@ControlInterface&lt;br /&gt;public interface LoggerControl {&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Implementation of the log method&lt;br /&gt;     * @param pProcessName the name of the originating process&lt;br /&gt;     * @param pInstanceId the instanceID&lt;br /&gt;     * @param pMessage the message to be logged to std.out&lt;br /&gt;     * @see sample.oracle.otn.soaessentials.javainteg.ILoggerComponent#log&lt;br /&gt;     */&lt;br /&gt;    public void log (String pProcessName, String pInstanceId, String pMessage);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;The implementation                                 &lt;em&gt;LoggerControlImpl.java&lt;/em&gt;                             &lt;br /&gt;&lt;div&gt;&lt;pre&gt;package sample.oracle.otn.soaessentials.javainteg.controls;&lt;br /&gt;import org.apache.beehive.controls.api.bean.ControlImplementation;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;/**&lt;br /&gt; * Implementation of a simple logger component&lt;br /&gt; * @see sample.oracle.otn.soaessentials.javainteg.ILoggerComponent&lt;br /&gt; * @author simone.geib@oracle.com&lt;br /&gt; * @author clemens.utschig@oracle.com&lt;br /&gt; */&lt;br /&gt;@ControlImplementation&lt;br /&gt;public class LoggerControlImpl implements LoggerControl, Serializable {&lt;br /&gt; private static final long serialVersionUID = 1L;&lt;br /&gt; &lt;br /&gt;    /**&lt;br /&gt;     * Implementation of the log method&lt;br /&gt;     * @param pProcessName the name of the originating process&lt;br /&gt;     * @param pInstanceId the instanceID&lt;br /&gt;     * @param pMessage the message to be logged to std.out&lt;br /&gt;     * @see sample.oracle.otn.soaessentials.javainteg.ILoggerComponent#log&lt;br /&gt;     */&lt;br /&gt;    public void log(String pProcessName, String pInstanceId, String pMessage)&lt;br /&gt;    {  &lt;br /&gt;       StringBuffer logBuffer = new StringBuffer ();&lt;br /&gt;       logBuffer.append("[").append(pProcessName).append("] [Instance: ").&lt;br /&gt;        append(pInstanceId).append("] ").append(pMessage);&lt;br /&gt; &lt;br /&gt;       System.out.println(logBuffer.toString());&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;Figure 2 shows the logging control in a JPD Data Palette.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/117807.jpg" width="408" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 2&lt;/div&gt;&lt;/div&gt;Figure 3 shows the use of the logging control in a JPD&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/123391.jpg" width="145" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 3&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Implementing the use case in SOA Suite&lt;/h3&gt;&lt;br /&gt;In this section, we will create a simple  logging component that can be used from other components, such as BPEL  Process Manager or Mediator, to log messages, including the originating  instance ID, to standard out.&lt;br /&gt;&lt;h4&gt;Creating the Spring Component&lt;/h4&gt;To get started, create a new                                 &lt;em&gt;Application&lt;/em&gt; in JDeveloper, name it "                               &lt;em&gt;SOASuiteWLIEssentials&lt;/em&gt;"...                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120666.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 4&lt;/div&gt;&lt;/div&gt;And create a new Project named "                               &lt;em&gt;JavaIntegration&lt;/em&gt;".                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/118823.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 5&lt;/div&gt;&lt;/div&gt;Click "                               &lt;em&gt;Finish&lt;/em&gt;."                             &lt;br /&gt;Create a new                                 &lt;em&gt;Java Package&lt;/em&gt; "                               &lt;em&gt;sample.oracle.otn.soaessentials.javainteg&lt;/em&gt;" (this requires several steps).                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103493.jpg" width="583" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 6&lt;/div&gt;&lt;/div&gt;Create a new                                 &lt;em&gt;Java Interface&lt;/em&gt;, named "                               &lt;em&gt;ILoggerComponent&lt;/em&gt;" in the "                               &lt;em&gt;sample.oracle.otn.soaessentials.javainteg&lt;/em&gt;" package.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/109674.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126129.jpg" width="401" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 8&lt;/div&gt;&lt;/div&gt;Add a new                                 &lt;em&gt;method&lt;/em&gt; to the interface, named "                               &lt;em&gt;log&lt;/em&gt;", with parameters for the originating component, the instance ID, and the message.                             &lt;br /&gt;&lt;div&gt;&lt;pre&gt;package sample.oracle.otn.soaessentials.javainteg;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Simple logger interface&lt;br /&gt; * @author simone.geib@oracle.com&lt;br /&gt; * @author clemens.utschig@oracle.com&lt;br /&gt; */&lt;br /&gt;public interface ILoggerComponent&lt;br /&gt;{&lt;br /&gt;   &lt;br /&gt;    /**&lt;br /&gt;     * Log a message, including the originating component, its instance id and&lt;br /&gt;     * a message.&lt;br /&gt;     * @param pComponentName the name of the component that sends this log msg&lt;br /&gt;     * @param pInstanceId the instanceId of the component instance&lt;br /&gt;     * @param pMessage the message to be logged&lt;br /&gt;     */&lt;br /&gt;    public void log (String pComponentName,&lt;br /&gt;                     String pInstanceId, String pMessage);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103471.jpg" width="638" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 9&lt;/div&gt;&lt;/div&gt;Create a                                 &lt;em&gt;Java class&lt;/em&gt; ("                               &lt;em&gt;LoggerComponentImpl&lt;/em&gt;") from the interface "                               &lt;em&gt;ILoggerComponent&lt;/em&gt;".                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103479.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 10&lt;/div&gt;&lt;/div&gt;Name the class and click on the plus sign to find the interface on which to base the class.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103501.jpg" width="427" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/117890.jpg" width="428" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120598.jpg" width="429" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 13&lt;/div&gt;&lt;/div&gt;This is the implementation of the logging component:&lt;br /&gt;&lt;div&gt;&lt;pre&gt;package sample.oracle.otn.soaessentials.javainteg.impl;&lt;br /&gt;&lt;br /&gt;import sample.oracle.otn.soaessentials.javainteg.ILoggerComponent;&lt;br /&gt;&lt;br /&gt;package sample.oracle.otn.soaessentials.javainteg.impl;&lt;br /&gt;&lt;br /&gt;import sample.oracle.otn.soaessentials.javainteg.ILoggerComponent;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Implementation of a simple logger component&lt;br /&gt; * @see sample.oracle.otn.soaessentials.javainteg.ILoggerComponent&lt;br /&gt; * @author simone.geib@oracle.com&lt;br /&gt; * @author clemens.utschig@oracle.com&lt;br /&gt; */&lt;br /&gt;public class LoggerComponentImpl implements ILoggerComponent&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Implementation of the log method&lt;br /&gt;     * @param pComponentName the name of the orginating component&lt;br /&gt;     * @param pInstanceId the instanceid&lt;br /&gt;     * @param pMessage the message to be logged to std.out&lt;br /&gt;     * @see sample.oracle.otn.soaessentials.javainteg.ILoggerComponent#log&lt;br /&gt;     */&lt;br /&gt;    @Override&lt;br /&gt;    public void log(String pComponentName, String pInstanceId,&lt;br /&gt;                    String pMessage)&lt;br /&gt;    {&lt;br /&gt;        StringBuffer logBuffer = new StringBuffer ();&lt;br /&gt;        logBuffer.append("[").append(pComponentName).append("] [Instance: ").&lt;br /&gt;            append(pInstanceId).append("] ").append(pMessage);&lt;br /&gt;        &lt;br /&gt;        System.out.println(logBuffer.toString());&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;In the next few steps, we will create a new                                 &lt;em&gt;Spring&lt;/em&gt; context ("logger-context.xml"), define a                                 &lt;em&gt;Spring&lt;/em&gt; bean ("logger"), and expose the bean as a                                 &lt;em&gt;service&lt;/em&gt; ("logService").                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/108691.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/105360.jpg" width="575" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 15&lt;/div&gt;&lt;/div&gt;Next, drag a                                 &lt;em&gt;bean&lt;/em&gt; from the                                 &lt;em&gt;Component Palette&lt;/em&gt;...                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103524.jpg" width="228" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 16&lt;/div&gt;&lt;/div&gt;Onto the the                                 &lt;em&gt;spring context canvas&lt;/em&gt;.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103533.jpg" width="284" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 17&lt;/div&gt;&lt;/div&gt;Name it "logger" and declare a class attribute pointing to the implementation.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103833.jpg" width="636" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 18&lt;/div&gt;&lt;/div&gt;Now the bean can be exposed as an                                 &lt;em&gt;SCA service&lt;/em&gt;.                             &lt;br /&gt;To do so, change the drop-down in the component palette to "                               &lt;em&gt;Spring 2.5 SCA&lt;/em&gt;" and drag a "                               &lt;em&gt;service&lt;/em&gt;" onto the canvas.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/109771.jpg" width="250" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 19&lt;/div&gt;&lt;/div&gt;Give the service the name "                               &lt;em&gt;logService&lt;/em&gt;". Its target will be the "                               &lt;em&gt;logger&lt;/em&gt;" bean.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103497.jpg" width="398" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 20&lt;/div&gt;&lt;/div&gt;Finally, pick the type, which is the interface of the                                 &lt;em&gt;LoggerComponent&lt;/em&gt; class ("                               &lt;em&gt;sample.oracle.otn.soaessentials.javainteg.ILoggerComponent&lt;/em&gt;").                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103522.jpg" width="398" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/117799.jpg" width="398" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 22&lt;/div&gt;&lt;/div&gt;The completed spring context looks like this:&lt;br /&gt;&lt;div&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="windows-1252" ?&amp;gt;&lt;br /&gt;&amp;lt;beans xmlns="http://www.springframework.org/schema/beans"&lt;br /&gt;       xmlns:util="http://www.springframework.org/schema/util"&lt;br /&gt;       xmlns:jee="http://www.springframework.org/schema/jee"&lt;br /&gt;       xmlns:lang="http://www.springframework.org/schema/lang"&lt;br /&gt;       xmlns:aop="http://www.springframework.org/schema/aop"&lt;br /&gt;       xmlns:tx="http://www.springframework.org/schema/tx"&lt;br /&gt;       xmlns:sca="http://xmlns.oracle.com/weblogic/weblogic-sca"&amp;gt;&lt;br /&gt;  &amp;lt;!-- expose the logger bean as service --&amp;gt;&lt;br /&gt;  &amp;lt;sca:service name="logService" target="logger"&lt;br /&gt;               type="sample.oracle.otn.soaessentials.javainteg.ILoggerComponent"/&amp;gt;&lt;br /&gt;  &amp;lt;!-- declaration of the logger bean --&amp;gt;&lt;br /&gt;  &amp;lt;bean name="logger"&lt;br /&gt;    class="sample.oracle.otn.soaessentials.javainteg.impl.LoggerComponentImpl"/&amp;gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;Create a new composite and name it "                               &lt;em&gt;JavaIntegration&lt;/em&gt;".                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/109803.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 23&lt;/div&gt;&lt;/div&gt;Use the "create with                                 &lt;em&gt;BPEL Process&lt;/em&gt;" option and name the process "                               &lt;em&gt;BPELProcessWithLogger&lt;/em&gt;". Leave the rest with default settings.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/118200.jpg" width="402" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/104129.jpg" width="605" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 25&lt;/div&gt;&lt;/div&gt;Figure 26, below, shows the newly created BPEL process with a receive and a callback activity.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120496.jpg" width="605" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 26&lt;/div&gt;&lt;/div&gt;Switch back to the composite view, and drag a "                               &lt;em&gt;Spring Context&lt;/em&gt;" onto the                                 &lt;em&gt;composite canvas&lt;/em&gt;. Name it "                               &lt;em&gt;logger-context&lt;/em&gt;" and pick the spring context you created earlier.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121903.jpg" width="570" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120819.jpg" width="570" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 28&lt;/div&gt;&lt;/div&gt;Compile the Java classes so you can create a valid WSDL definition that can be used from within a BPEL process.&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/126074.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 29&lt;/div&gt;&lt;/div&gt;Drag the service of the spring component over to the BPEL process. This will create a                                 &lt;em&gt;wsdl&lt;/em&gt; and a                                 &lt;em&gt;partnerlink&lt;/em&gt; in the process.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/121631.jpg" width="405" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/123866.jpg" width="617" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 31&lt;/div&gt;&lt;/div&gt;Next, drag an                                 &lt;em&gt;invoke&lt;/em&gt; activity from the                                 &lt;em&gt;component palette&lt;/em&gt; onto the                                 &lt;em&gt;BPEL canvas&lt;/em&gt;. This will be used to invoke the                                 &lt;em&gt;log()&lt;/em&gt; method on the log service created earlier.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103518.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 32&lt;/div&gt;&lt;/div&gt;Wire                                 &lt;em&gt;invoke&lt;/em&gt; to the                                 &lt;em&gt;partnerlink&lt;/em&gt; for the logger service.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/109293.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 33&lt;/div&gt;&lt;/div&gt;Create                                 &lt;em&gt;input&lt;/em&gt; and                                 &lt;em&gt;output variables&lt;/em&gt;. They will be used later to                                 &lt;em&gt;assign&lt;/em&gt; the values for                                 &lt;em&gt;component name&lt;/em&gt;,                                 &lt;em&gt;component instance id&lt;/em&gt; and a                                 &lt;em&gt;log&lt;/em&gt; message.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/105056.jpg" width="425" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 34&lt;/div&gt;&lt;/div&gt;With the finished                                 &lt;em&gt;invoke&lt;/em&gt; activity, the process should resemble Figure 35, below.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/127436.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 35&lt;/div&gt;&lt;/div&gt;In order to populate the created variables, drag an                                 &lt;em&gt;assign&lt;/em&gt; activity from the palette onto the BPEL process.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/119357.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 36&lt;/div&gt;&lt;/div&gt;In the next three steps you will create the necessary                                 &lt;em&gt;copy&lt;/em&gt; rules to populate the input variable.                             &lt;br /&gt;Double-click the                                 &lt;em&gt;assign&lt;/em&gt; activity and add a                                 &lt;em&gt;copy&lt;/em&gt; operation to assign the                                 &lt;em&gt;component name&lt;/em&gt; to the first parameter.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103536.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 37&lt;/div&gt;&lt;/div&gt;Add another                                 &lt;em&gt;copy&lt;/em&gt; operation to assign the                                 &lt;em&gt;process instance id&lt;/em&gt; to the second parameter.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/122408.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 38&lt;/div&gt;&lt;/div&gt;Add a third                                 &lt;em&gt;copy&lt;/em&gt; operation to assign a                                 &lt;em&gt;message&lt;/em&gt; to the third parameter.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/112655.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 39&lt;/div&gt;&lt;/div&gt;Make sure the                                 &lt;em&gt;assign&lt;/em&gt; activity contains all three copy rules.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/105090.jpg" width="432" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 40&lt;/div&gt;&lt;/div&gt;Once all the copy rules have been built, the process should resemble Figure 41, below, with an initial                                 &lt;em&gt;receive&lt;/em&gt;, the                                 &lt;em&gt;assign&lt;/em&gt; for the log message values, followed by an                                 &lt;em&gt;invoke&lt;/em&gt; of the log service's log method, and finally, a                                 &lt;em&gt;callback&lt;/em&gt;, implemented via                                 &lt;em&gt;invoke&lt;/em&gt;.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103556.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 41&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;Deploying the SOA Composite&lt;/h4&gt;The next step is to deploy the composite with Oracle JDeveloper. Please make sure that your SOA server is running.&lt;br /&gt;Please check                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/sca_lifecycle.htm#CACBGDCG"&gt;Section 43&lt;/a&gt; in                                 &lt;strong&gt;Deploying SOA Composite Applications&lt;/strong&gt;  to learn how to deploy SOA composite applications with Oracle  JDeveloper and scripting tools and create configuration plans that  enable you to move SOA composite applications to and from development,  test, and production environments.                             &lt;br /&gt;Please check                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10226/soacompapp_deploy.htm#CHDDFEGH"&gt;Section 5&lt;/a&gt; in                                 &lt;strong&gt;Deploying SOA Composite Applications&lt;/strong&gt;  to learn how to deploy, redeploy, and undeploy a SOA composite  application from Oracle Enterprise Manager Fusion Middleware Control  Console.                             &lt;br /&gt;When deploying the composite from within JDeveloper, the log should look similar to the one below:&lt;br /&gt;&lt;div&gt;&lt;pre&gt;[06:15:55 AM] ----  Deployment started.  ----&lt;br /&gt;[06:15:55 AM] Target platform is  (Weblogic 10.3).&lt;br /&gt;[06:15:55 AM] Running dependency analysis...&lt;br /&gt;[06:15:55 AM] Building...&lt;br /&gt;[06:16:11 AM] Deploying profile...&lt;br /&gt;[06:16:11 AM] Updating revision id for the SOA Project 'JavaIntegration.jpr' to '1.0'..&lt;br /&gt;[06:16:12 AM] Wrote Archive Module to C:\JDeveloper\mywork\SDOStuff\JavaIntegration\&lt;br /&gt;              deploy\sca_JavaIntegration_rev1.0.jar&lt;br /&gt;[06:16:12 AM] Deploying sca_JavaIntegration_rev1.0.jar to soa_server1 &lt;br /&gt;              [sta00251.us.oracle.com:8001] &lt;br /&gt;[06:16:12 AM] Processing sar=/C:/JDeveloper/mywork/SDOStuff/JavaIntegration/deploy/&lt;br /&gt;              sca_JavaIntegration_rev1.0.jar&lt;br /&gt;[06:16:12 AM] Adding sar file - C:\JDeveloper\mywork\SDOStuff\JavaIntegration\deploy\&lt;br /&gt;              sca_JavaIntegration_rev1.0.jar&lt;br /&gt;[06:16:12 AM] Preparing to send HTTP request for deployment&lt;br /&gt;[06:16:12 AM] Creating HTTP connection to host:sta00251.us.oracle.com, port:8001&lt;br /&gt;[06:16:13 AM] Sending internal deployment descriptor&lt;br /&gt;[06:16:13 AM] Sending archive - sca_JavaIntegration_rev1.0.jar&lt;br /&gt;[06:16:41 AM] Received HTTP response from the server, response code=200&lt;br /&gt;[06:16:41 AM] Successfully deployed archive sca_JavaIntegration_rev1.0.jar to &lt;br /&gt;              soa_server1 [sta00251.us.oracle.com:8001] &lt;br /&gt;[06:16:41 AM] Elapsed time for deployment:  46 seconds&lt;br /&gt;[06:16:41 AM] ----  Deployment finished.  ----&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4&gt;Testing the BPEL Process&lt;/h4&gt;After successful deployment, you can  initiate the composite service through Oracle Enterprise Manager Fusion  Middleware Control Console (Enterprise Manager).&lt;br /&gt;To log in to Enterprise Manager, use  Internet Explorer 7, Mozilla Firefox 2.0.0.2, or Firefox 3.0.x to access  the following URL:                                 &lt;code&gt;http://host_name:port/em&lt;/code&gt;. (Where                                 &lt;em&gt;host_name&lt;/em&gt; is the name of the host on which Enterprise Manager is installed and                                 &lt;em&gt;port&lt;/em&gt; is a number that is dynamically set during installation.)                             &lt;br /&gt;Enter                                 &lt;em&gt;weblogic/password&lt;/em&gt; and click                                 &lt;em&gt;Login&lt;/em&gt;.                             &lt;br /&gt;Please check                                 &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10226/gettingstarted.htm#BEIDGGAD"&gt;Getting Started with Administering Oracle SOA Suite&lt;/a&gt; for more information.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/103465.jpg" width="480" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 42&lt;/div&gt;&lt;/div&gt;Locate the                                 &lt;em&gt;JavaIntegration&lt;/em&gt; composite on the EM dashboard and click on it. This will get you to the composite homepage:                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/114206.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 43&lt;/div&gt;&lt;/div&gt;Once on the page, you can                                 &lt;em&gt;test&lt;/em&gt; a composite service.                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/116679.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 44&lt;/div&gt;&lt;/div&gt;Fill in "                               &lt;em&gt;clemens&lt;/em&gt;" as input and click "                               &lt;em&gt;Test Web Service&lt;/em&gt;"                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/115633.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 45&lt;/div&gt;&lt;/div&gt;Once the instance is created, you can click on the                                 &lt;em&gt;Launch Message Flow Trace&lt;/em&gt; which will get you to the composite instance:                             &lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/120978.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 46&lt;/div&gt;&lt;/div&gt;You can check the BPEL instance flow as well, which will show you the actual message that was passed to the spring component:&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/108453.jpg" width="640" /&gt;                                 &lt;br /&gt;&lt;div&gt;Figure 47&lt;/div&gt;&lt;/div&gt;Check the standard output of the server, that hosts the soa suite. It should show an entry similar to the one below:&lt;br /&gt;&lt;div&gt;&lt;pre&gt;==&amp;gt; CubeEngine deploy BPELProcessWithLogger took 4 seconds&lt;br /&gt;INFO: DeploymentEventPublisher.invoke Publishing deploy event for &lt;br /&gt;default/JavaIntegration!1.0*c39dc7a2-5031-424e-9ae0-aeec949769b3&lt;br /&gt;[BPELProcessWithLogger] [Instance: 20009] Got input: clemens&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2&gt;Download the complete project&lt;/h2&gt;A zip file contiaining the complete project, including the java sources and the composite, is available for download:                               &lt;a href="http://www.oracle.com/technetwork/topics/soa/wli-soaessentials-javaintegration-s-129268.zip"&gt;wli-soaessentials-JavaIntegration-source.zip&lt;/a&gt;.                               To open it in JDeveloper, create a new Application, and then open the project file (JavaIntegration.jpr)&lt;br /&gt;&lt;h2&gt;Key Takeaways and Recommendations&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Java can be seamlessly embedded into the composite / xml based world.&lt;/li&gt;&lt;li&gt;Multiple Java beans can be easily  exposed as services, or get external references injected - just by  declaring, and later wiring them.&lt;/li&gt;&lt;li&gt;No need to code around XML, inside the Spring component - it's POJOs.&lt;/li&gt;&lt;/ul&gt;In order to create reusable entities and  beans, a spring context can be packaged and deployed itself, without  composite, into the WebLogic Server, and beans can be exposed as EJBs /  webservices.&lt;br /&gt;This makes it very easy to create  reusable Java components that can be used from within a BPEL process or a  Mediator component in the same way as a WLI JPD uses custom controls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-1304147421764477425?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/1304147421764477425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=1304147421764477425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/1304147421764477425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/1304147421764477425'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/oracle-weblogic-integrations-custom.html' title='Oracle WebLogic Integration&apos;s Custom Control and SOA Suite Spring Component'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-5674697909116696521</id><published>2011-09-07T12:59:00.000-07:00</published><updated>2011-09-07T13:01:00.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Coherence'/><title type='text'>Clustered Caching with Tangosol Coherence</title><content type='html'>(From &lt;a href="http://mdavey.wordpress.com/2007/01/16/clustered-caching-with-tangosol-coherence/"&gt;http://mdavey.wordpress.com/2007/01/16/clustered-caching-with-tangosol-coherence/&lt;/a&gt;)&lt;br /&gt;&amp;nbsp;Below, in no particular order are a few items worth noting about Tangosol:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When installing Tangosol, make sure all the nodes are running the same version &lt;/li&gt;&lt;li&gt;Don’t use any classes in the component.net packages – Coherence was build with its own development environment, compiler etc. component.net contains these internal components. &lt;/li&gt;&lt;li&gt;BetFair a few years ago had 80 nodes running Tangosol Coherence. The largest installation today is around 1000 nodes. &lt;/li&gt;&lt;li&gt;Coherence uses TCMP (UDP based) protocol for data movement &lt;/li&gt;&lt;li&gt;From an installation perspective, 5 machines is probably the minimum requirement. Lots of RAM for each machine, installed across different racks to reduce the risk. The more machines the Coherence cluster contains, the lower the risk. &lt;/li&gt;&lt;li&gt;All machines in the cluster should be configured with identical config files, network settings, NIC’s (full/half duplex) etc. &lt;/li&gt;&lt;li&gt;Multi-cast disconnect issues can be as simple as a miss-configured router. &lt;/li&gt;&lt;li&gt;Production checklist &lt;/li&gt;&lt;li&gt;Near Topology (near-*) &lt;/li&gt;&lt;li&gt;During development set TTL=0 and changing the group address and port. &lt;/li&gt;&lt;li&gt;Client that come/go from the Coherence cluster should set local storage=false, while cluster servers should set local storage=true &lt;/li&gt;&lt;li&gt;NamedCache.putAll is far more efficient that put since it can reduce network hops. &lt;/li&gt;&lt;li&gt;Prior to cluster usage, run the multicast test for 24 hours. &lt;/li&gt;&lt;li&gt;Use Ethereal or similar to monitor the network to help identify unreliable sockets and NIC configuration issues. &lt;/li&gt;&lt;li&gt;Java serialization can be a performance bottleneck, consider using Coherence’s ExternalizableLite and its helper, ExternalizableHelper. Externalizable offers reduced GC and ~6x speed improvement. &lt;/li&gt;&lt;li&gt;High ticking volumns can cause problems for any application. In the case of Tangosol, and caching ticks, one possible solution is to queue the incoming ticks, and use a thread pool to insert the ticks into the cache. &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Tangosol Coherence as its simplest:&lt;/div&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;import java.io.IOException;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;import java.util.Date;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;import com.tangosol.net.CacheFactory;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;import com.tangosol.net.Cluster;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;import com.tangosol.net.NamedCache;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;public class firstExample {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; public static void main(String[] args) throws IOException {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cluster cluster = CacheFactory.ensureCluster();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(cluster);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NamedCache myCache = CacheFactory.getCache(“test”);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object existingVale = myCache.put(“message”, “someMesasge “ + new Date());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(“Existing Val :” + existingVale);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object val = myCache.get(“message”);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(“Val :” + val);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(“Press any key”);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.in.read();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}finally {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CacheFactory.shutdown();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-5674697909116696521?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/5674697909116696521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=5674697909116696521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5674697909116696521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/5674697909116696521'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/clustered-caching-with-tangosol.html' title='Clustered Caching with Tangosol Coherence'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-2622041970582940498</id><published>2011-09-07T12:27:00.000-07:00</published><updated>2011-09-07T12:31:23.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Coherence'/><title type='text'>Getting started with Tangosol Coherence</title><content type='html'>(From &lt;a href="http://www.javalobby.org/java/forums/t78008.html"&gt;http://www.javalobby.org/java/forums/t78008.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;This tip will get you started with Coherence so you can see how easy it is to begin to use in your applications for caching data within a cluster. &lt;br /&gt;&lt;br /&gt;Grab a download of Coherence and unzip it, say into a directory called tangosol &lt;br /&gt;&lt;br /&gt;Run the &lt;strong&gt;cache-server.cmd&lt;/strong&gt; located in the tangosol/bin directory (replace the .cmd with .sh if you're running on *NIX). This starts a cache server which is storage enabled - the storage enabled bit simply means that this member within the cluster will store data. &lt;br /&gt;&lt;br /&gt;Compile and run the below little program, it puts a couple of entries into a cache. It then gets their values out, along with a couple entries which don't currently exist in the cache. &lt;br /&gt;&lt;br /&gt;The only JARs you need to reference are tangosol.jar and coherence.jar in the tangosol/lib directory. &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;import com.tangosol.net.CacheFactory;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;import com.tangosol.net.NamedCache;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;public class Tip1 {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; public static void main(String[] args) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NamedCache cache = CacheFactory.getCache("people");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String key1 = "dave";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cache.put(key1, new Long(36));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String key2 = "jenny";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cache.put(key2, new Long(25));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String key3 = "stan";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String key4 = "jane";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(key1 + "=" + cache.get(key1));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(key2 + "=" + cache.get(key2));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(key3 + "=" + cache.get(key3));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(key4 + "=" + cache.get(key4));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next run &lt;strong&gt;coherence.cmd&lt;/strong&gt; in the tangosol/bin . This starts a nice little command-line application which allows you to explore some of Coherence's functionality without writing any programs. &lt;br /&gt;&lt;br /&gt;At the Coherence command-line application's prompt type cache people - this just tells the command-line application that we want to manipulate the people cache. Some XML should have been displayed for the default distributed cache. The distributed cache is nowadays referred to as a 'partitioned cache' to better describe what it is actually doing with the data within the cluster. &lt;br /&gt;&lt;br /&gt;Type get dave and press enter, you should see the value for Dave. &lt;br /&gt;Next type put stan 55 and press enter, then put jane 40 . This will put two new entries into the cache using the Coherence command-line application. &lt;br /&gt;Run the Tip1 application again and you should now see values for Stan and Jane. &lt;br /&gt;From the Coherence command-line application, type remove stan . &lt;br /&gt;Running the Tip1 application will show that Stan no longer has an entry. &lt;br /&gt;&lt;br /&gt;To remove an entry using Java code simply use cache.remove(key) . As you might have noticed by now, it all seems very Map like - it is, because Coherence's NamedCache interface extends from interfaces which extend from java.util.Map. &lt;br /&gt;&lt;br /&gt;For a bit of fun, start another &lt;strong&gt;cache-server.cmd&lt;/strong&gt; and from Coherence command-line application type: get jane . You'll see no difference from before, the value will be displayed. &lt;br /&gt;&lt;br /&gt;Now, kill the first instance of the &lt;strong&gt;cache-server.cmd&lt;/strong&gt; and from the Coherence command-line application type get jane . Yep - still no difference, Coherence has automatically failed over without any loss of data. The data had been partitioned (split) across the two cache servers, when one of them was killed, the other simply promoted the 'backups' it was storing to be the primary copies ensuring all of the data was still accessible. If you start the first instance again, then Coherence will seamlessly 'fail back'. &lt;br /&gt;&lt;br /&gt;Hope this gets you going with Coherence. If you want to explore the Coherence command-line application a little more then type help to see the valid commands and their syntax. The following link has descriptions for many of the commands: http://forums.tangosol.com/thread.jspa?threadID=51&amp;amp;tstart=0 &lt;br /&gt;&lt;br /&gt;Don't forget to check out the Wiki as well: http://wiki.tangosol.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-2622041970582940498?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/2622041970582940498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=2622041970582940498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/2622041970582940498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/2622041970582940498'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/getting-started-with-tangosol-coherence.html' title='Getting started with Tangosol Coherence'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-8295691176082437355</id><published>2011-09-01T20:39:00.000-07:00</published><updated>2011-09-01T20:39:38.538-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><category scheme='http://www.blogger.com/atom/ns#' term='MDS'/><title type='text'>Using Shared Object in Soa Suite 11g with MDS</title><content type='html'>(From &lt;a href="http://biemond.blogspot.com/search/label/MDS"&gt;http://biemond.blogspot.com/search/label/MDS&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Inspired by &lt;a href="http://blog.xenta.nl/"&gt;Eric Elzinga&lt;/a&gt; , who was wondering how MDS can work in Soa Suite 11g , I made some screenshots how you can use a XSD from a central MDS repository in your composite application. Clemens already blogged about re-using common metadata and he made a great ant utility to import or delete MDS files. For 11G R1 PS1 or higher &lt;a href="http://biemond.blogspot.com/2009/11/soa-suite-11g-mds-deploy-and-removal.html"&gt;use this&lt;/a&gt; instead of the Clemens utility&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First I make a local MDS repository. If you install the Soa plugin you already have a seed folder in the integration folder. Under this folder create an new folder called apps. ( this have has to be apps else you will get a permission denied error ) . Under this apps folder we can create our own definitions.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-hYXf5rr-qTk/TmBNyTcfPnI/AAAAAAAAAFg/WY-3p252zRg/s1600/soa_mds_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-hYXf5rr-qTk/TmBNyTcfPnI/AAAAAAAAAFg/WY-3p252zRg/s1600/soa_mds_1.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To use my local SOA-MDS repository I create a new MDS File Connection&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-zMlFPaHRtYA/TmBOCqmEsjI/AAAAAAAAAFk/IXEHodohNpw/s1600/soa_mds_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-zMlFPaHRtYA/TmBOCqmEsjI/AAAAAAAAAFk/IXEHodohNpw/s1600/soa_mds_2.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I want to re-use these common objects in every Soa project so I choose for the resource palette option&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-OPLwPg-K7zU/TmBOUc8VcgI/AAAAAAAAAFo/M7AF86RFGgo/s1600/soa_mds_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-OPLwPg-K7zU/TmBOUc8VcgI/AAAAAAAAAFo/M7AF86RFGgo/s1600/soa_mds_3.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;select the seed folder in the integration folder&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-NwcxEnSJoXY/TmBOaIxiNyI/AAAAAAAAAFs/1vcOvTMgPC8/s1600/soa_mds_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-NwcxEnSJoXY/TmBOaIxiNyI/AAAAAAAAAFs/1vcOvTMgPC8/s1600/soa_mds_4.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here we can see our common application objects.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-IpeBVTAXv18/TmBOfh9AWZI/AAAAAAAAAFw/nhv4uYcDMv4/s1600/soa_mds_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-IpeBVTAXv18/TmBOfh9AWZI/AAAAAAAAAFw/nhv4uYcDMv4/s1600/soa_mds_5.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Open the application resources window and open the adf-config.xml&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0ifWcqV69nA/TmBOkadbeOI/AAAAAAAAAF0/OXkgO4xPcYg/s1600/soa_mds_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-0ifWcqV69nA/TmBOkadbeOI/AAAAAAAAAF0/OXkgO4xPcYg/s1600/soa_mds_6.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;Here we define a new metadata namespace with apps as path. And use the integration folder as metadata-path value.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3FVil8hP3js/TmBOviCs2ZI/AAAAAAAAAF4/U2PmK30_LRo/s1600/soa_mds_7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-3FVil8hP3js/TmBOviCs2ZI/AAAAAAAAAF4/U2PmK30_LRo/s1600/soa_mds_7.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We are ready to use these common objects in a mediator.. Here I will use a schema from the local MDS as input parameter for the mediator.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ljGK1BTxg9A/TmBO1qHnsnI/AAAAAAAAAF8/8t6w0vMovVw/s1600/soa_mds_8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-ljGK1BTxg9A/TmBO1qHnsnI/AAAAAAAAAF8/8t6w0vMovVw/s1600/soa_mds_8.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Import a new schema&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-4XWr0vSJVnY/TmBO8-HXBeI/AAAAAAAAAGA/-wxwg1cbhZM/s1600/soa_mds_9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-4XWr0vSJVnY/TmBO8-HXBeI/AAAAAAAAAGA/-wxwg1cbhZM/s1600/soa_mds_9.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Select the resource browser and here we can select our schema from the local MDS&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-H29dgIdwyik/TmBPDUo_UuI/AAAAAAAAAGE/tADutiZdaOw/s1600/soa_mds_10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-H29dgIdwyik/TmBPDUo_UuI/AAAAAAAAAGE/tADutiZdaOw/s1600/soa_mds_10.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I uncheck the Copy to project option, because this XSD already exists in the MDS&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--JXz6WZHxoE/TmBPIH0j_6I/AAAAAAAAAGI/edAdjElhJI0/s1600/soa_mds_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/--JXz6WZHxoE/TmBPIH0j_6I/AAAAAAAAAGI/edAdjElhJI0/s1600/soa_mds_11.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Our Project is ready but If we want to deploy this Soa project, we will receive a error, it can't find the schema. So we need to export the local MDS files to the SOA Suite database MDS.&lt;br /&gt;&lt;br /&gt;To do this we have 2 options , the first option is to create a MAR deployment ( Application properties ) or do this with Ant.&lt;br /&gt;&lt;br /&gt;I stripped the Clemens ant project so this ant build file has only two tasks , add and delete. It uses the adf-config.xml ( config folder) for the location of the target MDS and I use the local MDS as source.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-7aznUVWMoA8/TmBPViA0ODI/AAAAAAAAAGM/vFr_BcduOu0/s1600/soa_mds_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-7aznUVWMoA8/TmBPViA0ODI/AAAAAAAAAGM/vFr_BcduOu0/s1600/soa_mds_12.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here is the target adf-config.xml which is located in the config folder&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-BuXLvo6Grw8/TmBPexfGTTI/AAAAAAAAAGQ/WQ2lIVu4spU/s1600/soa_mds_13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-BuXLvo6Grw8/TmBPexfGTTI/AAAAAAAAAGQ/WQ2lIVu4spU/s1600/soa_mds_13.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Change the build.properties so it matches your environment&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-VRA6fcjHChw/TmBPkPvYYrI/AAAAAAAAAGU/wKsIAPzWWqk/s1600/soa_mds_14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-VRA6fcjHChw/TmBPkPvYYrI/AAAAAAAAAGU/wKsIAPzWWqk/s1600/soa_mds_14.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;This will import your local MDS object to the remote MDS. After this you can deploy your Soa Suite project.&lt;br /&gt;&lt;br /&gt;Here you can download &lt;a href="http://www.sbsframes.nl/jdeveloper/mds.zip"&gt;my ant project&lt;/a&gt;. Thanks to Clemens. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-8295691176082437355?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/8295691176082437355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=8295691176082437355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/8295691176082437355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/8295691176082437355'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/using-shared-object-in-soa-suite-11g.html' title='Using Shared Object in Soa Suite 11g with MDS'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-hYXf5rr-qTk/TmBNyTcfPnI/AAAAAAAAAFg/WY-3p252zRg/s72-c/soa_mds_1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-4619346843478408908</id><published>2011-09-01T15:36:00.000-07:00</published><updated>2011-09-01T15:37:34.303-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><title type='text'>Active the installed adapters in Oracle SOA suite.</title><content type='html'>Recently, I installed the latest version of Oracle SOA Suite, but I found there are some adapters' status is not active, such as SocketApdater and OracleAppsAdapter. Googled on the internet and found somebody said these adapters weren't deployed to a target server. I checked the setting of these adapters on targets tab and it is true. By selecting the target server, the adapter becomes active and then the configuration works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-4619346843478408908?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/4619346843478408908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=4619346843478408908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4619346843478408908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/4619346843478408908'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/09/active-installed-adapters-in-oracle-soa.html' title='Active the installed adapters in Oracle SOA suite.'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-1833641420641684335</id><published>2011-08-31T12:14:00.000-07:00</published><updated>2011-08-31T12:19:16.229-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='MDS'/><title type='text'>Re-using common metadata (wsdl / xsd / edl) in SOA Suite 11g</title><content type='html'>(From &lt;a href="http://blogs.oracle.com/soabpm/entry/reusing_common_metadata_wsdl_x"&gt;http://blogs.oracle.com/soabpm/entry/reusing_common_metadata_wsdl_x&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;As promised here is the first of a set of tips for the brand new SOA Suite 11g.&lt;br /&gt;&lt;br /&gt;Managing dependencies between services at development as well as runtime is a challenging task when people implement Service-Providers and -Consumers.&lt;br /&gt;&lt;br /&gt;There are a few approaches that worked well in the past and will continue to work well on 11g - yet there are a few notable differences between the releases that should make dependency mgmt way easier in 11g.&lt;br /&gt;&lt;br /&gt;Preface:&lt;br /&gt;In the 10.1.3. BPEL world we used to have one global cache for wsdls and schemas. Hence having twice the same (with possible differences) would get you one that overwrites the other.&lt;br /&gt;&lt;br /&gt;In 11g SOA Suite, each composite (and revision) has its own store for artifacts, so they don't clash.&lt;br /&gt;&lt;br /&gt;Four approaches are in use today (in 10.1.3.x)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;a. not preferred at all)&lt;/strong&gt; Don't bother much and have copies of concrete wsdls in your consuming artifacts. Well that is not sharing, and if the provider changes you need to redeploy the consumer&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;b. and still not a good approach)&lt;/strong&gt; Reference the deployed concrete wsdl of a Service Provider. Problem here: Provider not deployed, consumer can't compile or be deployed&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;c. and the first step to reuse)&lt;/strong&gt; Introduce a common directory of abstract wsdls and copy them around from project to project. Use wsdlRuntimeLocation on the partnerlink to point to the concrete implementation. Eventually change that during deployment time with the deployment plan.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;d. and the next step to reuse)&lt;/strong&gt; Store abstract wsdls on a centrally accessible endpoint (that might be a war or just an http server) employ the same approach from (c). Problem here - we cache them, you need to refresh the wsdl cache on the BPEL Server.&lt;br /&gt;&lt;br /&gt;In SOA Suite 11g we introduced a set of changes that helps you sharing, notable the biggest being the introduction of MDS (MetaData Service) that backs your application (and hence your composites) at designtime as well as runtime.&lt;br /&gt;&lt;br /&gt;Think of MDS like a version management system that is used all accross the platform, that you can use to share common artifacts at design and runtime.&lt;br /&gt;&lt;br /&gt;So where is your mds located, and how does an application know which one to take?&lt;br /&gt;&lt;br /&gt;The configuration sits in $application_home/.adf/META-INF/adf-config.xml and by default points to your local - JDeveloper file system based mds.&lt;br /&gt;&lt;br /&gt;Let's examine mine used for fusion order demo&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-ArxCqtj6aQo/Tl6H0O_l_TI/AAAAAAAAAFc/eGMJPfxfb4w/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://3.bp.blogspot.com/-ArxCqtj6aQo/Tl6H0O_l_TI/AAAAAAAAAFc/eGMJPfxfb4w/s640/Untitled.png" width="640" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;The first important thing to note is the store type. By default this is file based - described with oracle.mds.persistence.stores.file.FileMetadataStore. Now the base path to your mds is described with the property called metadata-path. From here on you can have multiple partitions, but usually one per application. In our case, the partition is called seed. From here, namespaces are used that map to directory structures. These are defined in the &lt;metadata-namespaces&gt;section, and by default you get the one that points to internally shared artifacts for your SOA projects, called /soa/shared.&lt;br /&gt;&lt;br /&gt;How is mds used in your SOA project then? For example if you create a business rule (yup and that is one of the new features on the JDeveloper UI side) we create you a bunch of artifacts, but the common ones are imported from mds.&lt;br /&gt;&lt;br /&gt;An example is &lt;br /&gt;&amp;lt;xsd:import namespace=&lt;a href="http://xmlns.oracle.com/bpel"&gt;http://xmlns.oracle.com/bpel&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;schemaLocation="oramds:/soa/shared/rules/BpelProcess.xsd"/&amp;gt; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Note the namespace being used. If you follow the directory structure based on your adf-config.xml you find this schema. In my case the BpelProcess.xsd is located in C:\JDeveloper\JDev_11.1.1.0\jdeveloper\integration\seed\soa\shared\rules. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A few thoughts here to consider (and succeed):&lt;br /&gt;a) this default namespace is reserved for soa suite infrastructure, and something you should NOT use&lt;br /&gt;&lt;br /&gt;b) if you add stuff to the local mds and use it through oramds:/, you need to transfer those artifacts to the server MDS, so the deployment does work.&lt;br /&gt;&lt;br /&gt;c) the namespace you should use, that is known to the soa server as well is called apps. To use it - add another namespace to, as I did above in my adf config that says &lt;namespace metadata-store-usage="mstore-usage_1" path="/apps"&gt;, and create an apps directory under the seed folder. On the server this directory is already there.&lt;br /&gt;&lt;br /&gt;Using the shared artifacts:&lt;br /&gt;&lt;br /&gt;If you expand the resource browser, there is a section called soa mds connections. Create one for your local environment by picking file as type and specify $ORACLE_HOME\jdeveloper\integration\seed. Whatever you pick now in the resource browser when you work on your composite will be automatically based on the right urls.&lt;br /&gt;&lt;br /&gt;Last but not least - create a mar deployment profile on the application level with those shared artifacts, and deploy them to the server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-1833641420641684335?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/1833641420641684335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=1833641420641684335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/1833641420641684335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/1833641420641684335'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/08/re-using-common-metadata-wsdl-xsd-edl.html' title='Re-using common metadata (wsdl / xsd / edl) in SOA Suite 11g'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ArxCqtj6aQo/Tl6H0O_l_TI/AAAAAAAAAFc/eGMJPfxfb4w/s72-c/Untitled.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-9133695883146727040</id><published>2011-08-24T20:34:00.000-07:00</published><updated>2011-09-01T15:46:25.935-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><category scheme='http://www.blogger.com/atom/ns#' term='MDS'/><title type='text'>Oracle SOA 11g MDS</title><content type='html'>(From&amp;nbsp;&lt;a href="http://markchensblog.blogspot.com/2011/08/oracle-soa-mds.html"&gt;http://markchensblog.blogspot.com/2011/08/oracle-soa-mds.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;A metadata repository is the centralized store for the metadata used for the applications in Oracle SOA.&amp;nbsp;It is very useful since most organizations and companies have their own common data models defined as XML schema and WSDL files.&amp;nbsp;These files are organized in some hierarchies and there are dependencies among them.&amp;nbsp;Obviously it is not wise to have local copies of these files for each SOA application.&amp;nbsp;The metadata repository: MDS – Metadata Store in Oracle SOA provides to share these common metadata among the various SOA applications.&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;In Oracle SOA there are two types of MDS: file-based and database-based.&amp;nbsp;File-based MDS uses the file system to store all these metadata and database-based uses the database.&amp;nbsp;File-based MDS is only used for the development purpose.&amp;nbsp;If the application is deployed on sever the database-based MDS must be used.&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; font-weight: bold; line-height: 18px;"&gt;File-based MDS&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;Normally when you do the SOA application development using JDeveloper you usually uses file-based MDS.&amp;nbsp;It is much easier to use file-based MDS for the development purpose. For each application there is one adf-config.xml located in YourAppFolder/.adf/META-INF folder.&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="http://1.bp.blogspot.com/-Mue-pOcgcYk/TkoUIhUe5cI/AAAAAAAAALc/Di5I05gJ2Tw/s1600/adf-config%2B%2BMDF.PNG" style="text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641343619850757570" src="http://1.bp.blogspot.com/-Mue-pOcgcYk/TkoUIhUe5cI/AAAAAAAAALc/Di5I05gJ2Tw/s400/adf-config%2B%2BMDF.PNG" style="-webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; background-clip: initial; background-color: white; background-origin: initial; border-bottom: rgb(237,237,237) 1px solid; border-left: rgb(237,237,237) 1px solid; border-right: rgb(237,237,237) 1px solid; border-top: rgb(237,237,237) 1px solid; cursor: pointer; display: block; height: 203px; margin: 0px auto 10px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; position: relative; text-align: center; width: 400px;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;In the adf-config.xml the&amp;nbsp;&lt;adf-mds-config&gt;element defines the metadata-namespace and metadata-store-usage from which we know where the shared artefacts.&amp;nbsp;In this example the wsdl and schema files are located in the folder:&lt;/adf-mds-config&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; font-style: italic; line-height: 18px;"&gt;D:\Oracle\Middleware\jdeveloper\integration\seed\apps\SOInterfaces-2.3.9.8&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;where D:\Oracle\Middleware\jdeveloper\integration is the metadata-path and seed is partition-name and apps\SOInterfaces-2.3.9.8 is the namespace-path.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="http://2.bp.blogspot.com/-pV3NQL82luE/TksV4YRHFPI/AAAAAAAAALs/877ZrcytgiM/s1600/MDF-filesystem.bmp" style="text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641627016542754034" src="http://2.bp.blogspot.com/-pV3NQL82luE/TksV4YRHFPI/AAAAAAAAALs/877ZrcytgiM/s400/MDF-filesystem.bmp" style="-webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; background-clip: initial; background-color: white; background-origin: initial; border-bottom: rgb(237,237,237) 1px solid; border-left: rgb(237,237,237) 1px solid; border-right: rgb(237,237,237) 1px solid; border-top: rgb(237,237,237) 1px solid; cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; position: relative; text-align: center; width: 362px;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;After the artefacts are put into the right file folder specified in adf-config.xml you can create one MDS connection in JDeveloper to view all the wsdl and schema files in the MDS.&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;From JDeveloper right click on Applic ation Resources-&amp;gt;Connections and then select SOA-MDS from New Connection menu item.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;Then in the popup window: Create SOA-MDS Connection type in the Connection Name and choose File Based MDS as the Connection Type and type in the MDS Root Folder as: D:\Oracle\Middleware\jdeveloper\integration\seed.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;You can test the connection by clicking on Test Connection button.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;If the test is su ccessful click on OK button.&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="http://3.bp.blogspot.com/-pDLzBOQT0-Q/TksekmvjU5I/AAAAAAAAAL0/su_kK7x-V6M/s1600/Create%2BSOA-MDS%2BFile%2BBased.PNG" style="text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641636572435796882" src="http://3.bp.blogspot.com/-pDLzBOQT0-Q/TksekmvjU5I/AAAAAAAAAL0/su_kK7x-V6M/s400/Create%2BSOA-MDS%2BFile%2BBased.PNG" style="-webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; background-clip: initial; background-color: white; background-origin: initial; border-bottom: rgb(237,237,237) 1px solid; border-left: rgb(237,237,237) 1px solid; border-right: rgb(237,237,237) 1px solid; border-top: rgb(237,237,237) 1px solid; cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; position: relative; text-align: center; width: 313px;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;After the MDS connection is created you can see it from IDE Connections in JDeveloper.&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="http://1.bp.blogspot.com/-Zkf3ABh_AQs/TkshvW1C1rI/AAAAAAAAAL8/GAUOI9Ns1QQ/s1600/Resource%2BPalette.PNG" style="text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641640055677310642" src="http://1.bp.blogspot.com/-Zkf3ABh_AQs/TkshvW1C1rI/AAAAAAAAAL8/GAUOI9Ns1QQ/s400/Resource%2BPalette.PNG" style="-webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; background-clip: initial; background-color: white; background-origin: initial; border-bottom: rgb(237,237,237) 1px solid; border-left: rgb(237,237,237) 1px solid; border-right: rgb(237,237,237) 1px solid; border-top: rgb(237,237,237) 1px solid; cursor: pointer; display: block; height: 346px; margin: 0px auto 10px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; position: relative; text-align: center; width: 400px;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="http://3.bp.blogspot.com/-oJxPuLrsWPE/TksT5tEP4VI/AAAAAAAAALk/vvTQ0MAfOxg/s1600/MDF-filesystem.bmp" style="text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;Once the MDS is created you use it in your development.&amp;nbsp;For example in your BPEL application you can choose one WSDL from MDS as the service interface of the BPEL process.&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;"&gt;In the application one artefact such as wsdl or xsd is referenced it will be referred using oramds protocol.&amp;nbsp;The below is one example from a wrapper wsdl.&lt;/div&gt;&lt;div class="MsoNormal" style="color: #ff6666; font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; font-style: italic; line-height: 18px;"&gt;location="&lt;span style="font-weight: bold;"&gt;oramds&lt;/span&gt;:/apps/SOInterfaces-2.3.9.8/BSC/OrderAndActivation/Activation/ServiceProvisioning-v1.wsdl"&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34655362-9133695883146727040?l=victor-jan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://victor-jan.blogspot.com/feeds/9133695883146727040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34655362&amp;postID=9133695883146727040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/9133695883146727040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34655362/posts/default/9133695883146727040'/><link rel='alternate' type='text/html' href='http://victor-jan.blogspot.com/2011/08/oracle-soa-11g-mds.html' title='Oracle SOA 11g MDS'/><author><name>Victor Jan</name><uri>http://www.blogger.com/profile/06378609625350103367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Mue-pOcgcYk/TkoUIhUe5cI/AAAAAAAAALc/Di5I05gJ2Tw/s72-c/adf-config%2B%2BMDF.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34655362.post-8182207101070367441</id><published>2011-08-12T15:29:00.000-07:00</published><updated>2011-08-12T15:30:00.224-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Fusion Middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA/SCA/SDO'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>The relation of BPM and SOA</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;I have quite a bit of confusion on the position of BPM and SOA suite before seeing the follow picture coming from a slide of Oracle.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_4mMO7wv_
