<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>Antony Reynolds&apos; Blog</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/" />
   <link rel="self" type="application/atom+xml" href="http://blogs.oracle.com/reynolds/xml/rss.xml" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87</id>
   <updated>2009-07-01T16:02:23Z</updated>
   <subtitle>Musings on Fusion Middleware and SOA</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type Enterprise 1.52-en-voltron-r47459-20070213</generator>

<entry>
   <title>11g SOA Suite Now Available</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/07/11g_soa_suite_now_available.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.13147</id>
   
   <published>2009-07-01T16:02:13Z</published>
   <updated>2009-07-01T16:02:23Z</updated>
   
   <summary>Today sees not only the official launch of SOA Suite 11g but also the availability of the software.&amp;#160; You can download it all now from OTN.&amp;#160; Downloads are available for Windows, Linux, Solaris and HP-UX.&amp;#160; You will need the following...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA Suite" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<p>Today sees not only the <a href="http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=95671&amp;src=6749911&amp;src=6749911&amp;Act=209&amp;msgid=7962525" target="_blank">official launch of SOA Suite 11g</a> but also the availability of the software.&#160; You can download it all now from OTN.&#160; Downloads are available for Windows, Linux, Solaris and HP-UX.&#160; You will need the following to develop and run 11g SOA Suite applications.</p>  <ul>   <li><a href="http://www.oracle.com/technology/software/products/ias/htdocs/wls_main.html" target="_blank">Oracle WebLogic Server 11g R1</a> (with or without Oracle Enterprise Pack for Eclipse - OEPE).</li>    <li><a href="http://www.oracle.com/technology/software/products/middleware/htdocs/111110_fmw.html" target="_blank">Oracle SOA Suite 11g R1</a> (includes BPEL, Human Workflow, Business Rules, BAM, Mediator, B2B, OWSM, User Messaging Service and Enterprise Manager Fusion Middleware Control)</li>    <li><a href="http://www.oracle.com/technology/software/products/middleware/htdocs/111110_fmw.html" target="_blank">Oracle Repository Creation Utility 11g R1</a> (creates the database schemas needed by SOA Suite and other components)</li>    <li><a href="http://www.oracle.com/technology/software/products/jdev/htdocs/soft11.html" target="_blank">Oracle JDeveloper 11g R1</a> this also needs the SOA plug in which should be available through the JDev extensions mechanism.</li>    <li><a href="http://www.oracle.com/technology/documentation/middleware.html" target="_blank">Documentation</a> is also available online or may be downloaded.</li> </ul>  <p>Watch the launch webcast and enjoy the latest release of the software, it a big step forward for SOA Suite.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Clustering SOA Suite</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/06/clustering_soa_suite.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.13120</id>
   
   <published>2009-06-30T15:44:12Z</published>
   <updated>2009-06-30T15:44:36Z</updated>
   
   <summary>Building a SOA Suite Cluster Having spent a couple of weeks working on a SOA Suite cluster thought I would share some thoughts around clustering and SOA Suite.&amp;#160; Clustering of both BPEL Process Manager and Oracle Service Bus is relatively...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA Suite" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<h1>Building a SOA Suite Cluster</h1>  <p>Having spent a couple of weeks working on a SOA Suite cluster thought I would share some thoughts around clustering and SOA Suite.&#160; Clustering of both BPEL Process Manager and Oracle Service Bus is relatively straightforward but there are a few gotchas.&#160; Both BPEL and SOA Suite are stateless in the way they implement clustering, however BPEL does of course persist state to a database.</p>  <h2>SOA Suite Clusters</h2>  <p><a href="http://blogs.oracle.com/reynolds/WindowsLiveWriter/ClusteringSOASuite_EB25/image_2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="220" alt="image" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/ClusteringSOASuite_EB25/image_thumb.png" width="379" align="left" border="0" /></a>Both BPEL and OSB clusters expect to be fronted by a load balancer.&#160; Both can provide load balancing through a front end web server but a hardware load balancer is the best approach as shown in the diagram.</p>  <p>In this example we have an Oracle Real Application Cluster database running on 3-nodes to provide a high availability database environment.&#160; We then have two clusters.&#160; A cluster of 5 BPEL Process Manager instances, all pointing to the same RAC database, and a cluster of 5 OSB instances.&#160; The BPEL cluster and the OSB cluster are both fronted by two hardware load balancers.</p>  <p>The BPEL instances and the OSB instances are in an active-active mode, meaning that all nodes are processing requests at the same time.&#160; The load balancers are in active-passive mode, meaning that one load balancer processes all the traffic with the other load balancer acting as a hot standby in case of failure of the first load balancer.</p>  <p>This configuration avoids a single point of failure as every component is duplicated.&#160; The system has been sized to be able to sustain the expected load even in the event of losing a machine.&#160; This is known as “n+1” architecture, meaning that we need “n” machines to meet the requirements and so we provide “n+1” machines to allow for machine failure.&#160; In the example shown we actually have two machines more than we need in normal operation because the the RAC database is running an “n+1” configuration as well as the SOA Suite.&#160; Note that by running OSB on the same machines as BPEL we reduce the amount of extra hardware needed for failover and also reduce the latency of OSB-BPEL communication.</p>  <p>In the event of a failure then only in-process requests would be impacted.&#160; Any requests that are “idempotent” (meaning they can be resubmitted with no ill effects) can be set up to automatically retry, further reducing the impact of a software or hardware failure.&#160; Both BPEL and OSB can be set to automatically retry requests in event of failure, making the failover transparent.</p>  <p>Note that clustering does not help if we have a site failure due to fire, flooding, power failure or air conditioning failure for example.&#160; In those cases we would need to have some sort of disaster recovery site, perhaps using Oracle Data Guard to keep the sites in synch at the database level.</p>  <h2>BPEL Clusters</h2>  <p>A BPEL cluster is effectively defined by a shared dehydration store.&#160; Synchronous interactions must be processed within a single BPEL server instance, as the client has connected to a socket and expects a response on that same socket.&#160; Asynchronous interactions are like any other long running BPEL process and may start processing on one node and then have processing resumed on another node, either due to failure or some other event.&#160; The dehydration store (an oracle RAC database in the example above) provides a common location for process state that allows any BPEL instance to resume execution of a process instance.</p>  <p>When installing a BPEL cluster the best place to start is the <a href="http://download.oracle.com/docs/cd/B31017_01/core.1013/b28941/soa.htm#BGBJIFHH" target="_blank">High Availability Guide</a>.&#160; This outlines that you create a BPEL cluster by doing the following:</p>  <ul>   <li>Get the address of the load balancer.</li>    <li>Run the repository creation assistant to create the BPEL meta-data in the database.</li>    <li>Install OHS and OC4J components on the machines.</li>    <li>Install BPEL Process Manager into the app server instances installed previously.</li>    <li>If using a RAC database make sure that the JNDI data sources are using all RAC nodes.&#160; See the Enterprise Deployment Guide for <a href="http://download.oracle.com/docs/cd/B31017_01/core.1013/b28939/j2ee.htm#ASTED006" target="_blank">instructions on using Fast Connection Failover</a>.</li>    <li>Configure BPEL in a cluster as outlined in the <a href="http://download.oracle.com/docs/cd/B31017_01/core.1013/b28939/j2ee.htm#sthref134" target="_blank">Enterprise Deployment Guide</a>.</li>    <ul>     <li>Set up JGroups to make all nodes aware of each other in the cluster.&#160; Note that in 11g Coherence will be used for this which will simplify configuration.</li>      <li>Set enableCluster and ClusterName in the collaxa-config.xml file.</li>      <li>Make sure the BPEL PM instances all use the load balancer address for server URL and callback URLs.&#160; This ensures that in event of node failure requests and responses are rerouted to remaining instances.</li>   </ul>    <li>Deploy processes on each node to make sure that all components are available on all nodes.&#160; If you don’t do this some processes will work because they don’t have dependencies on non-BPEL components, but others will not.</li> </ul>  <p>Once set up use the BPEL fault handling framework to make sure that any calls to OSB are automatically retried in event of failure.</p>  <h2>OSB Clusters</h2>  <p>An OSB domain may have a single OSB cluster.&#160; This cluster is installed like any other cluster in WebLogic.&#160; Details on configuring the cluster can be found in the <a href="http://download.oracle.com/docs/cd/E12840_01/common/docs103/confgwiz/index.html" target="_blank">Creating WebLogic Domains Using the Configuration Wizard</a> documentation.&#160; For normal operation the OSB cluster is completely stateless, however the metrics gathering and aggregation takes place in a singleton service that by default is assigned to the first machine created in the cluster.&#160; If this server fails then metrics will stay in the message queues to which they are delivered until a new instance starts.</p>  <ul>   <li>Get address of the load balancer.</li>    <li>Install OSB software onto each machine or into a single shared location.&#160; If a shared location make sure that the reference to it is the same on each machine.</li>    <li>Create an OSB domain</li>    <ul>     <li>Creating a cluster and machines and assign servers to machines as explained in the <a href="http://download.oracle.com/docs/cd/E12840_01/common/docs103/confgwiz/custom-alsb.html#wp1092169" target="_blank">Creating WebLogic Domains Using the Configuration Wizard</a> documentation.</li>      <li>Use load balancer address for cluster address.</li>   </ul>    <li>If you are not using a shared file location for your OSB install then you need to copy the contents of the osb domain directory to all nodes.&#160; This ensure that the correct scripts are available for the node manager to launch managed servers.</li>    <li>Run node manager on each machine.</li>    <li>You can now launch your admin server and start the managed servers one at a time.&#160; It is recommended that you start the OSB server running the data collectors first.&#160; This will avoid timeouts on the other machines in the cluster and ensure that metrics are available.</li>    <li>If message queues are required to be highly available then they should use persistent storage either on a shared highly available disk (a SAN for example) or they should use database persistence.</li>    <li>If you are using an Oracle database then you should configure your OSB domain to store metrics in the Oracle database rather than in pointbase as explained in <a href="http://download.oracle.com/docs/cd/E12840_01/common/docs103/confgwiz/howdoi.html#wp1096686" target="_blank">Creating WebLogic Domains Using the Configuration Wizard</a>.</li> </ul>  <p>When calling BPEL or external web services from OSB make sure that you specify retries to allow for node failure.&#160; Intra-OSB calls should be done using “local” transport for efficiency.</p>  <h2>Summary</h2>  <p>Configuring a cluster is a bit more involved than configuring a single instance, but it is not massively more complicated and it does provide both scalability and high availability.&#160; Both BPEL and OSB scale linearly with increased nodes.&#160; The only limitation on BPEL is the load on the backend dehydration store.&#160; So go ahead, enjoy a cluster!</p>]]>
      
   </content>
