tag:blogger.com,1999:blog-34673156204305065432024-03-14T03:45:54.969-04:00My Experiences With SOAMusings on Oracle SOA (Cloud and On Premise) and other Integration products from Oracle's Middleware stack.
Disclaimer: The views expressed on this blog are my own and do not reflect the views of the company(ies) I work (or have worked for) neither Oracle Corporation.Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.comBlogger86125tag:blogger.com,1999:blog-3467315620430506543.post-41798696670267989232016-06-01T23:05:00.000-04:002016-06-01T23:08:40.601-04:00MFT-4223 Encryption algorithm or key length is restricted under the java policy<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: inherit;">If you are handling encrypted files with MFT, encryption algorithms/strength of public keys (key sizes) are critical components which require attention from a security standpoint. Algorithms such as RSA, DSA etc and keys with lengths greater than 2048 bits are usually considered secure. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">MFT 12c provides command line tools to generate PGP key pair, however as per Oracle MFT documentation,</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><i style="color: #1f497d; font-family: Calibri, sans-serif; font-size: 14.6667px;">“Our PGP generation tool is basic and intended for development. For production, you should generate PGP key pairs externally using some other tools and import it in MFT. By Default the PGP Generator of MFT uses the Bouncy Castle API with hard coded parameters, i.e 1024 Bytes, Expiry Date as Unlimited. The MFT PGP Generator has very limited functionality.”</i></span><br />
<div style="font-family: "Segoe UI", Helvetica, Arial, sans-serif; margin: 0px;">
<span style="font-family: "times new roman" , serif; font-size: small;"><span style="font-size: 12pt;"><span style="color: #1f497d; font-family: "calibri" , sans-serif; font-size: x-small;"><span style="font-size: 11pt;"><i><br /></i></span></span></span></span></div>
<div style="margin: 0px;">
<span style="font-family: inherit;">So if you are using PGP keys generated from an external tool with key sizes 2048/4096 bits there is a likelihood that your MFT transfer (decryption pre processing action) has failed with below exception</span></div>
<div style="margin: 0px;">
<span style="font-family: "times new roman" , serif;"><br /></span></div>
<div style="margin: 0px;">
<table border="0" cellpadding="0" cellspacing="0" style="background-color: white; color: black; font-family: "Segoe UI", Helvetica, Arial, sans-serif; width: 100%px; word-wrap: normal;"><tbody>
<tr><td nowrap="" style="padding: 2.25pt 0px 0.75pt 6pt;"><div align="right" style="margin: 0px;">
<span style="font-family: "times new roman" , serif; font-size: small;"><span style="font-size: 12pt;"><span style="color: #4f4f4f; font-family: "tahoma" , sans-serif; font-size: x-small;"><span style="font-size: 8.5pt;">Cause</span></span></span></span></div>
</td><td style="padding: 1.5pt 0px 0px 6.75pt;" valign="top"><div style="margin: 0px;">
<span style="font-family: "times new roman" , serif; font-size: small;"><span style="font-size: 12pt;"><span style="color: #333333; font-family: "tahoma" , sans-serif; font-size: x-small;"><span style="font-size: 8.5pt;">Encryption algorithm or key length is restricted.</span></span></span></span></div>
</td></tr>
<tr><td nowrap="" style="padding: 2.25pt 0px 0.75pt 6pt;"><div align="right" style="margin: 0px;">
<span style="font-family: "times new roman" , serif; font-size: small;"><span style="font-size: 12pt;"><span style="color: #4f4f4f; font-family: "tahoma" , sans-serif; font-size: x-small;"><span style="font-size: 8.5pt;">Action</span></span></span></span></div>
</td><td style="padding: 1.5pt 0px 0px 6.75pt;" valign="top"><div style="margin: 0px;">
<span style="font-family: "times new roman" , serif; font-size: small;"><span style="font-size: 12pt;"><span style="color: #333333; font-family: "tahoma" , sans-serif; font-size: x-small;"><span style="font-size: 8.5pt;">Make sure algorithms and key used is not restricted under java security policy.</span></span></span></span></div>
</td></tr>
<tr><td nowrap="" style="padding: 2.25pt 0px 0.75pt 6pt;"><div align="right" style="margin: 0px;">
<span style="font-family: "times new roman" , serif; font-size: small;"><span style="font-size: 12pt;"><span style="color: #4f4f4f; font-family: "tahoma" , sans-serif; font-size: x-small;"><span style="font-size: 8.5pt;">Error Description</span></span></span></span></div>
</td><td style="padding: 1.5pt 0px 0px 6.75pt;" valign="top"><div style="margin: 0px;">
<span style="font-family: "times new roman" , serif; font-size: small;"><span style="font-size: 12pt;"><span style="color: #333333; font-family: "tahoma" , sans-serif; font-size: x-small;"><span style="font-size: 8.5pt;">MFTException [threadName=JCA-work-instance:JMSAdapter-7, errorID=3e8d5a86-a2db-4a80-b548-00c0edb4a37c, errorDesc=MFT-4223_Encryption algorithm or key length is restricted under the java policy., </span></span><span style="color: #333333; font-family: "tahoma" , sans-serif; font-size: x-small;"><span style="background-color: yellow; font-size: 8.5pt;">cause=Illegal key size or default parameters</span></span></span></span></div>
</td></tr>
</tbody></table>
<span style="font-family: inherit;"><br /></span></div>
<div style="margin: 0px;">
<span style="font-family: inherit;"> In order to get rid of this exception, you will have to follow below steps:</span></div>
<div style="margin: 0px;">
<ul style="text-align: left;">
<li><span style="font-family: inherit;">Download the "Unlimited" jars "local_policy.jar" and "us_export_policy.jar" from Oracle website specific to your JDK version. </span><span style="font-family: inherit;">Example: </span><a href="https://webmail.cenhud.com/OWA/redir.aspx?SURL=_6lzmtEflvnzU0_Hp2HY_sxcYONaQ8zcMbuPue2qlPe7oqIakIrTCGgAdAB0AHAAOgAvAC8AdwB3AHcALgBvAHIAYQBjAGwAZQAuAGMAbwBtAC8AdABlAGMAaABuAGUAdAB3AG8AcgBrAC8AagBhAHYAYQAvAGoAYQB2AGEAcwBlAC8AZABvAHcAbgBsAG8AYQBkAHMALwBqAGMAZQAtADcALQBkAG8AdwBuAGwAbwBhAGQALQA0ADMAMgAxADIANAAuAGgAdABtAGwA&URL=http%3a%2f%2fwww.oracle.com%2ftechnetwork%2fjava%2fjavase%2fdownloads%2fjce-7-download-432124.html" style="font-family: inherit;" target="_blank">http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html</a></li>
<li><span style="font-family: inherit;">Make a backup of the "limited versions" in $JAVA_HOME/jre/lib/security/</span></li>
<li><span style="font-family: inherit;">Replace the limited jars with the unlimited jars.</span></li>
<li><span style="font-family: inherit;">Restart managed servers and retry your MFT transfer.</span></li>
</ul>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-15654688768402844252016-05-17T20:32:00.000-04:002016-05-17T21:01:19.801-04:00A look at Oracle SOA Cloud Service<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: left;">
Oracle has been rapidly moving most of their products to the Cloud and offering them under 3 broad categories of SaaS, PaaS and IaaS. One of the PaaS offerings is the SOA Cloud service. This pretty much provides most of Oracle's on-premise middleware products like SOA Suite, OSB, MFT, B2B, Technology adapters and API Manager on the cloud. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>PS:</b> Oracle ICS, the other integration offering on cloud is slightly different from SOA CS in terms of its positioning as an iPaaS offering from Oracle (similar to Dell Boomi, Mulesoft and other pure play iPaaS products). </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
But with ICS and SOA CS, Oracle has definitely offered various hybrid cloud solutions to customers. Below diagram shows various ways in which integrations can happen between SaaS applications and On-Premise applications using either ICS/SOA CS or using both.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieW2toRdOENsefzBDTiVFVBy4_boR4FYlWDKfo5Bd22aPzibMPtJ-LSDV6r-6f0aacul_9GlpK-xMLTVYc6Kw8Vy0ZosvDZuoAkO-aCf5I9MtzS0TgIwvJhO1pw2OhTLOcIk6OEDvOnOg/s1600/Screen+Shot+2016-05-17+at+6.36.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieW2toRdOENsefzBDTiVFVBy4_boR4FYlWDKfo5Bd22aPzibMPtJ-LSDV6r-6f0aacul_9GlpK-xMLTVYc6Kw8Vy0ZosvDZuoAkO-aCf5I9MtzS0TgIwvJhO1pw2OhTLOcIk6OEDvOnOg/s400/Screen+Shot+2016-05-17+at+6.36.15+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Some of the key advantages of using SOA CS are:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ul style="text-align: left;">
<li>Drastic reduction in provisioning time for SOA environments. </li>
<ul>
<li>In a typical IT environment, in order to setup a simple clustered SOA environment we need days or maybe weeks . The process starts with procuring the hardware, necessary software (+patches), installing and configuring the software. </li>
<li>SOA CS eliminates all of the above by providing self-provisioning tools which can be filled by developers/architects. We just need to have the right subscriptions in place for the Storage, DB, Compute and Platform services as pre-requisite. A simple clustered SOA environment can be up and running within few hours using SOA CS.</li>
</ul>
<li>Infrastructure worries handled by Oracle</li>
<ul>
<li>No longer OS admins/Sys admins/Network admins/DBAs are required to setup infrastructure before developers can get a working environment. </li>
<li>All infrastructure worries handled by Oracle including patching, backup/recovery etc</li>
</ul>
<li>Faster time to market</li>
<ul>
<li>Since environments (single node/cluster) can be provisioned quickly, the focus of the IT team is on developing integrations rather than worrying about the underlying platform's maintenance.</li>
</ul>
<li>Cost Savings</li>
<ul>
<li>The most obvious advantage with all the above is significant cost savings for customers as subscription costs for pay-per-use PaaS offerings is far lesser than the cost of owning and maintaining your own infrastructure in-house.</li>
</ul>
<li>Gateway to Cloud</li>
<ul>
<li>Large enterprise which have made significant investments over the years on their on-premise architecture will take time to adopt cloud. SOA CS is a way for them to gradually move their middleware platform to the cloud and adopt a hybrid solution in the meantime i.e combination of cloud and on-premise.</li>
</ul>
</ul>
<ul style="text-align: left;"></ul>
<br />
<div class="separator" style="clear: both; text-align: left;">
In the below section I would like to cover the steps to setup a 2 node SOA+OSB cluster using SOA CS. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Step1</b>: Get the required subscriptions for the PaaS offerings. I requested for a 30 day trial of Java Cloud service (cloud.oracle.com) which when approved by Oracle comes with below services.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaS-73b_YejSPi33n7aDVsHvlXUokw1SiKKYMq9keTDnCPYhQnEstXG-BNnep2eicCxhTWabBKjbnS4UrVN5o5-NuEhqauS4u0IAhiY0Di2ywMCrLggdDjlpEjFCdjPUQRdI3duRLDplY/s1600/Screen+Shot+2016-05-14+at+5.54.36+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="115" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaS-73b_YejSPi33n7aDVsHvlXUokw1SiKKYMq9keTDnCPYhQnEstXG-BNnep2eicCxhTWabBKjbnS4UrVN5o5-NuEhqauS4u0IAhiY0Di2ywMCrLggdDjlpEjFCdjPUQRdI3duRLDplY/s320/Screen+Shot+2016-05-14+at+5.54.36+PM.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<b>Step2: </b>Configure the Storage cloud service and create the necessary storage containers for backup purpose. (SOA CS requires underlying DB CS which in turn requires Storage CS for backup/recovery). You can use the Cloudberry tool for OpenStack storage for connecting to StorageCS and creating the containers. The other option is to use Curl to invoke REST APIs for doing same task.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPyuerpxLXRH_NFaSr1liu2Ydic3u-rUCf0pdzlIWnKq0DMIzaXxdks1a4ic0f_Jwr7h7yN2zyDGKf_8cIUVDLf8ss-HVVWMpNzq4aMydO5ymAVroExGdy8wEVFx198nqSCi-K-CUIlzs/s1600/StorageCS1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPyuerpxLXRH_NFaSr1liu2Ydic3u-rUCf0pdzlIWnKq0DMIzaXxdks1a4ic0f_Jwr7h7yN2zyDGKf_8cIUVDLf8ss-HVVWMpNzq4aMydO5ymAVroExGdy8wEVFx198nqSCi-K-CUIlzs/s400/StorageCS1.PNG" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN4eASvuRmZVGx2kInFA7ODl4y1rzgQtEfBKflYZ2m6jed8BeD5dT3NUwlGeGbtSg6Q7NT_WKnBxfwCoTyRaWEsxxImJG3QGHfBDPNWZbR9oelf0N4DVKfeZbqROugKAXTGjevZQ89bM8/s1600/StorageCS2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN4eASvuRmZVGx2kInFA7ODl4y1rzgQtEfBKflYZ2m6jed8BeD5dT3NUwlGeGbtSg6Q7NT_WKnBxfwCoTyRaWEsxxImJG3QGHfBDPNWZbR9oelf0N4DVKfeZbqROugKAXTGjevZQ89bM8/s320/StorageCS2.PNG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiesbjsUEMuC-kLT6JBmfPNjDiYfk_W10KvfdNXcYn5DmAmgjQcJ18SBps624sMN7UfMatRVLr5oPe2wFV0H4AWp2JZTq6IXRpewIi8Uv43Y2nxPPdpDWEmhCHf9WrqkzlsFKO3m3kDlss/s1600/StorageCS3.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="139" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiesbjsUEMuC-kLT6JBmfPNjDiYfk_W10KvfdNXcYn5DmAmgjQcJ18SBps624sMN7UfMatRVLr5oPe2wFV0H4AWp2JZTq6IXRpewIi8Uv43Y2nxPPdpDWEmhCHf9WrqkzlsFKO3m3kDlss/s320/StorageCS3.PNG" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<b><br /></b>
<b>Step3: </b>Use Puttygen.exe tool for creating a pair of SSH Public/Private key pair which will be used for the creation of DBCS and SOACS instances.<br />
<b><br /></b>
<b>Step4: </b>Configure the DBCS to create an instance of database which will be used by SOA CS for creating the RCU schemas of SOAInfra etc.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaqw0kJMKddZvbk09cp5sCpibnriinowdJYl8oXK0XgS-eKOUNQjBK3svT91gcqML6MqeOP9aoTcVI8QiXArrGJn5rlIETHMY20xYZZTKXDS0oXKHPsC_jVlCADmRHP6Zl1XWWjdyrC0Q/s1600/dbcs1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="147" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaqw0kJMKddZvbk09cp5sCpibnriinowdJYl8oXK0XgS-eKOUNQjBK3svT91gcqML6MqeOP9aoTcVI8QiXArrGJn5rlIETHMY20xYZZTKXDS0oXKHPsC_jVlCADmRHP6Zl1XWWjdyrC0Q/s320/dbcs1.PNG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv3jUbOZPEmmypPRkDlpu4mjZ4Ugg8vGlDc33izo9Y5d_8_87Z1_izZtY61HmQBEOGv8MW1GsVbzwsQrT6hesczjZHSvLN-OmsE2nGfIlNQlY3A9AYxP7NCB47DlVd7BLP8lYETnX-izc/s1600/dbcs2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv3jUbOZPEmmypPRkDlpu4mjZ4Ugg8vGlDc33izo9Y5d_8_87Z1_izZtY61HmQBEOGv8MW1GsVbzwsQrT6hesczjZHSvLN-OmsE2nGfIlNQlY3A9AYxP7NCB47DlVd7BLP8lYETnX-izc/s320/dbcs2.PNG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiltV1X_ZJn29rRrjP-0CbZQzFWNwjMGFMC9z3jeNvqfr7GmPRprraqghDrG1No2qEpNhR-QREnjHMlVQ6Mo2wobegMULFKcDOgY7HdPuSOubEgYrWD3cjCPPaNbJUK17Gj9sGXvgCFPZo/s1600/dbcs3.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiltV1X_ZJn29rRrjP-0CbZQzFWNwjMGFMC9z3jeNvqfr7GmPRprraqghDrG1No2qEpNhR-QREnjHMlVQ6Mo2wobegMULFKcDOgY7HdPuSOubEgYrWD3cjCPPaNbJUK17Gj9sGXvgCFPZo/s320/dbcs3.PNG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOcBR5TO_quvaxoytytdgHnX8AWsSQeu92miC9Cfz9U4vI89vAUj_YGU_VilTF0PmBSkDoU95WcoQyeyXbTw39VTOQ0R7_A8CrxhV67HWatmZ0yKWrGuGY527cVksIMRr53FcQF1ZxgCI/s1600/dbcs4.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="169" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOcBR5TO_quvaxoytytdgHnX8AWsSQeu92miC9Cfz9U4vI89vAUj_YGU_VilTF0PmBSkDoU95WcoQyeyXbTw39VTOQ0R7_A8CrxhV67HWatmZ0yKWrGuGY527cVksIMRr53FcQF1ZxgCI/s320/dbcs4.PNG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsgbAypIJQ0SJ8-uSTQ2oK8YYqnCfFTzpmnxXI27yq7LK4BYq5oEecHEjQyFs9iSqpNp7uOlAg1_S9Ma7dtcFIIFT2_6uY1QTWE9wkjbMsL4OEcdwCGbs2vqdxnVxcbIo4kmrqG7RVCcs/s1600/dbcs5.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsgbAypIJQ0SJ8-uSTQ2oK8YYqnCfFTzpmnxXI27yq7LK4BYq5oEecHEjQyFs9iSqpNp7uOlAg1_S9Ma7dtcFIIFT2_6uY1QTWE9wkjbMsL4OEcdwCGbs2vqdxnVxcbIo4kmrqG7RVCcs/s320/dbcs5.PNG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDVfegHodb286-H6SquXr2KzcrePzHgHMAJJmdzW07KtAvWjWJCYnMaDMO17meLm2Ri4SMfUlIvQr5CGI2XMYHVbwE3IjeYBKK6lTZAigVx7db8bt_-BjkNvFR4D142YSLpdlTu73f3dw/s1600/dbcs6.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDVfegHodb286-H6SquXr2KzcrePzHgHMAJJmdzW07KtAvWjWJCYnMaDMO17meLm2Ri4SMfUlIvQr5CGI2XMYHVbwE3IjeYBKK6lTZAigVx7db8bt_-BjkNvFR4D142YSLpdlTu73f3dw/s320/dbcs6.PNG" width="320" /></a></div>
<br />
<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib2YSjPELKazIjuo5mTX4AvOVFRnV8jZFa0YzFMYcL3g4Ge5ON-Eu4OhdoTom0g8Ob90FAe3-nwMlG_q5dCrKYXIC7UBgTInfdXyJib6VQmT8ovfX3N-VWBzWaC4pzV_yA630DHmtE6KA/s1600/dbcs7.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="245" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib2YSjPELKazIjuo5mTX4AvOVFRnV8jZFa0YzFMYcL3g4Ge5ON-Eu4OhdoTom0g8Ob90FAe3-nwMlG_q5dCrKYXIC7UBgTInfdXyJib6VQmT8ovfX3N-VWBzWaC4pzV_yA630DHmtE6KA/s400/dbcs7.PNG" width="400" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
I have shown backup destination as none below, but SOA CS requires that DB should have backup destination set to "<span style="background-color: white; color: #333333; font-family: "arial" , sans-serif; font-size: 12px; line-height: 20px;">Both Cloud Storage and Local Storage". </span>So set up your DB accordingly by specifying the storage container details. I created a 2nd one named subsdb1 which I have used for SOA CS configuration.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhchcbCwiJPnOLB8zjcCwoPlb8bl3ChSiASGtXz2HiwjM6xlEsxfPlJ4hu_J50IP80GMq53LaSVp-WIXaIzauIyrsFO5PgGPmGJ3GlwzM9H2QzSM_MQmN0Nl9RpCMWcMcNKTFL5B_Aumac/s1600/dbcs8.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhchcbCwiJPnOLB8zjcCwoPlb8bl3ChSiASGtXz2HiwjM6xlEsxfPlJ4hu_J50IP80GMq53LaSVp-WIXaIzauIyrsFO5PgGPmGJ3GlwzM9H2QzSM_MQmN0Nl9RpCMWcMcNKTFL5B_Aumac/s320/dbcs8.PNG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFdZDZbMcF2nx4sdyItxf54v9yGo2ggunUhgr97dmhUrTA1Awj1oxc2lskRmUMquRQKpDgiWIHgNgxtBiabdpLibocYbYGVGqIXIdxBX7qR60nHElueMhRqT5C0wRWVxyiWrKWQYrQS0A/s1600/dbcs9.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFdZDZbMcF2nx4sdyItxf54v9yGo2ggunUhgr97dmhUrTA1Awj1oxc2lskRmUMquRQKpDgiWIHgNgxtBiabdpLibocYbYGVGqIXIdxBX7qR60nHElueMhRqT5C0wRWVxyiWrKWQYrQS0A/s320/dbcs9.PNG" width="320" /></a></div>
As you can see there is an hour glass icon next to the DB instance name, basically it takes around 30-40 minutes for the DB to be configured and be ready for use. You can keep track of status by clicking on instance name and looking at the provisioning messages in next page. Once active the hour glass icon will be removed.<br />
<br />
<br />
<br />
<br />
<b><br /></b>
<b>Step5: </b>Finally we can configure the SOA CS instance using above details of Storage CS and DB CS.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnRT5vez0kjZPNSC4SE85OKg4y0_elD-zMoqeLdIOwJObaY6Uona8smk6e2bjMQvi8QF31RtiUJ9qwWAbjc8f4lD-jHlDneG5LSNDGiRh23wqpGBWVCzWn0AJ5vKmCiE-DX3jBDHgUJDU/s1600/soacs1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnRT5vez0kjZPNSC4SE85OKg4y0_elD-zMoqeLdIOwJObaY6Uona8smk6e2bjMQvi8QF31RtiUJ9qwWAbjc8f4lD-jHlDneG5LSNDGiRh23wqpGBWVCzWn0AJ5vKmCiE-DX3jBDHgUJDU/s320/soacs1.PNG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidA15gXiBG-6ZlJcrU5oTJA58TDiLmfDlDEUJZoJ2CGTLHYAJrkFLcUlk0XjiHiTrz7ZhJqrKzLcW296Ls1vRXlaZ87EISl15NNIFsS3BqjD7c1SDF0J7z8NMGXtttQlA3JST1bPKc3Is/s1600/Screenshot+2016-05-17+15.16.04.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="305" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidA15gXiBG-6ZlJcrU5oTJA58TDiLmfDlDEUJZoJ2CGTLHYAJrkFLcUlk0XjiHiTrz7ZhJqrKzLcW296Ls1vRXlaZ87EISl15NNIFsS3BqjD7c1SDF0J7z8NMGXtttQlA3JST1bPKc3Is/s320/Screenshot+2016-05-17+15.16.04.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu7NEoPUjzo1CNLXQ5muwc11lUlNquf8v02_QV799NNrpVkHDiUCvBhOPVzq-v3bD71zbxNCHI9fZ6h1FNHk8Foibdf-jOynGfGEnVyMhSRhODBBkqpIpHB1NuOKQrvBDw7adE62fHEAY/s1600/Screenshot+2016-05-17+15.16.53.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu7NEoPUjzo1CNLXQ5muwc11lUlNquf8v02_QV799NNrpVkHDiUCvBhOPVzq-v3bD71zbxNCHI9fZ6h1FNHk8Foibdf-jOynGfGEnVyMhSRhODBBkqpIpHB1NuOKQrvBDw7adE62fHEAY/s320/Screenshot+2016-05-17+15.16.53.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhtlwHN4d7j7QkUuSkBQpidbn8gvTkzNejKCSxFVO4pqdcCJuHX0cZddegyjGMvC5XCAqOvLyDkuyD3q1uNXySp6d0kI4-naoQ3C8b84HUs35V8pH5UOehhcZLQDGjmp4z6pKrX8RSzXE/s1600/Screenshot+2016-05-17+15.35.45.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhtlwHN4d7j7QkUuSkBQpidbn8gvTkzNejKCSxFVO4pqdcCJuHX0cZddegyjGMvC5XCAqOvLyDkuyD3q1uNXySp6d0kI4-naoQ3C8b84HUs35V8pH5UOehhcZLQDGjmp4z6pKrX8RSzXE/s320/Screenshot+2016-05-17+15.35.45.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFqRAAUHtyODYCl9g9OkV9FuYBOctxxhFoHGySS1euEiG1evMfYgFwSwYWRxq4NkggvV4Y6IPR7RDtWM1MNti7lXuimKePHLokWoLVxCrmo7T5oMm9prTnSMpPOI55LoWu7fJ9RPIAOi0/s1600/Screenshot+2016-05-17+15.35.59.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="153" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFqRAAUHtyODYCl9g9OkV9FuYBOctxxhFoHGySS1euEiG1evMfYgFwSwYWRxq4NkggvV4Y6IPR7RDtWM1MNti7lXuimKePHLokWoLVxCrmo7T5oMm9prTnSMpPOI55LoWu7fJ9RPIAOi0/s320/Screenshot+2016-05-17+15.35.59.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjPL_HM0C99Y3yNKd98eKmgMivKYZA8xEJQidZikFXlV3C-2sK2KF5ih4Au6ICMs_urwd3qqaxLcZXg4Go8YUqUK1KKIJ1VH22lnY3bzKyTfEW7ky9GONmeyewFRFaIt6ej26fWjVEQMg/s1600/Screenshot+2016-05-17+15.36.26.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjPL_HM0C99Y3yNKd98eKmgMivKYZA8xEJQidZikFXlV3C-2sK2KF5ih4Au6ICMs_urwd3qqaxLcZXg4Go8YUqUK1KKIJ1VH22lnY3bzKyTfEW7ky9GONmeyewFRFaIt6ej26fWjVEQMg/s320/Screenshot+2016-05-17+15.36.26.png" width="320" /></a></div>
Once the SOA CS instance is created it takes about 1.5 to 2 hours for the instance to be ready for use. Again you can track the status in between along with % completion.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtN9q8OgiIRkiD0l2G7f_n2IcaNVcpz5AxKJxmUc1_7_OcyIz-8jDZECMFOTAA03g8atORuJHp-WTkKqT5rwXX0ulMFSuQKbXYjiqnrLZbiqLDB2JjrTe4LC0y6g7C-ACwKJSQH5QgqUs/s1600/Screenshot+2016-05-17+15.37.00.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtN9q8OgiIRkiD0l2G7f_n2IcaNVcpz5AxKJxmUc1_7_OcyIz-8jDZECMFOTAA03g8atORuJHp-WTkKqT5rwXX0ulMFSuQKbXYjiqnrLZbiqLDB2JjrTe4LC0y6g7C-ACwKJSQH5QgqUs/s320/Screenshot+2016-05-17+15.37.00.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUA456Z7N64DbaiNzdr5EVbJs-3nPkCH_rEURbnBS9K86Y50JQGqLJrlIHC_-STtjnAiKXWtdAexP7fCA_r8ys_Ks81MYeCMReAEspe5qFVjQJKad3sUBa48pKaeRKHhJl3_fbzG8vFd8/s1600/Screenshot+2016-05-17+16.44.40.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="231" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUA456Z7N64DbaiNzdr5EVbJs-3nPkCH_rEURbnBS9K86Y50JQGqLJrlIHC_-STtjnAiKXWtdAexP7fCA_r8ys_Ks81MYeCMReAEspe5qFVjQJKad3sUBa48pKaeRKHhJl3_fbzG8vFd8/s320/Screenshot+2016-05-17+16.44.40.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
After the SOA CS is active, you should see the service consoles getting ready for use. Deployment of code into the SOA CS and other console usage is similar to what we do on premise. No changes there.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB-d1gr_MZap4Ovp52Rp1K5mx7ZIGWXiLgfgBLLcSXlG0u9ljEkh38uTGDeRkbkpe6NdVBw1oMpLKh6I_NYxVQkhdpDeqDtnji8zDQbiHC-JT1g5lWEFg9_wnQUDMkai2JRZ1MArkBy48/s1600/Screen+Shot+2016-05-17+at+7.17.05+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB-d1gr_MZap4Ovp52Rp1K5mx7ZIGWXiLgfgBLLcSXlG0u9ljEkh38uTGDeRkbkpe6NdVBw1oMpLKh6I_NYxVQkhdpDeqDtnji8zDQbiHC-JT1g5lWEFg9_wnQUDMkai2JRZ1MArkBy48/s320/Screen+Shot+2016-05-17+at+7.17.05+PM.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1prSgc1e1WvJfR15Q9S_Iq6ycgARZigJuDA_mUAlZQ_D45-hXmkVZEtZBpQxi_IYtmdQJ1jwunwP3vVx7KH-ZiYV31Ce6VHNfWI-DXIY-69C-CIBgybE9ptFRxR3asAeALbAcypG7bY0/s1600/Screen+Shot+2016-05-17+at+7.17.24+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="122" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1prSgc1e1WvJfR15Q9S_Iq6ycgARZigJuDA_mUAlZQ_D45-hXmkVZEtZBpQxi_IYtmdQJ1jwunwP3vVx7KH-ZiYV31Ce6VHNfWI-DXIY-69C-CIBgybE9ptFRxR3asAeALbAcypG7bY0/s320/Screen+Shot+2016-05-17+at+7.17.24+PM.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
And that's it. Entire environment provisioning was done on Cloud console with minimal backend work and you have a running SOA+OSB cluster ready in just few hours.</div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-54318708099648008382015-08-25T20:25:00.000-04:002015-08-27T21:01:20.989-04:00Sending Error Notifications in MFT 12c<div dir="ltr" style="text-align: left;" trbidi="on">
Oracle SOA Suite 12c introduced a new product called Managed File Transfer (MFT). Basically MFT is a centralized file transfer solution for enterprises which addresses several pain points wrt. file transfers<br />
<div>
<div>
<ul style="text-align: left;">
<li>It provides secure access to file transfers, tracking each and every step of the end to end file transmission.</li>
<li>Easy to use UI for designing, monitoring and administering the file transfer solution which can be used by non-technical staff as well</li>
<li>Extensive reporting capability with detailed status tracking and options to resubmit failed transfers. </li>
<li>Built-in support for many pre and post processing actions like compression/decompression, encryption/decryption(PGP etc.) which in turn means no need to write custom code for these actions.</li>
<li>Out of the box support for many technologies including SOA and OSB which in turn leads to multiple integration pattern possibilities. Example: for a large payload processing MFT can simply consume the source file and pass it as a reference to SOA target for chunk read and transformation.</li>
<li>Integration with ESS (Enterprise Scheduler Service) which is another new product feature in 12c allowing to create flexible schedules for the file transfers without having to write any custom code (quartz, control M scripts, cronjobs etc).</li>
</ul>
</div>
<div>
<div>
<br /></div>
<div>
Even though the centralized monitoring dashboard in MFT console is robust and provides granular details of each phase of file transfer (eg: if the target systems are SOA it has embedded links to the EM Console for tracing the status there as well.) there maybe a need to send out email alerts for reporting file transfer failures to a support distribution list in a typical production environment (cannot expect people to keep monitoring the dashboard all the time).</div>
<div>
<br /></div>
<div style="text-align: left;">
Below are high level steps to enable email notifications in MFT 12c.</div>
<div>
<br /></div>
<div>
<b>Step1:</b></div>
<div>
Run the below WLST commands in sequence to enable the event and add contact for email notification:<b> </b></div>
<div>
<div style="margin: 0px 0px 0px 72pt; text-indent: -18pt;">
<span style="font-family: inherit;">o cd ${MW_HOME}/mft/common/bin</span></div>
<div style="margin: 0px 0px 0px 72pt; text-indent: -18pt;">
<span style="font-family: inherit;">o ./wlst.sh</span></div>
<div style="margin: 0px 0px 0px 72pt; text-indent: -18pt;">
<span style="font-family: inherit;">o connect("weblogic","xxxx","t3://hostname:port")</span></div>
<div style="margin: 0px 0px 0px 72pt; text-indent: -18pt;">
<span style="font-family: inherit;">o updateEvent('RUNTIME_ERROR_EVENT', true)</span></div>
<div style="margin: 0px 0px 0px 72pt; text-indent: -18pt;">
<span style="font-family: inherit;">o createContact('Email', 'abc@xyz.com' )</span></div>
<div style="margin: 0px 0px 0px 72pt; text-indent: -18pt;">
<span style="font-family: inherit;">o addContactToNotification('RUNTIME_ERROR_EVENT', 'Email', 'abc@xyz.com')</span></div>
<div style="margin: 0px 0px 0px 72pt; text-indent: -18pt;">
<span style="font-family: inherit;">o disconnect()</span></div>
<div style="margin: 0px 0px 0px 72pt; text-indent: -18pt;">
<span style="font-family: inherit;">o exit()</span></div>
<div style="margin: 0px 0px 0px 72pt; text-indent: -18pt;">
<br /></div>
<div style="font-family: 'Segoe UI', Helvetica, Arial, sans-serif; margin: 0px;">
<b style="font-family: Times;">Step2: </b></div>
<div style="font-family: 'Segoe UI', Helvetica, Arial, sans-serif; margin: 0px;">
<span style="font-family: Times;">Configure the Email Driver for notifications. Basically set the Outgoing Mail Server and the port (mandatory ones)</span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAJlYZhT3wq2wv2dhnhN7gqg78Wk_f6vop3IS_lUTgMWZ-lQ4CDd5r9-Emz1I19XSu8uxYDk9Ed3r9fwtJ_EGnfLaukxfZvPVssiqm0tOJ3M3PvvqbzYSyqEWFWpRjUKFv7EIt5Z2m2ac/s1600/mft4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAJlYZhT3wq2wv2dhnhN7gqg78Wk_f6vop3IS_lUTgMWZ-lQ4CDd5r9-Emz1I19XSu8uxYDk9Ed3r9fwtJ_EGnfLaukxfZvPVssiqm0tOJ3M3PvvqbzYSyqEWFWpRjUKFv7EIt5Z2m2ac/s640/mft4.PNG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq4pyRAh8riPVYKitvtEeShXEZ5SoBJquiPu43S9ppQuMssBYbJdnlqIg4K2-CDvIfK396IEpEssI_x9DwNcrrhEVm8suEwXTGDV8bilZ64b4bASfWmIZkOCdbbKXhwpZPZEsgVlfog4c/s1600/mft3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq4pyRAh8riPVYKitvtEeShXEZ5SoBJquiPu43S9ppQuMssBYbJdnlqIg4K2-CDvIfK396IEpEssI_x9DwNcrrhEVm8suEwXTGDV8bilZ64b4bASfWmIZkOCdbbKXhwpZPZEsgVlfog4c/s640/mft3.PNG" width="640" /></a></div>
<br />
You have to restart the MFT managed server after changing these settings.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="font-family: 'Segoe UI', Helvetica, Arial, sans-serif; margin: 0px;">
<b style="font-family: Times;">Step3: </b></div>
<div style="margin: 0px;">
Try replicating a file transfer error and monitor the error both in Monitoring Dashboard as well as check for the error email in outlook.</div>
<div style="font-family: 'Segoe UI', Helvetica, Arial, sans-serif; margin: 0px;">
<b style="font-family: Times;"><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsL0EYb6dV5EWyouvYSdArxLefxQHdzmSfL5v5NorURIba1ByURPdFLCKAdMxV5HRfTkGZSuXlkztBC-GkUe0KqnhqQNS8QyuxEuwbL80QsKAqO5FV7QIrArWyz_Of6-XaGR4FnlSgngM/s1600/mft1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsL0EYb6dV5EWyouvYSdArxLefxQHdzmSfL5v5NorURIba1ByURPdFLCKAdMxV5HRfTkGZSuXlkztBC-GkUe0KqnhqQNS8QyuxEuwbL80QsKAqO5FV7QIrArWyz_Of6-XaGR4FnlSgngM/s640/mft1.PNG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYN7tQ-eXxmL9dwGnxJjMbyJ9MvsdQSqFSN0Np33h5eYDhj2Eu9YsQnKyeqBjTndzWQaPpN-rqvoZwJJaM_ytvVhN71s1GU-z72SKTtYiqV6LErLecy7WA1bgYbAxMZJFPuEpmJ10bEdM/s1600/mft2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYN7tQ-eXxmL9dwGnxJjMbyJ9MvsdQSqFSN0Np33h5eYDhj2Eu9YsQnKyeqBjTndzWQaPpN-rqvoZwJJaM_ytvVhN71s1GU-z72SKTtYiqV6LErLecy7WA1bgYbAxMZJFPuEpmJ10bEdM/s640/mft2.PNG" width="640" /></a></div>
<div style="font-family: 'Segoe UI', Helvetica, Arial, sans-serif; margin: 0px;">
<b style="font-family: Times;"><br /></b></div>
<div style="font-family: 'Segoe UI', Helvetica, Arial, sans-serif; margin: 0px;">
<b style="font-family: Times;">NOTE:</b></div>
<div style="font-family: 'Segoe UI', Helvetica, Arial, sans-serif; margin: 0px;">
<b style="font-family: Times;"><br /></b></div>
<div style="margin: 0px;">
<span style="font-family: inherit;">If event listed above is not enabled or no contacts are specified, then notification messages are sent to JMS “MFTExceptionQueue”. </span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIffWYL3Uuzt5ayXpp2IV9Zfw5Uz_sD0YC-kCsfytq-ERTUlyx9xXB8U8ipd82GjBvXeKL0ui-j0Ag-quD8WxIWOItTQ5wMPILK89w1aS-GcPyw0UvOTHH8ROOzXsmxq3gRL2-2MGYpD0/s1600/mft5.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIffWYL3Uuzt5ayXpp2IV9Zfw5Uz_sD0YC-kCsfytq-ERTUlyx9xXB8U8ipd82GjBvXeKL0ui-j0Ag-quD8WxIWOItTQ5wMPILK89w1aS-GcPyw0UvOTHH8ROOzXsmxq3gRL2-2MGYpD0/s640/mft5.PNG" width="640" /></a></div>
<div style="margin: 0px;">
<br /></div>
<div style="font-family: 'Segoe UI', Helvetica, Arial, sans-serif; margin: 0px;">
<span style="font-family: Calibri,sans-serif; font-size: x-small;"><span style="font-size: 11pt;"><img alt="Description: cid:image007.jpg@01D0DE76.5CC3AFE0" height="348" src="https://mail.cognizant.com/owa/attachment.ashx?id=RgAAAADHToTUu%2fatQL79dv%2b0wEHmBwBadQ8e70WkRLW6YJzMdwCbAAAAERheAACIq9DSQ0urSZQicZaDAZ3KAAAUgj9nAAAJ&attcnt=1&attid0=BAACAAAA&attcid0=image007.jpg%4001D0DE76.5CC3AFE0" style="height: auto; max-width: 100%;" width="694" /></span></span></div>
</div>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-75394483374738430872015-08-21T17:06:00.001-04:002015-08-21T17:09:12.309-04:00SOA Governance in 12c: OER vs. OAC<div dir="ltr" style="text-align: left;" trbidi="on">
As important it is for an enterprise to move towards Service Oriented Architecture to bring the necessary agility to its business, equally important it becomes for it to implement a SOA Governance Framework. Services left ungoverned lead to redundancy/duplication, non-standards based development and faster time to market. SOA Governance controls the service lifecycle right from inception, design, build till the decommissioning of service. It helps increase service re-use and also provides tools/reports for tracking the usage of services across enterprise thereby provide an accurate measure of the ROI.<br />
<br />
Oracle's 12c fusion middleware stack provides two SOA Governance products:<br />
<br />
<ul style="text-align: left;">
<li>Oracle Enterprise Repository (OER)</li>
<li>Oracle API Catalog (OAC)</li>
</ul>
<div>
OER provides robust design-time as well as run-time governance support for the service lifecycle, enabling storag<span style="font-family: inherit;">e and management of extensible metadata for composites, service, business processes and other IT related artifacts.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">OAC on the other hand is a lightweight SOA governance tool, allowing you to build a catalog of your enterprise's APIs. It provides a simplified metadata model for API assets along with easy search capabilities on the console.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
I won't be covering in-depth details about each product as there are some great content regarding that online like <a href="https://technology.amis.nl/2014/11/14/in-depth-look-oracle-api-catalog-oac-12c/" target="_blank">In-Depth look of API Catalog 12c</a>. Having evaluated both products what I intent to do with this blogspot is to try and do a feature comparison between the 2 products in the important areas. Hope this gives a high level overview of the features available as well as helps in making right decision of choosing the correct tool.</div>
<div>
<br /></div>
<div>
<b><u>User-Role Mapping</u></b></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; text-align: justify; unicode-bidi: embed; vertical-align: baseline;">
<b style="line-height: 24px;">OER :</b></div>
There are several roles available in OER and based on the organization need all of these roles can be leveraged at various phases of the Service Lifecycle. The OER Admin screen provides the ability to control the Access setting for each of this role. The primary role for reviewing/approving assets is <b>Registrar.</b> Apart from that we have <b>User</b> role which has read only privilege, <b>project architects/advanced submitters </b>who can edit the asset, there are several <b>administrator</b> roles which can perform different level of admin tasks (granular segregation of duties).<br />
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGTTU95QT2a3pt-UbvnyjoZetOhZPiqHaqX6L-EKSSW4euVX7wKTiFjbZ4NelxIwDQBcFoaD_3Jhrsbzt_dIvxRGVo4VyD5Yy-otC6Vp-a39fNVHvrJCgGgLZzevW36b4UnssPvkHslmw/s1600/oer1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGTTU95QT2a3pt-UbvnyjoZetOhZPiqHaqX6L-EKSSW4euVX7wKTiFjbZ4NelxIwDQBcFoaD_3Jhrsbzt_dIvxRGVo4VyD5Yy-otC6Vp-a39fNVHvrJCgGgLZzevW36b4UnssPvkHslmw/s400/oer1.png" width="400" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGTTU95QT2a3pt-UbvnyjoZetOhZPiqHaqX6L-EKSSW4euVX7wKTiFjbZ4NelxIwDQBcFoaD_3Jhrsbzt_dIvxRGVo4VyD5Yy-otC6Vp-a39fNVHvrJCgGgLZzevW36b4UnssPvkHslmw/s1600/oer1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a></div>
<div>
<br />
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
<b>OAC:</b></div>
<div>
<b> </b>OAC has a simplified role structure with just 3 roles available for various functions. </div>
<div>
<b>Developer</b> – Can search APIs (SOAP/REST) and use those, </div>
<div>
<b> Curator</b> – Reviews API, can edit API to enrich it with additional metadata, Publishes the API</div>
<div>
<b> Admin</b> – Can harvest the API from command line and perform other admin tasks.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq9ExWueniMr9gmjlWSKzBESLL70hwuCfjhzQClQsVhWYhv2o3cJ4LlEUYfi6YK5IY1VVo7voz4lLUvnVuxnWkOamdNjeS5DNbuCLbDJNSlgXWGRdCHigA7P70XqFsfRM0Wpb8366XQhc/s1600/oac1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq9ExWueniMr9gmjlWSKzBESLL70hwuCfjhzQClQsVhWYhv2o3cJ4LlEUYfi6YK5IY1VVo7voz4lLUvnVuxnWkOamdNjeS5DNbuCLbDJNSlgXWGRdCHigA7P70XqFsfRM0Wpb8366XQhc/s400/oac1.png" width="400" /></a></div>
<div>
<br /></div>
<!--EndFragment--><br />
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
<b style="text-align: start;"><u><br /></u></b></div>
<div style="text-align: justify;">
<b style="text-align: start;"><u>Projects-Departments</u></b></div>
<div style="text-align: justify;">
<b style="line-height: 24px;">OER :</b></div>
Projects are the primary means of gathering metrics in OER. OER tracks assets produced by projects, as well as assets consumed by projects. In order for a user to access any files associated with assets in OER, the user must be assigned to a project. Both Users and Projects are assigned to Departments. This is convenient from a reporting standpoint, as organizations can then track the production and consumption of reusable assets to a specific department. OER allows creation of both projects and departments apart from the Default Department and Common Project.<br />
<div>
<!--StartFragment-->
<!--EndFragment--></div>
</div>
<div>
<br /></div>
<div>
<b style="line-height: 24px; text-align: justify;">OAC:</b></div>
<div style="text-align: justify;">
<span style="line-height: 24px;">OAC doesn't allow creation of custom projects and all API assets are published/tracked under default "Common Project". It however allows creation of custom Departments.</span></div>
<div style="text-align: justify;">
<span style="line-height: 24px;"><br /></span></div>
<div>
<div style="text-align: start;">
<b><u>Asset Data Model</u></b></div>
<div style="text-align: start;">
</div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<b style="line-height: 24px;">OER :</b></div>
OER provides a base set of data and option to import harvester solution pack which includes asset types specific for SOA artifacts (BPEL/OSB). Most of the SOA code artifacts when harvested get mapped to one of these asset types underneath. Example: a SCA project upon harvesting will create several OER assets like Composite, Business Process:BPEL, ComponentType, XSD, XSLT, WSDL, JCA, FaultPolicies , Adapter, Interface, Endpoint, Service etc.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeuzWWDoW_M1Mr7jO_57ueFVsklZ-ZMVhtdhGJD6P6FZR8ZuurVUWKhahlz0KQnSR9Z-Vb6qDMExXvunHRazx1nP7LIN6z_8VluvBUNaVvRb87wY9qoEUaW4PytWGR04FJkT-gu8-cA10/s1600/oer2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeuzWWDoW_M1Mr7jO_57ueFVsklZ-ZMVhtdhGJD6P6FZR8ZuurVUWKhahlz0KQnSR9Z-Vb6qDMExXvunHRazx1nP7LIN6z_8VluvBUNaVvRb87wY9qoEUaW4PytWGR04FJkT-gu8-cA10/s400/oer2.png" width="163" /></a></div>
<div>
<div>
<br /></div>
<div>
<br /></div>
<div>
There is also an option to create custom Asset types if the need arises. For example: we can create document artifacts to capture Requirements Spec, Technical Design Document etc. to map to various stages of the Service Lifecycle (SDLC).</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b style="line-height: 24px; text-align: justify;"><br /></b></div>
<div>
<b style="line-height: 24px; text-align: justify;">OAC:</b></div>
OAC follows a simplified meta data model for the API assets. It classifies the API assets as either REST or SOAP and every code artifact harvested (BPEL or OSB) get categorized into either of this service type as shown below. <br />
<br />
Also OAC doesn’t provide an option to create any other custom asset type from the console/command line.
<!--StartFragment-->
<!--EndFragment-->
<!--StartFragment--><!--EndFragment--></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjseyV9CB8TnVXEu40fRxQwSj-FEypOUZAiDF_he4CB-ngJbsngZYDXbN6kMS9d21IY2r0qhMBT9j7mKobHU3n5CawoDM4LQ99aLMddyGDMHbpRZHvPqj3dmapVIYmrUP54UQ53siwwkfE/s1600/oac2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="70" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjseyV9CB8TnVXEu40fRxQwSj-FEypOUZAiDF_he4CB-ngJbsngZYDXbN6kMS9d21IY2r0qhMBT9j7mKobHU3n5CawoDM4LQ99aLMddyGDMHbpRZHvPqj3dmapVIYmrUP54UQ53siwwkfE/s400/oac2.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div>
<b><u><br /></u></b></div>
<div>
<b><u>Asset Approval Workflow</u></b></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<b style="line-height: 24px;">OER :</b></div>
Each phase of service lifecycle has assets which follow the various states as they move through the Governance approval workflow.<br />
<br />
Basically asset harvested from command line/console goes to <b>submitted-pending review</b> state. Once the Registrar Accepts and Approves it upon reviewing, it moves to the <b>submitted-under review</b> state. As further approval happens and finally Registrar Registers it the asset state moves to <b>Registered </b>state. Only Registered assets are available for consumption to Users/Developers.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixiEnXldHFac3e6eu1rPdV01Ob5W3qU1HHrJXdF48SwYgxSLrLFUcVDlRfrTSp15aeMsk78TKkwKlq-lKeIJ5BI03fFNMbIKJm1_MvT8Hcouhljh5SP20Ytf5TQxe49zJOWieNcYzt9cY/s1600/oer3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="147" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixiEnXldHFac3e6eu1rPdV01Ob5W3qU1HHrJXdF48SwYgxSLrLFUcVDlRfrTSp15aeMsk78TKkwKlq-lKeIJ5BI03fFNMbIKJm1_MvT8Hcouhljh5SP20Ytf5TQxe49zJOWieNcYzt9cY/s400/oer3.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<span style="line-height: 24px;"><b>OAC:</b></span></div>
OAC follows a simplified approval workflow for the API assets. Every API asset harvested from command line is in <b>Draft</b> state in OAC. The Curator will login to OAC and can review the asset, edit it with additional metadata or documentation and finally change the API status to <b>Published</b>. Only published APIs are available for consumption to Developers.<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqMYLkHcgjgRU2GRz-eXCKs1FwIimUKdwX6NTH_uD1htoKDRPMzKZcsGTNhOkPXrydl2z45mTSGs84WeEMS5zZ5yZkSaeJrI33r-mvlHEVMHCaITHcZjeDv8U0rnxZpjP1N4X1pJt8zmU/s1600/oac3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqMYLkHcgjgRU2GRz-eXCKs1FwIimUKdwX6NTH_uD1htoKDRPMzKZcsGTNhOkPXrydl2z45mTSGs84WeEMS5zZ5yZkSaeJrI33r-mvlHEVMHCaITHcZjeDv8U0rnxZpjP1N4X1pJt8zmU/s400/oac3.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div>
<b><u>Harvesting Assets</u></b></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<b style="line-height: 24px;">OER :</b></div>
OER allows asset submission/harvesting from both OER console as well as command line tool.<br />
<br />
From command line, we need to edit the HarvesterSettings.xml file to ensure OER connection credentials and SOA/OSB project details are specified correctly and then execute either harvester.sh for SOA or osb-harvester.sh for OSB artifacts.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE86ikRYKmbnmt71o0JD5gOqkahA-ExcAcJ39hAKnH-w7xc08egF_GOReoEJZSfDnR_M8-jZl6eeEbeIZ0LYuHbBtA5Tpfwttpkb-yyxyIZ8lz4txS9xUcMgMWnPYb3iDb7gO2CBeRqAU/s1600/oer4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="261" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE86ikRYKmbnmt71o0JD5gOqkahA-ExcAcJ39hAKnH-w7xc08egF_GOReoEJZSfDnR_M8-jZl6eeEbeIZ0LYuHbBtA5Tpfwttpkb-yyxyIZ8lz4txS9xUcMgMWnPYb3iDb7gO2CBeRqAU/s400/oer4.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<b style="line-height: 24px;">OAC :</b></div>
OAC doesn’t allow any harvesting from its Console. You can however use the same harvester scripts of OER to do command line harvesting for API assets into OAC.<br />
<div>
<br /></div>
<div>
<i>NOTE:</i> <i>Both OAC and OER use the same installer and command line tools.</i><br />
<div>
<br /></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div>
<b><u><br /></u></b></div>
<div>
<b><u><br /></u></b></div>
<div>
<b><u>System Settings</u></b></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<b style="line-height: 24px;">OER :</b></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<!--StartFragment-->
<!--EndFragment--></div>
OER Admin screen provides a great set of administration tools, covering lot of areas like Reporting, Notifications, SFID for usage tracking, LDAP/SSO integrations, Policy Management etc.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx6amwfdWU46rniMfritru0syrt70RQOkmRxcvU2PhEtqoVzf4t02tmN16Pnskpsdil_nVR75hscFxrGNG9t4Ux08QE7TqWMvsqCWWItTQ07hef8vpYqr3Qai_w2Xn244V44WXuUPux28/s1600/oer5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="303" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx6amwfdWU46rniMfritru0syrt70RQOkmRxcvU2PhEtqoVzf4t02tmN16Pnskpsdil_nVR75hscFxrGNG9t4Ux08QE7TqWMvsqCWWItTQ07hef8vpYqr3Qai_w2Xn244V44WXuUPux28/s400/oer5.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b style="line-height: 24px;">OAC:</b></div>
OAC Admin screen has comparatively limited set of administration functions with no support for Notification Emails or Reporting. However you do have support for LDAP/Active Directory integration. <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrv55Db7UbNn13kLIcS1ec9lTeYaLVFIkx1EBqDNKtp_z2hjRvAhA8SJXoJEalhodznzaxWGTDQxpcL3Y29hcWmypIwu64ZpV3DzIdIP6tbvvdvLZXZNANMxMY94tO65-Wgf_b-7WY5eo/s1600/oac5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrv55Db7UbNn13kLIcS1ec9lTeYaLVFIkx1EBqDNKtp_z2hjRvAhA8SJXoJEalhodznzaxWGTDQxpcL3Y29hcWmypIwu64ZpV3DzIdIP6tbvvdvLZXZNANMxMY94tO65-Wgf_b-7WY5eo/s400/oac5.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div>
<b><u><br /></u></b>
<b><u>Usage Tracking & Reporting</u></b></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<b style="line-height: 24px;">OER :</b></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
You can either use the OER Console to Use-Download an asset and its usage gets tracked against corresponding project. It prompts you to select the project on screen.</div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3hXIZ9hs3nrlH66t2hDJq2WQI3O92wvnJci1ap5OwrybGU-JbaWvcZkG7eluq3S6GvYbUI4TMrAj2_hOdWAfw5lbJtiwBeshbXheCF0ahXiU1Y0VKjeOb2s9a5vuLbU82LTYdpK7fwww/s1600/oer6_1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3hXIZ9hs3nrlH66t2hDJq2WQI3O92wvnJci1ap5OwrybGU-JbaWvcZkG7eluq3S6GvYbUI4TMrAj2_hOdWAfw5lbJtiwBeshbXheCF0ahXiU1Y0VKjeOb2s9a5vuLbU82LTYdpK7fwww/s400/oer6_1.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_bLgNhGZIKVB5FtYL3gPW2hURf54E8G7Yt8v_5jbvyeGjWgpRscw373u1xLCz3eqvt_eVRvjgmqwikf2Lt7OK36wYXxPPxEE0DS61pNdyiQuNA6G9x_he78Ue6OeexSDPlv-HfmbnBks/s1600/oer6.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_bLgNhGZIKVB5FtYL3gPW2hURf54E8G7Yt8v_5jbvyeGjWgpRscw373u1xLCz3eqvt_eVRvjgmqwikf2Lt7OK36wYXxPPxEE0DS61pNdyiQuNA6G9x_he78Ue6OeexSDPlv-HfmbnBks/s400/oer6.png" width="400" /></a></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
The other way to consume an asset is from Jdeveloper/IDE by downloading the OER plugin. Once you enable SFID, the automated usage tracking is detected by OER.</div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4z7z6ZvL2sI27-zc3Ke17TENmATbMSRrtEXJM9hV2XTXqbzz3GtYCFVYoEdcH_Uo9FQ0tR95ip0qpRNp4iYqrhyVoVT0By5bdAD5h3t61a-N7vuqKpubjWFfeV7TF-FHBP97Bl0cIToA/s1600/oer7.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4z7z6ZvL2sI27-zc3Ke17TENmATbMSRrtEXJM9hV2XTXqbzz3GtYCFVYoEdcH_Uo9FQ0tR95ip0qpRNp4iYqrhyVoVT0By5bdAD5h3t61a-N7vuqKpubjWFfeV7TF-FHBP97Bl0cIToA/s400/oer7.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjyoey9udIwizkDBIazs8CP2lEhsFw6rTEnLUBQnf2FFAtl5IP6ijss5cQrG3sc4FN2-gjsAzkrXZiQTQHKnfynwHx5bQ9LbQ-R6OuCFdTelOW2xex2bZ9U1l1inh72LkHdPNWmwYliNg/s1600/oer7_1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="295" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjyoey9udIwizkDBIazs8CP2lEhsFw6rTEnLUBQnf2FFAtl5IP6ijss5cQrG3sc4FN2-gjsAzkrXZiQTQHKnfynwHx5bQ9LbQ-R6OuCFdTelOW2xex2bZ9U1l1inh72LkHdPNWmwYliNg/s400/oer7_1.png" width="400" /></a></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<br /></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-top: 0pt; unicode-bidi: embed; vertical-align: baseline;">
<!--StartFragment-->
<!--EndFragment--></div>
OER provides out-of-the-box reports which can be used for measuring the overall productivity of project teams, show the quality, status, and value of the asset portfolio. This requires a separate installation and integration with Oracle BI Publisher 11g as the reports get rendered in BIP.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMGX-Su-IIAV5BlciiQI7GZVeDKSspaeAKbthTFTnJI3dkR1mX4r3udzRxqgSwiyNF4huhAGKUb9cLe9ls4R_Rn1gSzdIaIQKBrROkMDTIAsbSWYW3TgNrlDrIdzODO1K5PukaN0Dj1Wk/s1600/oer9.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="375" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMGX-Su-IIAV5BlciiQI7GZVeDKSspaeAKbthTFTnJI3dkR1mX4r3udzRxqgSwiyNF4huhAGKUb9cLe9ls4R_Rn1gSzdIaIQKBrROkMDTIAsbSWYW3TgNrlDrIdzODO1K5PukaN0Dj1Wk/s400/oer9.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b style="line-height: 24px;">OAC:</b></div>
OAC also provides similar options to track usage of API assets from console as well as Jdeveloper. From console the Developer has to click on link Add to MyAPI for the tracking to begin for any Published API asset. <br />
<br />
However there is no Reporting feature available in OAC.<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5GZzoqFGMS34o05LU-0HAZJQ4XPmX7z1ikqK41VjnzKN9jJ11RxpcoY62oi9Ps9C9Nl7v60UXBtwdSDZNrRVkZHn0jCwk8e1P-RfxFbYaA-LpF3F3uCpRaplyTOIXiQE3sOZcYM1-Uio/s1600/oac7.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5GZzoqFGMS34o05LU-0HAZJQ4XPmX7z1ikqK41VjnzKN9jJ11RxpcoY62oi9Ps9C9Nl7v60UXBtwdSDZNrRVkZHn0jCwk8e1P-RfxFbYaA-LpF3F3uCpRaplyTOIXiQE3sOZcYM1-Uio/s400/oac7.png" width="398" /></a></div>
<div>
<br /></div>
</div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-4160419977951099722015-04-20T22:09:00.001-04:002015-04-20T22:09:56.371-04:00Service Monitoring in SOA 11g: Using Oracle BTM 12c<div dir="ltr" style="text-align: left;" trbidi="on">
Oracle Business Transaction Management (OBTM) is a Service monitoring tool for Oracle SOA environments. Oracle acquired it from Amber point and has rebranded it along with adding serveral functionalities to make it compatible with the Oracle FMW stack. Oracle Enterprise Manager (OEM) which provides Server Monitoring capabilities can be used with BTM to provide an end to end Monitoring Capability at Enterprise level.<br />
<div>
<br /></div>
<div>
SOA developers usually rely on either the EM console for monitoring/debugging SOA instances or Oracle Service Bus console (if reporting is enabled) for Service bus flows or log files incase of java components. If the landscape contains all these several components tied together it becomes a nightmare for people supporting/maintaining the system to debug it. </div>
<div>
<br /></div>
<div>
BTM comes handy in these scenarios:</div>
<div>
<ul style="text-align: left;">
<li>It's a centralized service monitoring tool which gives lot of insights into service transactions.</li>
<li>It allows Automatic data collection through BTM Observers, which are non-intrusive in nature (unlike BAM it doesn't require any modifications to existing service code) </li>
<li>It provides an end to end visibility to a service transaction spanning different type of components. (BPEL processes + OSB flows + Java web services+ Database calls etc.)</li>
</ul>
<div>
At the time of writing this article, I have used SOA Suite/OSB 11.1.1.7 with BTM 12.1.0.6.7 on a 11g R2 DB. I won't cover the various installation/configuration steps for setting up the tool as its well documented in below Oracle link.</div>
<div>
<br /></div>
<div>
<a href="http://docs.oracle.com/cd/E24628_01/install.121/e20124.pdf" target="_blank">Oracle BTM Installation Guide</a></div>
<div>
<br /></div>
<div>
I would like to touch upon some of the features the tool provides and a typical topology which will be used in most SOA deployments.</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<b><u><br /></u></b></div>
<div>
<b><u>Service Endpoint Monitoring</u></b></div>
<div>
By default the BTM observers will monitor most of the service end points like BPEL endpoints, OSB Proxy endpoints or Business Services, database adapter calls (create connection, close connection, execute etc), POJOs, JMS queues etc. Even without any transaction creation, you can analyze the data related to each service end point and this data is retained for the configured amount of time (based on logger system policy). You can create custom views of specific service end points related to a particular domain/container which are frequently viewed.<br />
<b><u><br /></u></b></div>
<div>
<b><u>Transactions</u></b><br />
Transactions are very useful when you have multiple components in the service interface like OSB, BPEL, Java, DB adapter calls etc. If there are service interactions which are asynchronous in nature, they can also be correlated using Message Fingerprint (a unique key identified by BTM), ECID or some custom message property to link them up. Transactions provide an end to end visibility on the service message flow through the various components and give analysis data like timings and fault details at individual message level if logging is enabled.</div>
<div>
<b><u><br /></u></b></div>
<div>
<b><u>SLA Policies/Alerts</u></b><br />
SLA policies can be defined on various service end points and email alerts triggered to the concerned stake holders if they are breached. Typical examples would be Avg. response time on a service exceeding a threshold value for a given period of time, Max response time for a service breaching some threshold, number of faults on a critical business service exceeding the high water mark etc.</div>
<div>
<br /></div>
<div>
Based on my experience with the tool:<br />
<ul style="text-align: left;">
<li>Out of the 5 JVM components in a typical BTM installation, the most important ones are the btmMonitor and btmMain. If the transaction load on servers are high, it would be recommended to horizontally scale the btmMonitor across cluster nodes, as its the one interacting with the Observers installed on all the monitored domains. btmPerformance and btmTransaction are other 2 JVMs...</li>
<li>I would say this is a very nice tool for technical people/developers and not something which would be used by Business users. The UI provides very detailed information at a granular level for each service transaction capturing information like throughput, Avg./Max response times, faults etc which can be very useful while doing performance testing of services.</li>
<li>The SLA alert emails are very helpful for support team while debugging production issues when end systems aren't responding in a timely fashion.</li>
<li>There is a BTM CLI (Command Line Interface) utility provided by the product which can be used to extract service/transaction information based on a time range. This can be used for reporting purposes for use cases like how many transactions ran for more than 30 seconds in a day for a specific service interface.</li>
<li>The underlying database tables of BTM is highly de-normalized (perhaps to optimize read performance and render data on the UI faster) but it makes it highly difficult to query specific data. It would be an understatement to say these DB tables are not straightforward to interpret.</li>
</ul>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-13773837456046125222014-05-20T14:48:00.003-04:002014-05-20T14:48:16.252-04:00Large Payload Handling In SOA<div dir="ltr" style="text-align: left;" trbidi="on">
There are several use-cases where Integration/Middleware layer is expected to handle large payload (XML/Non-XML) processing. There are many technical challenges with these kind of implementations:<br />
<br />
<ul style="text-align: left;">
<li>How to process such large files (>1 GB) without running into Out Of Memory/Heap Space issues.</li>
<li>How to fine tune the design to ensure SLAs are met and data transformations are done efficiently without eating up server resources.</li>
</ul>
<div>
Oracle has published several white papers and articles <span class="s1">outlining the various use-cases </span>where Oracle FMW/SOA Suite can be leveraged to process large payloads. These also cover the various best practices/configurations while designing/implementing such integrations.</div>
<div>
<br /></div>
<div>
<a href="http://www.oracle.com/technetwork/middleware/soasuite/learnmore/binarycontentlargepayloadhandling-1705355.pdf" target="_blank">Whitepaper on Large File Processing</a></div>
<div>
<a href="http://docs.oracle.com/cd/E12839_01/integration.1111/e10224/sca_large_docs.htm" target="_blank">Configuration involved in handling large files via SOA</a></div>
<div>
<br /></div>
<div>
In this blog post I would cover one such use case of Processing large XML (with repeating structures). Requirement was to concurrently process more than 10 large sized XML files (each > 1GB). Oracle recommends using below approach for this use case:</div>
<br />
<div>
<div class="p1">
</div>
<ul style="text-align: left;">
<li>De-batching XML</li>
<li>Chunked Read</li>
<li>Streaming XPath functions</li>
</ul>
<br />
<div class="p1">
<i><u>Steps followed</u>:</i></div>
<div class="p1">
</div>
<ul style="text-align: left;">
<li>For me requirement was to ensure input and output file have same sequence of data, so de-batching input XML wasn't an option as that would have generated different output files and merging those at end was a challenge. </li>
<li>Created a BPEL and l<span class="s1">everaged File Adapter's ChunkedRead operation. The approach was basically to invoke read </span>operation on file adapter inside while loop based on the chunk size configured. This will ensure that instead of loading the whole XML file into the memory, chunks of data will be loaded. <i>JCA : property name="ChunkSize" value="1000";</i></li>
<li>XSLT was be used on smaller payload size rather than the entire large payload. Used <span class="s2">properties like <i>streamResultToTempFile</i> which enables XSLT results to be streamed </span>to a temporary file and then loaded from the temporary file instead of caching into memory as a whole document in binary XML format (resulting in OOM errors)</li>
<li>Ensured proper JVM heap size settings (4-6 GB), transaction timeout settings (15-20 mins) and audit configurations are done at server level to avoid OOM errors.</li>
</ul>
<div>
With the SOA approach I was able to successfully process only 1 to 2 large files of 1-1.5GB size concurrently. The time taken by BPEL was high (around 5 minutes for single file) and also the heap usage was very high. (XSLT was straight forward direct mapping for few fields only). This BPEL solution didn't scale up for concurrent processing of 3 or more files and started giving "Out Of Memory: Heap space" errors.</div>
<div>
<br /></div>
<div>
<u><b>Alternative Approach</b></u>:</div>
<div>
<br /></div>
<div>
With BPEL ruled out, the Plan "B" was to implement core processing logic in Java layer and invoke the java static method from OSB/BPEL using Java callout/Java embedding activities.</div>
<div>
<br /></div>
<div>
<u><i>Steps followed:</i></u></div>
<div>
<ul style="text-align: left;">
<li>File streaming (read/write) was done using <i>java.nio</i> packages as these are faster and more efficient.</li>
<li>Method was implemented for file chunking i.e instead of reading and transforming the whole >1GB file, it was split into smaller chunks (4MB size) and processing was carried out each chunk (byte stream).</li>
<li>JAXB libraries were used for marshalling and unmarshalling of data and the transformation logic was embedded inside the java code itself.</li>
<li>Proper exception handling was implemented to reject bad records in any chunk of data and generate output data with only good data.</li>
</ul>
<div>
<u><b>Results:</b></u></div>
<div>
This alternative approach turned out to be a highly scalable solution and also helped in achieving the required SLAs with minimal heap usage.</div>
</div>
<div>
<ul style="text-align: left;">
<li>Was able to process 10-12 such large files with less heap usage and in lesser time frame. (** Around 12 minutes for concurrently processing 12 such large files of 1GB size with overall heap usage of 1GB. Below is a JConsole screenshot after processing the files)<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUXikNcVAYywSZfp_DIwVLkI6h7abj-EmiwypnZcxnU3rpjeogQY3NV1an4mpHNFBOX0pGOPT_JPnvU3uWXJM7qvymFqyiuNBXQ2Qr9yNGLIcThsRCLbE7TXdQ7yAufy3WJzhJVqCkdf4/s1600/Screen+Shot+2014-05-21+at+12.07.42+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUXikNcVAYywSZfp_DIwVLkI6h7abj-EmiwypnZcxnU3rpjeogQY3NV1an4mpHNFBOX0pGOPT_JPnvU3uWXJM7qvymFqyiuNBXQ2Qr9yNGLIcThsRCLbE7TXdQ7yAufy3WJzhJVqCkdf4/s1600/Screen+Shot+2014-05-21+at+12.07.42+AM.png" height="215" width="400" /></a></li>
<li>Load Balancing in Cluster environment was achieved by leveraging OSB Business Service's load balancing capability. This helped in distributing the file processing load across nodes of the cluster.</li>
</ul>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-74719803502364102862013-10-29T12:08:00.002-04:002013-10-29T12:10:16.466-04:00Integrating BAM with BPEL in SOA 11g<div dir="ltr" style="text-align: left;" trbidi="on">
Oracle Business Activity Monitoring (BAM) provides ability to create real time dashboards. BAM can act as a centralized monitoring framework across enterprise application integrations. It can pull data from critical points of the business process flow and display those KPIs in real time reports/alerts. With this post I would like to show how simple it is to integrate BAM with BPEL processes (won't get into step wise details for same as there are Tutorials available on OTN and web for the same) . There are 2 ways of integration BAM with BPEL in SOA 11g:<br />
<br />
<ul style="text-align: left;">
<li> Using BAM adapter </li>
<li> Using Sensor/Sensor Action inside BPEL.</li>
</ul>
<div>
First and foremost login to your BAM console (http://hostname:port/OracleBAM ) and navigate to the BAM Architect to create the Data Object.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRThOWE8M92McfVa1Cc2UCpL4-PWuiLnnxbiOeoiAnca5nEecTNO6dHgjvYJWUUWU_XVPy0Ovz5IxxTH_69MrY7NA4P3PAdBrgwl9fYyAPS_4_DLzkKeeif7V4rT3lDjiPjrMgH14xdSE/s1600/bam1.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRThOWE8M92McfVa1Cc2UCpL4-PWuiLnnxbiOeoiAnca5nEecTNO6dHgjvYJWUUWU_XVPy0Ovz5IxxTH_69MrY7NA4P3PAdBrgwl9fYyAPS_4_DLzkKeeif7V4rT3lDjiPjrMgH14xdSE/s1600/bam1.JPG" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
Designing the data object is critical because that determines what exact fields we want to capture from BPEL and send it across to the BAM Active Data Cache.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBlGblcZQlbRXu1kd7ns7vfpyMonWfug8IAGwg5vJlspkPXdk0ner73qMoQATTG6hcuSqYMH_9sBEKW2aKvjwXgG8rcUKRSSLUzzNfH1oC8WoyDI63IcH3u1yn11SR93_gu61hb37ZSu4/s1600/bam2.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBlGblcZQlbRXu1kd7ns7vfpyMonWfug8IAGwg5vJlspkPXdk0ner73qMoQATTG6hcuSqYMH_9sBEKW2aKvjwXgG8rcUKRSSLUzzNfH1oC8WoyDI63IcH3u1yn11SR93_gu61hb37ZSu4/s400/bam2.JPG" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
Next step is to navigate to the BAM Active Studio and create your real time report using the Data Object created above. Active Studio provides various report templates which you can incorporate to build interactive real time dashboards like Pie-Charts, Bar Graphs etc. Based on the requirement these can be designed.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2wbLoHCcr1nkA05shaweoNV7ygAILCyNL0GGuwepZWdPSy0llOIackimr3z8Wye3pQB0OJqDlY2STbmq33itI7G_7yj63crew0_BSxd0XVBOFGh0bX_yaZCqtKiOgyOkgu24SyNbmw2w/s1600/bam3.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2wbLoHCcr1nkA05shaweoNV7ygAILCyNL0GGuwepZWdPSy0llOIackimr3z8Wye3pQB0OJqDlY2STbmq33itI7G_7yj63crew0_BSxd0XVBOFGh0bX_yaZCqtKiOgyOkgu24SyNbmw2w/s320/bam3.JPG" width="320" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
Once the report is ready and saved, next step is configuring the BAM adapter on the Weblogic Admin console of the SOA server where BPEL code runs (assuming BAM and SOA are running on different servers).</div>
<div>
<br /></div>
<div>
On Admin console, navigate to Deployments-OracleBAMAdapter - Configuration - Outbound Connection </div>
<br />
<div>
Pools and expand oracle.bam.adapter.adc.RMIConnectionFactory and click on eis/bam/rmi (you can use your own JNDI name instead of using the default JNDI).</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLNKoTZb8WRCKJFd2H2dZP7U03FPFnPqcMOimZaBY42i_qdRukwPWUtz0BV5cPNZsDzEO-Olz9RGSjlrpsANrRPX-ifJfp-XGADN6hCqg1Zi7xGSohzYGGJvKusy3DLgDN7Xsv37OFl4k/s1600/bam4.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="102" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLNKoTZb8WRCKJFd2H2dZP7U03FPFnPqcMOimZaBY42i_qdRukwPWUtz0BV5cPNZsDzEO-Olz9RGSjlrpsANrRPX-ifJfp-XGADN6hCqg1Zi7xGSohzYGGJvKusy3DLgDN7Xsv37OFl4k/s400/bam4.jpg" width="400" /></a></div>
<div>
<br /></div>
<br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
Once saved, redeploy the BAM adapter for the changes to take effect.</div>
<div>
<br /></div>
<div>
Next step is to move to Jdeveloper and open the BPEL code in the Monitor perspective. Create a BAM sensor variable and assign a sensor action to the same. Inside the orchestration flow you can assign appropriate values to the BAM sensor variable.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpxAEIyx_wLXakMlN_nAY19UYYCR2pZdAb0Fca5Dae-qPiwCyDy8Q9K0da4i0V2JnvLTPONiFZqhT5e4mrlIDCGaOd81CNP5QQ713VLis6lI-K21nL9szpJ8qr5eQKGUia4544hmIbgG8/s1600/bam5.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpxAEIyx_wLXakMlN_nAY19UYYCR2pZdAb0Fca5Dae-qPiwCyDy8Q9K0da4i0V2JnvLTPONiFZqhT5e4mrlIDCGaOd81CNP5QQ713VLis6lI-K21nL9szpJ8qr5eQKGUia4544hmIbgG8/s400/bam5.JPG" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3WlUATlmMYKIOP0FThLYTxtgUgHGUbcMjyIlRkMgAzTvPFBwpCZ_AtLtGYs2olJr_eqIVuM85KURyBLVdhWQeU3hySfHLAVUeL_CKoQSWa6sHRPlzgpeoZVv5T5ZrdvfSaE9D5IBiXXs/s1600/bam6.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3WlUATlmMYKIOP0FThLYTxtgUgHGUbcMjyIlRkMgAzTvPFBwpCZ_AtLtGYs2olJr_eqIVuM85KURyBLVdhWQeU3hySfHLAVUeL_CKoQSWa6sHRPlzgpeoZVv5T5ZrdvfSaE9D5IBiXXs/s400/bam6.JPG" width="286" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
BAM sensor action defines what kind of operation we want to perform. Here we are sending the data to the BAM Data Object created earlier (establish a connection to the BAM server from Jdeveloper to access the DO). The Mapper file maps elements from the BAM sensor variable to the Data Object fields.</div>
<div>
<br /></div>
<div>
Once the code is deployed and BPEL instances are initiated you can navigate back to BAM console and click on Active Viewer - Select your report and watch it get updated in Real-Time with data sent from BPEL. Below is a sample custom report created based on the above Data Object.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOsN-5fgz9UhN92oXQOtdR78C6Pgj7aFVOkcQ9ICsO3LB1upPmiBsWS6MskC4D493LITUAFfJf3pS4WKjW7GY_uWXeDeuPJ_EYzpwJWrLKFTuE9vlDtHb-7gx2LAklEo4ldlMykwsWKQg/s1600/bam7.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOsN-5fgz9UhN92oXQOtdR78C6Pgj7aFVOkcQ9ICsO3LB1upPmiBsWS6MskC4D493LITUAFfJf3pS4WKjW7GY_uWXeDeuPJ_EYzpwJWrLKFTuE9vlDtHb-7gx2LAklEo4ldlMykwsWKQg/s400/bam7.JPG" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
These reports have additional capabilities which can be enabled on them like Drill Down feature which lets you click on the Pie Chart/Bar graph and get additional details about that specific data set.</div>
<div>
<br /></div>
<div>
Apart from these custom reports, BAM also ships with an Out-Of-The-Box report feature called <b>Monitor Express</b> which helps in real time composite instance monitoring. Single click enablement from Jdeveloper by switching to Monitor perspective of .bpel file and selecting Monitor Configuration from top left and selecting the specific mode we want to monitor. We can monitor scope level activities or entire BPEL level.</div>
<div>
<br /></div>
<div>
The setup steps which need to be done from back end (BAM server) are :</div>
<div>
<ul style="text-align: left;">
<li>Edit the SOA_HOME/bam/config/BAMICommandConfig.xml and set below 4 properties</li>
</ul>
<ol style="text-align: left;">
<li>ICommand_Default_User_Name</li>
<li>ICommand_Default_Password</li>
<li>ADCServerName</li>
<li>ADCServerPort</li>
</ol>
<div>
<ul style="text-align: left;">
<li>Next navigate to SOA_HOME/bam/samples/bam/monitorexpress/bin</li>
<li>Set JAVA_HOME and run the setup.sh. This script will load the required reports and data objects for the Monitor express dashboard.</li>
</ul>
<div>
You should see something similar to below once this is enabled at runtime.It helps to find how many instances completed/faulted, average processing time of the composites, fault details etc.</div>
</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_vQSSNpsswUJhRvSoxvHUVzk_lo6Rnxcj3ZINcHTecGzcsez9uoyi4c4smLW85FP4wbOxTcBYy6ob3i7oP_edncMtAkRmMw7cpSPLGZ5U9amQ2kPBnWb3oIAyBVrStMvFbr0UhnNAk98/s1600/bam8.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="251" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_vQSSNpsswUJhRvSoxvHUVzk_lo6Rnxcj3ZINcHTecGzcsez9uoyi4c4smLW85FP4wbOxTcBYy6ob3i7oP_edncMtAkRmMw7cpSPLGZ5U9amQ2kPBnWb3oIAyBVrStMvFbr0UhnNAk98/s400/bam8.JPG" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
BAM is a very powerful and useful feature available from the Oracle SOA stack and can help in setting up Enterprise wide monitoring framework. Hope this post provides a basic understanding of how it can be easily implemented in SOA based integrations.</div>
</div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-22771639763218525952013-09-15T13:18:00.002-04:002013-09-15T13:24:01.123-04:00Working With Weblogic JMS Bridge<div dir="ltr" style="text-align: left;" trbidi="on">
Weblogic messaging bride is a type of forwarding mechanism for JMS messages which can be used to transfer messages between two different domains of weblogic server. Basically the bridge has a Source Destination and a Target Destination which used along with JMS adapter helps to send the messages from one place to other. In this blog post have captured some of the configuration steps for JMS bridge to work:<br />
<br />
1. <b><u>Create a persistent store </u></b><br />
In Admin console; Click Lock and Edit and Under Persistent Stores ; Select New ; Create FileStore<br />
Name the store and target it to a specific server and finally activate the changes.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSB7nO5tboXtHH_ulaUc8AzV0LiiU5vgymqqsG764RGPN0Vq8H2Lwz9l1_cQv7TPwF45JLDrlQBGbPm7omSbHjGJu9k6wOyCFoEYx_9w2OiP_LdKzozgqn4Fy67ncZtstarV7Iw1JJmHk/s1600/b1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSB7nO5tboXtHH_ulaUc8AzV0LiiU5vgymqqsG764RGPN0Vq8H2Lwz9l1_cQv7TPwF45JLDrlQBGbPm7omSbHjGJu9k6wOyCFoEYx_9w2OiP_LdKzozgqn4Fy67ncZtstarV7Iw1JJmHk/s1600/b1.png" /></a></div>
<br />
<div class="MsoNormal" style="margin-left: 42.3pt;">
<span lang="PT"><br /></span></div>
<br />
<br />
<br />
<br />
<br />
<br />
2. <b><u>Create a JMS Server</u></b><br />
In Admin console ; Click Lock and Edit and Under JMS Servers ;
Select New<br />
Set a name and select the corresponding FileStore and set the target to a specific server and after finishing, finally activate the changes<br />
<br />
3. <b><u>Create JMS Module</u></b><br />
<div style="text-align: left;">
<span lang="PT" style="font-family: inherit; font-size: 11pt; line-height: 115%;">In Admin console ; Click Lock and Edit and Unde</span>r JMS Servers<span style="font-family: inherit; font-size: 11pt; line-height: 115%;"> ; Select
New</span></div>
<div style="text-align: left;">
<span style="font-family: inherit;">Click Next and Target it to the Servers and again click next. In the below
page select the Check Box and click finish.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOAfxu8MlrUr-kDLxefPCbsAfgPqGphyysEVw-S7FKrgHwTGgHnGkVNZ213u3aGYhNmuDxcYEnDKxb8mivShwWhTY1_1CJtl4GWbGjiHPrd_Rj91XQ5Rqu11WpMDDJHI-puQ8X_4qp1qs/s1600/b2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="82" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOAfxu8MlrUr-kDLxefPCbsAfgPqGphyysEVw-S7FKrgHwTGgHnGkVNZ213u3aGYhNmuDxcYEnDKxb8mivShwWhTY1_1CJtl4GWbGjiHPrd_Rj91XQ5Rqu11WpMDDJHI-puQ8X_4qp1qs/s320/b2.png" width="320" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br />
<br />
Click on the JMSModule and navigate to the Subdeployments page and click
on New. Select a name and also target it to the JMS servers created earlier.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
4. <b><u>Create Connection Factory</u></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnjkQD7-KAiYybVIPlf9o7d0hHlXAfZr2HNXBtkBZh8OaXyj3hukV4o-7cE9z9LnwGul7oZ2beoCoCQIAeKER2WeyR0G_XZFWfmSxF87-_yWzJP4Dng5xyp_-51f_HsbSAZkKdecswgtU/s1600/b3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnjkQD7-KAiYybVIPlf9o7d0hHlXAfZr2HNXBtkBZh8OaXyj3hukV4o-7cE9z9LnwGul7oZ2beoCoCQIAeKER2WeyR0G_XZFWfmSxF87-_yWzJP4Dng5xyp_-51f_HsbSAZkKdecswgtU/s320/b3.png" width="320" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br />
<br />
Provide Name and JNDI name leaving rest fields as default and in next page click on Advanced targeting and select the subdeployment created earlier</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4U5d-UTtflrn_Mw5jnNa5u-cYttmgA9qfut2X9RzfKc213wCGN-0WvXveK1mbqBUbWey6HFZrQ4Gqt0u1bokPjCQIqKEUiLQ8ct5HUCbwUj3RQzKqRL1WltWvWXZ5SbZZK2lrYz4s47Y/s1600/b4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4U5d-UTtflrn_Mw5jnNa5u-cYttmgA9qfut2X9RzfKc213wCGN-0WvXveK1mbqBUbWey6HFZrQ4Gqt0u1bokPjCQIqKEUiLQ8ct5HUCbwUj3RQzKqRL1WltWvWXZ5SbZZK2lrYz4s47Y/s320/b4.png" width="320" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGIn_sLIZ7ZTYy6gKpRC_MMipHs0Mzsktrt7hHaGGJ7gGLAk1GiGbXiSUKH22phNOrcKo1SP10DTKcwqM8LusqCTNb2dfbg9TdHDsDmmKtbv7om4_B2egJMixTgKXePvULo3hm4-7Z3Hs/s1600/b5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="39" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGIn_sLIZ7ZTYy6gKpRC_MMipHs0Mzsktrt7hHaGGJ7gGLAk1GiGbXiSUKH22phNOrcKo1SP10DTKcwqM8LusqCTNb2dfbg9TdHDsDmmKtbv7om4_B2egJMixTgKXePvULo3hm4-7Z3Hs/s320/b5.png" width="320" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br />
5. <b><u>Create Queue</u></b></div>
<div style="text-align: left;">
Next create a Distributed JMS queue providing name and JNDI and under Advanced targeting, select the subdeployment created. Once finished activate the changes.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwvk1bi6CzMkBhgfONkhNQSjd9s8upNTl9s9pzbXj7smO0neHBKBR1mSkF76z_VEOLUqNIFZRrEiA_ZJsCJjomEzdUS3IyyHRiGi63c-OeE9jsZieXQOGLrjCyrzB60d_WVlbWOf7HozY/s1600/b6.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwvk1bi6CzMkBhgfONkhNQSjd9s8upNTl9s9pzbXj7smO0neHBKBR1mSkF76z_VEOLUqNIFZRrEiA_ZJsCJjomEzdUS3IyyHRiGi63c-OeE9jsZieXQOGLrjCyrzB60d_WVlbWOf7HozY/s320/b6.png" width="320" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
<br />
6. <b><u>Create JMS Bridge Destinations</u></b></div>
<div>
First create the source bridge destination.<br />
In Admin console ; Click Lock and Edit and Under JMS Bridge
Destinations ; Select New </div>
<div>
Provide the below details:</div>
<div>
<div class="MsoNormal" style="margin-left: 42.3pt;">
<span lang="PT">Connection URL: <span style="background: yellow; mso-highlight: yellow;">t3://source hostname:port/</span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-left: 42.3pt;">
<span lang="PT">Connection Factory JNDI Name: </span></div>
<div class="MsoNormal" style="margin-left: 42.3pt;">
<span lang="PT">Destination JNDI Name: </span></div>
<div class="MsoNormal" style="margin-left: 42.3pt;">
<br /></div>
Click on OK and then click on source bridge destination name and e<span lang="PT">nsure that the Weblogic credentials are correctly set there. This would be source server/domain credentials from where messages will be read.</span><br />
<span lang="PT"><br /></span>
Similar fashion create a target bridge destination and provide corresponding details.<br />
<br />
<b>NOTE:</b> If weblogic is installed on a clustered server, the Connection URL format will be:<br />
<span style="background-color: yellow;">t3://node1 hostname:port,node2 hostname:port</span><br />
<br />
Once done activate changes.<br />
<br />
7. <b><u>Create JMS Bridge</u></b><br />
<span lang="PT" style="font-family: inherit; font-size: 11pt; line-height: 115%;">In
Admin console ;Click Lock & Edit and Under Bridges ; Select New.</span><br />
<span style="font-family: inherit; font-size: 11pt; line-height: 115%;">Provide name, select the corresponding source and target JMS destinations and finally click on Finish.</span><br />
<span style="font-family: inherit;"><span style="font-size: 11pt; line-height: 115%;"><br /></span>
<span style="font-size: 11pt; line-height: 115%;">If all configuration is correct, we should see the below status for the JMS bridge under Monitoring tab.</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWkkjIHX32qsDlAyPK0dVN7cxr2GlcJuV4q6qF_9xoLXw0m-cH_QVtPa8whOHqxiw3Teb4OV_XUm9zjSwnqUd-a2OUnxgdZy4EaBep3Li1P1X3l1ytsXegXqSVNs1sewCJwpsTeI9taTU/s1600/b8.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWkkjIHX32qsDlAyPK0dVN7cxr2GlcJuV4q6qF_9xoLXw0m-cH_QVtPa8whOHqxiw3Teb4OV_XUm9zjSwnqUd-a2OUnxgdZy4EaBep3Li1P1X3l1ytsXegXqSVNs1sewCJwpsTeI9taTU/s1600/b8.png" /></a></div>
<span style="font-family: inherit; font-size: 11pt; line-height: 115%;"><br /></span>
<br />
<div class="MsoNormal" style="margin-left: 42.3pt;">
<b><span lang="PT"><br /></span></b></div>
<b><span lang="PT"><br /></span></b>
<b><span lang="PT"><br /></span></b>
<b><span lang="PT"><br /></span></b>
<b><span lang="PT"><br /></span></b><br />
<b><span lang="PT">NOTE :</span></b></div>
<div class="MsoNormal" style="margin-left: 42.3pt;">
<span lang="PT">For the XA Adapter to work the following file has to be deployed to
Weblogic with name <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-left: 42.3pt;">
<span lang="PT" style="background: yellow; mso-ansi-language: PT; mso-highlight: yellow;">jms-xa-adp</span><span lang="PT">
from </span><b><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Tahoma, sans-serif; font-size: 8.5pt; line-height: 115%;">/MW_Home/wlserver_10.
3/server/lib/jms-xa-adp.rar</span></b> <span lang="PT"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-left: 42.3pt;">
<span lang="PT">Else the JMS bridge may give an error <i>"</i></span><i><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;">WARN: Failed to find the source/target adapter</span> "</i><br />
<br />
Apart from the JMS bridge configuration, need to create the corresponding JNDI name under deployments which will be used at runtime and this should be have the correct Connection factory(<span style="background-color: yellow;">created in step4</span>) configured in it.<br />
<br />
The same JNDI name configured above will be used at design time while configuring the JMS adapter in Jdeveloper. Also the target destination name (<span style="background-color: yellow;">JMS queue created in step5</span>) will be configured in JMS adapter.</div>
</div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-45901409546921832122013-04-09T18:26:00.001-04:002013-04-09T18:35:58.537-04:00SOA 11g: Managed server error "weblogic.messaging.kernel.KernelException"<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: inherit;">Recently came across an issue where the Managed servers were failing with below error. Even though servers start and come to running mode, but the JMS queues are not showing up in admin console under JMS Servers-</span><i>></i><span style="font-family: inherit;">Monitoring -</span><i>></i><span style="font-family: inherit;"> Active Destinations</span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<div class="MsoNormal">
<span style="font-family: inherit;"><i><Error> </i></span><i><</i><i style="font-family: inherit;">JMS</i><i>></i><i style="font-family: inherit;"> </i><i><</i><i style="font-family: inherit;">BEA-040123</i><i>></i><i style="font-family: inherit;"> </i><i><</i><i style="font-family: inherit;"><b>Failed to start JMS
Server "JMS_DEV_SERVER1" due to weblogic.jms.common.JMSException:
weblogic.messaging.kernel.KernelException: Ignoring 2PC record for
sequence=4706 queue=57 because the element cannot be found.</b></i></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><i>weblogic.jms.common.JMSException:
weblogic.messaging.kernel.KernelException: Ignoring 2PC record for
sequence=4706 queue=57 because the element cannot be found<o:p></o:p></i></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><i>
at weblogic.jms.backend.BackEnd.open(BackEnd.java:1008)<o:p></o:p></i></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><i>
at weblogic.jms.deployer.BEAdminHandler.activate(BEAdminHandler.java:200)<o:p></o:p></i></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><i>
at
weblogic.management.utils.GenericManagedService.activateDeployment(GenericManagedService.java:239)<o:p></o:p></i></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><i>
at weblogic.management.utils.GenericServiceManager.activateDeployment(GenericServiceManager.java:131)<o:p></o:p></i></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><i>
at
weblogic.management.internal.DeploymentHandlerHome.invokeHandlers(DeploymentHandlerHome.java:632)<o:p></o:p></i></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><i>
Truncated. see log file for complete stacktrace</i><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;">This issue was after effect of the JMS file persistence store hitting 100% space utilization. As a result of which it got corrupted and was causing the JMS servers to fail while starting/activating.</span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;">To workaround this error, go to the Persistence File Store location (local/Shared SAN storage) and rename the existing *.DAT files to _bkp (say). Then go ahead and restart the managed servers. Now servers should come up fine without any issues/errors.</span><br />
<span style="font-family: inherit;"><br /></span>
Oracle Metalink Note 1473826.1 "FileStore getting corrupted and WLS is unable to initialize JMS leading to BEA-040123 " suggests applying a Weblogic patch for Bug13900234. I haven't tried applying this patch but if issue persists inspite of workaround you can try this option as well.<br />
</div>
</div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com1tag:blogger.com,1999:blog-3467315620430506543.post-35825927881994251622013-04-06T03:34:00.001-04:002013-04-06T03:37:04.994-04:00Automating SOA 11g Admin tasks using WLST<div dir="ltr" style="text-align: left;" trbidi="on">
WLST (Weblogic Scripting Tool) is a powerful feature for Weblogic administrators who want to automate most of their day to day operational tasks. This was initiated back in the BEA Weblogic 8.1 days for standalone weblogic server administration. And since Oracle SOA Suite 11g is now based on Weblogic server, this tool has become handy for SOA suite administrators.<br />
<br />
There are lot of good learning materials available online for people getting started with WLST apart from the standard Oracle documentation. Few noteworthy ones are mentioned below. These links provide some nice examples with sample code which you can use based on your needs.<br />
<ul style="text-align: left;">
<li><a href="http://middlewaremagic.com/weblogic/?page_id=1492" target="_blank">Middleware Magic</a></li>
<li><a href="http://wlstbyexamples.blogspot.com/2010/05/weblogic-server-weblogic-scripting-tool.html#.UV-2DKtg9W0" target="_blank">WLST By Examples</a></li>
</ul>
<br />
With this post I just wanted to give an overview on the different use cases where WLST can be used and how it eases lot of the operational tasks for SOA suite admins.<br />
<br />
<b><u>Common Use Cases </u></b><br />
<ul style="text-align: left;">
<li>Monitoring STUCK threads/Hogging threads </li>
<li>JMS thread pool monitoring</li>
<li>Retiring/Activating SCA composites</li>
<li>Enabling/Disabling OSB proxy/business services</li>
<li>Deploying SCA/OSB code</li>
<li>Deploying/Updating other resources like JMS queues, JDBC datasources etc.</li>
<li>Pausing/Resuming consumption/production on JMS queues</li>
<li>Moving messages between JMS servers</li>
<li>Generating Thread dumps and sending email alerts.</li>
</ul>
<div>
The main thing about working with WLST is understanding of how to navigate the configuration/runtime management beans(MBeans) and how to change the MBean attribute values.</div>
<div>
<br /></div>
<div>
<a href="http://docs.oracle.com/cd/E15051_01/wls/docs103/jmx/understandWLS.html" target="_blank">Weblogic MBeans</a></div>
<div>
<a href="http://docs.oracle.com/cd/E17904_01/apirefs.1111/e13951/core/index.html" target="_blank">Weblogic MBean API Reference</a></div>
<br />
You can either directly connect to the WLST command prompt and execute the necessary commands after connecting to the runtime environment. An example shown below for retiring a SCA<br />
<br />
<pre class="brush: csharp"> cd mw_home/Oracle_SOA1/common/bin
./wlst.sh
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
wls:/offline> connect ("username","password","t3://admin_hostname:port")
Connecting to t3://admin_hostname:port with userid username ...
Successfully connected to Admin Server 'AdminServer' that
belongs to domain 'SOA_DOMAIN'.
Warning: An insecure protocol was used to connect to the
server. To ensure on-the-wire security, the SSL port or
Admin port should be used instead.
wls:/SOA_DOMAIN/serverConfig> sca_retireComposite("listen address",
"username","password","sca name","sca version",partition="partition_name")
</pre>
<br />
The other way to execute is by writing WLST scripts (.py extension) which are similar in structure to Python language and include a lot of Python as well as Jython (Java implementation of python) libraries. Next you write some shell script (.sh) which invokes these .py files and can schedule the same on the crontab at specific intervals.<br />
<br />
The shell script (.sh) basically sets the environment (CLASSPATH and PATH) by calling setWLSEnv.sh and then running the WLST script by calling it as below.<br />
<br />
<i>java weblogic.WLST xxxx.py</i></div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-70045508158463986982012-11-06T15:19:00.005-05:002012-11-06T15:22:53.641-05:00Looping In XSL<div dir="ltr" style="text-align: left;" trbidi="on">
XSL is a functional language and not a programming language !! XSL variables are not actually variables, once set you cannot change their value !! Why is a for loop not working inside XSL !!<br />
<br />
I hope many of us have encountered these questions while using XSL. I have come across many scenarios where I had to create a XSL to iterate through a XML and generate some output but looping is tricky inside XSL. Sure you can run a while loop inside BPEL and get your values assigned but that's clumsy.<br />
<br />
Below is some sample code snippet which can be extended based on your requirements and should come handy when trying to loop inside XSL.<br />
<br /></div>
<pre class="brush: csharp">
<xsl:template match="/">
<root>
<xsl:call-template name="loop">
<xsl:with-param name="i" select="1" />
<xsl:with-param name="count" select="//code to find the counter for loop" />
</xsl:call-template>
</root>
</xsl:template>
<xsl:template name="loop">
<xsl:param name="i" />
<xsl:param name="count" />
<xsl:if test="$i <= $count">
//your code here.You can use the predicate [position() = $i] for correct assignments.
<xsl:call-template name="loop">
<xsl:with-param name="i" select="$i + 1" />
<xsl:with-param name="count" select="$count" />
</xsl:call-template>
</xsl:if>
</xsl:template>
</pre>
Hope this helps..Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-77361570111681131812012-09-19T20:43:00.000-04:002012-09-19T20:44:15.068-04:00Capturing SOAP Headers/Envelope in SOA 11g<div dir="ltr" style="text-align: left;" trbidi="on">
In order to manipulate SOAP Headers in SOA composites you can make use of the bpelx:inputHeaderVariable and bpelx:outputHeaderVariable attributes in invoke activity. However if you want to see the whole SOAP message (envelope with header, body and other parts) its not available out-of-the-box on the EM Console or in logs. In order to log/audit these web service conversations by a SOA composite you can follow below steps:<br />
<br />
1. Attach a management policy to your webservice binding named <b>oracle/log_policy</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4f_WO61CQa4F2CsV_C2mYMYg6n3N6RBnHdluWSC3orXm6aYKh2_Od2NWYXUirOG8O8XefbyVAOElsXoyRPWa88slgwvkiVVRIoOwhMlW2vIOSqZS0Tc4wxYhhxpBPSjbKGdmof5om1CA/s1600/owsm.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4f_WO61CQa4F2CsV_C2mYMYg6n3N6RBnHdluWSC3orXm6aYKh2_Od2NWYXUirOG8O8XefbyVAOElsXoyRPWa88slgwvkiVVRIoOwhMlW2vIOSqZS0Tc4wxYhhxpBPSjbKGdmof5om1CA/s320/owsm.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
2. Redeploy your code and now when a webservice call is made, navigate to the below log directory to check for the SOAP messages<br />
<i>MW_HOME/user_projects/domains/domain_name/servers/managed_server_name/logs/owsm/msglogging/diagnostic.log</i><br />
This log would contain both the SOAP request as well as response and you can view the entire SOAP envelope.</div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-69499055218966571512012-08-27T02:20:00.002-04:002012-08-27T02:28:13.264-04:00Creating Read Only User In Weblogic(SOA 11g)<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: inherit;">In production environments, usually requirement is to change the default Weblogic password (to restrict it just to System Administrators) and create some kind of Read Only user for the Weblogic console. A colleague of mine documented these steps recently and hope these help anyone trying to perform this in QA/PROD environments.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">1. <u>Guest User Creation</u></span><br />
<span style="font-family: inherit;">Login to console as weblogic user and click on Security Realms -> myrealm ->Users and Groups</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz8FPjvjkNPs2m198XB1EkaQN26q_lJBxgYV7zXJwaP9Dgy1N5-dJHAQ2M8YA8-MAtlZau8uQLDcwIMxIxU67GtpCllEEDmHMn36u5UocqzNzG5FNngg6zUGEw1I4_m-x2BUd6ZWIZCrc/s1600/p2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="143" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz8FPjvjkNPs2m198XB1EkaQN26q_lJBxgYV7zXJwaP9Dgy1N5-dJHAQ2M8YA8-MAtlZau8uQLDcwIMxIxU67GtpCllEEDmHMn36u5UocqzNzG5FNngg6zUGEw1I4_m-x2BUd6ZWIZCrc/s320/p2.jpg" width="320" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Click on New, enter Name & Password and then OK.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNWhtwtdTocQLi8lxgPiKVn16nx2N2wuMJMSkNCPBdoVwvIbSyfC6WWexEAMR_pJmWaZCZAeFr1jQcSkFW4luLfOWSxtmEftpYFvurOhjnZafpGBQ0nkIFq7crgrYXNoby3JOGouCOqc8/s1600/p3.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNWhtwtdTocQLi8lxgPiKVn16nx2N2wuMJMSkNCPBdoVwvIbSyfC6WWexEAMR_pJmWaZCZAeFr1jQcSkFW4luLfOWSxtmEftpYFvurOhjnZafpGBQ0nkIFq7crgrYXNoby3JOGouCOqc8/s320/p3.jpg" width="260" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOC_VJffTBwXLTLipK_npacrFon8KqsFD7Pk8yjSxTdc3U_rRxSh5MqdgrgMLtI6n9gfBXC72LjyRKokAkTj6zEOONYeCDTjjiWrss2P1j3vb-EDBVPG8cbDldivUS-IpHXg-h2KXmZic/s1600/p4.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOC_VJffTBwXLTLipK_npacrFon8KqsFD7Pk8yjSxTdc3U_rRxSh5MqdgrgMLtI6n9gfBXC72LjyRKokAkTj6zEOONYeCDTjjiWrss2P1j3vb-EDBVPG8cbDldivUS-IpHXg-h2KXmZic/s320/p4.jpg" width="320" /></span></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOC_VJffTBwXLTLipK_npacrFon8KqsFD7Pk8yjSxTdc3U_rRxSh5MqdgrgMLtI6n9gfBXC72LjyRKokAkTj6zEOONYeCDTjjiWrss2P1j3vb-EDBVPG8cbDldivUS-IpHXg-h2KXmZic/s1600/p4.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: inherit;"><br /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Click on the user which was created (guestuser) and below step ensures that we provide read only access </span><br />
<span style="font-family: inherit;"> to same. Click on Groups tab, choose Monitors group from left pane to right pane. Click on save. Once </span><br />
<span style="font-family: inherit;"> done logout from console (as weblogic) and login with new user to check access.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMj4PKNCJjgiqpfrVdirESe0ViGOo6SZpqt26iBi_p6lQhLyzlVYW3Q8PvqS7phQXwL88Io-pIs8eh9bL2w70isixTCZWhc27qvOAll1v-CKgOpk3lfw6eqCByIwDPn2H4bDtheU595TI/s1600/p5.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMj4PKNCJjgiqpfrVdirESe0ViGOo6SZpqt26iBi_p6lQhLyzlVYW3Q8PvqS7phQXwL88Io-pIs8eh9bL2w70isixTCZWhc27qvOAll1v-CKgOpk3lfw6eqCByIwDPn2H4bDtheU595TI/s320/p5.jpg" width="320" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">2. <u>Weblogic Password Change</u></span><br />
<span style="font-family: inherit;">Login to console as weblogic user and click on Security Realms -> myrealm ->Users and Groups. Click on Weblogic and click on Passwords tab and update the new password and Save.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigG2EaqSLBSaA4pPQW5FKjh2Wkv5Hm3p23otxBLzBM2HHvS1CXXwzuBrCnZdliZ6JMlsSwYPAqZl9HQCB4C9ogaCvN__s46yWFpk8zNO1swOrszhk1MW7BisFg9DTL01c6Y4wCYolzrSg/s1600/p8.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigG2EaqSLBSaA4pPQW5FKjh2Wkv5Hm3p23otxBLzBM2HHvS1CXXwzuBrCnZdliZ6JMlsSwYPAqZl9HQCB4C9ogaCvN__s46yWFpk8zNO1swOrszhk1MW7BisFg9DTL01c6Y4wCYolzrSg/s320/p8.jpg" width="320" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">3. <u>Node Manager Password Change</u></span><br />
<span style="font-family: inherit;">Login to console and click on Domain, click on Security
-> Advanced.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjT0b7ST9Xz1H-gCbyPUauNiuWog8xttXpZwEfF_p24Rq2EKFP2fmhK9Qmjb9c3rUC4DxCE7uqalwJ0S2SEh2ode8SHOFaCCmuEztRijHJubjWe6dFT7oYnucKQCDm9AQWoaMgxNGAF3c/s1600/p8.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjT0b7ST9Xz1H-gCbyPUauNiuWog8xttXpZwEfF_p24Rq2EKFP2fmhK9Qmjb9c3rUC4DxCE7uqalwJ0S2SEh2ode8SHOFaCCmuEztRijHJubjWe6dFT7oYnucKQCDm9AQWoaMgxNGAF3c/s320/p8.jpg" width="320" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Update the password for the Node Manager user (weblogic) and click on Save.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhuNvHvxTbNIJWSM3Epfr5nSpyKuTQIEFpEF7zbTiA_8ms6YPe-6GGdUosKSHyV59dWVtAE28BuMEAokOAhc_j9ivj2L9W2dqnzCbmk3aWWaEZur1rg_xLcaPX-4RiiHItWrAQ0ZNhs20/s1600/p10.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="87" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhuNvHvxTbNIJWSM3Epfr5nSpyKuTQIEFpEF7zbTiA_8ms6YPe-6GGdUosKSHyV59dWVtAE28BuMEAokOAhc_j9ivj2L9W2dqnzCbmk3aWWaEZur1rg_xLcaPX-4RiiHItWrAQ0ZNhs20/s320/p10.jpg" width="320" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">4. <u>Updating Weblogic and Node Manager passwords in Linux</u></span><br />
<br />
Login to fusion server using putty and navigate to the below directory.<br />
· Go to %domain_home%/config/nodemanager<br />
· Open nmpassword_properties<br />
· The file will hold encrypted values, replace all content with:<br />
username=weblogic<br />
password=new password<br />
· Restart the NodeManager<br />
· Check nmpassword_properties file for encrypted values<br />
Repeat same steps in its a multi node cluster environment.<br />
<br />
Changing the weblogic security file :<br />
Go to: %domain_home%/servers/{Managed Server}/security<br />
Open the boot.properties file<br />
Change the values to<br />
username=weblogic<br />
password=new password<br />
Perform same steps on other nodes and Restart Managed Servers.<br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-91780722667324402272012-08-10T19:21:00.000-04:002012-08-10T19:23:31.808-04:00Error while starting cluster: java.lang.RuntimeException: Failed to start Service "Cluster"<div dir="ltr" style="text-align: left;" trbidi="on">
Can't start managed servers in a SOA cluster correctly, SOAInfra is in a failed state and see below errors in log file<br />
<br />
<i><span style="color: red;">Oracle Coherence GE 3.6.0.4 (thread=Cluster, member=n/a): Failure to join a cluster for 300 seconds; stopping cluster service.</span></i><br />
<i><span style="color: red;">Oracle Coherence GE 3.6.0.4 (thread=[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Error while starting cluster: java.lang.RuntimeException: Failed to start Service "Cluster" (ServiceState=SERVICE_STOPPED, STATE_ANNOUNCE)</span></i><br />
<i><span style="color: red;"> at com.tangosol.coherence.component.util.daemon.queueProcessor.Service.start(Service.CDB:38)</span></i><br />
<i><span style="color: red;"> at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.start(Grid.CDB:6)</span></i><br />
<i><span style="color: red;"> at com.tangosol.coherence.component.net.Cluster.onStart(Cluster.CDB:637)</span></i><br />
<i><span style="color: red;"> at com.tangosol.coherence.component.net.Cluster.start(Cluster.CDB:11)</span></i><br />
<div>
<br /></div>
<div>
This maybe caused because of another cluster in same subnet having the same cluster name. To fix this error and start servers correctly go to admin console and click on Managed Server->Server Startup tab. Under arguments field set the below for each server of the cluster.</div>
<div>
<br /></div>
<div>
Let's say the 2 node names are host1.com, host2.com respectively.</div>
<div>
On server startup on Node1 set</div>
<div>
<br /></div>
<div>
<b>-Dtangosol.coherence.wka1=host1.com -Dtangosol.coherence.wka2=host2.com -Dtangosol.coherence.localhost=host1.com -Xmanagement:ssl=false,authenticate=false,autodiscovery=true</b></div>
<div>
<br /></div>
<div>
On server startup of Node2 set</div>
<div>
<div>
<br /></div>
<div>
<b>-Dtangosol.coherence.wka1=host1.com -Dtangosol.coherence.wka2=host2.com -Dtangosol.coherence.localhost=host2.com -Xmanagement:ssl=false,authenticate=false,autodiscovery=true</b><br />
<b><br /></b></div>
</div>
<div>
Once done, save changes and restart the managed servers. Now the error should be gone.</div>
</div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com1tag:blogger.com,1999:blog-3467315620430506543.post-46789051434159194622012-05-08T04:13:00.001-04:002012-05-08T04:14:46.838-04:00Session Management/Pooling While Integrating SOA With Siebel<div dir="ltr" style="text-align: left;" trbidi="on">
Oracle SOA Integrations with Siebel require some kind of session management/pooling to be taken care of. In most common scenarios you maintain Siebel sessions from SOA layer by opening session, making subsequent calls to Siebel webservices and closing the session explicitly. There are other cases also where you may want do some session pool management within SOA by storing the session details (say custom DB table) and maintaining a count of the number of open sessions.<br />
<div>
<br /></div>
<div>
In this post I will cover the common approach of handling siebel sessions in Integration, it follows 3 basic steps:</div>
<div>
<br /></div>
<div>
1. Call a Siebel Session WSDL which supports some kind of ping method/operation and pass username, password and session type ("stateless") in SOAP Header to open a session on Siebel side. Siebel will respond back with a Session Token.</div>
<div>
<div>
2. Use the session token along with session type ("stateless") while making subsequent call to Siebel wsdl for successfully connecting to the opened session.</div>
<div>
3. Finally to close the session explicitly, send session token along with session type as "None".</div>
<div>
<br /></div>
<div>
A sample SOAP Header for request sent to Siebel is as below:
<br />
<pre class="brush: csharp"> <soap:header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<usernametoken>xxxxx</usernametoken>
<passwordtext>xxxx</passwordtext>
<sessiontype>Stateless</sessiontype>
</soap:header>
</pre>
A sample SOAP Header for response received from Siebel is as below:
<br />
<pre class="brush: csharp"><soap:header>
<sessiontoken>xxxxxx</sessiontoken>
</soap:header>
</pre>
Incase Siebel SessionToken expires before making subsequent calls, Siebel will respond back with some error message like Invalid Session Token or Session Timed Out or Session Token has expired. In these cases just reconnect to Siebel by making another call to the Ping method to generate a new session token. The Old session generated on Siebel side will eventually timeout and won't waste any resources as such.
<br />
<br />
That's it ! You should be good to create sessions and make successful calls to Siebel now.</div>
</div>
</div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-12673133432969065722012-03-19T18:36:00.001-04:002012-03-19T18:38:27.789-04:00Webcasts On SOA Integration Options for Oracle Ebusiness Suite<div dir="ltr" style="text-align: left;" trbidi="on">
Came across these webcasts from Oracle Applications Technology Group regarding the various SOA Integration Options for Oracle Ebusiness Suite. I had already covered most of these options in an earlier post here <a href="http://myexperienceswithsoa.blogspot.com/2010/06/soa-integrations-with-oracle-ebusiness.html" target="_blank">http://myexperienceswithsoa.blogspot.com/2010/06/soa-integrations-with-oracle-ebusiness.html</a><br />
<br />
These webcasts provide in-depth sight into the topic along with some demos. Check them out if you are pondering over how to integrate with Oracle Ebusiness Suite.<br />
<br />
<a href="http://oukc.oracle.com/static05/opn/login/?t=checkusercookies&r=-1&c=968694767" target="_blank">E-Business Suite R12 Service Oriented Architectures (SOA) Using the E-Business Suite Adapter</a><br />
<a href="http://oukc.oracle.com/static05/opn/login/?t=checkusercookies&r=-1&c=1136968764" target="_blank">SOA Integration Options for E-Business Suite</a><br />
<br />
NOTE: You will require OTN userid/password to login and access the content of the webcast.</div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-57753004886309598042012-03-12T02:41:00.001-04:002012-03-12T02:47:36.643-04:00Receiving Multiple IDocs Using Single Channel/Program ID In SAP Adapter<div dir="ltr" style="text-align: left;" trbidi="on">
This is a very common problem with Oracle SAP Adapter. For receiving iDocs from SAP, we need to create a channel on the Application adapter tool and each channel is associated with a corresponding program id in SAP system. When we have multiple Integrations with SAP system, it becomes a maintenance overhead for SAP BASIS administrators to create multiple program ids for each of these integrations/idoc_types.<br />
<br />
To overcome this situation and make sure we can receive multiple iDocs via same channel/program id, an elegant solution has been explained in the attached link.
<br />
<a href="https://blogs.oracle.com/ateamsoab2b/entry/soa_11g_sap_single_channel" target="_blank">https://blogs.oracle.com/ateamsoab2b/entry/soa_11g_sap_single_channel</a></div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-54062694531332035302012-02-29T11:58:00.002-05:002012-02-29T12:01:54.062-05:00Plan.xml Not Getting Updated Across Nodes In SOA 11g Cluster<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: inherit;">Recently came across an issue in SOA 11g cluster environment related to Plan.xml.</span><br />
<br />
After creating a data source in Weblogic Admin console, when you update the DB adapter from deployments section, at the "Save Deployment Plan Assistant" screen the data gets stored in the Plan.xml (MW_HOME/ORACLE_SOA1/soa/connectors directory). In a SOA 11g Cluster (lets say 2 node env.) this Plan.xml file gets created on both the nodes first time. However any subsequent updates on the adapter like creation of new datasources or updation to existing ones dont get saved to both nodes. Only the Plan.xml on node where admin server runs gets updated.<br />
<br />
This would cause datasource errors/missing JNDI name errors when the environment is load balanced and requests are routed to the 2nd node.<br />
<br />
This is more of a cluster configuration issue. The Plan.xml should be kept in a location that is shared storage for all cluster nodes. If this hasn't been done while setting up the cluster then every time adapter updation happens, the Plan.xml only gets updated on Admin server node. In that case the solution is to manually copy the Plan.xml from admin server node to other nodes and restart the managed servers.<br />
<br /></div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com2tag:blogger.com,1999:blog-3467315620430506543.post-37083902487554890632012-02-07T22:48:00.000-05:002012-02-07T22:48:19.687-05:00Using DVMs in SOA 11g<div dir="ltr" style="text-align: left;" trbidi="on">
DVM(Domain Value Maps) are static mappings between a source and target system which can be used in transformations. In SOA 10g, DVMs (.xml) could be imported into the ESB Console and during design time accessed via the lookupDVM XPath functions. I would like to cover the usage of DVMs in SOA 11g and how they can be extended/updated at runtime using SOA Composer.<br />
<br />
Within Jdeveloper Right Click on your SOA Composite project and create a new DVM table<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqyuyjWqPkfxHB3v8OJQUlJRvsBaCePCtlTq3P2-s4UjUEd-cXLnuWoGSkStxmLIDhZW1PFFMjBnM9lrrFhdzaZTJY2wG_os2GNUd9lb-GMm7nyDXKUnxpqB1zemRxBogZXqOaq3TaroU/s1600/dvm1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqyuyjWqPkfxHB3v8OJQUlJRvsBaCePCtlTq3P2-s4UjUEd-cXLnuWoGSkStxmLIDhZW1PFFMjBnM9lrrFhdzaZTJY2wG_os2GNUd9lb-GMm7nyDXKUnxpqB1zemRxBogZXqOaq3TaroU/s320/dvm1.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXCL6Exz-BFi9uTD-Pu8eNjKi0XwAVqPLTAvvnN8mqddscg4pgs05popzipTJSDgQArx-LHqqc0vyPVhMMSfw5j_HqbhtlZpYm6o7o2W8xDyro_6tchIsRDJDnVkWvEgAA-eq9jMxqQAI/s1600/dvm.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXCL6Exz-BFi9uTD-Pu8eNjKi0XwAVqPLTAvvnN8mqddscg4pgs05popzipTJSDgQArx-LHqqc0vyPVhMMSfw5j_HqbhtlZpYm6o7o2W8xDyro_6tchIsRDJDnVkWvEgAA-eq9jMxqQAI/s320/dvm.JPG" width="320" /></a></div>
<br />
You can the use this DVM inside your XSL transformation using the lookupDVM function and finally deploy the code.
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmcSO3AwmiREdkgSMwldCd8zeLIDOfhSSzhfiRcIksulj0bM7vquu4kyeivBI6tyRVN4MChTzpHQnhlW81CCFeq2DZ7BPS5q-PBT3nFj5YGzB9b5ZarILWT-jlSsAChyphenhyphenZCmfMrrFnEMYU/s1600/dvm2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmcSO3AwmiREdkgSMwldCd8zeLIDOfhSSzhfiRcIksulj0bM7vquu4kyeivBI6tyRVN4MChTzpHQnhlW81CCFeq2DZ7BPS5q-PBT3nFj5YGzB9b5ZarILWT-jlSsAChyphenhyphenZCmfMrrFnEMYU/s320/dvm2.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;">Modifying the DVM is equally easier. Just login to the SOA Composer (http://hostname:port/soa/composer)</span>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVc7OoleQlQdkCGJx5LXFf0PjwkCyJD-hAwPwIiu4dkOxazjaXpVm8vDDAzE6JTyeFhSMz1iFtdGHHfUxTnul3RVbzr_RGwMduGyJqdYoz9QLewWSAuh8grT24mXDSnyHXe1RydcxwROI/s1600/dvm3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="134" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVc7OoleQlQdkCGJx5LXFf0PjwkCyJD-hAwPwIiu4dkOxazjaXpVm8vDDAzE6JTyeFhSMz1iFtdGHHfUxTnul3RVbzr_RGwMduGyJqdYoz9QLewWSAuh8grT24mXDSnyHXe1RydcxwROI/s320/dvm3.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2cdBP-n6F87u89TS2hJWMH0Pmh6YPSxvTB9MSy6tJnlZZ97ufeA1OgeS-jVGtEGCfqw0lkJzjRdyjZWSCSu34DRlb6FoKTArniLenzMawD8picrkRj_kl1SiCe8P2kBLvDkf_q1LMs74/s1600/dvm4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2cdBP-n6F87u89TS2hJWMH0Pmh6YPSxvTB9MSy6tJnlZZ97ufeA1OgeS-jVGtEGCfqw0lkJzjRdyjZWSCSu34DRlb6FoKTArniLenzMawD8picrkRj_kl1SiCe8P2kBLvDkf_q1LMs74/s320/dvm4.JPG" width="320" /></a><br />
<div class="separator" style="clear: both; text-align: center;">
You can edit the DVM after selecting it and once changes are done Save it and the Commit it. It should commit the changes to the MDS repository and make them available at runtime.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbko95jn7tTi8PXxREA7G-eEahAw59YF515PmtEv8d2Ar0L9waLpnJhIDam5QkBIpu069dlctsCYoMkgvlVIzrJA5Ko0F8w7eFtq2Hum0IeeJcDIumiVc-cLdUHpEnc5Ic2b0JxiUdRs/s1600/dvm5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="183" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbko95jn7tTi8PXxREA7G-eEahAw59YF515PmtEv8d2Ar0L9waLpnJhIDam5QkBIpu069dlctsCYoMkgvlVIzrJA5Ko0F8w7eFtq2Hum0IeeJcDIumiVc-cLdUHpEnc5Ic2b0JxiUdRs/s320/dvm5.JPG" width="320" /></a></div>
</div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-40468702870668811032012-01-15T14:00:00.000-05:002012-01-17T00:58:52.608-05:00SOA 10g FTP Adapter Not Picking Files From FTP Server<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: inherit;">This being my first post of 2012, I would like to wish all my readers a happy and prosperous new year. New year is time for resolutions :-) , apart from regular ones like "Will try to reduce weight" or "Try to keep my room clean" which never works out for me, I will definitely ensure that "I will share knowledge regularly".</span><br />
<span style="font-family: inherit;"><br /></span><br />
<span style="font-family: inherit;">New year, old issue. So decided to iron it out once and for all. SOA 10g FTP adapter wasn't picking files from remote FTP server after Jan 1st. Last file read was on Dec 31st. On further analysis found that the FTP adapter Control file had got corrupted.</span><br />
<span style="font-family: inherit;"><br /></span><br />
<span style="font-family: inherit;">The control file can be found under $OH/j2ee/home/fileftp/controlFiles/{processname~version}/xxxx/<b>lastModifiedDate.txt</b></span><br />
<span style="font-family: inherit;"><b><br /></b></span><br />
On checking the content of this file found below entry<br />
<br />
<div class="MsoNormal">
<span style="background-color: white; font-family: inherit; font-size: 10pt;">#Sat
Dec 31 23:21:55 CST 2011</span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><span style="color: black;"><span style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; font-size: 10pt;">lastModifiedTime=1356969420000</span></span><span style="color: navy; font-size: x-small;"><span style="font-size: 10pt;"><o:p></o:p></span></span></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><span style="color: black;"><span style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; font-size: 10pt;"><br /></span></span></span></div>
<div class="MsoNormal">
As you can see the lastModifiedTime shows as 1356969420000 (This is in milliseconds). This is Unix time or Epoch time and you can use the Epoch converter to convert it into corresponding timestamp.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: inherit; font-size: small;"><span style="font-size: 12pt;"><a href="http://www.epochconverter.com/" title="http://www.epochconverter.com/">http://www.epochconverter.com</a><o:p></o:p></span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
After conversion it comes to:</div>
<div class="MsoNormal">
<b style="font-family: inherit;"><span style="color: #333333; font-size: xx-small;"><span style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; font-size: 9pt;">GMT</span></span></b><span style="color: #333333; font-family: inherit; font-size: xx-small;"><span style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; font-size: 9pt;">:
Mon, 31 Dec 2012 15:57:00 GMT</span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
This is where the problem lies. The lastModifiedTime has been set as 31st December 2012. As a result all files since Jan 1st 2012 are not being picked by FTP adapter because the adapter compares the timestamp on remote FTP server and only picks files which are greater than the lastModifiedTime.</div>
<div class="MsoNormal">
<span style="color: navy; font-family: inherit; font-size: x-small;"><span style="font-size: 10pt;"><o:p><br /></o:p></span></span></div>
<div class="MsoNormal">
<b style="background-color: white; line-height: 16.5pt;"><span style="color: #003d5d; font-family: inherit; font-size: medium;"><span style="font-size: 15pt; font-weight: normal;">What
is epoch time?</span></span></b></div>
<div class="MsoNormal">
<span style="color: #333333; font-family: inherit; font-size: xx-small;"><span style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; font-size: 9pt;">The<span class="apple-converted-space"> </span><b>Unix epoch</b><span class="apple-converted-space"> (or<span class="apple-converted-space"> </span></span><b>Unix time</b><span class="apple-converted-space"> or<span class="apple-converted-space"> </span></span><b>POSIX time</b><span class="apple-converted-space"> or<span class="apple-converted-space"> </span></span><b>Unix timestamp</b>)
is the number of seconds that have elapsed since January 1, 1970 (midnight
UTC/GMT).<o:p></o:p></span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><u>SOLUTION</u></b></div>
<div class="MsoNormal">
<span style="color: navy; font-size: x-small;"><u><br /></u></span></div>
<div class="MsoNormal">
Stop the SOA server, take backup of controlFiles directory, remove the control files and redeploy the code , Start SOA server. As a result new control file should come into picture and FTP process should pick files correctly.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Why the controlFile (lastModifiedDate.txt) got corrupted at first place during year change...that is something which I have to figure out. Looks like a bug with Oracle FTP adapter. Will update this post once I get a confirmation regarding same.</div>
</div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-68754869520678094452011-12-01T19:36:00.005-05:002011-12-01T19:52:01.780-05:00Rotating *.out files in SOA 11g Weblogic Server<div dir="ltr" style="text-align: left;" trbidi="on">
A very common issue in SOA 11g servers (Weblogic) is the inability to rotate *.out file using out of the box tools or scripts. We can rotate *.err and *.log files but not *.out files . As a result the server keeps hitting the 100% space utilization issue as the *.out file keeps grows to Gigabytes if not monitored correctly.<br />
<br />
By default Weblogic doesn't have options to rotate the *.out file, so if we are running on Linux boxes, we can add the following snippet under /etc/logrotate.conf file and append a function to handle *.out files<br />
<pre class="brush: csharp">(location of logs directory)/*.out {
copytruncate
rotate 5
size=10M
}</pre>
Basically the above function rotates the .out file for 5 times,once each file reaches the 10MB size and then it truncates the file.<br />
For eg. *.out -> *.out.1 -> *.out.2 -> *.out.3 -> *.out.4 ->*.out.5 and finally *.out.5 is truncated and made to 0 bytes.<br />
<br />
To schedule the above cleanup you can write a cron job as per your desired schedule which would call “/usr/sbin/logrotate /etc/logrotate.conf” command.<br />
<br />
That's it !! No more 100% space utilization alerts or server crashing due to space being full.<br />
<div>
<br /></div>
</div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com3tag:blogger.com,1999:blog-3467315620430506543.post-35654850797703149182011-10-23T23:07:00.000-04:002011-10-23T23:34:13.805-04:00Fusion Applications : General Availability and In The Cloud<div dir="ltr" style="text-align: left;" trbidi="on">
I know this is already there across the web now, but thought of mentioning this bit of Oracle news...<br />
<br />
Oracle finally took the wraps off the Oracle Fusion Applications (next generation ERP solution) by making it generally available to customers during the Oracle Open World (OOW 2011) conference. They also announced that Oracle Fusion Application modules like HCM, CRM etc will be available in the cloud (SAAS offering).<br />
<br />
Below diagram depicts a high level overview of what Oracle Fusion Applications is about...as can be seen below it is best of breed applications taking features from Oracle Ebusiness Suite, Peoplesoft, Siebel and JD Edwards along with number of other product acquisitions done by Oracle across industries and business functionalities. It has embedded analytics/BI across the UI which is empowered by technologies from Hyperion and it is built on top of Oracle Fusion Middleware stack which provides the webservices and security framework.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKVgxudHep_aQ789QS1TIB9qdZm7FnoF2r7HVBho4T6sG0tGYw7Tm83CKlPMxHNVoEdMEr04fwMMD4eqdKbHrzZg1FDP72MKbVG2ZBNKSVegsdEUsgKaWOykPXWZHKk6cc2zhTRQ9TKWc/s1600/fusion.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKVgxudHep_aQ789QS1TIB9qdZm7FnoF2r7HVBho4T6sG0tGYw7Tm83CKlPMxHNVoEdMEr04fwMMD4eqdKbHrzZg1FDP72MKbVG2ZBNKSVegsdEUsgKaWOykPXWZHKk6cc2zhTRQ9TKWc/s320/fusion.jpg" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
For more details on the cloud solutions visit <a href="http://cloud.oracle.com/">http://cloud.oracle.com</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3vLgCwk_vqt3TNOKKV0ZX1o7TwPkeS1nPDtQMZxZx8DNyujkvKEY0kY7SVcAP3305gSIuHRv5tWvL9UWRUwVeWdU85gJQ6U-S9d696RzpskDx45-44XoSv6py_y6gR-wRMZe65SCLutM/s1600/cloud.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3vLgCwk_vqt3TNOKKV0ZX1o7TwPkeS1nPDtQMZxZx8DNyujkvKEY0kY7SVcAP3305gSIuHRv5tWvL9UWRUwVeWdU85gJQ6U-S9d696RzpskDx45-44XoSv6py_y6gR-wRMZe65SCLutM/s320/cloud.jpg" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
If you are an Oracle Partner, you can visit <a href="http://www.oracle.com/partners/secure/campaign/eblasts/fusion-application-455396.html">http://www.oracle.com/partners/secure/campaign/eblasts/fusion-application-455396.html</a> to get more in-depth details about Fusion Applications via the Fusion Learning Center.</div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0tag:blogger.com,1999:blog-3467315620430506543.post-39550437687570448972011-10-17T20:50:00.000-04:002011-10-17T20:57:13.833-04:00SOA 11g: Weblogic Admin Server Down with Error "java.lang.NumberFormatException: null"<div dir="ltr" style="text-align: left;" trbidi="on">
Weblogic Admin server isn't starting and below error is seen in log file:<br />
<br />
<BEA-000386> Server subsystem failed. Reason: java.lang.NumberFormatException: null<br />
java.lang.NumberFormatException: null<br />
at java.lang.Integer.parseInt(Integer.java:417)<br />
at java.lang.Integer.parseInt(Integer.java:499)<br />
at weblogic.ldap.EmbeddedLDAP.validateVDEDirectories(EmbeddedLDAP.java:1097)<br />
at weblogic.ldap.EmbeddedLDAP.start(EmbeddedLDAP.java:242)<br />
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)<br />
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)<br />
at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)<br />
<div>
<br /></div>
<div>
This mostly happens when LDAP files are corrupted under the ../domain-name/server/AdminServer/data/ldap/ directory. A possible cause of corruption is when space on server is full. When the associated volume is full (100%) weblogic server will corrupt these files.</div>
<div>
<br /></div>
<div>
To fix the above error tried the below:</div>
<div>
Remove the ../domain-name/server/AdminServer/data/ldap/conf/replicas.prop file and restart the Admin server. It should work now.</div>
</div>Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com1tag:blogger.com,1999:blog-3467315620430506543.post-91745049911030420772011-10-06T05:11:00.000-04:002011-10-06T05:14:36.992-04:00Using Out-of-the-box Purge Scripts In Oracle SOA 11.1.1.4<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
Purging the SOA Infra tables (aka dehyrdation store) is a very important task for SOA Suite administrators. In case you have production environments where transactional volume is high it can fill up your SOA Infra audit tables fast and if the data growth in tables is not controlled, it can lead to major performance issues or nightmares rather.<br />
<br />
SOA 11.1.1.4 has 2 purging techniques available :<br />
<b>1.</b> Either use the database partitioning concept where the SOA Infra tables are partitioned based on date range or other criteria and you can drop the partitions. This is faster way of doing and comes handy when you have to deal with huge volume of data. This however requires some advanced DBA skills to perform.<br />
<br />
<b>2.</b> We also have some purge scripts available which can come handy. Oracle SOA Suite installations across versions have come with out-of-the-box purge scripts but most of these had performance issues. The 11.1.1.4(aka PS3) version of SOA Suite purge scripts have many performance improvements and are easy to use as well.
This post explains the simple steps required to execute the purge scripts in your environment.<br />
<br />
<b>Step1: </b>Connect to the DB with SQL*Plus as SYSDBA to grant privilages to the SOA Infra user (say DEV_SOAINFRA) that executes the scripts:
<br />
<pre class="brush: csharp">SQL> GRANT EXECUTE ON DBMS_LOCK TO DEV_SOAINFRA;
SQL> GRANT CREATE ANY JOB TO DEV_SOAINFRA;
</pre>
<b>Step2:</b> The Purge Scripts location is $RCU_HOME/rcu/integration/soainfra/sql/soa_purge/
Connect to the DB with SQL*Plus as the DEV_SOAINFRA user and load the scripts:<br />
<pre class="brush: csharp">SQL> @soa_purge_scripts.sql
</pre>
This should create some procedures, functions, types and packages under DEV_SOAINFRA schema.<br />
<b>Step3:</b> Before running the purge check how many records there are to be purged using below SQL. Please note cube_instance is not the only table which gets purged, there are lot of child tables which get purged as well.<br />
<pre class="brush: csharp">SQL> select state, count(*) from cube_instance group by state;
</pre>
<b>Step4:</b> If you want to spool the PLSQL program's output to a log file then set serveroutput on. This would help you understand which are the tables getting purged and also what are the eligible records getting purged.<br />
<pre class="brush: csharp">SQL> SET SERVEROUTPUT ON;
SQL> spool '/tmp/spool.log'
</pre>
Then run the script mentioned in next step and once finished turn off the spooling.
<br />
<pre class="brush: csharp">SQL> spool off
</pre>
<b>Step5:</b> Please note there are 2 modes of running purge either loop purge or parallel purge. In loop purge it iterates through the set of eligible records and purges it. Parallel purge is similar to loop purge with additional flexibility of spawning parallel threads to do the purging (faster, multi threaded approach if dealing with huge number of records). Below is a sample of loop purge, for parallel purge the procedure name is<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: 12px;"> </span><span class="Apple-style-span" style="font-family: inherit;">delete_instance_in_parallel</span><br />
<pre class="brush: csharp">SQL> DECLARE
max_creation_date timestamp;
min_creation_date timestamp;
retention_period timestamp;
BEGIN
min_creation_date := to_timestamp('2011-10-01','YYYY-MM-DD');
max_creation_date := to_timestamp('2011-10-05','YYYY-MM-DD');
retention_period := to_timestamp('2011-10-05','YYYY-MM-DD');
soa.delete_instances(
min_creation_date => min_creation_date,
max_creation_date => max_creation_date,
batch_size => 10000,
max_runtime => 60,
retention_period => retention_period,
purge_partitioned_component => false);
END;
/
</pre>
</div>
You can then use the SQL in Step3 to check how many records were purged once the script completes and also open the spool.log to see the data purged from child tables.
</div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com2tag:blogger.com,1999:blog-3467315620430506543.post-59819269387100616262011-09-29T20:29:00.000-04:002011-09-29T20:33:01.207-04:00SAP IDoc Data With Japanese Kanji or Chinese Characters Overflows<div dir="ltr" style="text-align: left;" trbidi="on">
Recently came across an issue while integrating SAP R3 (4.2) version with SOA 11g (11.1.1.4). When idocs are received by SAP Adapter from the SAP system containing Japanese Kanji/Chinese special characters, it was found that the data overflows on to next segments/xml tags and is distorted. This causes mapping issues as incorrect data is being mapped to. The root cause behind this behaviour is that SAP R/3(4.2) is a non-unicode system while SOA 11.1.1.4 is Unicode.<br />
<br />
The issue is covered in below Oracle documentation as well<br />
<a href="http://download.oracle.com/docs/cd/E14571_01/relnotes.1111/e10132/adapters_iway.htm#CIHBCICF">http://download.oracle.com/docs/cd/E14571_01/relnotes.1111/e10132/adapters_iway.htm#CIHBCICF</a><br />
<br />
Here is the explanations provided by Oracle
<span class="Apple-style-span" style="background-color: white;"></span><br />
<br />
<div style="font-family: Tahoma, sans-serif; font-size: small;">
<span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;">"<i>This issue only occurs on non-Unicode SAP MDMP environments, where one character can be two or more bytes. As an example of this issue, when using Japanese, the SAP field length is four characters. The English word "ball" fits correctly into the field because one character equals one byte. The Japanese word for ball in Shift-Jis encoding is three characters, but two bytes per character, so the last character is truncated and the last character appears in the next field. Since IDocs are positional delimited, this can cause errors in processing. This occurs because SAP uses character length, not byte length for all non-Unicode field lengths. There is no work around on this issue other than using Unicode or using shorter text in IDocs in DBCS.</i>"</span><br />
<span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><br /></span></div>
<span class="Apple-style-span" style="font-family: inherit;">None of the workaround suggested above were feasible options. So tried the below approach to fix this...</span>
<span class="Apple-style-span" style="font-family: inherit;"><br /></span><br />
<span class="Apple-style-span" style="font-family: inherit;">From SAP before sending the idoc, convert all Japanese strings to hexadecimal characters. Once SOA suite receives the idoc, the BPEL uses a java embed/custom XSLT function (java code) to convert the hexadecimal back to Japanese characters.There is lot of sample code available for doing these kind of hex to string conversion. Just make sure you are using the correct charset (like shift-jis for japanese kanji) while doing the conversion.</span><br />
<span class="Apple-style-span" style="font-family: inherit;">Now you should be able to see the idocs properly and use the converted japanese,chinese special characters correctly in your mappings.</span></div>
Anonymoushttp://www.blogger.com/profile/14107032825636494051noreply@blogger.com0