tag:blogger.com,1999:blog-218548412024-03-13T04:34:11.631+01:00my thoughtsStellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.comBlogger74125tag:blogger.com,1999:blog-21854841.post-5265474469242414702012-02-28T08:57:00.005+01:002012-02-28T09:02:29.158+01:00Problem Synchronizing Users to Beehive from Active Directory After Applying 2.0.1.6 Patch<!--[if gte mso 9]><xml> <o:officedocumentsettings> <o:allowpng/> </o:OfficeDocumentSettings> </xml><![endif][if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:trackmoves/> <w:trackformatting/> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:donotpromoteqf/> <w:lidthemeother>SV</w:LidThemeOther> <w:lidthemeasian>X-NONE</w:LidThemeAsian> <w:lidthemecomplexscript>X-NONE</w:LidThemeComplexScript> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> <w:splitpgbreakandparamark/> <w:enableopentypekerning/> <w:dontflipmirrorindents/> <w:overridetablestylehps/> </w:Compatibility> <m:mathpr> <m:mathfont val="Cambria Math"> <m:brkbin val="before"> <m:brkbinsub val="--"> <m:smallfrac val="off"> <m:dispdef/> <m:lmargin val="0"> <m:rmargin val="0"> <m:defjc val="centerGroup"> <m:wrapindent val="1440"> <m:intlim val="subSup"> <m:narylim val="undOvr"> </m:mathPr></w:WordDocument> </xml><![endif][if gte mso 9]><xml> <w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"> <w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"> <w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"> <w:lsdexception locked="false" priority="39" name="toc 1"> <w:lsdexception locked="false" priority="39" name="toc 2"> <w:lsdexception locked="false" priority="39" name="toc 3"> <w:lsdexception locked="false" priority="39" name="toc 4"> <w:lsdexception locked="false" priority="39" name="toc 5"> <w:lsdexception locked="false" priority="39" name="toc 6"> <w:lsdexception locked="false" priority="39" name="toc 7"> <w:lsdexception locked="false" priority="39" name="toc 8"> <w:lsdexception locked="false" priority="39" name="toc 9"> <w:lsdexception locked="false" priority="35" qformat="true" name="caption"> <w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"> <w:lsdexception locked="false" priority="1" name="Default Paragraph Font"> <w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"> <w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"> <w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"> <w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"> <w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"> <w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"> <w:lsdexception locked="false" unhidewhenused="false" name="Revision"> <w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"> <w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"> <w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"> <w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"> <w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"> <w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"> <w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"> <w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"> <w:lsdexception locked="false" priority="37" name="Bibliography"> <w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"> </w:LatentStyles> </xml><![endif][if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Normal tabell"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;} </style> <![endif]--> <p class="MsoNormal" style="font-family:trebuchet ms;"><span style="mso-ansi-language:EN-US;font-size:100%;" lang="EN-US" >After upgrading to Beehive 2.0.1.6 (from 2.0.1.4) we encountered a strange problem. All of a sudden we noticed that users that were created using Active Directory synchronization were not able to login to some services, like Zimbra and Team Collaboration. They were however able to login to Beehive Central. </span></p> <p class="MsoNormal" style="font-family:trebuchet ms;"><span style="" lang="EN-US"><span style="font-size:100%;"> When we checked the bee_data.ws_workspaces table we saw that initially there were 2 workspaces created for newly created users, but after a while there were 0 workspaces. Also, we noticed a lot of the following errors in the BEECORE log files:</span><span style=""><br /></span></span></p><ul style="font-family:trebuchet ms;"><li><span style="" lang="EN-US"><span style="mso-spacerun:yes"> </span><span style="font-family:courier new;font-size:85%;">ErrorCode: ErrorCode:[BEER-00700,SEVERE,A database operation failed due to a transient or permanent error]</span></span></li><li style="font-family:courier new;"><span style="font-size:85%;"><span style="mso-ansi-language:EN-US" lang="EN-US">Details: ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired</span></span></li></ul> <p class="MsoNormal" style="font-family:trebuchet ms;"><span style="mso-ansi-language:EN-US;font-size:100%;" lang="EN-US" > As we have 2 BEECORE instances on each mid-tier node it appears that the BEECORE instances gets into a race condition if they are started at the same time.</span></p> <p class="MsoNormal" style="font-family:trebuchet ms;"><span style="mso-ansi-language:EN-US;font-size:100%;" lang="EN-US" > So the solution was first to increase the PollInterval from 2 minutes to 10 minutes. Then we had to ensure that the 2:nd BEECORE instance on each mid-tier was started well after the first BEECORE instance had completed its synchronization tasks against the Active Directory.</span></p> <p class="MsoNormal" style="font-family:trebuchet ms;"><span style="mso-ansi-language:EN-US;font-size:100%;" lang="EN-US" > We got information from Oracle Support that this is a bug (Bug 11072043 "STBH: USER GETS CREATED IN ENABLED STATE WITH 2 DELETED WORKSPACES") that will be fixed as of Beehive 2.0.1.7. So, until then we have to be careful when starting Beehive.</span></p>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-65809886913845315182011-06-15T14:08:00.003+02:002011-06-15T14:18:01.692+02:00Configure Oracle Beehive with Barracuda Loadbalancer<span style="font-family: trebuchet ms;font-size:100%;" >Oracle / F5 provides instructions for configuring Beehive with BIG-IP, however for other loadbalancers the information is very limited. As we use Barracuda loadbalancer at our site, we had to set this up. In case someone else is using this setup, this might help a bit.<br /><br />I will assume that you have your Barracuda loadbalancer up & running, so I will not go into details about that. Also, as we do SSL offloading in the loadbalancer these instructions assumes that you have your certificate uploaded to the loadbalancer. To do SSL offloading in the loadbalancer was recommended to us by Oracle as doing this on the Beehive servers will consume a significant amount of resources.<br /><br />The actual setup of Beehive in Barracuda is then quite straightforward, start by creating separate service for each of the Beehive services. That means one service each for HTTP, IMAP, SMTP, XMPP and BTP.<br /><br />Note that you cannot do SSL offloading in the loadbalancer for the XMPP service. For this service you will have to terminate the SSL in your Beehive node, using the instructions provided in the Beehive documentation for XMPP. We had a SR running with Oracle Support for a while until they could confirm that it wasn't possible. In the end we decided not to use the Barracuda for XMPP, instead we routed the traffic directly to one of our Beehive nodes.<br /><br />The Barracuda services should then be configured as follows:<br /><br /></span><ul style="font-family: trebuchet ms;"><li><span style="font-size:100%;">HTTP as a 'Layer 7 - HTTP' service </span></li><li><span style="font-size:100%;">IMAP as a 'TCP Proxy' service</span></li><li><span style="font-size:100%;">SMTP as a 'TCP Proxy' service</span></li><li><span style="font-size:100%;">BTP as a 'TCP Proxy' service</span></li></ul><span style="font-family: trebuchet ms;font-size:100%;" ><br />In each of the services you will need to enable SSL Offloading as this options default to 'No'. Apart from that, you could basically use the default options from the Barracuda. For the HTTP service you probably also want to consider the 'Send traffic to Last Resort Server' that will direct any HTTP request to a web server that will display some information in case Beehive for some reason becomes unavailable.<br /><br />To summarize, the setup of Oracle Beehive with Barracuda loadbalancer is a quite simple & straightforward, we did not encounter any particular issues during the setup, with the exception of the XMPP issue.</span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-17275100906130856372011-01-26T14:37:00.004+01:002011-01-26T14:53:32.805+01:00Using op5 (Nagios) for Beehive MonitoringIn addition to using Enterprise Manager we also use op5, a Nagios based monitoring software. So, naturally I wanted to be able to monitor some of the Beehive services using this tool as well as Enterprise Manger. What I initially wanted to know was basically if the OC4J containers in Beehive were up and running or not. As op5 uses the standard NRPE (Nagios Remote Plugin Executor) agent in order to perform the monitoring, the task wasn't that hard to accomplish.<br /><br />The first (and basically only issue) was that I couldn't find and good NRPE plugins to use to perform the monitoring with. The standard check_procs plugin couldn't be used as I did not find any ways to distinguish between the different OC4J processes using this plugin. Well, this wasn't a big issue as you basically can use any given script as a NRPE plugin. So, I quickly created a script that would allow me to count the # of processes for the different OC4J containers, not the prettiest solution, but it does the job.<br /><br />Here is the script:<br /><blockquote><span style="font-size:85%;">#!/bin/bash<br /><br />OK_PROCESSES="4"<br />PROC_NAME="BEEAPP"<br /><br />while getopts "o:N:" optionName; do<br />case "${optionName}" in<br /> "o") OK_PROCESSES="${OPTARG}";;<br /> "N") PROC_NAME="${OPTARG}";;<br />esac<br />done<br /><br />CURRENT_PROCESSES=`ps -ef | grep ${PROC_NAME} | grep -v bash | grep -v grep | wc -l`<br /><br />if [[ ${CURRENT_PROCESSES} -eq ${OK_PROCESSES} ]]; then<br />echo "${PROC_NAME} OK: ${CURRENT_PROCESSES} processes"<br />exit 0<br />else<br />echo "${PROC_NAME} ERROR: incorrect number of processes: ${CURRENT_PROCESSES}"<br />exit 2<br />fi</span><br /></blockquote>Once the script was in place I could continue to configure op5 to use these lines for the monitoring:<br /><blockquote><span style="font-size:85%;">command[bee_core]=/opt/plugins/check_beehive -o 2 -N BEECORE<br />command[bee_mgmt]=/opt/plugins/check_beehive -o 1 -N BEEMGMT<br />command[bee_app]=/opt/plugins/check_beehive -o 4 -N BEEAPP<br />command[bee_client]=/opt/plugins/check_beehive -o 4 -N BEECLIENT<br />command[bee_soa]=/opt/plugins/check_beehive -o 1 -N oc4j_soa</span><br /></blockquote><br />And finally I just had to add these commands as services in op5 (as check_nrpe services) and the monitoring was up & running.Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-83762628453731333512011-01-20T16:12:00.003+01:002011-01-20T16:16:50.757+01:00Some Notes About the Help in the Oracle Zimbra ClientOne thing that is a bit annoying in the Oracle Zimbra Client for Beehive is that the help that is included in the client is not modified to reflect that changes that has been made to the client from Oracle's side. Instead comes the Zimbra client with the standard Zimbra help and there are many things there that is likely to confuse your end users.<br /><br />For example, it contains a section about "Instant Messaging Basics", but there is no instant messaging functions in the Oracle version of the Zimbra client. Some other things that are mentioned but not exists are Spell Check, Multiple signatures, Conversations, Zimlets and many more. As these things are mentioned but non existent will most likely confuse you end users.<br /><br />So what we have done is instead written our own instruction on how-to use the Zimbra web client and put these instructions on our Intranet. Then we have redirected the Help link in the Beehive Zimbra client to point there instead.<br /><br />To implement the redirection you can just change the file:<br /><br /><span style="font-style:italic;"><BEEHIVE_HOME>/j2ee/BEECLIENT/applications/zimbra-ui/zimbra/help/en_US/advanced/Zimbra_User_Help.htm</span><br /><br />and implement a simple HTTP redirect there. If you have multiple BEECLIENT instances you need to implement the change in each of them (putting a soft link in place won't work here).<br /><br />Also, just be careful that when you apply a patch or upgrade Beehive you most likely will have to re-implement this change.Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-63528030047436237562011-01-14T11:33:00.003+01:002011-01-14T11:50:17.849+01:00Mailing lists in BeehiveOne things that strikes you when starting to setup Beehive is the absence of mailing lists. Even though Beehive focuses on collaboration rather than on e-mail, mailing lists still plays an important role in an organisation. So, given the fact that you don't have regular mailing lists in Beehive but your end users demand them, what can you do? So far we have seen 3 options that you can use in Beehive.<br /><br />* Using Beehive workspaces<br />* Using Beehive (or in our case Active Directory) groups<br />* Using an external mailing list server<br /><br />I will discuss these options below and give you my take on each of them.<br /><br /><br /><span style="font-style:italic;">Using Beehive workspaces</span><br /><br />Each user can create a workspace in Beehive and add users to it. So this can be used to mimic a mailing list, but imho, it is a bit of an overkill to setup a workspace just to be able to have a mailing list. As any user can create a workspace you quickly loses any naming standards you might have in place within your organisation, which will make it practically impossible to find the right mailing list for the end users. Also, you will loose control of abandoned workspaces within Beehive when employees leaves. You could have a centralized administration for company wide workspaces and uses these as mailing lists, but this will turn some of your employees into full time workspace administrators.<br /><br /><br /><span style="font-style:italic;">Using Beehive groups</span><br /><br />In our case we synchronize our Active Directory with Beehive and have user and group management there. As you can set a mail address on a group you can use this as an alternative to mailing lists. However, as you do not want any given person to have the right to work inside your LDAP server, this option leads either to a lot of work for your LDAP administrators or you will have to setup a 3:rd party product (or create your own) only for the purpose of handling group memberships. <br /><br /><br /><span style="font-style:italic;">Using an external mailing list server</span><br /><br />This is perhaps the best option to choose for having mailing lists within Beehive. You will only have setup the initial mailing list and you will have to create an external contact in Beehive (if the address should be visible in the address list), but once that is done you can delegate all administration of the list to the list owner. You will also be able to keep any naming standards that you might have in place. Below is an overview on how this could be setup.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fn6sutDzAVA/TTAp6F5W4OI/AAAAAAAAAFs/lusCuhdcql8/s1600/overview.jpg"><img style="cursor:pointer; cursor:hand;width: 228px; height: 320px;" src="http://1.bp.blogspot.com/_fn6sutDzAVA/TTAp6F5W4OI/AAAAAAAAAFs/lusCuhdcql8/s320/overview.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5561991617794466018" /></a>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-88833117968446691892011-01-12T15:59:00.002+01:002011-01-12T16:14:32.156+01:00Relaunching this BlogI have now regained some interest in keeping a technical blog again, so I will once again start to write some technical stuff in it. This time it will be on Oracle Beehive and other things that occurs in my daily work that might be of interest.Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-82536610371565003412008-12-17T10:17:00.000+01:002008-12-17T10:19:02.858+01:00Final Post (on SOA & Java)<span style="font-family: georgia;font-size:100%;" >This is the final post I will make in this blog about SOA and Java. After almost 10 years at Oracle, today is my last day here. I will now go on a 3-week long vacation before I will pick up some new challenges. As my main focus will switch away from the SOA & Java world, I will not continue to write about these topics anymore. I will keep the old articles here for reference and historical interest. I will still continue to post in this blog, but it will be on completely different topics. So, I just would like to say thank you to those of you who has been reading this blog so far!<br /><br />Take care!<br />Stellan</span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com1tag:blogger.com,1999:blog-21854841.post-59822407855613528842008-08-22T14:32:00.001+02:002011-10-06T21:43:26.794+02:005 Top Products we Acquired from BEA<span style="font-size:100%;"><span style="font-family: arial;">Having spent the last weeks looking into the products that we got added to our product stack with the acquisition of BEA, I now feel that I'm starting to get a grip on them and can see how they will fit into our product portfolio. So far some of the products feels very strong and I will elaborate a bit on why I think so in this post. So, I'd like to rank the 5 strongest products, in my opinion, that we got from BEA.</span><br /><br /><br /><span style="font-family: arial; font-weight: bold;">#5 Oracle BPM aka AL BPM</span><br /><br /><span style="font-family: arial;">This product will certainly fill a gap in our portfolio for creating business process. It will enable you to quickly & efficiently create business processes. It will also assist with the monitoring of them according to KPI, which will assist in improving the processes according to business needs. It does in no way replace our other products for creating processes, like BPEL, for example. Rather it complements it in a very good way. </span><br /><br /><span style="font-family: arial;">Sure, there is a danger here that users starts to generate & implement processes on their own, similar to what we see in the database area where users stores business data in spreadsheets or small databases outside of their main databases. One could perhaps compare this risk of generating "process islands" similar to the risk of generating "information islands" for data storage. However, as we will not be able to prevent users from storing data outside of the main databases we will likewise not be able to stop them from creating processes outside of the main <a href="http://www.oracle.com/technologies/soa/index.html">SOA</a> architecture, thus we need to be able to provide a good tool for this purpose and this is <a href="http://www.oracle.com/technologies/bpm/index.html">BPM</a>.</span><br /><br /><br /><span style="font-family: arial; font-weight: bold;">#4 WebLogic Server</span><br /><br /><span style="font-family: arial;">You might be a bit surprised that I put <a href="http://www.oracle.com/technology/products/weblogic/index.html">WebLogic</a> only as number four. The main reason is that WebLogic plays in an area where I think that we already have a very strong product. For sure, WebLogic is a darn good Application Server too, but we got other products from BEA that imho better fills gaps in our product portfolio, thus WebLogic only ends up in spot four.</span><br /><br /><span style="font-family: arial;">The two main things like about WebLogic, and where I think that Oracle AS could be better, is in administration and JMS. The administration tools for WebLogic I find superior to the ones we provide with Oracle AS. The concept of the administration server, which you use to push configuration out to the managed servers is very nice, and will ensure that all servers in a cluster has the same configuration. This was not so easy to do in Oracle AS. Also I find the JMS implementation in WebLogic superior to the one we have in Oracle AS, however, I will not go into the details in this post about this.</span><br /><br /><span style="font-family: arial;">There are a few things that I like in Oracle AS, that WebLogic don't have, for example that ability to run the OC4J container standalone just to mention one.</span><br /><br /><br /><span style="font-family: arial; font-weight: bold;">#3 AL Data Services Platform</span><br /><br /><span style="font-family: arial;">Also perhaps a surprise. In this case it's not so much the product itself, it's rather the area that it's targeting that is interesting. As of today the common way of writing software is in a three-tier architecture: GUI-Middleware-Database. I believe that this will change in the near future and that we will see that four-tier architectures will become more and more common where we introduce a data & computing grid between the middleware and the database, so that we will look into architectures that looks like: GUI-Middleware-Grid-Database.</span><br /><br /><span style="font-family: arial;">We already have a few products in our product stack that targets this domain, like <a href="http://www.oracle.com/products/middleware/odi/odi-suite.html">ODI</a> and <a href="http://www.oracle.com/technology/products/coherence/index.html">Coherence</a>. But we still miss a few pieces to be able to provide a complete stack of products for this domain and here is where the functionality from the Data Services Platform comes into the picture. WebLogic perhaps provides a better choice for an existing product, while DSP provides us with functions that will be crucial for the next big thing. That is why DSP is higher on my list.</span><br /><br /><br /><span style="font-family: arial; font-weight: bold;">#2 Tuxedo</span><br /><br /><span style="font-family: arial;">Before the middleware era, C, C++ and Cobol were the common languages for accessing the Oracle database. When Oracle entered the middleware area it was all Java, Java and some more Java. Sure, we provide modules for Pearl & PHP, but Java is THE middleware language in the Oracle stack. I guess the C & Cobol developers may have felt a bit stepmotherly treated along the road. That is, until now.</span><br /><br /><span style="font-family: arial;"><a href="http://www.oracle.com/technology/products/tuxedo/index.html">Tuxedo</a> can be described as a middleware platform for C, C++ and Cobol. Sure, developers for these languages have previously had the option to license Tuxedo from BEA, but to have it in-house is imho a big bonus for Oracle. This will hopefully give the large group of people developing in C, C++ and Cobol the message that they are not forgotten by Oracle. It will also show that Java is no longer the only option that we provide for developing middleware.</span><br /><br /><br /><span style="font-family: arial; font-weight: bold;">#1 JRockit</span><br /><br /><span style="font-family: arial;">Before the buy of BEA we could provide all pieces of software, from the operating system to the developer IDE, except for one piece; a JDK. With BEA we now have <a href="http://www.oracle.com/technology/products/jrockit/index.html">JRockit</a>, however, this is not the main reason why it is on the number spot on my list.</span><br /><br /><span style="font-family: arial;">The Liquid VM version of JRockit will enable you to run Java applications directly on top of a virtual machine without any operating system. This is a very cool feature that will boost many Java applications. Still, this is neither the reason why JRockit ends up in the number one spot.</span><br /><br /><span style="font-family: arial;">The reason I have JRockit on place number one is the Real Time version of JRockit. This will enable users to run their Java applications with minimal and deterministic interruption for garbage collection. This is a very crucial feature for existing Java applications that needs to be highly performing, but even more important will the combination of JRockit RT and Coherence be. This combination will enable Java developers to write the next generation of Java applications that will perform on the same level as C / C++ applications. This is something that has been missing in the Java world for a long, long time. Hence, JRockit ends up in my number one spot.</span><br /><br /><br /><br /></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com1tag:blogger.com,1999:blog-21854841.post-47651334512655867392008-08-20T10:05:00.002+02:002011-06-15T14:21:00.542+02:00Coherence 3.4 Developer Pre-Release 2 Available<span style="font-size:100%;"><span style="font-family:arial;">The Coherence 3.4 developer pre-release 2 is now available for download. Please note that this release is only available via Oracle MetaLink for customers with CSI numbers.</span><br /><br /><span style="font-family:arial;">Please refer to the release notes for a full list & complete details on the new features</span><br /><br /><span style="font-family:arial;">To obtain the Oracle Coherence 3.4 Developer Pre-Release 2 product, logon to MetaLink and lookup <a href="https://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=732071.1">Note 732071.1</a> and follow the directions.</span></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-77135321726895271022008-08-18T12:40:00.004+02:002011-06-15T14:20:21.101+02:00BPA, BPEL & BPM. Jungle or a Wide Open Road?<span style=";font-family:arial;font-size:100%;" >We (Oracle) provide several tools within the business process design & development area. Also, with the acquisition of BEA we got even more tools to add to our product stack. At a first glance this might be a bit confusing and it also might appear as there are some overlaps between the different tools, however, if you look a little deeper you will find that there is a place for each of these tools within your arsenal for creating business processes.<br /><br />Let's start by have a quick glance at the players, whom they are and what they are do before we do a more throughout comparison between them.<br /><br />To start with, the players are: Oracle Business Process Analysis Suite, Oracle BPM Suite.<br /><br /><a href="http://www.oracle.com/technology/products/bpa/index.html">Oracle Business Process Analysis Suite</a><br />This is the architects' tool. It includes support for process modeling and simulation which makes this a key component of the business process lifecycle. It provides a graphical modeling environment for defining process maps and detailed process flows consisting of both human and automated steps. It also supports data modeling, organizational modeling, impact analysis and rich report generation. Through simulation, you can quickly determine the performance of the process under certain hypothetical conditions. The <a href="http://download.oracle.com/otn/nt/ias/101340/Oracle_Business_Process_Architect_Quick_Start_Guide.pdf">Business Process Architect Quick Start Guide </a></span><span style=";font-family:arial;font-size:100%;" >is a good place to learn more about this tool.</span><br /><span style=";font-family:arial;font-size:100%;" > </span><span style=";font-family:arial;font-size:100%;" ><br /><a href="http://www.oracle.com/technology/products/bpm/index.html">Oracle BPM Suite</a><br />This is a software suite that integrates all phases of the BPM lifecycle (modeling, implementation, execution and monitoring). It will provide the user with an end-to-end tool for all aspects of the business process lifecycle. It is also very suitable to process development according to agile ideas.<br /><br /><a href="http://www.oracle.com/technology/products/ias/bpel/index.html">Oracle BPEL Process Manager</a><br />The Oracle BPEL PM tool will enable to user to create processes that adhere to the BPEL standard. It consists of both a design time and a runtime environment. The design time environment is integrated into <a href="http://www.oracle.com/technology/software/products/jdev/index.html">Oracle JDeveloper</a> and the BPEL PM runtime is highly performing and can be installed on top the most common application servers.<br /><br />So, after introducing the players, let's have a deeper look into when to use each of these tools by using some examples.<br /><br /><span style="font-style: italic;">Example 1</span><br />Acme Inc. is entering the world of SOA. They will replace or integrate all their current processes into a single SOA strategy. Ron is an architect that has been given the task to model this new SOA strategy. Which of the above tools would be most appropriate for Ron to use?<br /><br /><span style="font-style: italic;">Example 2</span><br />Karen is a department manger who also is quite technical. She work for a company that promotes empowerment quite heavily, and she has quite lot of flexibility of how she runs the day to day business of her department. Today she manually handles the holiday requests of her staff using mail and a spreadsheet; however, she would like to automate the process somehow. The company does not have a generic holiday approval process; it is up to each manager to handle, which is in line with their ideas on empowerment. Which of the above tools would be the best for Karen to use to automate this process?<br /><br /><span style="font-style: italic;">Example 3</span><br />John is a software engineer that has been given the task to implement an order entry process. The process has already been designed and he has been given the blueprint. The process is very crucial to the business of the company and needs to be available 24*7, thus it will be deployed in a HA environment. Which of the above tools would be the best for John to use?<br /><br />Well, the answers might be obvious to the you, however, they should give you an idea on where each of the tools in the Oracle BPM stack can help you with various aspects of your process modeling & creation.<br /><br />Oh, I almost forgot, the answers. In Example 1 the Oracle BPA Suite is the obvious choice. In Example 2, most people would go for Oracle BPM Suite as this will help with all phases of the BPM lifecycle. Example 3 would be an example on where to use Oracle BPEL Process Manager as you have High Availability requirements.</span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com1tag:blogger.com,1999:blog-21854841.post-43727543692618548792008-08-15T12:18:00.004+02:002008-12-08T10:40:54.483+01:00Summer Recap<span style=";font-family:arial;font-size:100%;" >Coming back from the holiday, I've noticed that several interesting things have happened with my domain of interest. So, I'd thought I'd make a recap over some of the stuff that's happened.<br /><br /><br /><span style="font-weight: bold;">BEA Acquisition</span><br /><br />I guess no one has missed this. For those of us working in the Middleware area I believe that this is really good news. For sure, some of the products do have an overlap, but what's more important is that the BEA stack will fill in some of the gaps that I think we have had in the past in our middleware stack. I won't dwell more on this now, but will get back with more details in later posts. Most of the information about Oracle & BEA can be found <a href="http://www.oracle.com/bea/index.html">here</a>.<br /><br />One link that I'd just like to highlight is the <a href="http://www.oracle.com/bea/oracle-bea-partner-faq.pdf">Partner Frequently Asked Questions</a> (quite obvious as I'm working with our strategic partners...).<br /><br /><br /><span style="font-weight: bold;">New Products</span><br /><br />As always, being away for a few weeks will give a list of new and interesting products to use. Here is a short list of some of the highlights in my opinion:<br /><br /></span><ul><li><span style=";font-family:arial;font-size:100%;" ><a href="http://www.oracle.com/technology/software/products/ias/bea_main.html">Oracle WebLogic Server 10.3</a><br /><br /></span></li><li><span style=";font-family:arial;font-size:100%;" ><a href="http://www.oracle.com/technology/software/products/jrockit/index.html">Oracle JRockit<br /><br /></a></span></li><li><span style=";font-family:arial;font-size:100%;" ><a href="http://www.oracle.com/technology/software/products/jdev/index.html">Oracle JDeveloper (10.1.3.4) </a><br />Notice that there is also a separate standalone ADF Installer, for those of you installing the ADF runtime on a server...<br /><br /></span></li><li><span style=";font-family:arial;font-size:100%;" ><a href="http://www.oracle.com/technology/software/products/oepe/index.html">Oracle Enterprise Pack for Eclipse 1.0<br /><br /></a> </span></li><li><span style=";font-family:arial;font-size:100%;" ><a href="http://www.oracle.com/technology/software/products/cep/index.html">Oracle Complex Event Processing 2.0<br /><br /></a> </span></li><li><span style=";font-family:arial;font-size:100%;" ><a href="http://www.oracle.com/technology/software/products/ias/bea_main.html?msgid=6683885">Oracle BEA Product Downloads</a><br />All Oracle BEA products downloads on one page...</span></li></ul>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-24456107642292244772008-07-02T09:44:00.000+02:002008-12-08T10:40:54.484+01:00BEA Information on OTN<span style="font-size:100%;"><span style="font-family: arial;">As of today there will be information added on OTN for the Oracle BEA products. Here are some links to get started with:</span><br /><br /><span style="font-family: arial;">Oracle BEA Product Downloads</span><br /><a href="http://www.oracle.com/technology/software/products/ias/bea_main.html"><span style="font-family: arial;">http://www.oracle.com/technology/software/products/ias/bea_main.html</span></a><br /><br /><span style="font-family: arial;">Architects Center</span><br /><a href="http://www.oracle.com/technology/architect/index.html"><span style="font-family: arial;">http://www.oracle.com/technology/architect/index.html</span></a><br /><br /><span style="font-family: arial;">Oracle Service Bus Federation with JMS Store-and-Forward and Dynamic Routing in SOA</span><br /><a href="http://www.oracle.com/technology/pub/articles/rusman-alsb.html"><span style="font-family: arial;">http://www.oracle.com/technology/pub/articles/rusman-alsb.html</span></a><br /><br /><span style="font-family: arial;">Deploying The SRDemo ADF Sample Application on WebLogic Servers</span><br /><a href="http://www.oracle.com/technology/products/jdev/howtos/weblogic/deployingwls.html"><span style="font-family: arial;">http://www.oracle.com/technology/products/jdev/howtos/weblogic/deployingwls.html</span></a></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-56714861516458961812008-06-25T10:23:00.003+02:002011-06-15T14:22:23.345+02:00Specifying the Default ESB Design Time Instance<span style="font-size:100%;"><span style="font-family:arial;">This week I'm running a SOA HA class, and one question that usually comes up during these sessions is the one about the Oracle ESB design time instance. As you probably are aware of, this instance can only run in an Active-Passive setup (I will not dwell about the details of that in this post), so the obvious follow-up question, which isn't answered in the <a href="http://download.oracle.com/docs/cd/B31017_01/core.1013/b28939/toc.htm">Enterprise Deployment Guide</a>, is how do you specify which one of the instance you have configured and deployed the ESB design time on is going to be the default one?</span><br /><br /><span style="font-family:arial;">Well, if you follow the instructions in the EDG 3.1.16, where you set:</span><br /><br /><span style="color: rgb(51, 51, 255);font-size:85%;" ><span style="font-family:courier new;"><process-type id="OC4J_ESBDT" module-id="OC4J" service-failover="1" status="enabled"></span></span><br /><br /><span style="font-family:arial;">you cannot really tell. If you start the instances at approximately the same time, you cannot really say which instance that will be started, for example, suppose that you have configured the instances to be brought up at boot time, and you start the machines at the same time. This might be fine, but under most circumstances you probably would like to select which one that will be the default running ESB design time instance. Well, you obviously always have the option to manually start the selected default instance first, and this problem will then go away.</span><br /><br /><span style="font-family:arial;">Using the <span style="color: rgb(51, 51, 255);font-size:85%;" ><span style="font-family:courier new;">"</span><span style="font-family:courier new;">service-weight</span><span style="font-family:courier new;">"</span></span> parameter can help you a bit with this task. The details of this parameter are described in the <a href="http://download.oracle.com/docs/cd/B31017_01/core.1013/b28944/common.htm#sthref503">Process Manager and Notification Server Administrator's Guide</a>. Basically, the higher value of this parameter, the higher priority to use this instance.</span><br /><br /><span style="font-family:arial;">So, suppose that you configure the instance on machine Apa as:</span><br /><br /><span style="color: rgb(51, 51, 255);font-size:85%;" ><span style="font-family:courier new;"><process-type id="OC4J_ESBDT" module-id="OC4J" service-failover="1" service-weight="200" status="enabled"></span></span><br /><br /><span style="font-family:arial;">and the instance on machine Bepa as:</span><br /><br /><span style="font-size:85%;"><span style="color: rgb(51, 51, 255);font-family:courier new;" ><process-type id="OC4J_ESBDT" module-id="OC4J" service-failover="1" service-weight="100" status="enabled"></span></span><br /><br /><span style="font-family:arial;">OPMN will start the instance on machine Apa, given that they are started approximately at the same time. However, if the instance on machine Bepa has already been started and is up & running, and you then start the instance on machine Apa, OPMN will not bring down the instance on machine Bepa. So, using this solution will only work if the instances are started at approximately the same time.</span><br /><br /><span style="font-family:arial;">If you really want to be sure that a specific instance is primary used, like the instance on machine Apa in the example above, you will have to create an event-script in the pre-start section for the instance running on Apa that brings down the instance running on Bepa. This way the instance on Apa will always will be used, regardless if Bepa is already running. There are some drawbacks with this solution that are documented in the <a href="http://download.oracle.com/docs/cd/B31017_01/core.1013/b28944/common.htm#CJHEHGBJ">OPMN documentation</a> that you should be aware of if considering this solution.</span><br /><br /></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-31441136998332170602008-06-16T18:49:00.001+02:002011-10-06T21:43:26.794+02:00Coherence 3.4 Developer Pre-Release Available<span style="font-size:100%;"><span style="font-family: arial;">The Coherence 3.4 developer pre-release is now available for download. Please note that this release is only available via <a href="http://metalink.oracle.com">Oracle MetaLink</a> for customers with CSI numbers.</span><br /><br /><span style="font-family: arial;">Some of the new features are:</span><br /></span><ul><li><span style="font-size:100%;"><span style="font-family: arial;">Coherence C++ API</span></span></li><li><span style="font-size:100%;"><span style="font-family: arial;">New Coherence Serialization Framework</span></span></li><li><span style="font-size:100%;"><span style="font-family: arial;">New and Improved Coherence Data Grid Functionality</span></span></li><li><span style="font-size:100%;"><span style="font-family: arial;">Management Framework Enhancements</span></span></li><li><span style="font-size:100%;"><span style="font-family: arial;">and many, many more...</span></span></li></ul><span style="font-size:100%;"><span style="font-family: arial;">Please refer to the <a href="http://wiki.tangosol.com/display/COH34UG/Coherence+3.4+Release+Notes">release notes</a> for a full list & complete details on the new features<br /><br /></span></span><span style="font-size:100%;"><span style="font-family: arial;">To obtain the Oracle Coherence 3.4 Developer Pre-Release 1 product, logon to <a href="http://metalink.oracle.com">MetaLink</a> and lookup Note 602553.1 and follow the directions.</span><br /><span style="font-family: arial;"></span><br /><span style="font-family: arial;">For further details about the Oracle Coherence 3.4 Developer Pre-Release please refer to <a href="http://www.oracle.com/technology/products/coherence/coherencedatagrid/34.html">this</a> OTN page.<br /></span></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-16065747079031190012008-06-05T12:51:00.004+02:002011-06-15T14:22:02.785+02:00Using DirectSQL in BPEL / ESB Database Adapter<span style="font-family:arial;">If you read the <a href="http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28994/adptr_db.htm">Database Adapters User's Guide</a> you will sooner or later get to the Performance section, and there you will find <span style="font-style: italic;">DirectSQLPerformance</span> briefly mentioned. However, it is not described in details, so here are some additional comments on this feature. </span><br /><br /><br /><span style="font-style: italic; font-weight: bold;font-family:arial;" >The Default Behaviour</span><br /><br /><span style="font-family:arial;">The normal way for the Database Adapter to work is to use TopLink between the adapter and the Database. This is transparent to the end user when creating a database adapter in either ESB or BPEL. The only hint that you will get that TopLink is involved is in your source project. Here you will find a generated TopLink mapping file and some additional classes used by TopLink within your project. In most cases you will not have to worry about this at all. TopLink behaves like a good citizen within your process, and things work fine.</span><br /><br /><br /><span style="font-weight: bold; font-style: italic;font-family:arial;" >What is DirectSQL?</span><br /><br /><span style="font-family:arial;">This is a feature of the Database Adapter that let it bypass the TopLink framework, and instead use direct JDBC SQL calls to the database. Well, it will not totally bypass TopLink, it will still be used for generating the SQL, obtaining connections, and table introspection. However, other functions of TopLink (for example the cache) will not be used under DirectSQL.</span><br /><br /><span style="font-family:arial;">So, why bother about DirectSQL at all? Well it can, under some circumstances, give you better performance. I have found that it is very hard to identify these circumstances and predict when it will and when it won't improve the performance. The advice is basically just to test it, and see if improves the performance or not. </span><br /><br /><br /><span style="font-weight: bold; font-style: italic;font-family:arial;" >What are the Gotchas?</span><br /><br /><span style="font-family:arial;">There are some requirements that need to be fulfilled in order for this feature to work. If you have configured DirectSQL, but some of the requirements are not fulfilled, the adapter will fallback and use TopLink. It will in these cases also log a warning message why it didn't work.</span><br /><br /><span style="font-family:arial;">The restrictions that needs to be taken into account are listed below: </span><br /><ul><li><span style="font-family:arial;">For an Inbound Adapter you must have DeletePollingStrategy.</span></li><li><span style="font-family:arial;">For an Outbound Adapter you can only use it with Insert.</span></li><li><span style="font-family:arial;">It only works for flat table structures.</span></li><li><span style="font-family:arial;">It is limited to work with String, Number, Clob, Blob and Date & Time Types only.</span></li><li><span style="font-family:arial;">It does not work with the DetectOmissions feature.</span></li></ul><br /><span style="font-weight: bold; font-style: italic;font-family:arial;" >How is it Configured?</span><br /><br /><span style="font-family:arial;">It is configured in the adapter WSDL file:</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:arial;" ><jca:operation</span><br /><span style="color: rgb(0, 0, 153);font-family:arial;" >InteractionSpec="oracle.tip.adapter.db.DBWriteInteractionSpec"</span><br /><span style="color: rgb(0, 0, 153);font-family:arial;" >DescriptorName="myService.PerfOut"</span><br /><span style="color: rgb(0, 0, 153);font-family:arial;" >DmlType="insert"</span><br /><span style="color: rgb(0, 0, 153);font-family:arial;" >DetectOmissions="false"</span><br /><span style="color: rgb(0, 0, 153);font-family:arial;" >UseDirectSql="true"</span><br /><span style="color: rgb(0, 0, 153);font-family:arial;" >OptimizeMerge="true"</span><br /><span style="color: rgb(0, 0, 153);font-family:arial;" >MappingsMetaDataURL="myService_toplink_mappings.xml" /></span><br /><br /><span style="font-family:arial;">Note that you in addition to setting <span style="color: rgb(0, 0, 153);">UseDirectSql="true"</span> you must also set <span style="color: rgb(0, 0, 153);">DetectOmissions="false"</span>, this because DetectOmissions defaults to true.</span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-72478879560530424932008-05-20T15:33:00.001+02:002011-10-06T21:43:26.794+02:005 Reasons Why I Like Coherence<span style="font-family:arial;">There are many reasons to like Coherence, below are five of my favourite reasons why I like this product. I have taken away some of the most obvious ones, like it's performance & scalability, and will try to point out a few ones that might be missed at the first glance.</span><br /><br /><span style="font-weight: bold;font-family:arial;" >1. It's a Very Cool Product</span><br /><span style="font-family:arial;">The last time I ever saw a product that made me raise my eyebrows was when I first saw TopLink, which I guess was sometime back in 2002. At that time I remember that it was a struggle to efficiently map Java objects to relational data. Using pure JDBC calls and populate the objects from the result sets were the common way of doing this back then. It often took efforts & resources to achieve this somewhat effective. TopLink solved that problem so nicely, and all of a sudden the problem no longer existed. Today I feel that with the emerge of SOA applications, we see more and more problems related to performance & scalability and I firmly believe that Coherence will be one product that will help greatly here. (Sorry, I could not resist mentioning performance & scalability...)</span><br /><br /><span style="font-weight: bold;font-family:arial;" >2. It's Designed to Handle Failure</span><br /><span style="font-family:arial;">At any time any given Coherence node can be taken away from the cluster, and the cluster will still continue to work without interruption. The idea is not to protect individual nodes from failing, but to keep the cluster as a whole alive. In order to do so, Coherence has at any given point in time a pre-defined backup plan on what to do with the data in case of failure of an individual cache node and how to distribute the load among the other cluster members. This is a nice one. Most applications works the other way, they are designed to stay up and does everything to prevent them from dying, even if this means dropping client connections, for example. The clients were lost, but the process managed to stay up. Reminds me of the saying "Won the battle, but lost the war...". I think this approach is one that more applications should take; don't worry if you loose an individual component of the application as long as the application as a whole stays up.</span><br /><br /><span style="font-weight: bold;font-family:arial;" >3. It's Easy to Install</span><br /><span style="font-family:arial;">It's a small zip archive, ~8M. You just download & unzip, and the installation is finished and you are ready to run. No installers, no product registry, nothing. I really prefer these types of installations to others. It's simple, it's easy and it works.</span><br /><br /><span style="font-weight: bold;font-family:arial;" >4. It's Configurable</span><br /><span style="font-family:arial;">...and it has reasonable default values. As far as I can recall, I have never came across an application that has such a vast amount options of options in order to alter the configuration to get it to work as you want to. Sure, most applications have the option to alter some of the behaviour with Java and/or XML configurable parameters in order to tweak it, but so far I have not seen any application that comes even close to Coherence on the amount of options you have. Oh, I almost forgot to mention that you could for the options use either Java or XML; you are not restricted to only one of them, which unfortunately is quite common. Did I mention that I also think that most default values make sense, which is unfortunately not so common?</span><br /><br /><span style="font-weight: bold;font-family:arial;" >5. It's Extensible & Modular</span><br /><span style="font-family:arial;">Suppose that you don't like some parts of how Coherence works. For example, you don't think that none of the default caching schemas that Coherence provides really provides what you want. Well no problem, Coherence provides you with a vast set of Interfaces that you can use in order to build you own implementation that behaves the way you want. Some examples are CacheMap, CacheStore, CacheLoader, and AccessController etc, just to mention a few. This is something that I'd like to see more of in other applications as well.</span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-41392268534336754182008-05-16T12:53:00.003+02:002011-06-15T14:21:26.302+02:00Using Coherence with JDeveloper on Machines with Multiple IP Addresses<span style="font-family:arial;"></span><span style="font-family:arial;">Deepak Vohra has published a very nice <a href="http://www.oracle.com/technology/pub/articles/vohra-coherence.html">tutorial</a> on <a href="http://www.oracle.com/technology/index.html">OTN</a> on using <a href="http://www.oracle.com/technology/products/coherence/index.html">Coherence</a> from <a href="http://www.oracle.com/technology/products/jdev/index.html">JDeveloper</a>. It gives you a step-by-step guide on how-to get started using Coherence from within JDeveloper.</span><br /><br /><span style="font-family:arial;">One thing that you should keep in mind going through this tutorial is if you are running this tutorial on a machine with multiple network cards. For example, you have installed the Loopback Adapter on your PC. As long as you are running a single cache (as in the example) this doesn't give you any issues, but if you startup another cluster node outside of JDeveloper and you want to ensure that they belongs to the same cluster then you should specify the IP address that you want the cluster nodes to bind to, otherwise it could happen that they end up binding to different IP addresses on your machine, for example one binds to your NIC and another one binds to you Loopback Adapter, and in this case they won't belong to the same cluster. By default Coherence will attempt to obtain the IP to bind to using the java.net.InetAddress.getLocalHost() call, so it shouldn't happen, but I've seen this happening, so it can happen.</span><br /><br /><span style="font-family:arial;">You can solve this issue by specifying the IP address to bind to by using the Java parameter <span style="color: rgb(51, 51, 255);">tangosol.coherence.localhost</span>, like <span style="color: rgb(51, 51, 255);">-Dtangosol.coherence.localhost=192.168.96.1</span> on the command line when starting the external cache. In JDeveloper this would be done in the 'Run Configuration' configuration as described in the tutorial.</span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-74189353014465249712008-05-14T10:25:00.002+02:002008-05-14T10:28:49.326+02:00New AddressMoved this blog to a new address. The new address is <a href="http://selectedthoughts.com/">http://selectedthoughts.com</a>, the old link should still continue to work.Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-9566789248607666272008-05-13T13:37:00.002+02:002011-10-06T21:35:58.353+02:00Integrating Java & .Net<span style="font-family: arial;">Had a discussion yesterday about Java & .Net integration. Of course, the usual suspects came up; JNI, <a href="http://j-integra.intrinsyc.com/">J-Integra</a> , <a href="http://www.jnbridge.com/">JNBridge</a>, <a href="http://www.codemesh.com/products/juggernet/index.html">JuggerNET</a>, <a href="http://www.javain.com/javain/oojni.jsp">OOJNI</a> etc. However if you do not only need to convert the objects, but also need to have the objects cached for fast transparent access from both Java and .Net, using Coherence is definitely an option. </span><br /><br /><span style="font-family: arial;">Coherence provides transparent conversion to and from Java and .Net data types, including custom application user types. This enables .Net applications to access cached Java objects as native .Net objects and Java applications, including data grid members and Java clients, to access cached .Net objects as native Java objects.</span><br /><br /><span style="font-family: arial;"><a href="http://www.oracle.com/products/middleware/coherence/docs/coherence-dotnet-datasheet.pdf">Here</a> you can find more details about Coherence for .Net. It is available for <a href="http://www.oracle.com/technology/software/products/ias/htdocs/coherence.html">download</a> on OTN. The download includes a .Net demo. To run this demo you either need Visual Studio, or you can use <a href="http://sourceforge.net/projects/sharpdevelop">SharpDevelop</a> (an open source IDE for the .Net platform).</span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-12326466232827632412008-05-07T13:42:00.002+02:002008-12-08T10:40:54.485+01:00Cumulative Patch #8 for SOA Suite 10.1.3.3 Out Now<span style=""> <o:p></o:p></span><span style="font-family: arial;font-size:100%;" >The latest cumulative patch for SOA Suite 10.1.3.3 is out now (MLR#8). All MLR Bundle Patches also include previous Bundle Patches and the base 10.1.3.3.1 patch, so you need only to apply the latest MLR patch either on top of the main SOA Suite 10.1.3.3 release or on any previous 10.1.3.3.1 MLR patch.<o:p></o:p></span> <p style="font-family: arial;font-family:arial;" class="MsoNormal"><span style="font-size:100%;"><span style=""><!--[if !supportEmptyParas]--> <o:p></o:p></span></span></p> <p style="font-family: arial;font-family:arial;" class="MsoNormal"><span style="font-size:100%;"><span style="">For additional details please have a look at the <a href="https://metalink.oracle.com/">MetaLink</a> note 553914.1.<o:p></o:p></span></span></p> <span style="font-family: arial;font-size:100%;" ><span style="">The patch number is 6906880 (SOA Suite 10.1.3.3 MLR#8) and is available for download on <a href="https://metalink.oracle.com/">MetaLink</a>.</span></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-10598108743615445522008-04-29T09:37:00.002+02:002008-12-08T10:40:09.128+01:00Coherence OTN Page Updated<span style=";font-family:Arial;font-size:85%;" ><span class="375582820-28042008">The Coherence pages on OTN have been reorganized and updated with a lot of new content. The URL is:<br /><br /></span></span><span style=";font-family:Arial;font-size:85%;" ><span class="375582820-28042008"><a href="http://www.oracle.com/technology/products/coherence/index.html">http://www.oracle.com/technology/products/coherence/index.html</a></span></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-56023407088209641522008-04-16T14:34:00.000+02:002011-10-06T21:35:32.033+02:00Re-Configuring a Web Service DataControl to Point to Another WSDL<span style=";font-family:times new roman;font-size:100%;" >A common issue that occurs in all projects is the question about moving an Application between different environments; for example, moving from the Development environment to the Test environment or from the Test environment to the Production environment. Normally this is not a big issue, you just make some modifications to your build scripts (Ant, Maven or whatever you use), or you already have different targets within them for the different environments, and within these targets you point the Application to use the appropriate resources (like Databases) for the different environments. Quite convenient. For most type of resources this approach works fine, however when you use an ADF Application that accesses Web Services via a DataControl exactly how-to do this is not that obvious.<br /><br />Suppose that you have a Web Services available in a Test and in a Production environment. The URLs are:<br /><br /><span style="font-style: italic;">Test:</span><br />http://MyTestHost/myContext/TheWebServiceSoapHttpPort?WSDL<br /><br /><span style="font-style: italic;">Production:</span><br />http://MyProductionHost/myContext/TheWebServiceSoapHttpPort?WSDL<br /><br />Now, you create a new JDeveloper project with a Web Service DataControl that point to the Test URL. You then start to browse the project and you find a file called DataControls.dcx. Within this file you find a pointer to a WSDL file (under DataControlConfigs -> AdapterDataControl -> Source -> definition). Great! This must the pointer to my Web Service you think, which is reasonable to believe cause there is no single other reference to a WSDL available within your whole project. So, you modify your Ant build script, creates deployment targets for the different environments that points to the respective WSDL and you deploy to the Test environment. This works fine (well, since the Web Service was generated towards this WSDL, it should). Next, you deploy to the Production environment but now when you run the Application, you still see data from the Test environment. What the ¤%&" going on???<br /><br />The answer here is that there is a little more to the story then what appears at first sight. If you have a look in the WAR file for the Application, you will notice a file called connections.xml, sounds promising, right, as the connections seems to be the problem here? If you open it, you will find some interesting information, but first...<br /><br />If you go back and have another look at your DataControls.dcx under the definitions section, you see an element like:<br /><br /><span style="color: rgb(51, 102, 255);"><service name="TheWebService" namespace="http://testwsdcx/" connection="ClientService"></span><br /><br />as the connection here is the same as the name in the definition it is easy to believe that this point to the definition, however, that is not the case. The connection attribute points instead to the corresponding Reference element in the connections.xml file. Further, in the Reference section, you will find the real pointers that the DataControl uses to communicate with the Web Service. I said pointers, cause there are two for each Reference element; one to the WSDL (under wsconnection) and one to the Port (under service -> port -> soap).<br /><br />I might at this point just add for reference that JDeveloper adds this file automatically to the WAR file during deployment; however, I think you have figured that one out already...<br /><br />So, based on the above discussion we can now solve the problem in two ways:<br /><br />Option A: Let your build script modify the connections.xml file and point to the correct.<br /><br />Option B: Copy the whole Reference section for your Web Service connection and give it another name, for example ClientServiceTest and ClientServiceProd. You can then choose which connection to use by pointing the connection attribute in the DataControls.dcx to the correct definition, like:<br /><br /><span style="color: rgb(51, 102, 255);"><service name="TheWebService" namespace="http://testwsdcx/" connection="ClientServiceTest"></span><br /><br />Or:<br /><br /><span style="color: rgb(51, 102, 255);"><service name="TheWebService" namespace="http://testwsdcx/" connection="ClientServiceProd"></span><br /><br />and of course, you need to handle this in your build script. So far I haven't found any major differences between the approaches, however I think that Option B looks a bit cleaner, but the choice is really yours.<br /><br />Oh, I almost forgot... The connections.xml file is found on the Application level, not on the Project level, for JDeveloper. It is not visible in the IDE, but you can find it in the .adf/META-INF folder for your Application.<br /><br />I'm assuming that the Web Services in the example above are identical; just that they are deployed to different machines...<br /><br /></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com1tag:blogger.com,1999:blog-21854841.post-92053867067740383352008-04-07T15:51:00.002+02:002011-10-06T21:34:24.304+02:00Calling Asynchronous BPEL Process Results in ORABPEL-02118<span style=";font-family:times new roman;font-size:85%;" >If you try to invoke an asynchronous BPEL process that is deployed to Oracle BPEL Process Manager 10.1.3.3 or later you may end up with an ORABPEL-02118 error. Also, this problem was not seen in earlier versions of Oracle BPEL Process Manager.<br /><br />This problem occurs due to that the default behaviour regarding variables for completed instances has changed between these versions. In pre 10.1.3.3 release the default behaviour were to keep global variable information along with the instance information for completed BPEL processes. In 10.1.3.3 this behaviour changed for performance reasons, so that the default behaviour is now not to keep any global variables for a BPEL process once the BPEL process has completed.<br /><br />Note that you can configure this </span><span style=";font-family:times new roman;font-size:85%;" >behaviour</span><span style=";font-family:times new roman;font-size:85%;" > on a process level basis by using the parameter <span style="color: rgb(51, 51, 255);">keepGlobalVariables</span> in the bpel.xml file for the specific process:<br /><br /><span style="color: rgb(51, 102, 255);"><BPELSuitcase></span><br /><span style="color: rgb(51, 102, 255);"> <BPELProcess src="..." id="..."></span><br /><span style="color: rgb(51, 102, 255);"> <configurations></span><br /><span style="color: rgb(51, 102, 255);"> <property name="keepGlobalVariables">true</property></span><br /><span style="color: rgb(51, 102, 255);"> </configurations></span><br /><span style="color: rgb(51, 102, 255);"> </BPELProcess></span><br /><span style="color: rgb(51, 102, 255);"></BPELSuitcase></span><br /></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com1tag:blogger.com,1999:blog-21854841.post-73399927978820360982008-02-26T14:06:00.003+01:002011-10-06T21:34:24.304+02:00'Version Mismatch' Problem when Invoking a BPEL Partner Link that has Both SOAP 1.1 and SOAP 1.2 Endpoints<span style=";font-family:arial;font-size:85%;" >During a recent project we encountered a strange problem. When invoking a Partner Link that is defined towards a Web Service that has both SOAP 1.1 and SOAP 1.2 endpoints defined we got a Version Mismatch fault back. This was quite unexpected, and I assumed that doing some searches on the famous search engine using terms like 'VersionMismatch Oracle BPEL' would yield some relevant hits, but it didn't.<br /><br />Suppose that you have created a Web Service that have multiple ports and bindings, for example, you have both a SOAP 1.1 and a SOAP 1.2 endpoint defined for the Web service. You have also tested the Web Service using a plain Java Client and that works fine. However, when you try to invoke the Web Service as a Partner Link from BPEL you get the following exception instead of the (expected) result:<br /><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" ><fault></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" > <remoteFault xmlns="http://schemas.oracle.com/bpel/extension"></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" ><part name="code"></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" ><code>VersionMismatch</code></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" ></part></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" ><part name="summary"></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" ><summary>Version Mismatch</summary></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" ></part></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" ><part name="detail"></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" ><detail>null</detail></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" ></part></span><br /></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></span><span style=";font-family:arial;font-size:85%;" ><span style="color: rgb(51, 51, 255);font-family:courier new;" ></remoteFault></span><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" ></fault></span><br /><br />It doesn't matter which endpoint (the SOAP 1.1 or the SOAP 1.2) you define the Partner Link to use. You end up with the exception in both cases. At a first glance it looks like BPEL is either sending a SOAP 1.1 message to the SOAP 1.2 port or sending a SOAP 1.1 message to the SOAP 1.2 port. If this occurs then the SOAP spec requires that a "Version Mismatching" fault is raised for such usage; but if this was the case - why does the error occurs regardless of which endpoint that is chosen???<br /><br />Also, if you remove either of the ports & bindings from the Web Service WSDL (it doesn't matter which one) and then configures the Partner Link to use the other one, all works fine.<br /><br />I do not have an explanation for this error, and have only tested it on Oracle SOA Suite 10.1.3.3.<br /><br />However, there is an easy workaround to the problem:<br /><br /></span><ol style="font-family: arial;font-family:arial;" ><li><span style="font-size:85%;">Download 2 local copies to your project of the WSDL for the Web Service.</span></li><li><span style="font-size:85%;">Remove one port & binding (not the same...) from each of the local WSDL copies.</span></li><li><span style="font-size:85%;">Define 2 Partner Links in your BPEL project, one based on each of the local WSDL copies.</span></li><li><span style="font-size:85%;">Implement a Switch to invoke the appropriate Partner Link in your BPEL process.</span></li></ol><span style=";font-family:arial;font-size:85%;" ><br />If you just have the need to invoke either of the endpoints, you of course just need to create one local copy, remove one of the ports & bindings and use this local copy of the WSDL for the Partner Link.<br /><br /></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0tag:blogger.com,1999:blog-21854841.post-83627204951978956492007-12-05T17:24:00.000+01:002011-10-06T21:43:51.719+02:00Maintaining Changes to Web Services<span style=";font-family:arial;font-size:85%;" >A common problem that occurs when working with Web Services is how-to maintaining changes to the WSDL and/or XSD files that are used by the service. The problem occurs when performing changes to the WSDL (or XSD) files like removing operations, renaming operations, changing the structure of data types etc. As you might always not be aware of which clients that are using your service(s); you want to make sure that they continues to work even after you have implemented changes to your service. As support for dealing with this has not been built into the Web services architecture / standards; it is basically left to each implementer to deal with this problem.<br /><br />One way of dealing with this problem is to use Namespaces versions. The approach for this is as:<br /><br />1. Use different XML namespaces for different version of the service.<br />2. Send a specific namespace value along with every SOAP message and result.<br />3. Based on this value a Web Service implementation (mediator) can then correctly determine what to do with the incoming message.<br /><br />You first need to ensure that the namespace for the XML elements resulting from that document is unique, for example, suppose that you now are using a namespace like:<br /><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" >targetNamespace="http://example.com/mySchema.xsd"</span>.<br /><br />You then need to change this to:<br /><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" >targetNamespace="http://example.com/2007/11/01/mySchema.xsd"</span><br /><br />Where the numbers are year, month and date (it is not likely that you will alter the namespace more than once a day...).<br /><br />Now each request will be accompanied with a reference to a namespace thus leaving it up to the Web Services to deal with what to do with requests that come in for any particular namespace.<br /><br />Next thing is to decide what to do with the various types of incoming requests. One approach here is to generate an error if a request for an older namespace is received, and leave it up to the client to deal with this. Another approach is to use a mediator, as mentioned earlier in the post. The task of the mediator is to determine what to do with Web service requests that come in for any particular namespace. This is done by examination of the date stamp on the namespace (introduced in the previous steps) and then route requests from the older namespace to the older version of the Web service, while routing requests from the newer namespace to the new version of the Web service. This means that the URL to the Web Service (the mediator) will always be the same to your external clients, while you are routing it to different services internally.<br /><br />As a mediator you could either use a Web Service that you write the code yourself for to handle this, or you could look into using our <a href="http://www.oracle.com/appserver/esb.html">ESB (Enterprise Service Bus)</a> product for this task.<br /><br /></span>Stellanhttp://www.blogger.com/profile/00182110536198498491noreply@blogger.com0