</entry>
<entry>
   <title>OTN Podcast</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/06/otn_podcast.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.12719</id>
   
   <published>2009-06-03T23:19:56Z</published>
   <updated>2009-06-03T23:20:29Z</updated>
   
   <summary> OTN have just posted a podcast “Oracle SOA Suite Developer&apos;s Guide: An Architect&apos;s Perspective” featuring an interview by Bob Rhubart with myself and Matt Wright about our book, the Oracle SOA Suite Developers Guide.&amp;#160; Matt comes across sounding calm...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA Suite" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<p><a href="http://feeds2.feedburner.com/OtnArch2Arch"><img style="display: inline; margin: 0px 10px 0px 0px" src="http://www.oracle.com/technology/syndication/arch2arch-podcasts/arch2arch-podcasts-small.gif" align="left" /></a> OTN have just posted a podcast “<a href="http://streaming.oracle.com/ebn/podcasts/A2A/media/7705720_soa_suite_dev_guide.mp3">Oracle SOA Suite Developer's Guide: An Architect's Perspective</a>” featuring an interview by Bob Rhubart with myself and <a href="http://blogs.bpel-people.com/">Matt Wright</a> about our book, the <a href="https://www.packtpub.com/developers-guide-for-oracle-soa-suite-10gr3/book" target="_blank">Oracle SOA Suite Developers Guide</a>.&#160; Matt comes across sounding calm and assured and I come across as …, well I’ll let you decide for yourself.&#160; In my defence the interview was about 11pm my time and 8am Matts time, with Bob splitting the difference at about 3pm.&#160; Listen and Enjoy.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Using 11g Database with SOA Suite 10.1.3</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/05/using_11g_database_with_soa_su.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.12358</id>
   
   <published>2009-05-19T04:15:52Z</published>
   <updated>2009-05-19T04:16:43Z</updated>
   
   <summary>Installing SOA Suite 10.1.3 with an 11g Database Just at a customer who has an 11g RAC database that he wants to use for his SOA repository.&amp;#160; If you try and install SOA Suite into an 11g database, it tells...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA Suite" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<h1>Installing SOA Suite 10.1.3 with an 11g Database</h1>  <p>Just at a customer who has an 11g RAC database that he wants to use for his SOA repository.&#160; If you try and install SOA Suite into an 11g database, it tells you that the database is not supported and the irca configuration assistant fails to find a java library.&#160; 11g is a certified platform for SOA Suite 10.1.3.4 so here is how to get it installed.</p>  <h2>IRCA</h2>  <p>Before installing the SOA Suite executables you need to run the irca script to create the SOA Suite schemas in the 11g database.&#160; The irca script needs to be able to find an ojdbc14.jar file.&#160; This file is not shipped with the 11g database which provides libraries for Java 5 and Java 6 rather than the almost obsolete Java 1.4.&#160; This leaves you with a couple of options;</p>  <ul>   <li>Use an Oracle 10g home as your Oracle home, if you have one on the machine, when running irca. </li>    <li>Copy the JDBC libraries from an Oracle 10g home (&lt;Oracle10g_Home&gt;/jdbc/lib) to the Oracle 11g jdbc location (&lt;Oracle11g_Home&gt;/jdbc/lib). </li> </ul>  <p>Having done this then the irca script should run fine and create the ORABPEL, ORESB and ORAWSM schemas for you in an 11g database.&#160; You are now ready to run the SOA Suite installer.</p>  <h2>Installer</h2>  <p>When you run the installer to create the SOA Suite instance it will fail when checking for the existence of the SOA Suite schemas unless you patch the installer files first.&#160; The way to do this is to download patch 6265268 from MetaLink and follow the instructions which basically require you to modify the install media as follows:</p>  <ul>   <li>Replace DBConnectQueries.jar      <ul>       <li>Move          <ul>           <li><strong>&lt;MEDIA&gt;/stage/Queries/DBConnectQueries/8.4/1/DBConnectQueries.jar </strong></li>         </ul>       </li>        <li>to          <ul>           <li><strong>&lt;MEDIA&gt;/stage/Queries/DBConnectQueries/8.4/1/DBConnectQueries.jar.pre6265268 </strong></li>         </ul>       </li>        <li>Copy          <ul>           <li><strong>&lt;PATCH&gt;/DBConnectQueries.jar </strong></li>         </ul>       </li>        <li>from the patch to </li>        <ul>         <li><strong>&lt;MEDIA&gt;/stage/Queries/DBConnectQueries/8.4/1/DBConnectQueries.jar</strong></li>       </ul>        <li><em>Note that the current patch documentation incorrectly refers to an 8.5 directory rather than the 8.4 that actually exists.</em></li>     </ul>   </li>    <li>Replace IP_DBQueries.jar      <ul>       <li>Move          <ul>           <li><strong>&lt;MEDIA&gt;/stage/Queries/IP_DBQueries/3.0/1/IP_DBQueries.jar </strong></li>         </ul>       </li>        <li>to          <ul>           <li><strong>&lt;MEDIA&gt;/stage/Queries/IP_DBQueries/3.0/1/IP_DBQueries.jar.pre6265268 </strong></li>         </ul>       </li>        <li>Copy          <ul>           <li><strong>&lt;PATCH&gt;/IP_DBQueries.jar </strong></li>         </ul>       </li>        <li>from the patch to          <ul>           <li><strong>&lt;MEDIA&gt;/stage/Queries/IP_DBQueries/3.0/1/IP_DBQueries.jar </strong></li>         </ul>       </li>     </ul>   </li> </ul>  <p>You can now launch the installer and there will be no complaints about an 11g database.&#160; Note that if you are installing a SOA Suite cluster then this will need to be done for each SOA Suite instance being installed.</p>  <h2>What’s the Point?</h2>  <p>As you are making these changes your mind keeps asking why you are doing this.&#160; Apart from being told to do so by your DBAs there are some good reasons for using 11g.&#160; The 11g database is the most manageable Oracle database ever, and several options only work on the 11g database.&#160; 11gR1 has been out for a long time now and so from a longevity perspective its best to put new deployments on an 11gR1 platform even if you have a release-1 strategy to avoid “bleeding edge” deployments.</p>  <p>Finally as you can see, it is not that hard to use an 11g database with SOA Suite.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Using Oracle Enterprise Linux with SOA Suite 10.1.3</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/05/using_oracle_enterprise_linux.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.12332</id>
   
   <published>2009-05-18T04:17:03Z</published>
   <updated>2009-05-18T04:17:41Z</updated>
   
   <summary>I have just been with a customer who was using Oracle Enterprise Linux 5.&amp;#160; Now this shouldn’t be any different from other Linux installations except for one minor problem, the SOA Suite installer insists on checking that the Linux flavor...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA Suite" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<p>I have just been with a customer who was using Oracle Enterprise Linux 5.&#160; Now this shouldn’t be any different from other Linux installations except for one minor problem, the SOA Suite installer insists on checking that the Linux flavor is one explicitly supported by SOA Suite.&#160; Well OEL wasn’t in the list when SOA Suite 10.1.3.1 came out and so the installer fails on the pre-requisite checks and won’t go any further, even if you applied all the required patches to the OS.&#160; Fortunately there is a patch 6339508 which provides replacement pre-requisite tests.&#160; To use it you need to add two parameters to the runInstaller command as shown below.</p>  <blockquote>   <p>./runInstaller PREREQ_CONFIG_LOCATION=&lt;PATCH_LOC&gt;/prereq –paramFile &lt;PATCH_LOC&gt;/oraparam.ini</p> </blockquote>  <p>PATCH_LOC is the location where you unzipped the 6339508 patch.&#160; With these new parameters the installer correctly recognizes Oracle Enterprise Linux as a supported platform.&#160; Note that OEL needs some specific patches when used with SOA Suite and these need to be installed prior to running the installer.&#160; Check the documentation for details.</p>  <p>I am seeing an increasing number of customers taking up OEL, I think because of the attraction of a single company supporting the whole technology infrastructure stack, OS, AS and DB.&#160; I expect to see more of this still in the future.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Raising Money for the NSPCC</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/05/raising_money_for_the_nspcc.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.12245</id>
   
   <published>2009-05-14T10:22:05Z</published>
   <updated>2009-05-14T10:22:51Z</updated>
   
   <summary>One of Oracles chosen charities in the UK is the NSPCC, the National Society for the Prevention of Cruelty to Children.&amp;#160; The NSPCC is the UK&apos;s leading charity specialising in child protection and the prevention of cruelty to children. It...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="Miscellaneous" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<p><a href="http://blogs.oracle.com/reynolds/WindowsLiveWriter/RaisingMoneyfortheNSPCC_9FB1/image_2.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/RaisingMoneyfortheNSPCC_9FB1/image_thumb.png" width="176" align="left" border="0" /></a>One of Oracles chosen charities in the UK is the <a href="http://www.nspcc.org.uk/" target="_blank">NSPCC, the National Society for the Prevention of Cruelty to Children.</a>&#160; The NSPCC is the UK's leading charity specialising in child protection and the prevention of cruelty to children. It is the only children's charity with statutory powers, enabling it to act to safeguard children.&#160; In the UK it is well known for running <a href="http://www.nspcc.org.uk/helpandadvice/whoturnto/childline/childline_wda36385.html" target="_blank">Child Line</a>, a 24-hour helpline for children in distress or danger. Trained volunteer counsellors comfort, advise and protect children and young people who may feel they have nowhere else to turn.</p>  <p>This year together with a number of other Oracle UK employees I will be participating in the <a href="http://en.wikipedia.org/wiki/National_Three_Peaks_Challenge" target="_blank">Three Peaks Challenge</a> in July - climbing to the top of <a href="http://en.wikipedia.org/wiki/Ben_Nevis" target="_blank">Ben Nevis</a>, <a href="http://en.wikipedia.org/wiki/Scafell_Pike" target="_blank">Scafell Pike</a> and <a href="http://en.wikipedia.org/wiki/Snowdon" target="_blank">Snowdon</a>, all within 24 hours.</p> <object type="application/x-shockwave-flash" allowScriptAccess="always" allowNetworking="all" height="230" width="150" align="right" data="http://www.justgiving.com/widgets/jgwidget.swf" flashvars="EggId=1887203&IsMS=0"><param name="movie" value="http://www.justgiving.com/widgets/jgwidget.swf" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="flashvars" value="EggId=1887203&amp;IsMS=0" /><param name="bgcolor" value="#ffffff" /></object>  <p>This will be no mean feat - it involves making your own sandwiches as well as walking for 15 hours/30 miles up/down over 10,000 feet interspersed with 500miles of driving. I've been walking up and down stairs in the office for weeks in preparation.</p>  <p>If you would like to sponsor me in this somewhat madcap activity, then <a href="http://www.justgiving.com/antonyreynolds" target="_blank">donations can be made via PayPal, Credit or Debit Card at my Justgiving site</a>.&#160; If you’re a UK taxpayer, Justgiving makes sure 25% in Gift Aid, plus a 3% supplement, are added to your donation.</p>  <p>So go ahead, sponsor me!</p>]]>
      
   </content>
</entry>
<entry>
   <title>Mastering Details with Flat Files</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/05/mastering_details_with_flat_fi.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.12139</id>
   
   <published>2009-05-11T12:07:19Z</published>
   <updated>2009-05-11T12:23:17Z</updated>
   
   <summary>The Problem The native format builder wizard in the file adapter is great at reading flat file structures but doesn’t support reading more structured file structures.&amp;#160; Sometimes we need to read more complex structures such as master-detail records.&amp;#160; Let’s look...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA Suite" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<h2>The Problem</h2>  <p>The native format builder wizard in the file adapter is great at reading flat file structures but doesn’t support reading more structured file structures.&#160; Sometimes we need to read more complex structures such as master-detail records.&#160; Let’s look at how we can use the file adapter to read structured file formats.</p>  <p>For example imagine a laundry list file such as the one below:</p>  <blockquote>   <table cellspacing="0" cellpadding="2" width="200" border="1"><tbody>       <tr>         <td valign="top" width="198">P,101,James            <br />L,Shirt,2,Starch             <br />L,Socks,6,De-odorise             <br />L,Pants,2,Remove Stains</td>       </tr>        <tr>         <td valign="top" width="198">P,220,JoJo            <br />L,Sweatshirt,1,Handwash             <br />L,Shirt,3,No Iron             <br />L,Socks,2,Iron             <br />L,Pants,2,Steam Press             <br />L,Tie,1,Dry clean</td>       </tr>        <tr>         <td valign="top" width="198">P,305,Ruth            <br />L,Skirt,7,Iron Pleats             <br />L,Socks,8,Iron</td>       </tr>     </tbody></table> </blockquote>  <p>To make it easier to see the record structure I have put boxes around the individual records.&#160; This can be represented in XML as shown below</p>  <p><a href="http://blogs.oracle.com/reynolds/WindowsLiveWriter/MasteringDetailswithFlatFiles_111FA/image_4.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="202" alt="image" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/MasteringDetailswithFlatFiles_111FA/image_thumb_1.png" width="604" border="0" /></a> </p>  <p>The native format builder wizard would either treat each line as either the same type of record (“Multiple records are of single type”) or as two different types of record (“Multiple records are of different types”).</p>  <p><a href="http://blogs.oracle.com/reynolds/WindowsLiveWriter/MasteringDetailswithFlatFiles_111FA/image_2.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="348" alt="image" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/MasteringDetailswithFlatFiles_111FA/image_thumb.png" width="463" border="0" /></a></p>  <p>In the first case we would have a single record type with four fields that fails to distinguish between people (lines pre-fixed with ‘P’) and laundry items (lines pre-fixed with ‘L’).&#160; This does not reflect the fact that the two lines are of different types.&#160; The second case, multiple records are of different types, is closer to what we want.&#160; It creates two records types, the type being determined by the value of the first field.&#160; The XML for this is shown below:</p>  <p><a href="http://blogs.oracle.com/reynolds/WindowsLiveWriter/MasteringDetailswithFlatFiles_111FA/image_6.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="279" alt="image" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/MasteringDetailswithFlatFiles_111FA/image_thumb_2.png" width="484" border="0" /></a> </p>  <p>However this case creates a list of two record types with no recognition that one record is nested inside the other.</p>  <p>Comparing the two XML representations we can see what needs to be done; we need to add an Items element under Room and move the Item element to be under Items.&#160; The question is how do we describe this using the <a href="http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28994/nfb.htm#CIAEFBHH" target="_blank">native schema constructs</a> supported by the file adapter.</p>  <h2>Creating a Master-Detail Records Native Format Schema</h2>  <p>The easiest way to deal with this is to use the native format builder wizard in the file adapter to create the basic outline of the records for us.&#160; We choose “Multiple records are of different types” and provide appropriate names for the two records types and individual fields within the records.</p>  <p>Having created the basic native format schema we can now edit it to be exactly the way we want it for the laundry list.</p>  <p>We make the following changes in the generated native schema file:</p>  <ul>   <li>Replace the &lt;choice&gt; element by a &lt;sequence&gt; element.&#160; In conjunction with other changes this will give us a list of elements of the same type, rather than of list of elements of two different types.      <ul>       <li>         <table cellspacing="0" cellpadding="2" width="509" border="1"><tbody>             <tr>               <td valign="top" width="390">&lt;xsd:<strong>choice minOccurs=&quot;1&quot; maxOccurs=&quot;unbounded&quot;                    <br />&#160;&#160;&#160; nxsd:choiceCondition=&quot;terminated&quot;                     <br />&#160;&#160;&#160; nxsd:terminatedBy=&quot;,&quot;</strong>&gt;                   <br />&#160;&#160;&#160; …                   <br />&lt;/xsd:<strong>choice</strong>&gt;</td>                <td valign="top" width="117">&lt;xsd:<strong>sequence</strong>&gt;                   <br />&#160;&#160; …                   <br />&lt;/xsd:<strong>sequence</strong>&gt;</td>             </tr>           </tbody></table>       </li>     </ul>   </li>    <li>Replace the conditionValue attributes with startsWith attributes and add a comma to the end of the attribute values.&#160; This will allow the native schema processor to identify the start of master records and child records.&#160; We also add a maxOccurs attribute to the elements modified so that they can have multiple instances in a sequence.      <ul>       <li>         <table cellspacing="0" cellpadding="2" width="450" border="1"><tbody>             <tr>               <td valign="top" width="213">&lt;xsd:element name=&quot;Item&quot;                  <br />&#160;&#160;&#160; nxsd:<strong>conditionValue=&quot;L&quot;</strong>&gt;                   <br />…                   <br />&lt;/xsd:element&gt;</td>                <td valign="top" width="235">&lt;xsd:element name=&quot;Item&quot;                  <br />&#160;&#160;&#160; nxsd:<strong>startsWith=&quot;L,&quot;                    <br />&#160;&#160;&#160; maxOccurs=&quot;unbounded&quot;</strong>&gt;                   <br />…                   <br />&lt;/xsd:element&gt;</td>             </tr>              <tr>               <td valign="top" width="213">&lt;xsd:element name=&quot;Room&quot;                  <br />&#160;&#160;&#160; nxsd:<strong>conditionValue=&quot;P&quot;</strong>&gt;                   <br />…                   <br />&lt;/xsd:element&gt;</td>                <td valign="top" width="235">&lt;xsd:element name=&quot;Room&quot;                  <br />&#160;&#160;&#160; nxsd:<strong>startsWith=&quot;P,&quot;                    <br />&#160;&#160;&#160; maxOccurs=&quot;unbounded&quot;</strong>&gt;                   <br />&#160;&#160;&#160; …                   <br />&lt;/xsd:element&gt;</td>             </tr>           </tbody></table>       </li>     </ul>   </li>    <li>Add an &lt;Items&gt; element as a sequence to the &lt;Room&gt; element sequence and move the &lt;Item&gt; element to be inside the &lt;Items&gt; sequence.      <ul>       <p>&lt;xsd:element name=&quot;Room&quot; nxsd:startsWith=&quot;P,&quot; maxOccurs=&quot;unbounded&quot;&gt;          <br />&#160;&#160;&#160; &lt;xsd:complexType&gt;           <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;xsd:sequence&gt;           <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; …           <br /><strong>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;xsd:element name=&quot;Items&quot; maxOccurs=&quot;1&quot;&gt;            <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;xsd:complexType&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;xsd:sequence&gt;             <br /></strong>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;xsd:element name=&quot;Item&quot; nxsd:startsWith=&quot;L,&quot; maxOccurs=&quot;unbounded&quot;&gt;           <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; …           <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/xsd:element&gt;           <br /><strong>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/xsd:sequence&gt;            <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/xsd:complexType&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/xsd:element&gt;             <br /></strong>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/xsd:sequence&gt;           <br />&#160;&#160;&#160; &lt;/xsd:complexType&gt;           <br />&lt;/xsd:element&gt;</p>     </ul>   </li> </ul>  <p>This gives us a native schema format that looks like this:</p>  <p><a href="http://blogs.oracle.com/reynolds/WindowsLiveWriter/MasteringDetailswithFlatFiles_111FA/image_8.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="192" alt="image" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/MasteringDetailswithFlatFiles_111FA/image_thumb_3.png" width="604" border="0" /></a> </p>  <p>Note that this is the structure that we were aiming for in the first place.</p>  <h2>Sample Code</h2>  <p>I have created a simple BPEL process that performs the following steps</p>  <ul>   <li>Read a laundry file using the wizard generated native schema format.&#160; This creates an XML document with two distinct records types.      <ul>       <li>Note that in the process I do not delete the file so it is important to make sure that if you re-use the same file with the process you need to update its timestamp! </li>     </ul>   </li>    <li>Read the laundry file again using the modified native schema format.&#160; This creates an XML document with master-detail style records which reflects the actual format of the file.      <ul>       <li>Note that I use a synch read with the filename provided by the inbound header from the previous file read.&#160;&#160; I delete the input file after reading it. </li>     </ul>   </li>    <li>Write the laundry file using a pure XML schema to create an XML document file of the laundry list. </li> </ul>  <p><a href="http://blogs.oracle.com/reynolds/MasterDetailFileProcess.zip"><img title="MasterDetailFileProcess" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="MasterDetailFileProcess" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/MasteringDetailswithFlatFiles_111FA/MasterDetailFileProcess_3.jpg" width="624" border="0" /></a> </p>  <p>Sample code is zipped up as a JDeveloper project and can be <a href="http://blogs.oracle.com/reynolds/MasterDetailFileProcess.zip">downloaded here</a>.&#160; In addition to the normal BPEL artifacts within the project, I have included a sample laundry file (laundry.sample.txt) in the top level of the project directory.&#160; After deploying to a BPEL server the process will look in C:\FileTransfer\InBound for the input file, after processing the input file it is written to C:\FileTransfer\Processed and the output file is generated in C:\FileTransfer\OutBound.&#160; Either create appropriate directories or edit the project to use new directories.</p>  <h2>Documentation</h2>  <p>This entry has used the facilities of the native format schemas in SOA Suite.&#160; These are documented in <a href="http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28994/nfb.htm" target="_blank">chapter 7 of the Oracle® Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide</a>.</p>  <p></p>  <p>Good luck in using the adapters to process master-detail records!</p>]]>
      
   </content>
</entry>
<entry>
   <title>Open Group SOA Source Book</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/05/open_group_soa_source_book.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.12019</id>
   
   <published>2009-05-06T13:44:38Z</published>
   <updated>2009-05-06T13:46:10Z</updated>
   
   <summary> Last Wednesday the Open Group made available their SOA Source Book.&amp;#160; They describe it as “a collection of source material produced by the SOA Working Group for use by enterprise architects working with Service-Oriented Architecture”.&amp;#160; Having looked at it...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<p><img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://www.opengroup.org/images2/the-open-group.gif" /> </p>  <p>Last Wednesday <a href="http://www.opengroup.org/" target="_blank">the Open Group</a> made available their <a href="http://www.opengroup.org/projects/soa-book/" target="_blank">SOA Source Book</a>.&#160; They describe it as “a collection of source material produced by the <a href="https://www.opengroup.org/projects/soa/uploads/40/18697/SOA_WG.pdf" target="_blank">SOA Working Group</a> for use by enterprise architects working with Service-Oriented Architecture”.&#160; Having looked at it I have to say it seems to have a high information density and would be a good place to start getting someone's head around SOA concepts.&#160; Well worth a look.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Tuxedo Connections</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/04/tuxedo_connections.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.11693</id>
   
   <published>2009-04-22T02:34:48Z</published>
   <updated>2009-04-22T02:35:21Z</updated>
   
   <summary>Tuxedo Connections or the On Ramp to Tux Tuxedo can be considered as the original and purest service oriented architecture.&amp;#160; The key abstraction in Tuxedo is the service and everything is made to fit into the service mould.&amp;#160; It seems...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<h1>Tuxedo Connections or the On Ramp to Tux</h1>  <p>Tuxedo can be considered as the original and purest service oriented architecture.&#160; The key abstraction in Tuxedo is the service and everything is made to fit into the service mould.&#160; It seems strange then that people think of Tuxedo as a legacy application.&#160; Tuxedo is highly regarded by the senior management team in Oracle who view it as a key tool to support extreme transaction processing.&#160; The question is then, how does this relate to the rest of the SOA world which does not subscribe to the Tuxedo technologies such ATMI, C++ or COBOL.</p>  <p>The diagram below shows the different interfaces into and out of the Tuxedo world.&#160; Lets look at them briefly and how they relate to the rest of the SOA world which is focussed on XML, SOAP and HTTP.<a href="http://blogs.oracle.com/reynolds/WindowsLiveWriter/TuxedoConnections_322A/image_2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="255" alt="image" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/TuxedoConnections_322A/image_thumb.png" width="644" border="0" /></a></p>  <h2>Native Client Interfaces</h2>  <p>The native client interfaces to Tuxedo are the C, C++, .Net or COBOL client interfaces using ATMI (Application to Transaction Monitor Interface).&#160; There is also a version of ATMI for Java, called Jolt.&#160; These interfaces allow clients to invoke Tuxedo services and get responses.&#160; They do not allow Tuxedo to invoke services in these clients except by listening on Tuxedo message queues, these interfaces are asymmetric.</p>  <h2>Legacy Client and Server Interfaces</h2>  <p>A Tuxedo domain can interface to other Tuxedo domains, treating their services as though they were its own services.&#160; This capability is extended to other systems such as mainframe systems.&#160; The external systems see Tuxedo services as native services and invoke them as they would any other service, similarly Tuxedo sees these external systems as native Tuxedo services and invokes them as it would any other service.&#160; This provides relatively seamless integration between legacy environments and Tuxedo and allows either side to operate as a server to the other, in other words these interfaces are symmetric.</p>  <h2>Open System Interfaces</h2>  <p>In addition to treating legacy mainframe interfaces and other Tuxedo domains in the same way as local services Tuxedo can also do this for such open system standards as CORBA and java code running in WebLogic Server.&#160; CORBA applications can invoke Tux services through the CORBA API and Tuxedo services can invoke CORBA objects.&#160; The WebLogic Tuxedo Connector (WTC) extends the capabilities of Jolt to become fully symmetric in that EJBs in WebLogic can be invoked as services from Tuxedo.</p>  <h2>A Transactional Note</h2>  <p>Note that all the interfaces we have spoken about so far are transactional, as in they are part of the Tuxedo transaction infrastructure, invoking a remote mainframe transaction may cause an XA transaction to be started within Tuxedo.&#160; When calling an EJB in WebLogic this also is part of the overall Tuxedo XA transaction infrastructure.</p>  <h2>Web Service Access to Tuxedo</h2>  <p>There are two alternative ways to get Web Services to access Tuxedo.&#160; The most obvious is to use SALT (Service Architecture Leveraging Tuxedo) which exposes Tuxedo services as web services, and allows Tuxedo to invoke Web Services as though they were Tuxedo services.&#160; This is a symmetric interface and takes care of all the XML to Tuxedo translations but it is not transactional.&#160; The web service call is not part of the transaction.&#160; A web service request to Tuxedo may cause a Tux transaction to be initiated, but webs services don’t currently provide a transactional context.&#160; Similarly when Tux makes a call to a web service, that call is not part of any Tuxedo transaction.</p>  <p>So what if you want transactionality and access to web services.&#160; This is where the service bus comes in.&#160; The Oracle Service Bus (OSB) takes advantage of the WebLogic Tuxedo Connector to provide a fast efficient and transactional interface to and from the Tuxedo world.&#160; This allows a pipeline to make two seperate calls to Tuxedo as part of the same transaction.&#160; Note that there are a couple fo wrinkles to making this happen and I will deal with those in a later post.</p>  <h2>Summary – Long Live Tux, King of Services</h2>  <p>Not only is Tuxedo the original service oriented architecture but despite being more than 20 years old, through SALT and WebLogic Tuxedo Connector it still speaks the modern lingo of service buses, Java, XML, SOAP and HTTP.&#160; So if you have a Tuxedo investment don’t write it off, but look at how you can more easily make your Tux services available to the new fangled XML based web service world.</p>]]>
      
   </content>
</entry>
<entry>
   <title><![CDATA[Oracle SOA Suite Developer&rsquo;s Guide Published]]></title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/04/oracle_soa_suite_developers_gu.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.11632</id>
   
   <published>2009-04-18T23:55:31Z</published>
   <updated>2009-04-19T16:59:26Z</updated>
   
   <summary>Oracle SOA Suite Developer’s Guide My friend Matt Wright just pointed out to me that I hadn’t mentioned that our book was now available.&amp;#160; Thanks to the guys at Packt Publishing for guiding us through the process and publishing the...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA Suite" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<h1>Oracle SOA Suite Developer’s Guide</h1>  <p><img style="display: inline; margin-left: 0px; margin-right: 0px" height="240" src="http://images.packtpub.com/images/full/1847193552.jpg" width="195" align="left" /> </p>  <p>My friend Matt Wright just pointed out to me that I hadn’t mentioned that <a href="https://www.packtpub.com/developers-guide-for-oracle-soa-suite-10gr3/book" target="_blank">our book was now available</a>.&#160; Thanks to the guys at <a href="http://www.packtpub.com/" target="_blank">Packt Publishing</a> for guiding us through the process and publishing the book.&#160; Our focus when writing the book was to provide a practitioners guide to implementing SOA using the Oracle SOA Suite.&#160; As such we have set each component of the SOA Suite within the context in which might be used.&#160; This seems to be the area that a lot of companies starting down a SOA path struggle with.&#160; They are unsure what bits of technology to use for what.</p>  <p>Dave Shaffer, Oracle VP for SOA, kindly wrote a foreword for us.</p>  <p>Writing the book has been a huge undertaking for both Matt and myself.&#160; During the writing of the book the 11g release was seriously delayed so we switched versions from 11 to 10.1.3 (the current production release).&#160; Matt decided that he was sick of 365 days of rain and moved his family from England to Australia.&#160; Finally Oracle purchased BEA and caused a re-evaluation of the Service Bus technologies.</p>  <p>I am pleased with the way the book has turned out, and Matt and I learnt a huge amount as we prepared the book, both of us had to delve into area with we weren’t totally familiar.&#160; Matt became a master of the Rules engine and I discovered the marvelous new deployment capabilities added to the 10.1.3.4 release.</p>  <p>We have made every effort to match the book to the current production 10.1.3.4 release so get yourself a copy and give us some feedback.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Top Five Insights for Maximizing Returns with SOA</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/04/top_five_insights_for_maximizi.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.11572</id>
   
   <published>2009-04-15T21:10:53Z</published>
   <updated>2009-04-15T21:11:21Z</updated>
   
   <summary>&amp;#160;Oracle SOA Executive Roundtable Webcast: Top Five Insights for Maximizing Returns with SOA Oracle are having an executive round table web cast at 8AM PDT Thursday 23rd 2009 chaired by Amlan Debnath, Senior Vice President Integration Products at Oracle.&amp;#160; Other...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<h1>&#160;<b>Oracle SOA Executive Roundtable Webcast: Top Five Insights for Maximizing Returns with SOA</b></h1>  <p>Oracle are having an executive round table web cast at 8AM PDT Thursday 23rd 2009 chaired by <a href="http://amlandebnath.sys-con.com/">Amlan Debnath</a>, Senior Vice President Integration Products at Oracle.&#160; Other attendees include</p>  <ul>   <li>Job Simon, Senior Director, NetApp     <br />Dan Goerdt, Director, Schneider National Inc.       <br />Jennifer Briscoe, CTO and VP, Collect America </li> </ul>  <p>Check out the <a href="http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=94243&amp;src=6661656&amp;src=6661656&amp;Act=88">registration page here</a>.</p>  <p><a href="http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=94243&amp;src=6661656&amp;src=6661656&amp;Act=88"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="66" alt="image" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/TopFiveInsightsforMaximizingReturnswithS_137D2/image_3.png" width="244" border="0" /></a></p>]]>
      
   </content>
</entry>
<entry>
   <title>How to Build a Product Suite</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/04/how_to_build_a_product_suite.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.11300</id>
   
   <published>2009-04-06T10:16:21Z</published>
   <updated>2009-04-06T10:16:50Z</updated>
   
   <summary><![CDATA[ How to Build and Manage a Product Suite I was in Redwood Shores this week with a customer and we were lucky enough to have Thomas Kurian speak to us for an hour in a Q&amp;A session.&#160; One of...]]></summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="Fusion Middleware" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<h1><a href="http://blogs.oracle.com/reynolds/WindowsLiveWriter/HowtoBuildaProductSuite_2521/image_4.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="103" alt="image" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/HowtoBuildaProductSuite_2521/image_thumb_1.png" width="244" align="left" border="0" /></a> How to Build and Manage a Product Suite</h1>  <p>I was in Redwood Shores this week with a customer and we were lucky enough to have Thomas Kurian speak to us for an hour in a Q&amp;A session.&#160; One of the customers I was accompanying, Michael, asked a really useful question, well actually he asked several but I am only blogging about one of them.&#160; Michael is in charge of his company’s largest software development that will redefine the types of service that can be offered by his company.&#160; Quite naturally he is feeling a little pressured so his question to Thomas was not related to technical issues but to the philosophy of integrating different products into a consistent product stack.&#160; Obviously Thomas has a great track record on this, WebLogic Suite combines products from Oracle, BEA and Tangosol in a single product stack; SOA Suite combines products from Oracle, BEA and Oblix into a single product stack etc.</p>  <p>Thomas identified the following steps that can be applied when integrating products into a consistent product set:</p>  <ul>   <li>Group similar functionality together into Suites.     <br />This enables a focus on related pieces of functionality and avoids being overwhelmed by the sheer size of the product stack.&#160; it also simplifies the messaging that has to be communicated to the market.</li>    <li>Get the pieces to work together.     <br />Within a suite the emphasis is on making the components work well together, eliminating duplication of function.</li>    <li>Pick up dependencies in a single way.     <br />Everyone should access the functionality in the same way.&#160; This takes advantage of common abstractions and makes it easier for clients of the suite to take up new functionality in a seamless fashion.</li>    <li>Suite pricing encourages big picture thinking     <br />Customers generally want several related pieces of technology.&#160; Bundling them together into suites at a combined price focuses the development teams not just on their small piece of the puzzle but on the wider suite, giving them an incentive to make sure it all works together.</li>    <li>Mandate     <br />In addition to the carrots mentioned above, force people to pick up functionality in a single way and to be consistent across components in the suite.</li> </ul>  <p>In conclusion Thomas identified three principles that guide the above steps</p>  <ul>   <li>Unify – using suites</li>    <li>Simplify – everyone accesses functionality in the same way</li>    <li>Mandate – force everyone in your organization to play by the rules</li> </ul>  <p>Thomas was adamant that Fusion Middleware would be more than a simple branding.&#160; Over the last 5 years Thomas has moved the Fusion Middleware towards tighter and tighter integration.&#160; The latest demonstration of this will come later this year with the release of SOA Suite 11g.</p>  <p>Michael wasn’t looking for a silver bullet, but I think he did appreciate Thomas’ thoughts on this one.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Coherent Management</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/04/coherent_management.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.11194</id>
   
   <published>2009-04-02T12:30:10Z</published>
   <updated>2009-04-02T12:33:33Z</updated>
   
   <summary>Managing a Coherence Data Grid One of the challenges with Coherence has been the limited management tools.&amp;#160; There is a built support for cluster wide JMX, but this only provides a limited management capability and requires a JMX console, see...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="Fusion Middleware" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<h1>Managing a Coherence Data Grid</h1>  <p>One of the challenges with Coherence has been the limited management tools.&#160; There is a built support for cluster wide JMX, but this only provides a limited management capability and requires a JMX console, see <a href="http://coherence.oracle.com/display/COH34UG/How+to+Manage+Coherence+Using+JMX">documentation for more details</a>.&#160; Using a JMX console is fine but it isolates the management of the cluster from other management tools, such as database and web servers.&#160; Last month Oracle released a new Enterprise Manager pack, the <a href="http://www.oracle.com/technology/products/oem/pdf/ds_coherence_mgmt.pdf">Oracle Management Pack for Oracle Coherence</a>.&#160; This pack enables you to manage and monitor Coherence from within Enterprise Manager.&#160; If you are running Coherence as part of WebLogic Suite or WebLogic Application Grid then the management pack is included in those suites.&#160; If you are running a standalone Coherence (standard, enterprise or grid edition) then the management pack is available separately.&#160; So go and give it a try by <a href="http://www.oracle.com/technology/software/products/oem/index.html">downloading Enterprise Manager 10.2.0.5</a>.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Useful Oracle Links</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/03/useful_oracle_links.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.11129</id>
   
   <published>2009-03-31T12:37:20Z</published>
   <updated>2009-03-31T12:40:41Z</updated>
   
   <summary>Useful Oracle SOA Links I recently put together some useful Fusion Middleware links for a customer and thought I might as well share them here. General SOA Material Architect Center is a good place to look for best practice and...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="Fusion Middleware" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<h1>Useful Oracle SOA Links</h1>  <p>I recently put together some useful Fusion Middleware links for a customer and thought I might as well share them here.</p>  <h2>General SOA Material</h2>  <ul>   <li><a href="http://www.oracle.com/technology/tech/soa/index.html">Architect Center</a> is a good place to look for best practice and ideas. </li>    <li><a href="http://www.oracle.com/go/?&amp;Src=6661656&amp;Act=17&amp;pcode=NAMK08065712MPP002">SOA Resource Kit</a></li>    <li><a href="http://www.oracle.com/technology/tech/soa/mastering-soa-series/index.html">Mastering SOA Series</a></li>    <li><a href="http://download.oracle.com/technology/tech/soa/soa_best_practices_1013x_drop3.pdf">SOA Suite Best Practices Guide</a> (slightly dated) </li> </ul>  <h2>Samples</h2> <a href="http://www.oracle.com/technology/obe/start/index.html">Oracle by Example Home Page</a> has lots of samples.  <h2>BPEL Material</h2>  <ul>   <li><a href="http://www.oracle.com/technology/products/ias/bpel/index.html">BPEL Main Page on OTN (includes tutorials and examples)       <br /></a></li>    <li><a href="http://www.oracle.com/technology/pub/articles/bpel_cookbook/index.html">BPEL Cookbook</a></li>    <li><a href="http://www.oracle.com/technology/products/ias/bpel/htdocs/dev_support.html">BPEL Tech Page</a> (Tutorials, Tech Notes, Training PDFs)</li> </ul>  <h2>Rules Material</h2>  <ul>   <li><a href="http://www.oracle.com/technology/products/ias/business_rules/index.html">Main OTN Rules Page (includes examples)       <br /></a></li> </ul>  <h2>Security material</h2>  <ul>   <li><a href="http://www.oracle.com/technology/products/id_mgmt/index.html">Identity Management Home Page</a></li> </ul>  <h2>Repository Material</h2>  <ul>   <li><a href="http://www.oracle.com/technology/architect/soa/soagov/index.html">SOA Governance Center</a></li>    <li><a href="http://www.oracle.com/technology/tech/soa/uddi/index.html">Oracle Enterprise Repository and Oracle Service Registry</a></li>    <li><a href="http://www.oracle.com/webapps/dialogue/dlgpage.jsp?p_ext=Y&amp;p_dlg_id=6725853&amp;src=6661656&amp;Act=17">SOA Governance Resource Kit</a> (requires registration)</li> </ul>  <h2>Supported Configurations</h2>  <ul>   <li><a href="http://www.oracle.com/technology/software/products/ias/files/fusion_certification.html">Links to supported configurations</a></li> </ul>  <h2>Books (Links to Amazon)</h2> These are not endorsements of these books, just an indication of Oracle SOA/IDM specific books of which I am aware, of course I do endorse the first one which I co-wrote with <a href="http://blogs.bpel-people.com/">Matt Wright</a> :-)  <ul>   <li><a href="http://www.amazon.com/Oracle-SOA-Suite-Developers-Guide/dp/1847193552/ref=sr_1_11?ie=UTF8&amp;s=books&amp;qid=1237998975&amp;sr=8-11">Oracle SOA Suite Developer's Guide</a></li>    <li><a href="http://www.amazon.com/Definitive-Guide-SOA-Oracle-Service/dp/1430210575/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1237998975&amp;sr=8-1">The Definitive Guide to SOA: Oracle Service Bus</a></li>    <li><a href="http://www.amazon.com/BPEL-Cookbook-integration-applications-orchestration/dp/1904811337/ref=pd_bbs_2?ie=UTF8&amp;s=books&amp;qid=1237998975&amp;sr=8-2">BPEL Cookbook: Best Practices for SOA-based integration and composite applications development:</a></li>    <li><a href="http://www.amazon.com/Business-Process-Execution-Language-Services/dp/1904811817/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1237999617&amp;sr=8-1">Business Process Execution Language for Web Services BPEL and BPEL4WS</a></li>    <li><a href="http://www.amazon.com/Oracle-Web-Services-Manager-Securing/dp/1847193838/ref=pd_bbs_sr_7?ie=UTF8&amp;s=books&amp;qid=1237998975&amp;sr=8-7">Oracle Web Services Manager: Securing your Web Services</a></li>    <li><a href="http://www.amazon.com/Oracle-Identity-Management-Governance-Architecture/dp/1420072471/ref=sr_1_15?ie=UTF8&amp;s=books&amp;qid=1237998975&amp;sr=8-15">Oracle Identity Management: Governance, Risk, and Compliance Architecture</a></li>    <li><a href="http://www.amazon.com/Enterprise-Manager-Control-Implementation-Osborne/dp/0071492755/ref=sr_1_32?ie=UTF8&amp;s=books&amp;qid=1237999401&amp;sr=8-32">Oracle Enterprise Manager 10g Grid Control Implementation Guide</a></li> </ul>]]>
      
   </content>
</entry>
<entry>
   <title><![CDATA[What&rsquo;s in the Box?]]></title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/reynolds/2009/03/whats_in_the_box.html" />
   <id>tag:blogs.oracle.com,2009:/reynolds//87.11007</id>
   
   <published>2009-03-26T10:36:41Z</published>
   <updated>2009-03-26T10:37:28Z</updated>
   
   <summary> What’s in the SOA Suite and What’s it for? I had a really good question recently.&amp;#160; Someone was struggling with Oracle Service Bus having previously used BPEL. I am still working with OSB, and I am struggling to get...</summary>
   <author>
      <name>antony.reynolds</name>
      
   </author>
         <category term="SOA Suite" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/reynolds/">
      <![CDATA[<h1><a href="http://blogs.oracle.com/reynolds/WindowsLiveWriter/WhatsintheBox_F25F/image_2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="122" alt="image" src="http://blogs.oracle.com/reynolds/WindowsLiveWriter/WhatsintheBox_F25F/image_thumb.png" width="134" align="left" border="0" /></a> What’s in the SOA Suite and What’s it for?</h1>  <p>I had a really good question recently.&#160; Someone was struggling with Oracle Service Bus having previously used BPEL.</p>  <blockquote>   <p>I am still working with OSB, and I am struggling to get to grips with how it will be used in FUSION and beyond.....      <br />…       <br />I know there is no definitive answer, but I want to try and get an idea of how it is intended to use OSB and Orchestration..... (cos it aint easy!!!)</p> </blockquote>  <p>Lets look at the three components in the SOA Suite that have some overlap and that my questioner was referring to.</p>  <ul>   <li>Oracle Service Bus (OSB) </li>    <li>Oracle Enterprise Service Bus (OESB) </li>    <li>Oracle BPEL Process Manager (BPEL) </li> </ul>  <p>All three of these provide connectivity services, all of them support transformation.&#160; OSB and BPEL provide orchestration capabilities.&#160; So what my correspondent was really asking was</p>  <blockquote>   <p>What should be done in which service bus and what should be done in BPEL.</p> </blockquote>  <p>It is worth looking at each component in turn and identifying its sweet spots as I see them.</p>  <h2>Oracle Enterprise Service Bus</h2>  <p>Prior to the BEA acquisition this was Oracles primary service bus.&#160; Since the acquisition of BEA the role of the OESB is to provide mediation services (transformation &amp; simple routing) between SOA Suite components, primarily between BPEL processes in the 10g release.&#160; In the 11g release this component becomes known as the Mediator and acts as a component in an SCA assembly.&#160; If running on a non-WebLogic server then OESB becomes the only ESB available in the SOA Suite and so then it becomes a straight split between OESB and BPEL, with OESB providing routing and transformation services.</p>  <h2>Oracle Service Bus (former AquaLogic Service Bus)</h2>  <p>This is Oracles primary service bus and is the preferred platform for service virtualization and interactions external to the SOA Suite.&#160; Currently OSB is only available on WebLogic server but the intention is provide it on other platforms as well in the future.&#160; OSB is the foundation of service bus functionality moving forward.&#160; This means that we should be using OSB for the following:</p>  <ul>   <li><strong>Endpoint routing </strong>(providing location transparency) so that we do not care about the physical location of the endpoint.</li>    <li><strong>Endpoint abstraction </strong>(interface transparency) so that we do not care about the exact data formats required by the endpoint because the OSB will take care of transformations.</li>    <li><strong>Load balancing</strong> so that we do not care about which of multiple service implementations will actually service a request.</li>    <li><strong>Throttling </strong>so that we do not care about how use of services is restricted.</li>    <li><strong>Enrichment </strong>so that we do not care about how additional data is provided to the request to match the expected request and response formats.</li>    <li><strong>Simple synchronous composition </strong>so that we do not care if our abstract service call is actually made up of two or more physical service calls.</li>    <li><strong>Protocol conversion </strong>so that we do not care what physical transports are being used.</li>    <li><strong>Sync/async abstraction </strong>so that we can treat services as fire and forget or query response according to the needs of the client.</li> </ul>  <h2>Oracle BPEL Process Manager</h2>  <p>BPEL Process Manager is the primary composition, orchestration and process engine in the SOA Suite and as such should be used for the following.</p>  <ul>   <li><strong>Complex composition </strong>of synchronous flows that involve more than a couple of services.</li>    <li><strong>Long running compositions </strong>that may run for minutes, hours or days.</li>    <li><strong>Asynchronous compositions</strong> that require correlation of requests and responses.</li>    <li><strong>Process abstraction </strong>that enables us to track processes and their interactions with multiple services.</li>    <li><strong>Human workflow </strong>for when we need to interface to wetware.</li> </ul>  <h2>Summary</h2>  <p>Hopefully the above has given you some indication of what each component is best used for.&#160; The short version is, for routing and transformation between SOA Suite components use either OESB or OSB.&#160; For service virtualization use OSB and for process orchestration and long running interactions use BPEL.&#160; See, not that hard was it?</p>]]>
      
   </content>
</entry>

</feed>
