<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2592381182145606344</id><updated>2011-12-20T20:54:22.943+01:00</updated><title type='text'>Blog from Maxence Button on WebLogic and Java EE</title><subtitle type='html'>Blog dealing with EJB3, JAX-WS, JAX-RPC, TLog, WLST, SCA, OSGi, Oracle SOA Suite ...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-3989870551367661464</id><published>2011-12-12T15:11:00.001+01:00</published><updated>2011-12-16T23:14:03.923+01:00</updated><title type='text'>WLS 12c : first steps</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;At last ! I’ve been waiting a very long time :)&lt;/p&gt;  &lt;p&gt;I wondered why WLS was so slow to come out … but ok, I know some huge work has been done on that version.&lt;/p&gt;  &lt;h1&gt;Waiting room &lt;/h1&gt;  &lt;p&gt;I was a bit surprised that Oracle did not announce it @Devoxx (since it would have been the perfect occasion) whereas some of my fellows already received an email, inviting them to attend the launch event on the 1st december. &lt;/p&gt;  &lt;p&gt;Speaking about that launch event, I was excited to see the WLS 12c new features and when I joined the event, the excitement quickly faded away : I was a bit bored by the first part … I am not saying it was not interesting, but honestly it felt the audience targeted was clearly people not like me. So I kept on doing stuff while listening with a distant ear to the speakers.&lt;/p&gt;  &lt;p&gt;Then came the second part, and that was one hundred time more interesting ! Even if the biggest feature announced was … Java EE 6 ! &lt;/p&gt;  &lt;p&gt;I’m not saying it’s not important, but as the Glassfish blog pointed it out recently, Java EE 6 is more than two year old now … So I guess everyone had already played with Java EE6 (with GF or another one, since WLS is the last one to be out !). I would have liked to see things more WebLogic specific.&lt;/p&gt;  &lt;h1&gt;Installing the product&lt;/h1&gt;  &lt;p&gt;I went several times on the Oracle download page to get the brand new WLS version, but everytime I had a “Check back soon” message.&lt;/p&gt;  &lt;p&gt;And then, finally, on Friday, it was here, ready to be downloaded : as promised, a zip version is available and its size is hard to believe : 168 Mb ! Looks amazing, compared to the Windows installer version (more than 1Gb).&lt;/p&gt;  &lt;p&gt;Following the instructions, I had to define my MW_HOME variable and then I could call the setWLSEnv script without any trouble. Once my environment set, I ran the script and I encountered the following exception :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ET2qk-e6MfM/TuvCf8fTt8I/AAAAAAAAEH8/UtnynKwhhJk/s1600-h/image%25255B12%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-mTApdrA16xs/TuvChHHK77I/AAAAAAAAEIE/oV46II64Z0w/image_thumb%25255B6%25255D.png?imgmax=800" width="1028" height="120" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Removing the JAVA_OPTION part (which I didn’t need) helped me to launch the script but I encountered another error :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/--8dLfVd3RYY/TuvCiAag2SI/AAAAAAAAEIM/iufFzZAYtd4/s1600-h/image%25255B13%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-8zMoillVvFM/TuvCjMO9c7I/AAAAAAAAEIU/yO4teocxVIw/image_thumb%25255B7%25255D.png?imgmax=800" width="1028" height="94" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Okay, my JAX-WS version is too old … yet, I’m using a recent JVM :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;java version &amp;quot;1.6.0_20-ea&amp;quot;     &lt;br /&gt;Java(TM) SE Runtime Environment (build 1.6.0_20-ea-b02)      &lt;br /&gt;Java HotSpot(TM) 64-Bit Server VM (build 17.0-b12, mixed mode)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ok, let’s update to the lattest version (update 25) … But it didn’t change a thing : I had to follow the instructions, that is to say copy the three libs into the jre/lib/endorsed directory)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-dU-OojVc12Q/TuvCkP8y1KI/AAAAAAAAEIc/XgeOXIQUKOs/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-6JSzIRVZX5E/TuvClNBpQII/AAAAAAAAEIk/HpN1yPWlOUI/image_thumb%25255B8%25255D.png?imgmax=800" width="1028" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It’s better but when I enter the username used to boot, the JVM shuts down …&lt;/p&gt;  &lt;p&gt;Thanks to Google, I added an option “-Dweblogic.management.allowPasswordEcho=true” and this got me unstuck&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-7PAOJ7weukU/TuvCm6jdZMI/AAAAAAAAEIs/fTbHHOpVgxY/s1600-h/image%25255B18%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-lR9v1h6-VtY/TuvCoskOzgI/AAAAAAAAEI0/LK8YWljzsU4/image_thumb%25255B10%25255D.png?imgmax=800" width="1028" height="532" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And finally, my domain is created !&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-fp33-oViQpQ/TuvCpdEHIyI/AAAAAAAAEI4/9jwN-EcteA8/s1600-h/image%25255B23%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-4h1NjUbQ7io/TuvCqTTabFI/AAAAAAAAEJE/xdQzcR3NVbE/image_thumb%25255B13%25255D.png?imgmax=800" width="644" height="418" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To sum up, I would say that the distro is really lighter than what I was used to but finally the installation is not as easy as I wanted it to be.&lt;/p&gt;  &lt;p&gt;I had to tweak the scripts, add some options (undocumented) : I guess an extra effort could have been made to simplify the initial installation.&lt;/p&gt;  &lt;p&gt;But now my domain has been set up, even if some things were a bit disappointing, I’m going to play with Java EE 6, on my favorite server and I’ll try to share some blogposts later on.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-3989870551367661464?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/3989870551367661464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=3989870551367661464' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/3989870551367661464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/3989870551367661464'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2011/12/wls-12c-first-steps.html' title='WLS 12c : first steps'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-mTApdrA16xs/TuvChHHK77I/AAAAAAAAEIE/oV46II64Z0w/s72-c/image_thumb%25255B6%25255D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-2605475484025495246</id><published>2011-06-21T23:53:00.001+02:00</published><updated>2011-06-21T23:53:54.195+02:00</updated><title type='text'>How to define a partnerLink endpoint from an externally defined configuration ?</title><content type='html'>&lt;p&gt;(or how to have the same WLI XMLCache functionality in BPEL PM)&lt;/p&gt;  &lt;h1&gt;Part one : Get the data from the cache&lt;/h1&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Source&lt;/u&gt;&lt;/strong&gt; :     &lt;br /&gt;Excellent article from Simone : &lt;a href="http://www.oracle.com/technetwork/topics/soa/dynamic-data-lookup-endpoints-geib-092046.html"&gt;http://www.oracle.com/technetwork/topics/soa/dynamic-data-lookup-endpoints-geib-092046.html&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;When I read Simone’s article, I thought it was nice but I also thought that it did not go as far as I expected. In her example, she took a typical database example, with a set of data, identified by an ID. It’s a very interesting feature, but it does not meet exactly my requirement ... &lt;/p&gt;  &lt;p&gt;That’s why I’m going to write (with Simone’s permission :D) a little addendum which will help WLI users to transpose their good old WLI XMLCache to BPEL PM DVM.    &lt;br /&gt;The need for such a configuration is pretty obvious : I want to be able to deploy my project in several different environments without updating the code to reflect a changing server URL : typically, in a development environment, it would be an Apache and in a production environment, it would be an Alteon or a Big-Ip, for instance.&lt;/p&gt;  &lt;p&gt;In my case, I decided to divide my configuration into two different DVM. The first one is only composed of what’s going to change (URLs mostly …) and the other one will contain the “immutable” parts, that is to say the things that won’t change from an environment to another (context paths here).&lt;/p&gt;  &lt;p&gt;To know how to create a DVM, please refer to Simone’s article.&lt;/p&gt;  &lt;p&gt;Here is the first DVM :&lt;/p&gt;  &lt;div align="center"&gt;   &lt;table border="1" cellspacing="0" cellpadding="2" width="400" align="center"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Property&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="200"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Value&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;ServiceEntrypoint&lt;/td&gt;          &lt;td valign="top" width="200"&gt;&lt;a href="http://IPAddress:port"&gt;http://IPAddress:port&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;To get the value of the “ServiceEntrypoint” property, I will have to use a BPEL function :    &lt;br /&gt;&lt;strong&gt;&lt;font color="#9b00d3"&gt;dvm:lookupValue1M(&amp;quot;environment.dvm&amp;quot;, &amp;quot;Property&amp;quot;, 'ServiceEntrypoint', &amp;quot;Value&amp;quot;)&lt;/font&gt;&lt;/strong&gt; which will return “&lt;a href="http://ipaddress:port/"&gt;http://ipaddress:port/&lt;/a&gt;”     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Here is the second one : &lt;/p&gt;  &lt;div align="center"&gt;   &lt;table border="1" cellspacing="0" cellpadding="2" width="400" align="center"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;ServiceName&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="200"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;ContextPath&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;TestWS&lt;/td&gt;          &lt;td valign="top" width="200"&gt;/contextPath&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;By the way, pay attention to to way you are filling data : columns are lines here :)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-CW8bmHyrFWE/TgESueDGHVI/AAAAAAAADh8/eAAL7QwUdBs/s1600-h/image3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-icKxB2KgQns/TgESu3Vp81I/AAAAAAAADiA/XUO--PFc138/image_thumb1.png?imgmax=800" width="502" height="406" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To get the context of my service, the function is the same as the one we used above :&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#9b00d3"&gt;dvm:lookupValue1M(&amp;quot;servicepaths.dvm&amp;quot;, &amp;quot;ServiceName&amp;quot;, TestWS, &amp;quot;ContextPath&amp;quot;)&lt;/font&gt;&lt;/strong&gt; which will return “/contextPath”     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Now we have the way to retrieve our two values, we can go in our BPEL Process.&lt;/p&gt;  &lt;p&gt;Here are the thing to perform.&lt;/p&gt;  &lt;h2&gt;1) Define variables &lt;/h2&gt;  &lt;br /&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160; &amp;lt;variable name=&amp;quot;serviceEntrypoint&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;variable name=&amp;quot;contextPath&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;variable name=&amp;quot;endpoint&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;No magic here : a endpoint value which will receive the concatenation of the serviceEntrypoint and a contextPath.&lt;/p&gt;  &lt;h2&gt;2) Define a namespace in your BPEL process&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;xmlns:&lt;font color="#000000"&gt;&lt;strong&gt;dvm&lt;/strong&gt;&lt;/font&gt;=&amp;quot;http://www.oracle.com/XSL/Transform/java/oracle.tip.dvm.LookupValue&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;To be able to use DVMs. And if you are copying directly the code from the article, JDev won’t import for you the “xsd” namespace, then add it manually :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;a title="xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;" href="xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;"&gt;&lt;font color="#666666"&gt;xmlns:&lt;strong&gt;&lt;font color="#000000"&gt;xsd&lt;/font&gt;&lt;/strong&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;3) Concatenate the information&lt;/h2&gt;  &lt;p&gt;In an Assign activity, concatenate the result of these two functions in a single string : &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;     &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;assign name=&amp;quot;Endpoint&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;from expression='dvm:lookupValue1M(&amp;quot;environment.dvm&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;ServiceEntrypoint&amp;quot;, &amp;quot;Value&amp;quot;)'/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;to variable=&amp;quot;serviceEntrypoint&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;from expression='dvm:lookupValue1M(&amp;quot;servicepaths.dvm&amp;quot;, &amp;quot;ServiceName&amp;quot;, &amp;quot;TestWS&amp;quot;, &amp;quot;ContextPath&amp;quot;)'/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;to variable=&amp;quot;contextPath&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;from expression=&amp;quot;concat(bpws:getVariableData('serviceEntrypoint'), bpws:getVariableData('contextPath'))&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;to variable=&amp;quot;endpoint&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/assign&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I guess the code is clear enough …&lt;/p&gt;  &lt;h1&gt;Part two : design a test webservice&lt;/h1&gt;  &lt;p&gt;I guess you know how to do it, so I won’t spend much time explaining it.&lt;/p&gt;  &lt;p&gt;Just design a small webservice “HelloWorld” or whatever to have something to call from our BPEL Process :)&lt;/p&gt;  &lt;p&gt;Once deployed, get the generated contextPath by going to the WLS console, in the section deployment, the name should be “&lt;strong&gt;&lt;font color="#000000"&gt;AppName-ProjectName-context-root&lt;/font&gt;&lt;/strong&gt;”&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/-xUEDAi0lQ7s/TgESvp9f-aI/AAAAAAAADiE/KZGVJ704xhc/s1600-h/image7.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-OAOFUvYOWn8/TgESwUNTmGI/AAAAAAAADiI/6rd1C4eb0P0/image_thumb3.png?imgmax=800" width="828" height="417" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Click on the “+” next to your deployment and locate your webservice and click on it.&lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://lh4.ggpht.com/-ueLqh2EO874/TgESw6aHgyI/AAAAAAAADiM/RTFx9l-9e1I/s1600-h/image12.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-Q2klQShqIXU/TgESxqU4T3I/AAAAAAAADiQ/6cVIvKBQpeI/image_thumb6.png?imgmax=800" width="1070" height="125" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;In the section “Testing”, click once again on the “+” just next to the webservice and you will have the choice to launch the TestClient or to display the WSDL.&lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://lh5.ggpht.com/-Rii3_36AKKs/TgESyFPDb7I/AAAAAAAADiU/2ohMn7MkRow/s1600-h/image17.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-h6ZrPALYvq8/TgESyhO3P9I/AAAAAAAADiY/WPQpanrys08/image_thumb9.png?imgmax=800" width="853" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;In both cases, what’s important for us is the contextPath : &lt;strong&gt;&lt;font color="#000000"&gt;/Blog-XMLCache-context-root/HelloWorldPort&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h1&gt;Part three: assigning the URL to the partnerLink endpoint&lt;/h1&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;/u&gt; :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;(thread forum Oracle) &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=859569"&gt;http://forums.oracle.com/forums/thread.jspa?messageID=859569&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Blogpost &lt;a href="http://blogs.oracle.com/dasoa/entry/11g_dynamic_partnerlink_example"&gt;http://blogs.oracle.com/dasoa/entry/11g_dynamic_partnerlink_example&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Official doc : &lt;a href="http://download.oracle.com/docs/cd/E19182-01/821-0539/cnfg_bpel-se-dynamic-ptnrlink_c/index.html"&gt;http://download.oracle.com/docs/cd/E19182-01/821-0539/cnfg_bpel-se-dynamic-ptnrlink_c/index.html&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A big thanks to Deepak who provided the GoDynamic example which helped me go through that mist.&lt;/p&gt;  &lt;h3&gt;Create a simple partnerLink toward the Webservice&lt;/h3&gt;  &lt;p&gt;First thing of all, we need to define a partnerLink. To do so, drag a partnerLinkfrom the palette in the right swimlane. It will start an assistant : just fill the information and enter the WSDL location :&lt;/p&gt;  &lt;p&gt;&lt;a title="http://localhost:7001/Blog-XMLCache-context-root/HelloWorldPort?WSDL" href="http://localhost:7001/Blog-XMLCache-context-root/HelloWorldPort?WSDL"&gt;http://localhost:7001/Blog-XMLCache-context-root/HelloWorldPort?WSDL&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click elsewhere and as soon as JDev detects the mouseOut event, it will display the WS port. Select the partnerRole and you’re done.&lt;/p&gt;  &lt;p&gt;Drag and drop an “Invoke” activity and wire it to the partnerLink :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-qUNUOPIu6Bw/TgESzFOAW4I/AAAAAAAADic/K67UiFdeKBA/s1600-h/image25.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-q73ns4IEeAU/TgESzs5J4ZI/AAAAAAAADig/suiBAjlakkA/image_thumb13.png?imgmax=800" width="440" height="441" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once done, JDev may complain since the input var has not been initialized. Add a copy operation in the Assign activty, for instance :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ahIGjKhIAQM/TgES0GaU3wI/AAAAAAAADik/jwQKk9BIXac/s1600-h/image32.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-30YAYXaCnGU/TgES0jjSTHI/AAAAAAAADio/utXEdkXz7nI/image_thumb16.png?imgmax=800" width="704" height="450" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;But it doesn’t really matter, especially since I didn’t define any input for my webmethod. Anyway.&lt;/p&gt;  &lt;h3&gt;Update the partnerLink endpoint&lt;/h3&gt;  &lt;p&gt;To be able to change dynamically the endpoint of your partnerLink, we will need to use a XML element “EndpointReference”. That element is defined in a specific XSD which you need to import.    &lt;br /&gt;&lt;/p&gt;  &lt;h2&gt;&amp;#160;&lt;/h2&gt;  &lt;h2&gt;1) Import the ws-addressing.xsd in your XSD directory&lt;/h2&gt;  &lt;p&gt;This file is located in your JDev home :    &lt;br /&gt;&lt;strong&gt;&lt;font color="#000000"&gt;&lt;font color="#9b00d3"&gt;[JDEV_HOME]/jdeveloper/integration/seed/soa/shared/common/ws-addressing.xsd &lt;/font&gt;        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For instance, if you’re using the VB appliance, this file will be there :    &lt;br /&gt;&lt;strong&gt;&lt;font color="#9b00d3"&gt;/oracle/jdevhome/jdeveloper/integration/seed/soa/shared/common/ws-addressing.xsd &lt;/font&gt;      &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h2&gt;&amp;#160;&lt;/h2&gt;  &lt;h2&gt;2) Define a namespace in your BPEL process&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;xmlns:&lt;font color="#000000"&gt;&lt;strong&gt;dpl&lt;/strong&gt;&lt;/font&gt;=&amp;quot;http://schemas.xmlsoap.org/ws/2003/03/addressing&amp;quot;&lt;/p&gt; &lt;/blockquote&gt; &lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;  &lt;h2&gt;&amp;#160;&lt;/h2&gt;  &lt;h2&gt;3) Define an import in the WSDL of your BPEL process&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;import namespace=&amp;quot;&lt;a href="http://schemas.xmlsoap.org/ws/2003/03/addressing"&gt;http://schemas.xmlsoap.org/ws/2003/03/addressing&lt;/a&gt;&amp;quot; schemaLocation=&amp;quot;&lt;strong&gt;&lt;font color="#000000"&gt;xsd/ws-addressing.xsd&lt;/font&gt;&lt;/strong&gt;&amp;quot;/&amp;gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;4) Declare a variable, matching your namespace prefix&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;variable name=&amp;quot;endPointReference&amp;quot; element=&amp;quot;&lt;strong&gt;&lt;font color="#000000"&gt;dpl:EndpointReference&lt;/font&gt;&lt;/strong&gt;&amp;quot;/&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;5) Define an “Assign” activity&lt;/h2&gt;  &lt;p&gt;In a Assign activity, define those operations : &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160; &amp;lt;assign name=&amp;quot;PartnerLink&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;from&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EndpointReference xmlns=&amp;quot;http://schemas.xmlsoap.org/ws/2003/03/addressing&amp;quot; xmlns:ns1=&amp;quot;http://services.sap.com&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Address/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ReferenceProperties/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ServiceName/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EndpointReference&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/from&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;to variable=&amp;quot;endPointReference&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;from variable=&amp;quot;endpoint&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;to variable=&amp;quot;endPointReference&amp;quot; query=&amp;quot;/dpl:EndpointReference/dpl:Address&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;from variable=&amp;quot;endPointReference&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;to partnerLink=&amp;quot;HelloWorldService&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/copy&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/assign&amp;gt;       &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Where “endpoint” is the wanted URL (in my case, I constructed it from a double DVM lookup) &lt;/p&gt;  &lt;h2&gt;6) Call your partnerLink through an Invoke activity&lt;/h2&gt;  &lt;p&gt;Everything is in the title :)&lt;/p&gt;  &lt;p&gt;Now, you should have a BPEL process like that :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-spSl0qQ2xoY/TgES1U8o-AI/AAAAAAAADis/K-Dtje3klzo/s1600-h/image%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-Ok-j-reTBOY/TgES2IUD0EI/AAAAAAAADiw/TADOsh7rky8/image_thumb%25255B2%25255D.png?imgmax=800" width="1056" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And from the composite view :&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/-BiwLfXTGudc/TgES2nrK1OI/AAAAAAAADi0/hmrLknvSP-o/s1600-h/image%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-EtNR9Bgu_R0/TgES3SjdQeI/AAAAAAAADi4/ruZ9VdldnIQ/image_thumb%25255B5%25255D.png?imgmax=800" width="734" height="439" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To sum up, we have a start node, then the first Assign activity, which gets the configuration information from the cache (DVM). Then a second assign activity that creates an empty “Endpoint” and copies the result of the previous assign (a concatenated string, representing the endpoint of our webservice) in the “address” property of the “Endpoint” variable.&lt;/p&gt;  &lt;h1&gt;Part four: testing our BPEL process&lt;/h1&gt;  &lt;p&gt;Okay, let’s roll ! Please note that I replaced “/contextPath” by the real context path of my service in the “ServicePaths.dvm” file.&lt;/p&gt;  &lt;p&gt;As my project is hybrid (composed of a webservice &amp;amp; of a BPEL process), you will have to deploy it twice. Once as a webservice project and the other one … ok, I guess you see the point.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-YDXTS27-SRM/TgES3zgyomI/AAAAAAAADi8/00M84Swsq-4/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-_Q5vRHC8hSM/TgES4lq7wAI/AAAAAAAADjA/QV6c9Lvu_AE/image_thumb%25255B7%25255D.png?imgmax=800" width="744" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Once done, go on the EM and test your BPEL process.&lt;/p&gt;  &lt;p&gt;Normally, you should have a successful test :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-4pyGR--NQxU/TgES41DY3wI/AAAAAAAADjE/AifH3ZZNK0Q/s1600-h/image%25255B24%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-NXNwioSYSRw/TgES5iRrOqI/AAAAAAAADjI/FPvuYUNzYqM/image_thumb%25255B11%25255D.png?imgmax=800" width="853" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;But now, if we change the server port to “8001”, in the “environment” DVM (either directly in the code, or through the SOA Composer), let’s see what’s happening :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-utj33HokUyo/TgES6fmFPHI/AAAAAAAADjM/rtre6kH0O2k/s1600-h/image%25255B25%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-2C5XYxX5Zdw/TgES7A4SdLI/AAAAAAAADjQ/uj8LDAAOuMY/image_thumb%25255B12%25255D.png?imgmax=800" width="941" height="428" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Or if we take a closer look to the “DynamicPartnerLink” :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-mPtB1krMRbs/TgES7ncKV6I/AAAAAAAADjU/gEG-ZJg7NlI/s1600-h/image%25255B26%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-uFLXSgUKBOk/TgES8WcyokI/AAAAAAAADjY/vZBh5PGJuQI/image_thumb%25255B13%25255D.png?imgmax=800" width="966" height="526" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So, WLI users, here is a “simple” way to replace your good old XMLCache ! Hope it will help some WLI fellows :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:dcdeca9a-e808-4610-8685-e96b48f38e05" class="wlWriterEditableSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/wli+xmlcache" rel="tag"&gt;wli xmlcache&lt;/a&gt;,&lt;a href="http://technorati.com/tags/domain+value+map" rel="tag"&gt;domain value map&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DVM" rel="tag"&gt;DVM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cache" rel="tag"&gt;cache&lt;/a&gt;,&lt;a href="http://technorati.com/tags/dynamic+endpoint" rel="tag"&gt;dynamic endpoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/partnerLink" rel="tag"&gt;partnerLink&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-2605475484025495246?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/2605475484025495246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=2605475484025495246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/2605475484025495246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/2605475484025495246'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2011/06/how-to-define-partnerlink-endpoint-from.html' title='How to define a partnerLink endpoint from an externally defined configuration ?'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-icKxB2KgQns/TgESu3Vp81I/AAAAAAAADiA/XUO--PFc138/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-4690353831850598839</id><published>2011-06-16T22:27:00.003+02:00</published><updated>2011-06-16T22:47:17.415+02:00</updated><title type='text'>How to connect BPEL Process Manager on a JMS topic as a durable subscriber ?</title><content type='html'>On my project, I use BPEL PM as the central BPM. It uses JMS messages to integrate external information. And, at a particular moment of the day, my process is launching some tasks and I want it to freeze the reception of external messages, to be sure my data is not changed during the computing process.&lt;br /&gt;When I was using WLI, I took a closer look at some of the BEA stuff to know how they were passivating / resuming EventGenerators through the WLI console. It gave me a &lt;a href="http://m-button.blogspot.com/2009/09/how-to-suspend-resume-wli-81.html" target="_blank"&gt;working solution&lt;/a&gt; (still in production), but it wasn’t official.&lt;br /&gt;&lt;br /&gt;Then, it hit me : isn’t the exact purpose of JMS topics &amp;amp; durable subscribers functionality ? Of course it is, but as the project was up &amp;amp; running in production, I didn’t get the authorization to change the existing system : we do not change something that’s working.&lt;br /&gt;Alright, I can understand. I then kept that idea in my mind … till we had to break up our architecture to replace WLI by BPEL PM. Then, I thought it was the perfect occasion. Then I decided to go for that solution I’ve been thinking about over six months !&lt;br /&gt;&lt;br /&gt;My stuff is now working and I thought it could help some people who need the same thing. Here’s what we are going to do in this article :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Design a simple process that listens through a mediator to the publishing of a message on the EDN &lt;/li&gt;&lt;li&gt;Test that process with the Enterprise Manager &lt;/li&gt;&lt;li&gt;Configure the JCA Adapter in charge of JMS and plug our process to a JMS topic &lt;/li&gt;&lt;li&gt;Configure the JCA Adapter to make BPEL PM a durable subscriber &lt;/li&gt;&lt;li&gt;Test how to deconnect BPEL PM from the topic &lt;/li&gt;&lt;li&gt;Test that JMS messages are kept when BPEL PM is offline, and that they are correctly sent when BPEL PM comes back online. &lt;/li&gt;&lt;/ol&gt;All the example I will be describing is going to be made thanks to the &lt;a href="http://www.oracle.com/technetwork/middleware/soasuite/learnmore/vmsoa-172279.html" target="_blank"&gt;SOA Suite 11gR1PS2 Virtual Box appliance&lt;/a&gt;.&lt;br /&gt;&lt;h1&gt;Design time&lt;/h1&gt;&lt;h3&gt;BPEL Process 1 &amp;amp; its Mediator : EDN message consumer&lt;/h3&gt;That BPEL process is very simple : the message subscription is going to be performed by a mediator, which will, on the reception of a message, call the BPEL process.&lt;br /&gt;I will spare you the designing of such a process. &lt;br /&gt;Just know the message I’m using is following that schema definition (the same I used in that &lt;a href="http://m-button.blogspot.com/2010/12/migrating-wli-process-toward-bpel.html" target="_blank"&gt;blogpost&lt;/a&gt;) :&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #fbfbfb; border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; border-right: #cecece 1px solid; border-top: #cecece 1px solid; min-height: 40px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 650px;"&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;?&lt;/span&gt;xml version="1.0"&lt;span style="color: blue;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;schema&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: red;"&gt;xmlns&lt;/span&gt;:&lt;span style="color: red;"&gt;xs&lt;/span&gt;=&lt;span style="color: blue;"&gt;&lt;a href="http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: red;"&gt;xmlns&lt;/span&gt;:&lt;span style="color: red;"&gt;tns&lt;/span&gt;=&lt;span style="color: blue;"&gt;&lt;a href="http://temp.openuri.org/WLIMigrationToBPEL/sample.xsd"&gt;http://temp.openuri.org/WLIMigrationToBPEL/sample.xsd&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: red;"&gt;targetNamespace&lt;/span&gt;=&lt;span style="color: blue;"&gt;"http://fr.mbutton.blog/WLIMigrationToBPEL"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: red;"&gt;elementFormDefault&lt;/span&gt;=&lt;span style="color: blue;"&gt;"qualified"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: red;"&gt;attributeFormDefault&lt;/span&gt;=&lt;span style="color: blue;"&gt;"unqualified"&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;element&lt;/span&gt; &lt;span style="color: red;"&gt;name&lt;/span&gt;=&lt;span style="color: blue;"&gt;"message"&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;complexType&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;sequence&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;element&lt;/span&gt; &lt;span style="color: red;"&gt;name&lt;/span&gt;=&lt;span style="color: blue;"&gt;"id"&lt;/span&gt; &lt;span style="color: red;"&gt;type&lt;/span&gt;=&lt;span style="color: blue;"&gt;"xs:string"&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;element&lt;/span&gt; &lt;span style="color: red;"&gt;name&lt;/span&gt;=&lt;span style="color: blue;"&gt;"label"&lt;/span&gt; &lt;span style="color: red;"&gt;type&lt;/span&gt;=&lt;span style="color: blue;"&gt;"xs:string"&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;sequence&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;complexType&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;element&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;schema&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;/pre&gt;&lt;/pre&gt;I’ve updated the WSDL process to use the message as an input, declared a correlation set and defined a static routing rule to route any incoming message to my BPEL process.&lt;br /&gt;And in the end, the composite will look like that :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-qVsENEuNAf4/Tfpl6luSqMI/AAAAAAAADcY/LlJykXDQVb4/s1600-h/image3.png"&gt;&lt;img alt="image" border="0" height="361" src="http://lh4.ggpht.com/-3id18OGzRAs/Tfpl7EZJE2I/AAAAAAAADcc/gzf-S2FZDpY/image_thumb1%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="379" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;BPEL Process 2 : EDN message sender&lt;/h3&gt;A simple BPEL Process whose role is to send (through an Invoke activity) a message over the EDN.&lt;br /&gt;The composite will look like that :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-5y4xCrRiKbE/Tfpl73iFcII/AAAAAAAADcg/XP5HLxq6K_4/s1600-h/image7.png"&gt;&lt;img alt="image" border="0" height="570" src="http://lh3.ggpht.com/-fUT09xdrC6Y/Tfpl8R9nzJI/AAAAAAAADck/1ozTDNljHCA/image_thumb3.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once everything’s ready, just deploy it to the WLS server.&lt;br /&gt;&lt;h1&gt;First test&lt;/h1&gt;As our process is not yet wired to the real world (that is to say JMS), I’ll use the first BPEL process to push messages over the EDN. That way, it will allow me to see if my BPEL process is correctly triggered.&lt;br /&gt;Thanks to the Enterprise Manager, I’ll use the test interface on my EDNSender BPEL process to trigger message.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-lIqSEfXO5nc/Tfpl829zpVI/AAAAAAAADco/QcNqOgrw3aU/s1600-h/image4.png"&gt;&lt;img alt="image" border="0" height="309" src="http://lh3.ggpht.com/-I_Fc5KDcQ70/Tfpl9nuORkI/AAAAAAAADcs/fMWWsZWeFaY/image_thumb11.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="900" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note : I could have used the embedded message functionality (right click on “soa-infra (AdminServer)" &amp;gt;&lt;br /&gt;Business Events”, but I prefer my own tool :)&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://lh3.ggpht.com/-jpLfa13fhqc/Tfpl-EF4OzI/AAAAAAAADcw/bxoMza91WhE/s1600-h/image12.png"&gt;&lt;img alt="image" border="0" height="410" src="http://lh5.ggpht.com/-squJya9L4dg/Tfpl-zeLlvI/AAAAAAAADc0/abuzlcfZKnI/image_thumb5.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="787" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;But okay, just send a message (one way or another) and see what happens :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-d2jvCn8iEHo/Tfpl_mtd-2I/AAAAAAAADc4/vqqujVvZxQs/s1600-h/image16.png"&gt;&lt;img alt="image" border="0" height="191" src="http://lh4.ggpht.com/-bCiD5R5bCv8/TfpmAqa7c0I/AAAAAAAADc8/aHuOcV2MAHI/image_thumb7.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="974" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And when I click on the MessageEater instance, I see that the EDN message has been properly consumed :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-Sj1lyM397Lk/TfpmBbNmhEI/AAAAAAAADdA/pk6Lj1eWPUE/s1600-h/image20.png"&gt;&lt;img alt="image" border="0" height="551" src="http://lh3.ggpht.com/-0M-7UCRcUGw/TfpmCMLM7ZI/AAAAAAAADdE/xhYT6ywQRyk/image_thumb9.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="670" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1&gt;Wiring JMS &lt;/h1&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h3&gt;Creating the JMS basis&lt;/h3&gt;First thing of all, I will create a JMS server configured with a store (to persist messages, &lt;span style="color: red;"&gt;&lt;u&gt;mandatory&lt;/u&gt;&lt;/span&gt; for storing messages when a durable subscriber is offline). Then I define a module containing a topic whose name is &lt;strong&gt;BlogTopic&lt;/strong&gt; and JNDI name is “&lt;strong&gt;fr/mbutton/blog/jms/topic&lt;/strong&gt;”. and a connectionFactory, whose JNDI name is “&lt;strong&gt;fr/mbutton/blog/jms/connectionFactory&lt;/strong&gt;” (pretty original, isn’t it ?).&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="0" style="text-align: center; width: 499px;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;Name&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt; &lt;td valign="top" width="297"&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;JNDI Name&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;BlogTopic&lt;/div&gt;&lt;/td&gt; &lt;td valign="top" width="297"&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;fr/mbutton/blog/jms/topic&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;BlogConnectionFactory&lt;/div&gt;&lt;/td&gt; &lt;td valign="top" width="297"&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;fr/mbutton/blog/jms/connectionFactory&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;In the end, I’ve got something like that :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-r-lddtUZOr0/TfpmCstn6zI/AAAAAAAADdI/EnJVNuc46eo/s1600-h/image21%25255B1%25255D%25255B3%25255D.png"&gt;&lt;img alt="image" border="0" height="132" src="http://lh4.ggpht.com/-xk_kfK6nXEI/TfpmDEbVnjI/AAAAAAAADdM/Nv7aKcE457o/image21%25255B1%25255D_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="1078" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just note that I chose to have a XA enabled connection factory.&lt;br /&gt;&lt;h3&gt;Durable subscriber configuration&lt;/h3&gt;Now all the configuration has been made, let’s turn back into JDev and our BPEL processes. &lt;br /&gt;To make the link between the JMS part and my BPEL process, I also need to create a JMS Adapter, which will be in charge of receiving JMS messages and send it over the EDN. That adapter can’t exist by itself : it has to be used in a BPEL process. In my example, mine is called “JMSBridge”.&lt;br /&gt;In the component palette, click the section “BPEL Services” and drag and drop a “JMS Adapter” in the right swimlane.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-Nt7C1BsOEC8/TfpmDhlZntI/AAAAAAAADdQ/PXYrfXvM_gs/s1600-h/image4%25255B1%25255D.png"&gt;&lt;img alt="image" border="0" height="323" src="http://lh4.ggpht.com/-kk1YFFAC74A/TfpmEYIIzBI/AAAAAAAADdU/tmhn5_XqlZk/image_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="259" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A wizard will start. First page is just a welcome screen. The 2nd will prompt for a service name, the 3rd will ask what kind of provider you want, chose “Oracle WebLogic JMS”&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-sfbQgnFWoz4/TfpmE6HZ3qI/AAAAAAAADdY/-K43f1IoLEo/s1600-h/image13%25255B1%25255D.png"&gt;&lt;img alt="image" border="0" height="217" src="http://lh4.ggpht.com/-qSuDiIAmoRQ/TfpmFhvDzsI/AAAAAAAADdc/3IpT-JQJvOM/image_thumb6.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="462" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On the 4th screen, chose a connection to a server (chose “localhost-wls”). On the 5th screen, leave it as it is (“Define from schema…”) and click next.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-xywhDChnJ8M/TfpmGKEV5wI/AAAAAAAADdg/V8KDOs1tsoM/s1600-h/image16%25255B1%25255D.png"&gt;&lt;img alt="image" border="0" height="118" src="http://lh6.ggpht.com/-1IZT_o91Svw/TfpmG-MYUgI/AAAAAAAADdk/oDwQxSjDunA/image_thumb7%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On screen 6, chose the operation “Consume Message” and click “Next”. Screen 7 is where things become a bit trickier. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-p7Z4Hwty-zg/TfpmHjetpgI/AAAAAAAADdo/Kau9ZwVLUZw/s1600-h/image20%25255B1%25255D.png"&gt;&lt;img alt="image" border="0" height="341" src="http://lh5.ggpht.com/-QU4E64aE13o/TfpmICCmw2I/AAAAAAAADds/Lc3tQ34YxJ8/image_thumb9%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="599" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can see a field “JNDI Name” at the bottom. You would be tempted to enter the JNDI name you previously defined (for the topic). But that would make no sense since it seems that we can define the destination on which we want to consume messages. Then what can it be ? Let’s see …&lt;br /&gt;First, chose your destination (by clicking the “browse” button, you will scan through the previously chosen connection all the available destinations). &lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-9cZX6ouO39E/TfpmIk02riI/AAAAAAAADdw/ffj8_29UqKE/s1600-h/image64.png"&gt;&lt;img alt="image" border="0" height="604" src="http://lh3.ggpht.com/-eCxekLE8JdA/TfpmJcTDioI/AAAAAAAADd0/4EQX8Ex58Kw/image_thumb43.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="275" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once you’ve chosen the correct destination, the screen will display another option “Durable Subscriber ID”,&lt;br /&gt;due to the fact we are working with a topic, and a default value will be set for the field “JNDI Name”.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-z96SS4uKC-I/TfpmKGMMOxI/AAAAAAAADd4/s4Zk2IcCXTY/s1600-h/image68.png"&gt;&lt;img alt="image" border="0" height="364" src="http://lh6.ggpht.com/-WqYvnUchB3w/TfpmK9rAcCI/AAAAAAAADd8/U-p2euB_lXc/image_thumb45.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="600" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Where does that JNDI name come from ?&lt;br /&gt;After googling a while, I found that this name is (and has to be) a JNDI name defined on the binding “Outbound Connection Pools” of the JCA Adapter : JMS Adapter.&amp;nbsp; Ok, if you don’t know much about JCA, it sounds a bit complex, but it is not.&lt;br /&gt;Connect to the WLS console (&lt;a href="http://localhost:7001/console"&gt;http://localhost:7001/console&lt;/a&gt;)&lt;br /&gt;In the deployment section, look for the deployed “Resource Adapter” whose name is “JMS Adapter”, and click on it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-PPqUtgkRXho/TfpmLb_iIUI/AAAAAAAADeA/Qs-mkf0P5o0/s1600-h/image23.png"&gt;&lt;img alt="image" border="0" height="150" src="http://lh5.ggpht.com/-sOVNh0kwMf0/TfpmL3I_v0I/AAAAAAAADeE/HD67fvZaPwQ/image_thumb10.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="243" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Go in the section “&lt;strong&gt;Configuration&lt;/strong&gt; &amp;gt; &lt;strong&gt;Outbound Connection Pools&lt;/strong&gt;”&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-bZBdbam4hMA/TfpmMWM6LhI/AAAAAAAADeI/BczYP_WtAto/s1600-h/image27.png"&gt;&lt;img alt="image" border="0" height="320" src="http://lh6.ggpht.com/-y4xZpuMqk5w/TfpmM4k0QJI/AAAAAAAADeM/h2levMPRk2A/image_thumb12.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="606" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on the ‘&lt;strong&gt;+&lt;/strong&gt;’ just before the “&lt;strong&gt;oracle.tip.adapter.jms.IJmsConnectionFactory&lt;/strong&gt;” : it displays a set of configuration bound to JNDI names. You should start to guess where I’m about to go.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-_A4lozTtXps/TfpmNuRTquI/AAAAAAAADeQ/Cm7FdIF_FF8/s1600-h/image31.png"&gt;&lt;img alt="image" border="0" height="493" src="http://lh5.ggpht.com/-U9_ezU9hJ_g/TfpmOEuKXJI/AAAAAAAADeU/PzqPr2fsjHI/image_thumb14.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="288" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here’s the default JNDI name “&lt;strong&gt;eis/wls/Topic&lt;/strong&gt;” that appeared in the assistant. Click on it and it will lead you&lt;br /&gt;to the configuration screen.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-nsCIdcOaQPA/TfpmO0qoj7I/AAAAAAAADeY/ltuKPEBt0-s/s1600-h/image60.png"&gt;&lt;img alt="image" border="0" height="376" src="http://lh3.ggpht.com/-EFsUrAIxvOY/TfpmPovGd-I/AAAAAAAADec/QVDBCFtAEFs/image_thumb41.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="1054" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On that screen is some interesting information, such as the “&lt;strong&gt;ConnectionFactoryLocation&lt;/strong&gt;” property, which indicates the JNDI name of the JMS connection factory you want to use.&lt;br /&gt;But going with that configuration will NOT work. It’s due to a simple fact : to properly define a durable subscriber, you have to define a durable subscriber ID &lt;strong&gt;&lt;u&gt;AND&lt;/u&gt;&lt;/strong&gt; a client ID.&lt;br /&gt;The durable subscriber ID was definable in the JDev assistant, but what about the client ID ? There’s unfortunately no dedicated field : we have to use the field “FactoryProperties”. To be more specific, you have to define your client ID such as : “ClientID=&lt;em&gt;yourUniqueClientID&lt;/em&gt;”. As exposed here : &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=9520314"&gt;http://forums.oracle.com/forums/thread.jspa?messageID=9520314&lt;/a&gt;, you have not only to define a unique subscriber ID but also a unique client ID. Then, as you can provide only a client ID for a “outbound connection”, you will have to define more than one.&lt;br /&gt;&lt;u&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/u&gt; : no matter what your choice is (using the default conf or create yours), updating the default configuration will create a &lt;a href="http://m-button.blogspot.com/2008/08/how-to-use-deployment-plan.html" target="_blank"&gt;deployment plan&lt;/a&gt;.&lt;br /&gt;Personnally, I prefer to define my own stuff, that way, when I update a configuration, it’s easier to predict what changes it will imply. So click on the “New” button to define your own configuration. Select the existing group and click “Next”.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-qRWoNdjMrng/TfpmQJxuO_I/AAAAAAAADeg/HX6fpUC3mdE/s1600-h/image72.png"&gt;&lt;img alt="image" border="0" height="332" src="http://lh5.ggpht.com/-8SQKl41K448/TfpmQyn_zEI/AAAAAAAADek/6uAHdAytukM/image_thumb47.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="395" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After that, enter a JNDI name and click “Finish”.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-oMoZIhvpbFg/TfpmRaCRZqI/AAAAAAAADeo/5A6NN0Eb-rY/s1600-h/image76.png"&gt;&lt;img alt="image" border="0" height="328" src="http://lh5.ggpht.com/-1wJas0gPO2w/TfpmSMj21CI/AAAAAAAADes/W4rrvBUmP6E/image_thumb49.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="633" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And finally, chose a destination where to save your deployment plan.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-xsri68ge8fM/TfpmShAnWCI/AAAAAAAADew/xK_hRuORORo/s1600-h/image80.png"&gt;&lt;img alt="image" border="0" height="435" src="http://lh3.ggpht.com/-OAuqM-u7RUE/TfpmTSiP5xI/AAAAAAAADe0/6vEjLy9dkLQ/image_thumb51.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="682" /&gt;&lt;/a&gt;&lt;br /&gt;Check that your deployment plan has been taken into account and you’re done.&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-_wH4ZveUqa4/TfpmT6sSo_I/AAAAAAAADe4/Qs9zt0Tle5M/s1600-h/image84.png"&gt;&lt;img alt="image" border="0" height="361" src="http://lh6.ggpht.com/-UEqS9BHwBdo/TfpmUhMhtaI/AAAAAAAADe8/zi9XdwisSgs/image_thumb53.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="700" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Last step, we now have to configure our freshly created “outbound connection pool”.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-XfdJyuh43bA/TfpmVNUVBwI/AAAAAAAADfA/J__lf1P1j7c/s1600-h/image122.png"&gt;&lt;img alt="image" border="0" height="272" src="http://lh3.ggpht.com/-0r5W2c0pDis/TfpmViT-AkI/AAAAAAAADfE/qighNAiVsLE/image_thumb89.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="1064" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I simply defined the “ConnectionFactoryLocation” property to match the JNDI name I defined for my connection factory, I set a client ID and changed the fact my connectionFactory is transaction enabled. (of course, if your connectionFactory is not, leave that value to “false”).&lt;br /&gt;The configuration, from the WLS side, is now over, so let’s turn back to JDev.&lt;br /&gt;I can now set the last piece of missing information of the 7th screen …&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-kBHIFLqakWo/TfpmYfKkiVI/AAAAAAAADfI/a6p8E7gWR_4/s1600-h/image133.png"&gt;&lt;img alt="image" border="0" height="127" src="http://lh3.ggpht.com/-PFyRVACn5GE/TfpmY8VxhpI/AAAAAAAADfM/VrGOB99limI/image_thumb94.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="321" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;… and go on with the wizard, straigth to the 8th screen. Here, we’ll define the schema used to qualify the message payload.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-gYQS8DgK74s/TfpmZnzSH4I/AAAAAAAADfQ/ZWOGetOlI7A/s1600-h/image137.png"&gt;&lt;img alt="image" border="0" height="712" src="http://lh4.ggpht.com/-dGFhjlCWy44/TfpmaVR08BI/AAAAAAAADfU/UFkb2zXhiTk/image_thumb96.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And that’s it ! You’re done !&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-IT4KhLt5HLM/TfpmbNbatTI/AAAAAAAADfY/AoxE98d5HBc/s1600-h/image141.png"&gt;&lt;img alt="image" border="0" height="162" src="http://lh4.ggpht.com/-0xDD0ygzz-E/Tfpmb5UiReI/AAAAAAAADfc/1BVt9SpYQbM/image_thumb98.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="604" /&gt;&lt;/a&gt;&lt;br /&gt;Now on the BPEL Process “JMSBridge”, just remove the receive activity and replace it with another Receive activity, but this time which is linked to the JMS Adapter. Don’t forget to click on the checkbox “Create instance”. Remove also the original partnerLink as well as the variable used in the original Receive activity.&lt;br /&gt;Then, add a Invoke activity and chose “Event” instead of “PartnerLink” and add a variable. Add an assign activity between the Receive and the Invoke and define a copy operation to replicate the message from the incoming payload to the payload of the outgoing message.&lt;br /&gt;&lt;br /&gt;If, when you compile, you have an error message “Error(31,72): Service "jmsbridge_client_ep" does not&lt;br /&gt;exist as wire source”, edit the composite and remove what’s left of the previous partnerLink.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-uyGBW_JB9a4/TfpmcTAKRoI/AAAAAAAADfg/sLh5WEncbjo/s1600-h/image145.png"&gt;&lt;img alt="image" border="0" height="188" src="http://lh6.ggpht.com/-6UbT4c1x-l4/TfpmdAD3B2I/AAAAAAAADfk/NLGVWlaCDJA/image_thumb100.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="646" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the end, your process will look like that :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-j5mXI-wxD44/Tfpmdrx6BLI/AAAAAAAADfo/5_FhvdYfaiA/s1600-h/image153.png"&gt;&lt;img alt="image" border="0" height="434" src="http://lh5.ggpht.com/-vnzfhUNSQE4/TfpmeIRSEGI/AAAAAAAADfs/QcdpdIpaKSQ/image_thumb104.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="765" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1&gt;Testing the JMS binding&lt;/h1&gt;First of all, restart your server. I’ve experienced some problem when I didn’t. Even if you redeploy your JMS Adapter, it won’t work and you will end in having NPE while trying to bind to the topic.&lt;br /&gt;During the server restart, look for that message :&lt;br /&gt;&lt;blockquote&gt;[2011-06-13T23:46:59.046+02:00] [AdminServer] [NOTIFICATION] [] [oracle.soa.adapter] [tid: weblogic.work.j2ee.J2EEWorkManager$WorkWithListener@bf46a] [userId: &amp;lt;anonymous&amp;gt;] [ecid: 0000J2AyCeQFw000jzwkno1DxcGx00000I,0] [APP: soa-infra] [dcid: 11d1def534ea1be0:-66ae329:1308af61f0e:-7fd1-0000000000000011] JMSAdapter BPELDurableSubscriber JMSMessageConsumer_init: Successfully created MessageConsumer for destination fr/mbutton/blog/jms/topic (payload = 1, subscriber = JMSBridge) &lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;You can double check by verifying that your JMS Adapter is correctly bound to the topic. To do so, just go in the “&lt;strong&gt;Services &amp;gt; Messaging &amp;gt; JMS Modules&lt;/strong&gt;” and click on your module.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-d0-Ho2vL-x0/Tfpme6n8FdI/AAAAAAAADfw/fwCkvMteBEk/s1600-h/image157.png"&gt;&lt;img alt="image" border="0" height="205" src="http://lh4.ggpht.com/-tjgkCgGMUjQ/TfpmfSIAE3I/AAAAAAAADf0/wmpfF02wBhQ/image_thumb106.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="495" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then in the monitoring section, click on the subtab “Durable Subscriber” : a line should be displayed.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-9e1fKBphyJE/TfpmfxK0LnI/AAAAAAAADf4/cr8QRdnUt1w/s1600-h/image161.png"&gt;&lt;img alt="image" border="0" height="352" src="http://lh5.ggpht.com/-clBp2qpgv3g/TfpmgsT8GiI/AAAAAAAADf8/gSPvb_5dLnw/image_thumb108.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, we have to make sure that a BPEL process instance is created when a JMS message is sent / received.&lt;br /&gt;&lt;br /&gt;To send JMS messages, you can use a java class or use HermesJMS or do whatever you want to, it’s up to you ! :) But I chosed to write a custom class.&lt;br /&gt;Here’s the payload I sent : &lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-g8POK65jdFE/TfpmhFMWgMI/AAAAAAAADgA/UFaBc4dyTSg/s1600-h/image%25255B4%25255D.png"&gt;&lt;img alt="image" border="0" height="126" src="http://lh3.ggpht.com/-sn6XlGKKiAo/Tfpmh-MB-7I/AAAAAAAADgE/ePBv2ng7_EY/image_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="534" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And in the EnterpriseManager, here’s what I’ve got in return :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-zdn-1sVBi20/TfpmiarKVLI/AAAAAAAADgI/387yb9xvFbM/s1600-h/image%25255B11%25255D.png"&gt;&lt;img alt="image" border="0" height="207" src="http://lh6.ggpht.com/--YJjy5_fSMY/TfpmixbkWII/AAAAAAAADgM/Yt9w6PTg35I/image_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="867" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here are the details of this BPEL process instance :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-kL4kZnNMgIE/Tfpmjgbe51I/AAAAAAAADgQ/OHaPapDH4DY/s1600-h/image%25255B12%25255D.png"&gt;&lt;img alt="image" border="0" height="562" src="http://lh6.ggpht.com/-y3a8j5DhChU/TfpmkdVeooI/AAAAAAAADgU/ZFrgj6raTrw/image_thumb%25255B5%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="625" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So I guess I can say my bridge is working. Now the fun begins.&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Testing the durable subscription&lt;/h1&gt;To test a durable subscription, there’s not many tests : the only one that makes sense is to de-activate the durable subscriber, send a JMS message, wait for a few seconds to see that the message is kept on the topic and that no BPEL process instance is created. Then, when the durable subscriber is reactivated, the JMS message must be consumed.&lt;br /&gt;But how to disconnect a BPEL process from a topic ? Well that’s an interesting question. During my tests, I found out that a shutdown was disconnecting completely the composite from the topic. Then when a message arrived, the topic did not persist it since there was no durable subscriber. Not what I needed.&lt;br /&gt;I then tried to “retire” the composite and there was my solution. The link was still there but was considered as “Inactive”, which is precisely what I was looking for.&lt;br /&gt;In my use case, I had to develop a class which allows me to retire the process programmatically. In that article, I will simply use the EM to do so.&lt;br /&gt;&lt;h3&gt;Retire the application&lt;/h3&gt;Using the EM, click on the “Retire” button.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-LCGsXJIiT6k/Tfpmk0Wj6CI/AAAAAAAADgY/Naf1ukGohUE/s1600-h/image%25255B25%25255D.png"&gt;&lt;img alt="image" border="0" height="237" src="http://lh3.ggpht.com/-k9jgUvPGwjw/TfpmloBSmoI/AAAAAAAADgc/C-cuFCFKV_s/image_thumb%25255B10%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="445" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then if you click on your partition (the one on which you deployed your SAR), you should see the status “Retired”.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-0RYxESXZXe0/TfpmmUIg1DI/AAAAAAAADgg/Wq-9SIsmg1Y/s1600-h/image%25255B26%25255D.png"&gt;&lt;img alt="image" border="0" height="95" src="http://lh4.ggpht.com/-9u8zqFyRNjw/Tfpmm2bWaiI/AAAAAAAADgk/pb-U-IA284M/image_thumb%25255B11%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="719" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But the most interesting part is the topic monitoring, especially, the durable subscriber tab.&lt;br /&gt;Before, it was like that :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-ciPzS5mtG3w/TfpmnSiXSII/AAAAAAAADgo/AIZFOPgs6Zs/s1600-h/image%25255B27%25255D.png"&gt;&lt;img alt="image" border="0" height="160" src="http://lh4.ggpht.com/-No-Inp2AKHI/Tfpmn5sC1vI/AAAAAAAADgs/YuYlSgKf1yY/image_thumb%25255B12%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="681" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And now it’s more (at least it should be) like :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-9twTvp2MF4k/TfpmoV4BlWI/AAAAAAAADgw/MZ4Zgo64Tks/s1600-h/image%25255B28%25255D.png"&gt;&lt;img alt="image" border="0" height="163" src="http://lh3.ggpht.com/-T4owN2KF5Yg/Tfpmo7I9YpI/AAAAAAAADg0/DBssDWrVFP8/image_thumb%25255B13%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="683" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Okay, so now, I have to send a message and normally, nothing should happen (fingers crossed)&lt;br /&gt;The message has been sent !&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-S7NKGzz_bKg/TfpmpYoUfiI/AAAAAAAADg4/Ygl1W7sf-JY/s1600-h/image%25255B53%25255D.png"&gt;&lt;img alt="image" border="0" height="84" src="http://lh5.ggpht.com/-TdH_ZmzQR_U/TfpmqfQ5dGI/AAAAAAAADg8/5Wbihk5sdL4/image_thumb%25255B26%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="644" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I’ll wait for about one minute. Meanwhile, let’s have a look at the topic monitoring :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-bIEcRBtVcAA/Tfpmq7gJdLI/AAAAAAAADhA/_BBloMGmuJw/s1600-h/image%25255B54%25255D.png"&gt;&lt;img alt="image" border="0" height="161" src="http://lh5.ggpht.com/-3saEyMgUJDo/TfpmrePt06I/AAAAAAAADhE/aVfDAEnF-4Y/image_thumb%25255B27%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="905" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We can see that a message is currently on the topic. Means no one has eaten it yet (relief).&lt;br /&gt;On the EM dashboard, the two previous instances are still there but no new instance has been created :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-KSYGjCLzvvQ/Tfpmr7kM8_I/AAAAAAAADhI/8ZDNvt1DZ_s/s1600-h/image%25255B56%25255D.png"&gt;&lt;img alt="image" border="0" height="93" src="http://lh3.ggpht.com/-WYArtsy_WVI/TfpmsnbisxI/AAAAAAAADhM/hGdq99pQ92s/image_thumb%25255B29%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="1076" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, it’s time to reactivate the composite (I won’t put a screenshot of the activation, I guess you know how it works :p)&lt;br /&gt;&lt;br /&gt;The topic monitoring shows the durablesubscriber has been reactivated (Active = true) and there’s no message left.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-JNpQbarvNro/TfpmtBVa_tI/AAAAAAAADhQ/akIzwoZkYLU/s1600-h/image%25255B50%25255D.png"&gt;&lt;img alt="image" border="0" height="156" src="http://lh5.ggpht.com/-Xd5WKInX1vI/TfpmtnSk1zI/AAAAAAAADhU/AiwOemMmzFw/image_thumb%25255B23%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="910" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally, let’s have a look at the BPEL process instances : it works ! &lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-jmiVAoZIYEo/TfpmuTE7WFI/AAAAAAAADhY/D7KvXt1QURY/s1600-h/image%25255B58%25255D.png"&gt;&lt;img alt="image" border="0" height="103" src="http://lh5.ggpht.com/-TCNed8tdmS8/Tfpmu8dvl-I/AAAAAAAADhc/OuILgRczFsc/image_thumb%25255B31%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="1065" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And in detail :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/--quVrwKKro4/TfpmviN6L4I/AAAAAAAADhg/VOje5Ep2VIs/s1600-h/image%25255B47%25255D.png"&gt;&lt;img alt="image" border="0" height="605" src="http://lh4.ggpht.com/-iZlChGpvpno/TfpnS4eirAI/AAAAAAAADh0/pmqzh24brBE/image_thumb%25255B20%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="656" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hope it will help some fellows out there ! Thanks for reading ! :)&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:dd0f343c-a973-46a3-afd8-e822bc1103a9" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/BPEL" rel="tag"&gt;BPEL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Oracle" rel="tag"&gt;Oracle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JMS" rel="tag"&gt;JMS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Topic" rel="tag"&gt;Topic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Durable+Subscriber" rel="tag"&gt;Durable Subscriber&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ClientID" rel="tag"&gt;ClientID&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BPEL+PM" rel="tag"&gt;BPEL PM&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-4690353831850598839?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/4690353831850598839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=4690353831850598839' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/4690353831850598839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/4690353831850598839'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2011/06/how-to-connect-bpel-process-manager-on.html' title='How to connect BPEL Process Manager on a JMS topic as a durable subscriber ?'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-3id18OGzRAs/Tfpl7EZJE2I/AAAAAAAADcc/gzf-S2FZDpY/s72-c/image_thumb1%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-3622403154345972000</id><published>2011-06-04T23:25:00.001+02:00</published><updated>2011-06-04T23:25:19.638+02:00</updated><title type='text'>The easiest way to refactor a BPEL process with BPEL Process Manager</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Lately, I’ve been pretty extensively using BPEL Process Manager to migrate my client WLI projects towards the new official Oracle preferred product.&lt;/p&gt;  &lt;p&gt;I could have used the official migration tool, which has been developed (I should say extended, since this feature is not exactly new), but as I explained it to several clients,&lt;/p&gt;  &lt;p&gt;I prefer to code my application from scratch, since it would allow me to really use the product.&lt;/p&gt;  &lt;p&gt;I heard that some projects which went the “migration tool” road, did an amazing job at automating the migration by tuning the tool and adding some post-processing scripts.&lt;/p&gt;  &lt;p&gt;But such a method is annoying about one point : you do not improve the knowledge of the new tool, which is important when you have to do some maintenance on projects relying on it.&lt;/p&gt;  &lt;p&gt;Then I started to work with BPEL PM and I quickly find myself with lots of files (BPEL file, Mediators, WSDL &amp;amp; _property WSDL for each and every new BPEL Process) and I felt like cleaning up my playground.&lt;/p&gt;  &lt;p&gt;I decided to create some directories and to put my BPEL processes (and their associated files) in them. Coming from Eclipse like lots of developers, I was expecting the refactor option to be in a contextual menu, but it was not that easy to find … indeed, it’s only accessible in a top menu :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-6tYsEF7DjW0/Teqiuw7h0RI/AAAAAAAADcQ/iX4nEkerhwI/s1600-h/image3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-vgizw4OwrVM/Teqivtif7ZI/AAAAAAAADcU/vqDgt71zS8o/image_thumb1.png?imgmax=800" width="416" height="445" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;After a quick while, my process was moved. I tried to compile and I got an error message, saying the BPEL process was nowhere to be found, while validating the composite ….&lt;/p&gt;  &lt;p&gt;Huh ? I then looked into the composite and … here was the object of my compiler complaint : the path of the BPEL process has not been updated !&lt;/p&gt;  &lt;p&gt;I decided to file a case to the Oracle Support and I won’t make any comment about the answer I was given. If you have an Oracle Support account, see for yourself, it’s the following case number : &lt;a href="http://support.oracle.com" target="_blank"&gt;SR 3-3082902481: JDev can't handle a proper BPEL refactor&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;What I can tell you is that the answer was far from being satisfying.&lt;/p&gt;  &lt;p&gt;Then, I had to find a way to order my stuff, and to be more productive than editing all the files one by one, to make sure the references were correctly changed.&lt;/p&gt;  &lt;p&gt;I searched a bit and I started to find some Unix commands that sounded promising.&lt;/p&gt;  &lt;p&gt;And finally, I came to those lines who helped me A LOT ! &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;strong&gt;Those lines perform a rename ON the file itself. I was forced to use different cases because that’s the way BPEL PM does it.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;find . -type f | egrep '.bpel$|.wsdl$|.mplan$|.componentType$|.xml$' | xargs rename Process1 Process2 *.*      &lt;br /&gt;find . -type f | egrep '.bpel$|.wsdl$|.mplan$|.componentType$|.xml$' | xargs rename process1 process2 *.*       &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;strong&gt;The following lines perform a rename IN the found file(s).&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;find . -type f | egrep '.bpel$|.wsdl$|.mplan$|.componentType$|.xml$' | xargs sed -i 's/Process1/Process2/g'      &lt;br /&gt;find . -type f | egrep '.bpel$|.wsdl$|.mplan$|.componentType$|.xml$' | xargs sed -i 's/process1/process2/g'&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Using those two commands, it will help you save up some time. At least, it did for me ! :)&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1c80384b-ff9f-48c7-93bb-bc9f0a6995ca" class="wlWriterEditableSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/BPEL" rel="tag"&gt;BPEL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Process+Manager" rel="tag"&gt;Process Manager&lt;/a&gt;,&lt;a href="http://technorati.com/tags/refactor" rel="tag"&gt;refactor&lt;/a&gt;,&lt;a href="http://technorati.com/tags/rename" rel="tag"&gt;rename&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JDeveloper" rel="tag"&gt;JDeveloper&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-3622403154345972000?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/3622403154345972000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=3622403154345972000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/3622403154345972000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/3622403154345972000'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2011/06/easiest-way-to-refactor-bpel-process.html' title='The easiest way to refactor a BPEL process with BPEL Process Manager'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-vgizw4OwrVM/Teqivtif7ZI/AAAAAAAADcU/vqDgt71zS8o/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-7672150008178185081</id><published>2010-12-19T23:37:00.002+01:00</published><updated>2011-06-20T22:21:44.592+02:00</updated><title type='text'>WLI Message Broker versus BPEL PM EDN</title><content type='html'>WLI is no more.&lt;br /&gt;Well, not exactly, not yet at least, but Oracle made it pretty clear : WLI will have a 9 year support but after that, clients will have to move toward BPEL PM. Knowing that WLI 8.1 is the most widely used version, that changes the whole situation since it will ceased to be supported … next year … (September 2011)&lt;br /&gt;Then, from there, you’ll have two (Oracle) choices : either to migrate your application to WLI 10, or migrate your application to BPEL PM. The choice seems easy to make : “let’s go for WLI 10 !”. But it’s not that simple, since whatever the choice you make, you’ll have to modify or recode from scratch your app and if you go for WLI 10, you still will have to do the same later on, to move towards BPEL PM. To me, migrating to WLI 10 is just a way to slow down what’s unevitable.&lt;br /&gt;With that in mind, what solution would you go for ? &lt;br /&gt;I personally think that going right now toward BPEL PM is a smarter move and that’s why I’m about to demonstrate how to migrate a simple WLI process toward BPEL PM.&lt;br /&gt;&lt;blockquote&gt;Note : I’ll start with a WLI process and then, we’ll see how to “translate” it into a BPEL fashion. I won’t spend much time talking about WLI, because I’m expecting readers to know a bit about it. This blogpost will mainly focus on the BPEL part.&lt;/blockquote&gt;&lt;h2&gt;1) Designing a simple WLI process&lt;/h2&gt;No fancy stuff : our process will just wait for two messages to arrive, before going further.&lt;br /&gt;It’s a really common stuff WLI is excellent at ! Thanks to its message broker, it adds a very handy layer to handle your messages.&lt;br /&gt;Our messages will be defined according to the following XSD :&lt;br /&gt;&lt;pre style="background-color: #fbfbfb; border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; border-right: #cecece 1px solid; border-top: #cecece 1px solid; min-height: 40px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 650px;"&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;?&lt;/span&gt;xml version="1.0"&lt;span style="color: blue;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;schema&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: red;"&gt;xmlns&lt;/span&gt;:&lt;span style="color: red;"&gt;xs&lt;/span&gt;=&lt;span style="color: blue;"&gt;"http://www.w3.org/2001/XMLSchema"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: red;"&gt;xmlns&lt;/span&gt;:&lt;span style="color: red;"&gt;tns&lt;/span&gt;=&lt;span style="color: blue;"&gt;"http://temp.openuri.org/WLIMigrationToBPEL/sample.xsd"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: red;"&gt;targetNamespace&lt;/span&gt;=&lt;span style="color: blue;"&gt;"http://fr.mbutton.blog/WLIMigrationToBPEL"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: red;"&gt;elementFormDefault&lt;/span&gt;=&lt;span style="color: blue;"&gt;"qualified"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: red;"&gt;attributeFormDefault&lt;/span&gt;=&lt;span style="color: blue;"&gt;"unqualified"&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;element&lt;/span&gt; &lt;span style="color: red;"&gt;name&lt;/span&gt;=&lt;span style="color: blue;"&gt;"message"&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;complexType&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;sequence&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;element&lt;/span&gt; &lt;span style="color: red;"&gt;name&lt;/span&gt;=&lt;span style="color: blue;"&gt;"id"&lt;/span&gt; &lt;span style="color: red;"&gt;type&lt;/span&gt;=&lt;span style="color: blue;"&gt;"xs:string"&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;element&lt;/span&gt; &lt;span style="color: red;"&gt;name&lt;/span&gt;=&lt;span style="color: blue;"&gt;"label"&lt;/span&gt; &lt;span style="color: red;"&gt;type&lt;/span&gt;=&lt;span style="color: blue;"&gt;"xs:string"&lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;sequence&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;complexType&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;element&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: mediumvioletred;"&gt;xs&lt;/span&gt;:&lt;span style="color: maroon;"&gt;schema&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;First comes our receiver process :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZyXjcmgrI/AAAAAAAADJQ/8uc4A05ouTM/s1600-h/messageReceiverProcess6.gif"&gt;&lt;img alt="messageReceiverProcess" border="0" height="823" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZyYEhLPdI/AAAAAAAADJU/wWWkginOvsM/messageReceiverProcess_thumb4.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="messageReceiverProcess" width="383" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And then the “utility” process, we’ll use to send messages.&lt;br /&gt;&lt;br /&gt;Note that we could have done a more sophisticated system based on JMS messages &amp;amp; an EventGenerator, but that’s beyond the scope of this article.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZyYiRDylI/AAAAAAAADJY/0ARzEk0M18c/s1600-h/messageSenderProcess5.gif"&gt;&lt;img alt="messageSenderProcess" border="0" height="389" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZyZZBl3bI/AAAAAAAADJc/PEv4Id5sRiU/messageSenderProcess_thumb3.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="messageSenderProcess" width="255" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once deployed, as expected, no running process is displayed in the WLI Console :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZyaEat2vI/AAAAAAAADJg/xdkVWWAGe5w/s1600-h/no_running_process3.gif"&gt;&lt;img alt="no_running_process" border="0" height="172" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZya1GyWNI/AAAAAAAADJk/CK2GO4977AE/no_running_process_thumb1.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="no_running_process" width="758" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;To do so, we just have to start the processes for testing. First one : the receiver.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/TRZybRmqtTI/AAAAAAAADJo/jmvHxhGWnwI/s1600-h/startMessageReceiver3.gif"&gt;&lt;img alt="startMessageReceiver" border="0" height="262" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZybz3YtpI/AAAAAAAADJs/Pzgm5dKXsdM/startMessageReceiver_thumb1.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="startMessageReceiver" width="599" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now if we go back in the WLI console, we can now see that this process is running and waiting for some messages to arrive.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZycVFIO7I/AAAAAAAADJw/Zf2l6IrhRkw/s1600-h/processRunningAndWaiting4Msgs3.gif"&gt;&lt;img alt="processRunningAndWaiting4Msgs" border="0" height="403" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZydKDYvwI/AAAAAAAADJ0/8izGQTLm9AE/processRunningAndWaiting4Msgs_thumb1.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="processRunningAndWaiting4Msgs" width="494" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To complete it, we have to send two messages whose IDs are “&lt;strong&gt;ID_A&lt;/strong&gt;” &amp;amp; “&lt;strong&gt;ID_B&lt;/strong&gt;”.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Just call the sender process to do so :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/TRZydqDNHII/AAAAAAAADJ4/EjcI1dS6XWk/s1600-h/sendMessageA3.gif"&gt;&lt;img alt="sendMessageA" border="0" height="390" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZyfSta1XI/AAAAAAAADJ8/HUn4OB3pHT4/sendMessageA_thumb1.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="sendMessageA" width="929" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the console, we can now see that’s the process has received the event and is no longer waiting for it :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZyf_wuG-I/AAAAAAAADKA/nkcGfkGIlmA/s1600-h/msgAReceived3.gif"&gt;&lt;img alt="msgAReceived" border="0" height="383" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZygc6TuRI/AAAAAAAADKE/tMAXfO2Sc8E/msgAReceived_thumb1.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="msgAReceived" width="545" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If we repeat that step with message B, it will complete the process :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZyg9qecYI/AAAAAAAADKI/9qQQZWeTZCk/s1600-h/messageBReceivedProcessComplete3.gif"&gt;&lt;img alt="messageBReceivedProcessComplete" border="0" height="295" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZyh94JWUI/AAAAAAAADKM/-FTT2PCcbNY/messageBReceivedProcessComplete_thum.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="messageBReceivedProcessComplete" width="447" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Okay, our WLI process works fine, let’s do some more serious business.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;2) Converting to BPEL&lt;/h2&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;2.1) BPEL Export&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you’re familiar with WLI, you should have noticed that an interesting option is proposed when you install the product : BPEL Export.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let’s see what’s that option doing :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZyiSCk-tI/AAAAAAAADKQ/z2MwMljCe1E/s1600-h/exportBPEL3.gif"&gt;&lt;img alt="exportBPEL" border="0" height="361" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZyi9CyZYI/AAAAAAAADKU/pB4bjVLqyZY/exportBPEL_thumb1.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="exportBPEL" width="390" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After the export has been done, you should see in the new BpelExport pane :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZyjX0DXKI/AAAAAAAADKY/R4SVlL0YziI/s1600-h/bpelConversionDone3.gif"&gt;&lt;img alt="bpelConversionDone" border="0" height="128" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZyjy6JbrI/AAAAAAAADKc/J675c_YHWyw/bpelConversionDone_thumb1.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="bpelConversionDone" width="726" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And some new files in the Application pane : &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/TRZykb8d2jI/AAAAAAAADKg/JEClevh7_X0/s1600-h/newBpelFiles3.gif"&gt;&lt;img alt="newBpelFiles" border="0" height="169" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZyk1lQRbI/AAAAAAAADKk/YtJPfFs3yD0/newBpelFiles_thumb1.gif?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="newBpelFiles" width="261" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let’s import the bpel files into JDev :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/TRZylTNW5iI/AAAAAAAADKo/raA9vchrydw/s1600-h/image6.png"&gt;&lt;img alt="image" border="0" height="773" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZymH2LcfI/AAAAAAAADKs/rb8_sGwH550/image_thumb2.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="image" width="936" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have to say I’m impressed : I wasn’t expecting that kind of result. What I didn’t know, is that a BPEL process is not orchestrated like a WLI process. So, even if the graphical aspect is pretty much the same, that does not mean anything.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It’s just an empty shell and with three errors stating that some partnerLinks are missing …&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZymljreSI/AAAAAAAADKw/C1JmXUADFL0/s1600-h/image7.png"&gt;&lt;img alt="image" border="0" height="189" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZynr00TII/AAAAAAAADK0/QS8dzmd6d2M/image_thumb3.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="image" width="404" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you’re not familiar with BPEL, that must be confusing. (and it was for me, when I first worked with BPEL PM !)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;2.2) From scratch&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;The BPEL export is working but only converts the graphical view, which is not exactly what we wanted, especially since the product philosophies are different.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then, we will start again, from scratch. And the only thing that will remain the same is the XSD we used.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Note&lt;/u&gt;&lt;/strong&gt; : To&amp;nbsp; be able to develop quickly, I used (and am still using) the VM set up by Oracle which offers a full SOA Suite 11gR1PS2 environment (development &amp;amp; runtime) on RHEL 5. To get the (excellent) VirtualBox image, go to &lt;a href="http://www.oracle.com/technetwork/middleware/soasuite/learnmore/vmsoa-172279.html" target="_blank"&gt;OTN&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;2.2.1) Creating the composite&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First thing of all, we need to create a new SOA Project. You have to chose the composite template you want to start with.&lt;br /&gt;&lt;br /&gt;As we are interested in BPEL, we may choose “Composite With BPEL Process”.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZypL3cB_I/AAAAAAAADK4/d-yavqD8hTQ/s1600-h/ScreenshotCreateSOAProjectStep2of23.png"&gt;&lt;img alt="Screenshot-Create SOA Project - Step 2 of 2" border="0" height="484" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZyp_GGqKI/AAAAAAAADK8/HEJb99tMIaE/ScreenshotCreateSOAProjectStep2of2_t.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="Screenshot-Create SOA Project - Step 2 of 2" width="644" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;As we chose to create a BPEL process, a popup shows up, asking some details about the way we want to create it.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;You can change the namespace, the name and the template (“Asynchronous”, “Synchronous” or “One Way”) or define it later. In our case, as there is no need for a return, just pick “One way”.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZyqerMQ5I/AAAAAAAADLA/24MW23RvcRw/s1600-h/02-Screenshot-Create-BPEL-Process3.png"&gt;&lt;img alt="02-Screenshot-Create BPEL Process" border="0" height="441" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZyq4dETTI/AAAAAAAADLE/tJIBEQ0SBj4/02-Screenshot-Create-BPEL-Process_th.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="02-Screenshot-Create BPEL Process" width="644" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;Then, import the XSD in the XSD folder of your SOA project.&lt;/div&gt;&lt;br /&gt;&lt;h4 align="left"&gt;2.2.2) Some explanations before the example&lt;/h4&gt;&lt;br /&gt;&lt;div align="left"&gt;That’s where the fun begins. Coming from WLI, I designed something with the “WLI message broker” in mind : I thought my BPEL process would just listen to the desired messages (thanks to filters) and get them.&amp;nbsp; But that’s not what happened.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;In fact, the “WLI message broker” &amp;amp; the EDN (Event Delivery Network) are pretty different. Just think as a JMS topic : when a producer sends a message, all the consumers receive it. That’s the principle of the “WLI message broker” (this has been voluntarily simplified). &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;With EDN, even if a message, matching the filter you’ve defined in your BPEL process, arrives, you won’t receive it. Why ? Because you have to tell which instance is aimed. Lost ? We will see that in a few lines.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;In our simple example, in which two messages are expected before being able to go on, you need to first define a correlationSet for the messages to know where to go. It might sound pretty weird, especially when you’re used to work with classical MOMs but don’t worry, it’s not that bad :) &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;Another thing you need to know is that for now, in the SOA Suite 11gR1PS2, there’s no way you can define two filters on the same message in a single BPEL process. I mean, you can do some tricks (such as defining several times the same event, with a different name) but I think this has been to be improved. Normally, it should be available next January, in the SOA Suite 11gR1PS3. For now, it’s easier to use a mediator to do the routing &amp;amp; filtering job.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;Again, we will see that in our example.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4 align="left"&gt;2.2.3 ) Creating the Mediator&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;A mediator is a component whose role is to filter, transform and route messages within the SOA Suite (as opposed to the OSB, whose role is exactly the same, but outside the SOA Suite). In our example, the mediator is the component that will receive &amp;amp; filter EDN messages, and then route them to the good BPEL process route.&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;div align="left"&gt;Note : I am sorry, but to limit the number of screenshots, I displayed all the cascading popups on a same screen. Just refer to the numbers to see in what order they’re displayed.&lt;/div&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="left"&gt;Create a Mediator component by drag ‘n’ dropping a Mediator component (on the right) to the composite (in the middle), this will display window “1”&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Click on the “&lt;span style="color: lime;"&gt;&lt;strong&gt;+&lt;/strong&gt;&lt;/span&gt;”, this will bring the window “2”, in which you are asked to create an EDF (Event Definition File)&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Click once again on the “&lt;span style="color: lime;"&gt;&lt;strong&gt;+&lt;/strong&gt;&lt;/span&gt;”, to create your message. Windows “3” will show up. &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Click on the magnifying glass to chose your event (window “4”)&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Once again, click on the magnifying glass and select (in window '”5”) the type associated to the XML message&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZyr1cxKOI/AAAAAAAADLI/AcNxZvuXl-o/s1600-h/05-Mediator5.png"&gt;&lt;img alt="05-Mediator" border="0" height="580" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZytNgDs5I/AAAAAAAADLM/bvC3DRQOG2A/05-Mediator_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="05-Mediator" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center" style="text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;As the Mediator is not going to publish messages on the EDN, set the “Run as publisher” option to “No”.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZyuNalOgI/AAAAAAAADLQ/wU3mwWcE47U/s1600-h/06-runAsPublisherNo4.png"&gt;&lt;img alt="06-runAsPublisherNo" border="0" height="580" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZyvE88wKI/AAAAAAAADLU/8XOVs5F2PVM/06-runAsPublisherNo_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="06-runAsPublisherNo" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;Here’s your Mediator (in purple) in the composite.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZywJ_MZXI/AAAAAAAADLY/_mmSGGKdh4g/s1600-h/07-compositeUpdated4.png"&gt;&lt;img alt="07-compositeUpdated" border="0" height="580" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZyxHFxoAI/AAAAAAAADLc/4sE9KTtTcFY/07-compositeUpdated_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="07-compositeUpdated" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;For the mediator to be able to route the messages, we must have three “listening branches” in our BPEL process. One to start the process and the two others to receive the expected messages. To do so, we have to update the WSDL of the BPEL process :&lt;/div&gt;&lt;div align="center" style="text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZyyEsJbuI/AAAAAAAADLg/1hAnMLH27KA/s1600-h/08-wsdlEdition4.png"&gt;&lt;img alt="08-wsdlEdition" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZyzZE1PjI/AAAAAAAADLo/qwJF1AZ3kfM/08-wsdlEdition_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="08-wsdlEdition" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;First, declare the message namespace (the one from your XSD) in the &lt;em&gt;wsdl:definition&lt;/em&gt; tag. Then, import the namespace (&lt;em&gt;wsdl:types&lt;/em&gt; tag).&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;After that, just&amp;nbsp; update the definition of the message you will receive, in the &lt;em&gt;wsdl:message &amp;gt; wsdl:part @element. &lt;/em&gt;(according to the prefix you have defined for your imported namespace, it should be &lt;em&gt;yourNamespace&lt;/em&gt;:message. And finally, create operations so as to have three different operations (“start'”, “receiveMessageA” &amp;amp; “receiveMessageB”). &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/TRZy0klYyEI/AAAAAAAADLs/l0GgLx-lctw/s1600-h/09-wsdlEditionDone4.png"&gt;&lt;img alt="09-wsdlEditionDone" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZy2YvRB1I/AAAAAAAADLw/hVLunWM8xp8/09-wsdlEditionDone_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="09-wsdlEditionDone" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Our BPEL process seems ready. Let’s go back to the mediator : that’s not mandatory, but as it is cleaner, I want you to be aware of it : if we do not define a filter rule in the Mediator, it wll listen for each and every message, even if the static routing rules you have defined are not designed to process that message. Don’t worry, I will explain what a static routing rule is.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/TRZy3QqVgBI/AAAAAAAADL0/rw00nmArNpI/s1600-h/10b-mediatorCompleteFilter4.png"&gt;&lt;img alt="10b-mediatorCompleteFilter" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZy4dL5W7I/AAAAAAAADL4/QcuDy_ZUl6E/10b-mediatorCompleteFilter_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="10b-mediatorCompleteFilter" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center" style="text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;To define a filter, simply enter the correct expression knowing it allows logic expression (“or” &amp;amp; “and”), so you can do pretty much what you want.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/TRZy5C_TneI/AAAAAAAADL8/FsC8ZcBMhhM/s1600-h/10-mediatorFilter4.png"&gt;&lt;img alt="10-mediatorFilter" border="0" height="580" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZy65RuSRI/AAAAAAAADMA/ykCg-BCBW4M/10-mediatorFilter_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="10-mediatorFilter" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Now we’ve filtered the messages we want to process in our Mediator, we have to define a proper route for each one (out of three).&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/TRZy7siVw4I/AAAAAAAADME/XHPDj4Dq55Q/s1600-h/11-addStaticRoutingRule4.png"&gt;&lt;img alt="11-addStaticRoutingRule" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZy8sOgl5I/AAAAAAAADMI/3bSsxL4bG2c/11-addStaticRoutingRule_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="11-addStaticRoutingRule" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;When you create a static routing rule, you have to define if it will invoke a service (partnerLink) or fire an event. In our case, it’s a partnerLink (= a call to a webservice operation, which is one of our BPEL process operation)&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZy9XQf0BI/AAAAAAAADMM/268NSKJTKAo/s1600-h/12-serviceRoutingRule4.png"&gt;&lt;img alt="12-serviceRoutingRule" border="0" height="580" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZy-UuHkTI/AAAAAAAADMQ/3TPud53UcQs/12-serviceRoutingRule_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="12-serviceRoutingRule" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Then, we have to select the proper operation, matching the filter we are going to define.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZy_atTEjI/AAAAAAAADMU/gI4YAdCE3R8/s1600-h/13-chooseOperation4.png"&gt;&lt;img alt="13-chooseOperation" border="0" height="580" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZzAdy_NpI/AAAAAAAADMY/vEcBClq_Q_c/13-chooseOperation_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="13-chooseOperation" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;Note : OK, I wanted to show that error because it seems to me that it is a real bug : if you want to update the filter rule, once you’ve already defined, JDev will try to add another filter, which is forbidden. If you take a look at the example below, it tries to add another rule, in addition to the previous version. You may fix that by going in the source and remove the troubling filter.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div align="center"&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/TRZzBUfxZnI/AAAAAAAADMc/6U0W7DGKo00/s1600-h/14-errorWhenUpdatingFilterRule4.png"&gt;&lt;img alt="14-errorWhenUpdatingFilterRule" border="0" height="580" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZzCp-m79I/AAAAAAAADMg/zgYfKNgsOvs/14-errorWhenUpdatingFilterRule_thumb.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="14-errorWhenUpdatingFilterRule" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;Anyway, what you have to remember is that once created, the filter needs to be updated directly in the source (composite.xml), if needed. Maybe it’s just the JDev version I worked with, but if you’re using the same Virtualbox appliance as me, you might encounter the same issue.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZzEfqgGUI/AAAAAAAADMk/6gbs4KNNjCA/s1600-h/15-compositeUpdateRule3.png"&gt;&lt;img alt="15-compositeUpdateRule" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZzFqz0M1I/AAAAAAAADMo/e3oXA3j9l8g/15-compositeUpdateRule_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="15-compositeUpdateRule" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Once you’ve defined what operation was to be called, we need to define what the trigger will be (= define a filter). In our example, I want the “start” branch of my BPEL process to be called when a message, whose ID is ‘START’, is received (pretty logical, huh ?). Just click on the filter icon and you will see a popup like that :&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZzHHCw20I/AAAAAAAADMs/y8CMnEvUJFA/s1600-h/16A-START3.png"&gt;&lt;img alt="16A-START" border="0" height="580" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZzIsEPg4I/AAAAAAAADMw/4xoB55BY9Ho/16A-START_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="16A-START" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Repeat the step for each message / BPEL branch to be called. Note that I used the mode “Parallel'” rather than “Sequential”. With three rules, it doesn’t really matter. But if you have more than twenty, it could lead to some performance issues : in “Parallel”, one thread is created to execute the checking (one rule = one thread), whereas in “Sequential”, only one thread will perform each rule, one after the other.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/TRZzJtclZFI/AAAAAAAADM0/NhMGPTx28Rg/s1600-h/16B-AllDone3.png"&gt;&lt;img alt="16B-AllDone" border="0" height="580" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZzKhNHHsI/AAAAAAAADM4/C0dKdBfMpi0/16B-AllDone_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="16B-AllDone" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Once you are done, note that all the components are now wired in the composite graphical view.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZzLurKr6I/AAAAAAAADM8/yGBZyhzmo1s/s1600-h/17-compositeUpdated3.png"&gt;&lt;img alt="17-compositeUpdated" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZzM69jyMI/AAAAAAAADNA/ag4bdSKRkE0/17-compositeUpdated_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="17-compositeUpdated" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Now, we will add another process, used to push messages on the EDN.&lt;/div&gt;&lt;br /&gt;Define a new BPEL process. (“One-way” is the right choice for that process since we are not expecting any message in return).&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZzN7NZdVI/AAAAAAAADNE/ajiyq4A9utA/s1600-h/18-messageSender3.png"&gt;&lt;img alt="18-messageSender" border="0" height="580" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZzO5hOOQI/AAAAAAAADNI/xhwl4PODiX8/18-messageSender_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="18-messageSender" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Simply add an “Invoke” activity by drag ‘n’ dropping it just after the activity “receiveInput”. An “Invoke” activity means that the process is making a call, whereas a “Receive” activity means that the process is being called.&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;In our example, the Invoke activity will publish a message (Event) on the EDN. Just switch “PartnerLink” to “Event” in the dropdown “Interaction Type”.&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;Look for the event “myMessage” and then, define a variable associated to it (even if we will not use it). Be sure to update the WSDL in order to have the proper message used. (that means you’ll have to declare and import the correct namespace, like you did for the first BPEL process).&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/TRZzP1N8TuI/AAAAAAAADNM/c-WVTH_kFC0/s1600-h/19-invoke3.png"&gt;&lt;img alt="19-invoke" border="0" height="580" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZzRm0zcKI/AAAAAAAADNU/upYW_dYSOC8/19-invoke_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="19-invoke" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;From a composite point-of-view, here is the the newly created process, which will help us to send messages over the EDN.&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/TRZzSpX47iI/AAAAAAAADNY/xNDj34SvzSk/s1600-h/20-composite3.png"&gt;&lt;img alt="20-composite" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZzTpSA4iI/AAAAAAAADNc/RY1dFEcXqWY/20-composite_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="20-composite" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Now, we have the impression that everything is set up : a process which will receive messages (through its mediator) and another which will publish messages. But if you remember what I wrote earlier, you should know that this won’t be enough for this example to work : a correlationSet is missing …&lt;/div&gt;&lt;br /&gt;For your messages to be able to reach your instance, you have to define something that bind them together. That’s the role of the correlationSet : you define a common property, whose value is going to be the same.&lt;br /&gt;&lt;br /&gt;For instance, on my message, I’ll define a correlationSet on the property “label”. That way, all the messages whose “label” property is the same will be directed to the same BPEL instance(s).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;div align="left"&gt;Note : several BPEL instances may have the same correlationSet.&lt;/div&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="left"&gt;On the “Receive” node, look for the “Correlations” tab, click on the starred white sheet to create a new correlationSet&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Chose a name, type &amp;amp; alias&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Chose on what message property your correlationSet will rely on&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/TRZzUtpYQfI/AAAAAAAADNg/5RhKf2xSBNs/s1600-h/21-CorrelationSet3.png"&gt;&lt;img alt="21-CorrelationSet" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZzWSft2GI/AAAAAAAADNk/o-8vEz1F7M4/21-CorrelationSet_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="21-CorrelationSet" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;Add a flow element (means its branches will be processed in parallel) and define two branches. In each branch, add a receive activity. Here’s what our BPEL Process should look like.&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZzXTDoCYI/AAAAAAAADNo/jE7qW77pCOc/s1600-h/22-Receive3.png"&gt;&lt;img alt="22-Receive" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZzYdcRyxI/AAAAAAAADNs/Rolmqy34BdI/22-Receive_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="22-Receive" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Now, just wire the newly created receive operations to the messageClient.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/TRZzZSsatbI/AAAAAAAADNw/uR78mFROkuw/s1600-h/23-LinkReceiveA4.png"&gt;&lt;img alt="23-LinkReceiveA" border="0" height="580" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZzaYAuPLI/AAAAAAAADN0/4gdhNeGkghM/23-LinkReceiveA_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="23-LinkReceiveA" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When the wire is drawn, a popup will ask some details about that link. Chose the webservice operation you want your receive activity to be bound to.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZzbtIvaeI/AAAAAAAADN4/C4MPMvPnEuY/s1600-h/24-ChooseOperationA4.png"&gt;&lt;img alt="24-ChooseOperationA" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZzci8w2_I/AAAAAAAADN8/MQRPFgZ0Ai4/24-ChooseOperationA_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="24-ChooseOperationA" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Create a variable that will receive the payload coming from the webservice operation call.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/TRZzdzsD4yI/AAAAAAAADOA/VkALydp-Jpk/s1600-h/25-ReceiveAVariable3.png"&gt;&lt;img alt="25-ReceiveAVariable" border="0" height="580" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZzfeFqeLI/AAAAAAAADOE/Q1tsQm8VLw4/25-ReceiveAVariable_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="25-ReceiveAVariable" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;And then, chose the correlationSet you created before. That’s how you define a link between the three messages. Repeat that step for the second operation.&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZzgfjvwgI/AAAAAAAADOI/3K1iBz0jriI/s1600-h/26-setCorrelationSet3.png"&gt;&lt;img alt="26-setCorrelationSet" border="0" height="580" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZzhtt3QJI/AAAAAAAADOQ/8PvoMasCXGY/26-setCorrelationSet_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="26-setCorrelationSet" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Here’s what our final BPEL Process looks like :&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZzih2DKCI/AAAAAAAADOU/rUSvJw6AwEU/s1600-h/27-BpelProcessComplete3.png"&gt;&lt;img alt="27-BpelProcessComplete" border="0" height="580" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZzkMnRX3I/AAAAAAAADOY/QzYCc33Bwks/27-BpelProcessComplete_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="27-BpelProcessComplete" width="1028" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now we’re ready to have it running.&lt;br /&gt;&lt;br /&gt;Start your server and deploy your BPEL project.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZzlBIEcNI/AAAAAAAADOc/15m1uxTbtVw/s1600-h/28-Deploy7.png"&gt;&lt;img alt="28-Deploy" border="0" height="580" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZzmRcS7LI/AAAAAAAADOg/acoT3N2RLOc/28-Deploy_thumb5.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="28-Deploy" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Don’t forget to define the version you want to use for your SOA Project&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZznj0_wVI/AAAAAAAADOk/0Sg7CMww_Rc/s1600-h/29-DeployVersion6.png"&gt;&lt;img alt="29-DeployVersion" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZzogTwSjI/AAAAAAAADOo/RW-BbL8-84w/29-DeployVersion_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="29-DeployVersion" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the SOA Pane, you should see seomething like &lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #fbfbfb; border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; border-right: #cecece 1px solid; border-top: #cecece 1px solid; min-height: 40px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 1000px;"&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;Buildfile: /oracle/jdevhome/jdeveloper/bin/ant-sca-compile.xml&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;scac:&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;[scac] Validating composite "/home/oracle/jdeveloper/mywork/Migration/BPELFromWLI/composite.xml"&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;[scac] Setting BPELC option 'classpath' to /oracle/jdevhome/jdeveloper/jdev/extensions/oracle.sca.modeler.jar:/oracle/jdevhome/jdeveloper/soa/modules/oracle.soa.fabric_11.1.1/fabric-runtime.jar:/oracle/jdevhome/jdeveloper/soa/modules/oracle.soa.mgmt_11.1.1/soa-infra-mgmt.jar:/oracle/jdevhome/oracle_common/modules/oracle.fabriccommon_11.1.1/fabric-common.jar:/oracle/jdevhome/jdeveloper/soa/modules/oracle.soa.bpel_11.1.1/orabpel.jar:/oracle/jdevhome/jdeveloper/soa/modules/oracle.soa.mediator_11.1.1/mediator_client.jar:/oracle/jdevhome/oracle_common/modules/oracle.mds_11.1.1/mdsrt.jar::/home/oracle/jdeveloper/mywork/Migration/BPELFromWLI/SCA-INF/classes&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;[scac] Setting BPELC option 'classpath' to /oracle/jdevhome/jdeveloper/jdev/extensions/oracle.sca.modeler.jar:/oracle/jdevhome/jdeveloper/soa/modules/oracle.soa.fabric_11.1.1/fabric-runtime.jar:/oracle/jdevhome/jdeveloper/soa/modules/oracle.soa.mgmt_11.1.1/soa-infra-mgmt.jar:/oracle/jdevhome/oracle_common/modules/oracle.fabriccommon_11.1.1/fabric-common.jar:/oracle/jdevhome/jdeveloper/soa/modules/oracle.soa.bpel_11.1.1/orabpel.jar:/oracle/jdevhome/jdeveloper/soa/modules/oracle.soa.mediator_11.1.1/mediator_client.jar:/oracle/jdevhome/oracle_common/modules/oracle.mds_11.1.1/mdsrt.jar::/home/oracle/jdeveloper/mywork/Migration/BPELFromWLI/SCA-INF/classes&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;[scac] WARNING: in Router.mplan: Case "MessageReceiver.messagereceiver_client.start" doesnt have any payload transformation Please make sure source and target message part name are same and of same type. Otherwise, target reference may fail to execute with error message like "Input sourcelike Null" or "Part not found"&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;[scac] WARNING: in Router.mplan: Case "MessageReceiver.messagereceiver_client.receiveMessageB" doesnt have any payload transformation Please make sure source and target message part name are same and of same type. Otherwise, target reference may fail to execute with error message like "Input sourcelike Null" or "Part not found"&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;[scac] WARNING: in Router.mplan: Case "MessageReceiver.messagereceiver_client.receiveMessageA" doesnt have any payload transformation Please make sure source and target message part name are same and of same type. Otherwise, target reference may fail to execute with error message like "Input sourcelike Null" or "Part not found"&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;BUILD SUCCESSFUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: white; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"&gt;Total time: 6 seconds&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;And in the Compiler Pane, no errors (but maybe a few warnings).&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;2.2.4) Running the example&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now we’ve compiled &amp;amp; deployed our BPEL processes, it’s time to use them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/TRZzpqL9rSI/AAAAAAAADOs/PC4INAes0zo/s1600-h/30-EM3.png"&gt;&lt;img alt="30-EM" border="0" height="580" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZzqSvSjqI/AAAAAAAADOw/5kSTZD25-lU/30-EM_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="30-EM" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First thing of all, we will test the process that sends messages over the EDN and send a start message.&lt;br /&gt;&lt;br /&gt;To test a BPEL process, just click on the Test button, just like on the picture below.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZzrRfTDuI/AAAAAAAADO0/TIbuKvKJQRk/s1600-h/31-Test3.png"&gt;&lt;img alt="31-Test" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZztfsFvYI/AAAAAAAADO4/C7SvWmJP9hc/31-Test_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="31-Test" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Choose the process that sends messages and on the screen, chose to the XML view, that would normally display an empty message. Just complete the payload with the correct values, that is to say ‘START’ in the id field and whatever you want in the label field. Remember that, as we based our correlationSet on that label field, you will have to keep the same value if you want your messages to be routed to the correct instance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/TRZzub5dbdI/AAAAAAAADPA/wPYfWJrjRqw/s1600-h/32-XMLView3.png"&gt;&lt;img alt="32-XMLView" border="0" height="580" src="http://lh6.ggpht.com/_bayCgqm3V20/TRZzvKaLqlI/AAAAAAAADPE/fbMPofpfz1w/32-XMLView_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="32-XMLView" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If everything went well, click on the link that allows you to see the details of the call. You should normally see the steps shown below, with the call of the “MessageSender”, the routing by the “Router” mediator and then finally, the process “MessageReceiver” which is running.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZzwNaY3xI/AAAAAAAADPI/XDblBXSVA2E/s1600-h/33-ProcessStarted3.png"&gt;&lt;img alt="33-ProcessStarted" border="0" height="580" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZzx_zhKKI/AAAAAAAADPM/WNHAH6ibBLw/33-ProcessStarted_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="33-ProcessStarted" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you click on that last step, you will see that the start branch has been called and that the process is now waiting for two branches (highlighted in yellow) to be called.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/TRZzy-sbxmI/AAAAAAAADPQ/UXV2-jpjfS4/s1600-h/34-MessagesPending3.png"&gt;&lt;img alt="34-MessagesPending" border="0" height="580" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZzz2iGRKI/AAAAAAAADPU/vjrq5xdJ90I/34-MessagesPending_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="34-MessagesPending" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Just for some testing purposes, if you try to trigger the very same message, you’ll end up with a faulted process, whose failure reason is a conflicting receive. Which is absolutely normal, since we based our correlationSet on a field whose value is the same as the first we used to trigger the first process. If you want another process to start, change the value of the “label” field.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TRZz0v4nYII/AAAAAAAADPY/cXFTHK3fxCU/s1600-h/35-SecondCall3.png"&gt;&lt;img alt="35-SecondCall" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZz1h0gkyI/AAAAAAAADPc/BVrKjjs6Vqw/35-SecondCall_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="35-SecondCall" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, if we send a message whose id is one the ids expected (and of course, with the same label), you should see something like the picture below, with a “mid process receive” activity.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZz2nuWieI/AAAAAAAADPg/O7c7k9UMY8o/s1600-h/36-MidProcessReceive3.png"&gt;&lt;img alt="36-MidProcessReceive" border="0" height="580" src="http://lh5.ggpht.com/_bayCgqm3V20/TRZz3qVMChI/AAAAAAAADPk/YogOlrpg9qQ/36-MidProcessReceive_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="36-MidProcessReceive" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If we take a closer look to that running instance, we now see that the first branch is no longer waiting to be called (= for a message to come).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZz4xddYPI/AAAAAAAADPo/5HzXAM8ml8U/s1600-h/37-IDA_Received3.png"&gt;&lt;img alt="37-IDA_Received" border="0" height="580" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZz55kloiI/AAAAAAAADPs/uOLjnAnvT5s/37-IDA_Received_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="37-IDA_Received" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, we send the third and last message, whose id is “ID_B” and we can now see that a second “mid process receive” is visible and that all the states of the steps are at “Completed”.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZz7I2QVoI/AAAAAAAADPw/QG-P0g4ERMg/s1600-h/38-BothMsgReceived3.png"&gt;&lt;img alt="38-BothMsgReceived" border="0" height="580" src="http://lh4.ggpht.com/_bayCgqm3V20/TRZz8WeIXOI/AAAAAAAADP0/2BFi5e_rIeo/38-BothMsgReceived_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="38-BothMsgReceived" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let’s have a look at the general BPEL instance, and now, we can see that everything has been received and that the instance is now completed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/TRZz9-gBAbI/AAAAAAAADP4/UMSSHGGjywk/s1600-h/39-ProcessCompleted3.png"&gt;&lt;img alt="39-ProcessCompleted" border="0" height="580" src="http://lh3.ggpht.com/_bayCgqm3V20/TRZz_Wcfa-I/AAAAAAAADP8/7BTiYpLZfM4/39-ProcessCompleted_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="39-ProcessCompleted" width="1028" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, that’s it. I hope my explanation was clear enough. Else, feel free to ask and I’ll try to answer as accurately and as fast as possible.&lt;br /&gt;&lt;br /&gt;In the meantime, if you were to wonder about Oracle products, about the way to migrate WLI projects toward BPEL PM, I invite you to contact Simone Geib (SOA Suite Product Manager) and she’ll try to answer your questions. (Her email address is &lt;a href="mailto:first_name.last_name@oracle.com"&gt;first_name.last_name@oracle.com&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Ok, to be sure to understand how everything works here, don’t hesitate to play with correlationSets, multiple instance and so on. Once again, you’ve got a perfect VirtualBox appliance to play with !&lt;br /&gt;&lt;br /&gt;Enjoy :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b7443ea9-d418-41d5-86a6-30fd547c363d" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/soa+suite+11gR1PS2" rel="tag"&gt;soa suite 11gR1PS2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/wli" rel="tag"&gt;wli&lt;/a&gt;,&lt;a href="http://technorati.com/tags/migration" rel="tag"&gt;migration&lt;/a&gt;,&lt;a href="http://technorati.com/tags/correlationSet" rel="tag"&gt;correlationSet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/bpel" rel="tag"&gt;bpel&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mediator" rel="tag"&gt;mediator&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-7672150008178185081?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/7672150008178185081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=7672150008178185081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/7672150008178185081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/7672150008178185081'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2010/12/migrating-wli-process-toward-bpel.html' title='WLI Message Broker versus BPEL PM EDN'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_bayCgqm3V20/TRZyYEhLPdI/AAAAAAAADJU/wWWkginOvsM/s72-c/messageReceiverProcess_thumb4.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-5345114380166978426</id><published>2010-11-21T22:43:00.001+01:00</published><updated>2010-11-21T22:47:17.773+01:00</updated><title type='text'>Upcoming Packt reviews</title><content type='html'>&lt;p&gt;It’s been quite some time I’ve been woking with &lt;a href="http://www.packtpub.com/" target="_blank"&gt;Packt Publishing&lt;/a&gt;. I started reviewing books in July 2008 and we are still in touch now.&lt;/p&gt;  &lt;p&gt;In a few weeks, I am about to review two books which are strongly related to what I am working on right now : the migration from WLI to BPEL Process Manager. It’s quite a hard task since those two products have two different philosophies. But, last week, I had the chance to work with &lt;a href="http://www.linkedin.com/profile/view?id=4067843&amp;amp;authType=name&amp;amp;authToken=JSf3" target="_blank"&gt;Simone Geib&lt;/a&gt;, &lt;a href="http://goo.gl/qSj50" target="_blank"&gt;Deepak d’Arora&lt;/a&gt;, &lt;a href="http://www.linkedin.com/profile/view?id=3071138&amp;amp;authType=name&amp;amp;authToken=Neza" target="_blank"&gt;Laurence Habdas&lt;/a&gt; &amp;amp; &lt;a href="http://goo.gl/o6MG8" target="_blank"&gt;Eric Fischer&lt;/a&gt; about the steps to follow to migrate successfully from BEA era to Oracle : it was really interesting.&lt;/p&gt;  &lt;p&gt;The two books are both been authored by guys from the same team. &lt;/p&gt;  &lt;h3&gt;Getting Started with Oracle BPM 11gR1&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;Authors&lt;/strong&gt; : &lt;a href="https://www.packtpub.com/authors/profiles/heidi-buelow"&gt;Heidi Buelow&lt;/a&gt;, &lt;a href="https://www.packtpub.com/authors/profiles/manoj-das"&gt;Manoj Das&lt;/a&gt;, &lt;a href="https://www.packtpub.com/authors/profiles/manas-deb"&gt;Manas Deb&lt;/a&gt;, &lt;a href="https://www.packtpub.com/authors/profiles/prasen-palvankar"&gt;Prasen Palvankar&lt;/a&gt;, &lt;a href="https://www.packtpub.com/authors/profiles/meera-srinivasan"&gt;Meera Srinivasan&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://link.packtpub.com/YWvj2F" target="_blank"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" alt="Getting Started with Oracle BPM Suite 11gR1 – A Hands-On Tutorial" src="https://www.packtpub.com/sites/default/files/imagecache/productview/1681EN_Getting%20started%20with%20oraclecov_LowRes.jpg" width="125" height="152" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I intend to read carefully the parts dealing with BPMN and the BAM.&lt;/p&gt;  &lt;p&gt;Although I’m more BPEL than BPMN, I guess it will be interesting to develop my knowledge on that topic.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Getting Started with Oracle SOA Suite 11gR1 (PS2)&lt;/h3&gt;  &lt;p&gt;&lt;b&gt;Authors : &lt;/b&gt;&lt;a href="https://www.packtpub.com/authors/profiles/demed-lher"&gt;Demed L'Her&lt;/a&gt;, &lt;a href="https://www.packtpub.com/authors/profiles/heidi-buelow"&gt;Heidi Buelow&lt;/a&gt;, &lt;a href="https://www.packtpub.com/authors/profiles/jayaram-kasi"&gt;Jayaram Kasi&lt;/a&gt;, &lt;a href="https://www.packtpub.com/authors/profiles/manas-deb"&gt;Manas Deb&lt;/a&gt;, &lt;a href="https://www.packtpub.com/authors/profiles/prasen-palvankar"&gt;Prasen Palvankar&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.packtpub.com/getting-started-with-oracle-soa-suite-11g-r1/book" target="_blank"&gt;&lt;img src="https://www.packtpub.com/sites/default/files/imagecache/productview/bookimages/9782_Getting%20Started%20With%20Oracle%20SOA%20Suite%2011gR.jpg" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I started reading this one a few weeks (months ?) ago but I have not been able to finish it yet. Not that it was not interesting, but I only read some parts, that were useful for some of my tests. &lt;/p&gt;  &lt;p&gt;However, I can already tell you that it has a great coverage of all the underlying components (BPEL, Mediator, Rules, Workflow …) but I was a bit disappointed by the depth of some parts, especially the one dealing with EDN.&lt;/p&gt;  &lt;p&gt;But ok, I’ll say no more and keep some for the review.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Stay tuned ! :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-5345114380166978426?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/5345114380166978426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=5345114380166978426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5345114380166978426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5345114380166978426'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2010/11/upcoming-packt-reviews.html' title='Upcoming Packt reviews'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-6242044884611470899</id><published>2010-10-12T21:02:00.002+02:00</published><updated>2010-10-12T21:11:34.083+02:00</updated><title type='text'>Seeing the big picture !</title><content type='html'>Lately, I've been pretty busy working on a major project which went live (successfully) a few hours ago.&lt;br /&gt;(that's also why I didn't blog much these last months)&lt;br /&gt;We worked hard on it, but thanks to Murphy's law, we had a hard time two weeks before the go-live.&lt;br /&gt;It started with the first user-testing week : everything was running nice &amp;amp; smooth but in the last minute (quite unbelievable),&lt;br /&gt;we ended up with a blocking exception, which forced us to use some workaround techniques.&lt;br /&gt;The exception was raised when a JMS message was sent from WLS to ALSB.&lt;br /&gt;&amp;#160;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here’s our architecture (sorry for the ugly stuff : at least, I know I will never be a web designer !)&lt;br /&gt;&lt;br /&gt;&amp;#160;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TLSwzSveAyI/AAAAAAAACR8/hJAzY_4WSSE/s1600-h/EAI_ALSB%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="EAI_ALSB" border="0" alt="EAI_ALSB" src="http://lh4.ggpht.com/_bayCgqm3V20/TLSw0C7vUdI/AAAAAAAACSA/eNPzyc5iHuo/EAI_ALSB_thumb%5B2%5D.jpg?imgmax=800" width="927" height="586" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;* In green is the “Send” mechanism : when WebMethods wants to send a message to our system, &lt;br /&gt;it first contacts the Alteon, which load-balances the request (with a server affinity) to a node, &lt;br /&gt;then looks up in the JNDI tree for a connection factory, &lt;br /&gt;which load-balances in its turn between the two nodes.&lt;br /&gt;* In blue is the other mechanism, used to receive messages from our system. &lt;br /&gt;As we use the same connection factory, &lt;br /&gt;we have almost no guarantee to know where the messages are going to land. &lt;br /&gt;We could have used the “message forward” system, embodied by the option “Forward Delay”,&lt;br /&gt;but our system is particular : consumers are only consuming messages based on a JMS header, &lt;br /&gt;so we could have a consumer connected but no one reading the messages.&lt;br /&gt;(that’s why “Forward Delay” is useless in our case)&lt;br /&gt;Then we had to have all the connectors doubled, to have both nodes served. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And to ensure a proper connection on each node, we had to create a connection factory on each.&lt;br /&gt;&lt;/blockquote&gt;&amp;#160;&lt;br /&gt;Normally, when a message arrives, ALSB tries to persist the message into database (to be able to restore the message in case of crash).&lt;br /&gt;During that normally basic operation, we had the following stacktrace :&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;Caused by: weblogic.messaging.kernel.KernelException: Error persisting message&lt;br /&gt;... 9 more&lt;br /&gt;Caused by: weblogic.store.PersistentStoreFatalException: [Store:280065]java.sql.SQLException: ORA-01098: &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;erreur d'interface de programme lors d'une insertion longue&lt;br /&gt;ORA-12155: TNS : type de données incorrect dans le paquet MSWMARKER reçu&lt;br /&gt;(server=&amp;quot;ALSB2a-01-COCESB&amp;quot; store=&amp;quot;JDBCStore-0&amp;quot; table=&amp;quot;jms_alsb1WLStore&amp;quot;):(Linked Cause, &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;quot;java.sql.SQLException: ORA-01098: erreur d'interface de programme lors d'une insertion longue&lt;br /&gt;ORA-12155: TNS : type de données incorrect dans le paquet MSWMARKER reçu&lt;br /&gt;&amp;quot;)&lt;br /&gt;at weblogic.store.io.jdbc.JDBCStoreIO.flush(JDBCStoreIO.java:1405)&lt;br /&gt;at weblogic.store.internal.PersistentStoreImpl.run(PersistentStoreImpl.java:640)&lt;br /&gt;at java.lang.Thread.run(Thread.java:595)&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;And we were able to reproduce it everytime on the A-Node!&lt;br /&gt;As we could not really understand why it happened, we decided to cut that communication by switching to a filestore. &lt;br /&gt;It was clear that this solution was a poor workaround since we didn't understand the conditions in which that exception occurred.&lt;br /&gt;We spent three whole days trying to figure out why and we reached a partial conclusion : it happens only on the A-Node, with a JDBCStore. &lt;br /&gt;With the filestore configured, everything seemed to be ok and we started to think this problem was behind us ... we were unfortunately mistaken ...&lt;br /&gt;A week after that, while WebMethods was retrieving a JMS message from the bus, we noticed that it was reaaally slow. &lt;br /&gt;And finally, we had an exception :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;java.lang.Exception: weblogic.jms.common.JMSException: weblogic.messaging.dispatcher.DispatcherException: &lt;/pre&gt;&lt;pre&gt;weblogic.rjvm.PeerGoneException: ; nested exception is: java.io.IOException: &lt;/pre&gt;&lt;pre&gt;A complete message could not be read on socket: &lt;/pre&gt;&lt;pre&gt;&lt;a href="mailto:'weblogic.rjvm.t3.MuxableSocketT3@1f42269:Socket[addr=/10.203.3.143,port=9101,localport=57568]'"&gt;'weblogic.rjvm.t3.MuxableSocketT3@1f42269:Socket[addr=/10.203.3.143,port=9101,localport=57568]'&lt;/a&gt;, &lt;/pre&gt;&lt;pre&gt;in the configured timeout period of '60' secs &lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The JMS message was approximatively 3Mb but we already passed the test with a 15Mb message. Thus, the message size was not involved here.&lt;br /&gt;We first thought that it was a temporary network problem (latency) and then we tried first to increase a timeout value,&lt;br /&gt;embodied by the option &amp;quot;&lt;strong&gt;Complete Message Timeout&lt;/strong&gt;&amp;quot; &lt;br /&gt;&amp;#160;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/TLSw0jW18zI/AAAAAAAACSE/eHRCU9cTVdQ/s1600-h/CompleteMessageTimeout%5B6%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="CompleteMessageTimeout" border="0" alt="CompleteMessageTimeout" src="http://lh6.ggpht.com/_bayCgqm3V20/TLSw1GxJOaI/AAAAAAAACSI/V3gre4brtMc/CompleteMessageTimeout_thumb%5B4%5D.jpg?imgmax=800" width="281" height="193" /&gt;&lt;/a&gt; &lt;/pre&gt;&lt;br /&gt;&amp;#160;&lt;br /&gt;&lt;br /&gt;We shutted / re-started our servers and the first test passed. After several other tests, the exception showed up again, with the same value.&lt;br /&gt;I read that sometimes this option had to be set thanks to a JVM property. (&lt;strong&gt;-Dweblogic.CompleteMessageTimeout)&lt;/strong&gt;.&lt;br /&gt;Then we tried that, and after a restart, and a few retries, the exception raised again. &lt;br /&gt;We also changed some options from the WebMethod side, but nothing changed. &lt;br /&gt;We then tried on another environment (prod mirror) and the message was consumed in less than five seconds.&lt;br /&gt;We switched the prod EAI toward the second environment : everything went fine too. &lt;br /&gt;Then we tried on the second node of the ALSB cluster in our production environment, B-Node and the attempt was ok as well (= fast consumed). &lt;br /&gt;&amp;#160;&lt;br /&gt;From those two exceptions (outgoing communications with the database and the EAI), we started to question the network configuration, &lt;br /&gt;since every outgoing communication presented a problem on that node, which is on machine A.&lt;br /&gt;We used the netstat command to get some information and we noticed something interesting : &lt;br /&gt;the number of collisions on machine A was abnormal because far too high.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;Machine A&lt;br /&gt;&lt;br /&gt;netstat -ni&lt;br /&gt;&lt;strong&gt;Name    Mtu  Net/Dest      Address        Ipkts      Ierrs Opkts     Oerrs  Collis   Queue&lt;/strong&gt;&lt;br /&gt;lo0     8232 127.0.0.0     127.0.0.1      17943151   0     17943151  0      0        0&lt;br /&gt;e1000g0 1500 10.203.3.0    10.203.3.141   880127761  0     385849067 80     &lt;font color="#ff0000"&gt;6141032&lt;/font&gt;  0&lt;br /&gt;e1000g1 1500 10.203.72.0   10.203.72.28   60799620   0     199220059 0      0        0&lt;br /&gt;e1000g4 1500 10.203.3.0    10.203.3.142   537705356  1651  8356636   0      0        0&lt;br /&gt;&lt;br /&gt;Machine B&lt;br /&gt;&lt;br /&gt;netstat -ni&lt;br /&gt;&lt;strong&gt;Name    Mtu  Net/Dest      Address        Ipkts      Ierrs Opkts      Oerrs Collis Queue&lt;/strong&gt;&lt;br /&gt;lo0     8232 127.0.0.0     127.0.0.1      1457911    0     1457911    0     0      0&lt;br /&gt;e1000g0 1500 10.203.3.0    10.203.3.144   857275091  0     380178757  0     0      0&lt;br /&gt;e1000g1 1500 10.203.72.0   10.203.72.29   50600947   0     158826403  0     0      0&lt;br /&gt;e1000g4 1500 10.203.3.0    10.203.3.145   537677014  2344  8336692    0     0      0&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&amp;#160;&lt;br /&gt;&lt;br /&gt;We didn't have the rights to execute the command &amp;quot;&lt;a href="http://www.brandonhutchinson.com/Solaris_NIC_speed_and_duplex_settings.html" target="_blank"&gt;ndd&lt;/a&gt;&amp;quot; so we asked our hosting provider to do so and then he came up with something :&lt;br /&gt;After some talks, a guy from the hosting provider came up with an interesting fact :&lt;br /&gt;&amp;quot;e1000g0 is configured in 100/HALF instead of 100/FULL&amp;quot;&lt;br /&gt;In a word, the network card is in half-duplex whereas it should have been in full-duplex. &lt;br /&gt;If you are unfamiliar with those terms, just think about a one-way road with a traffic light, &lt;br /&gt;where a way can only pass at one at a time : this is half duplex.&lt;br /&gt;With full-duplex, you have a two-way road, with no traffic light ... &lt;br /&gt;You can imagine which one is better in terms of fluidity, can't you ?&lt;br /&gt;&amp;#160;&lt;br /&gt;To confirm that our problems came from that configuration, &lt;br /&gt;we tried one last time to send a JMS message and have it consumed by the EAI and the result was pretty clear : &lt;br /&gt;the message was consumed as fast as on the other platforms ...&lt;br /&gt;We have not tested the JDBCStore yet, but we will in the next few weeks.&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160;&lt;br /&gt;As a conclusion, I would say that no matter how skilled you are in your field of expertise, it is not enough. &lt;br /&gt;You have to know more about the greater perimeter and be able to see the big picture to be more efficient.&lt;br /&gt;(work especially on the network aspect ! :p)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-6242044884611470899?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/6242044884611470899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=6242044884611470899' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/6242044884611470899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/6242044884611470899'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2010/10/seeing-big-picture.html' title='Seeing the big picture !'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_bayCgqm3V20/TLSw0C7vUdI/AAAAAAAACSA/eNPzyc5iHuo/s72-c/EAI_ALSB_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-7823701074163631183</id><published>2010-05-14T16:38:00.001+02:00</published><updated>2010-05-16T23:52:28.754+02:00</updated><title type='text'>Installing SOA Suite 11gR1 PS2 on Windows Se7en (64 bits)</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/S-1f2Gv7jVI/AAAAAAAACJs/XoGTRpHO-8o/s1600-h/image%5B88%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/S-1f2vEkPJI/AAAAAAAACJw/hzVFRPYZ0qY/image_thumb%5B40%5D.png?imgmax=800" width="244" height="67" /&gt;&lt;/a&gt; &lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S-1f3L3B8-I/AAAAAAAACJ0/WIPpcJT4woo/s1600-h/image%5B94%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1f3lJmecI/AAAAAAAACJ4/h3UjA3rnExw/image_thumb%5B42%5D.png?imgmax=800" width="215" height="88" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When I first started to configure the SOA Suite, it was a bit … messy (I tried to manually migrate 10g on WLS). &lt;/p&gt;  &lt;p&gt;Now the brand new 11gR1PS2&amp;#160; has been out for a couple of weeks, I wanted to install and test it on my W7 64 bits laptop.&lt;/p&gt;  &lt;p&gt;But even if I found some documentation (&lt;a href="http://blogs.oracle.com/SOA/2009/08/installing_oracle_soa_suite_11.html" target="_blank"&gt;post by Demed L’Her&lt;/a&gt; and the &lt;a href="http://download.oracle.com/docs/cd/E14571_01/install.1111/b32474/start.htm#CIHBFJCF" target="_blank"&gt;official documentation&lt;/a&gt;),&lt;/p&gt;  &lt;p&gt;it wasn’t that easy to find a proper modus operandi for a 64 bits Windows platform.&lt;/p&gt;  &lt;p&gt;On top of that, the latest patchset (PS) is not autonomous : you have to install the previous PS first.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;1) Downloading&lt;/h2&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First step : get the required files ! &lt;/p&gt;  &lt;p&gt;Fortunately, you don’t need to download all the files composing the PS1 and the PS2.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download a 64 bits JDK from &lt;a href="http://java.sun.com/javase/downloads/widget/jdk6.jsp" target="_blank"&gt;Sun&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Go to &lt;a href="http://www.oracle.com/technology/software/products/middleware/htdocs/fmw_11_download.html" target="_blank"&gt;OTN&lt;/a&gt; and download the following products :       &lt;ul&gt;       &lt;li&gt;&lt;a href="http://download.oracle.com/otn/nt/middleware/11g/ofm_soa_generic_11.1.1.2.0_disk1_1of1.zip" target="_blank"&gt;SOA Suite PS1 (11.1.1.2.0)&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://download.oracle.com/otn/nt/middleware/11g/ofm_soa_generic_11.1.1.3.0_disk1_1of1.zip" target="_blank"&gt;SOA Suite PS2 (11.1.1.3.0)&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://download.oracle.com/otn/nt/middleware/11g/wls1033_generic.jar" target="_blank"&gt;WebLogic Server (10.3.3) generic&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://download.oracle.com/otn/nt/middleware/11g/ofm_rcu_win_11.1.1.3.0_disk1_1of1.zip" target="_blank"&gt;Repository Creation Utility (11.1.1.3.0)&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.oracle.com/technology/software/products/jdev/htdocs/soft11.html" target="_blank"&gt;Oracle JDeveloper 11g (11.1.1.3.0)&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://download.oracle.com/otn/nt/oracle10g/xe/10201/OracleXEUniv.exe" target="_blank"&gt;Oracle XE (latest version)&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Optional but recommended : &lt;a href="http://download.oracle.com/otn/java/sqldeveloper/sqldeveloper64-2.1.1.64.45-no-jre.zip" target="_blank"&gt;SQL Developer&lt;/a&gt;. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;2) Installing&lt;/h2&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;2.1) JDK 64 Bits&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First of all, we have to install the JDK 64 bits.&lt;/p&gt;  &lt;p&gt;Wherever you want to install your JDK, it will install a part of your JDK in the directory “Program Files” (&lt;strong&gt;C:\Program Files\Java\jdk1.6.0_20&lt;/strong&gt;)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;Note&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt; : “Program Files (x86)” is for 32 bits software and “Program Files” is for 64 bits software.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;2.2) JDeveloper &amp;amp; embedded WebLogic Server (64 bits)&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To execute the installer in 64 bits, you have to specify the option “-D64”, such as : &lt;strong&gt;java –D64 –jar jdevstudio11113install.jar&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S-1f4LaxWHI/AAAAAAAACJ8/mYExlw45IPc/s1600-h/image%5B27%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1f4oRuQzI/AAAAAAAACKA/EeSrIsOeJPQ/image_thumb%5B9%5D.png?imgmax=800" width="599" height="47" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Choose a proper middleware home. I advise you to chose a directory structure like this one :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/S-1f43NpyBI/AAAAAAAACKE/W4Q4CB4uhKc/s1600-h/image%5B129%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/S-1f5UgAmLI/AAAAAAAACKI/0gd9Yjoqa-U/image_thumb%5B59%5D.png?imgmax=800" width="214" height="82" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As JDeveloper comes with its own version, it is important to prevent any conflict between both WLS versions (according to &lt;a href="http://www.linkedin.com/in/demed" target="_blank"&gt;Demed L’Her&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As we downloaded the generic version of JDeveloper, there is no bundled JDK (which is pretty much what we wanted since we already installed one)&lt;/p&gt;  &lt;p&gt;Therefore, the installer will ask you for a JDK location : chose the freshly installed one (normally located in &lt;strong&gt;C:\Program Files\Java&lt;/strong&gt;) : &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S-1f52qecRI/AAAAAAAACKM/6LLl9DLpRDM/s1600-h/image%5B79%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1f6aVzF2I/AAAAAAAACKQ/f4fXQX0sO5g/image_thumb%5B33%5D.png?imgmax=800" width="613" height="449" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;At the last screen, uncheck “Quickstart” and click “Done”.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;EDIT Important note&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt; : I was a bit too optimistic to think it would allow JDev to run in a 64 bits mode. When I tried to start, it simply refuses to launch.&lt;/p&gt;    &lt;p&gt;Then, I’m really sorry, but you will still have to install a 32 bits JDK to be able to run it. WebLogic Server will run in a 64 bits mode though.&lt;/p&gt;    &lt;p&gt;To update the JVM location, edit the file &lt;strong&gt;&lt;em&gt;JDEV_HOME&lt;/em&gt;\jdeveloper\jdev\bin\jdev.conf&lt;/strong&gt; and update the field &lt;em&gt;&lt;strong&gt;SetJavaHome&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Then update it to get the SOA module.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/S_BojoXi_BI/AAAAAAAACNY/m9oRco9sIW8/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/S_Bok-QUILI/AAAAAAAACNc/wIq_V0lWCxQ/image_thumb%5B1%5D.png?imgmax=800" width="397" height="419" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Leave only “Oracle Fusion Middleware Products” checked.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S_Bol3NPsmI/AAAAAAAACNg/P5ndgpe-A10/s1600-h/image%5B13%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/S_BomhgxgOI/AAAAAAAACNk/SDdBMzKFfcA/image_thumb%5B5%5D.png?imgmax=800" width="540" height="182" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Type “&lt;strong&gt;soa&lt;/strong&gt;” in the search field, and check the “&lt;strong&gt;Oracle SOA Composite Editor&lt;/strong&gt;”&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/S_BooPJILiI/AAAAAAAACNo/P_Q7Y5vuk3w/s1600-h/image%5B14%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S_BopOllqlI/AAAAAAAACNs/29HHtQrI_wI/image_thumb%5B6%5D.png?imgmax=800" width="632" height="148" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Then the download starts.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/S_BopYpi2II/AAAAAAAACNw/Z3eXqmMpjK0/s1600-h/image%5B15%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/S_BoqUZSSMI/AAAAAAAACN0/XSJ7fzID-k0/image_thumb%5B7%5D.png?imgmax=800" width="425" height="148" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Once the download is over, you are done with JDev.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;2.3) WebLogic Server 64 bits &lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;At that point, you may wonder why we are installing once again WebLogic Server, because as we saw it, it is bundled &amp;amp; normally installed with JDeveloper.&lt;/p&gt;  &lt;p&gt;This question is legitimate. The WLS shipped with JDev is not “strong” enough : I mean, it is only a light version, designed to work mainly with ADF.&lt;/p&gt;  &lt;p&gt;You will then not be able to use the SOA Suite on that version, that is why we must install the “real” one.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Using the generic installer, just type : &lt;strong&gt;java –D64 –jar wls1033_generic.jar&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S-1f692m_OI/AAAAAAAACKU/shJlAohk_lI/s1600-h/image%5B110%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/S-1f7Yk1XfI/AAAAAAAACKY/B7sd4DI-aqQ/image_thumb%5B50%5D.png?imgmax=800" width="497" height="91" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As detailed in the JDev installation step, it is better if you do not mix up the WLS versions, so create another middleware home, such as :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S-1f77I2EDI/AAAAAAAACKc/P7QKnVNrhZo/s1600-h/image%5B132%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1f8S_XqMI/AAAAAAAACKg/OKOiaZifbao/image_thumb%5B60%5D.png?imgmax=800" width="208" height="90" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Then, just like for JDev, chose a proper JDK location.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/S-1f86BbMlI/AAAAAAAACKk/_fjLCI9ySlw/s1600-h/image%5B122%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/S-1f9QFh9RI/AAAAAAAACKo/eS4Lp152OTk/image_thumb%5B56%5D.png?imgmax=800" width="605" height="441" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;At the last screen, uncheck “Quickstart” and click “Done”.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;2.4) Database : Oracle XE&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Just install the product. Nothing hard here.&lt;/p&gt;  &lt;p&gt;Note that the principle of XE is to have only one instance (XE) but as many users (schemas) as you want.&lt;/p&gt;  &lt;p&gt;Chose a password for sys &amp;amp; system (it’s the same for both) and be sure to remember it. &lt;/p&gt;  &lt;p&gt;“manager” is a good development value as it is commonly used almost everywhere (even in production sometimes :p) : easy to remember.&lt;/p&gt;  &lt;p&gt;Once you’ve installed the database, you’ll have two services installed (OracleXE &amp;amp; Oracle TNS Listener),&lt;/p&gt;  &lt;p&gt;and an administration interface will be available on port 8080, at the address : &lt;a href="http://localhost:8080/apex"&gt;http://localhost:8080/apex&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S-1f9zZixMI/AAAAAAAACKs/NHGy1lEyyW4/s1600-h/image%5B77%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1f-blvLwI/AAAAAAAACKw/5VMp6zLmBDQ/image_thumb%5B31%5D.png?imgmax=800" width="426" height="332" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can use it to administer some parts of your database (user creation and so on, but unfortunately, no tablespace management …)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Update the numbers of processes&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you run the RCU (described in next section), you will see that the test for user SOAINFRA fails.&lt;/p&gt;  &lt;p&gt;The reason comes from the number of processes which is, by default, not high enough.&lt;/p&gt;  &lt;p&gt;We then need to execute this SQL instruction to fix that :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;alter system set processes=200 scope=spfile&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;(SCOPE = SPFILE / MEMORY / BOTH) (SPFile has to be binary) &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Oracle XE will not let you change the value of the parameter in memory, so you have to chose SPFILE and then restart your database.&lt;/p&gt;  &lt;p&gt;After the restart, to confirm that your change has been taken into account, execute this instruction :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;select value from v$parameter where name = 'processes'&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It should return the value you defined, that is to say, 200.&lt;/p&gt;  &lt;p&gt;Okay, now let’s create the schemas !&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;2.5) RCU (Repository Creation Utility)&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There’s nothing to install from a software point of view : a wizard will just configure your database by creating the required users.&lt;/p&gt;  &lt;p&gt;Unzip the file “&lt;strong&gt;ofm_rcu_win_11.1.1.3.0_disk1_1of1.zip&lt;/strong&gt;” in a folder I will now refer to as “UNZIP_FOLDER”.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt; : For the SOA Suite to work, you are not forced to keep the RCU after the job is done : it is a one-shot configuration&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Launch the file &lt;strong&gt;UNZIP_FOLDER\rcuHome\BIN\rcu.bat&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Configure the access to your XE database :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/S-1f_dSj8zI/AAAAAAAACK0/18qnPW7QYcE/s1600-h/image%5B80%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/S-1gAHhVqHI/AAAAAAAACK4/Y1NHumuIsFw/image_thumb%5B34%5D.png?imgmax=800" width="997" height="752" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You may have some warning about the encoding : no big deal, click ok (maybe twice) and then you will have this screen &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S-1gAnrriMI/AAAAAAAACK8/7blZRlv5fTQ/s1600-h/image%5B81%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1gBf77LnI/AAAAAAAACLA/vJo8RuSya1A/image_thumb%5B35%5D.png?imgmax=800" width="539" height="223" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Click “OK”. The RCU will now ask for a prefix. Usually, for a development environment, “DEV” fits :)&lt;/p&gt;  &lt;p&gt;So that is the prefix we are going to define here.&lt;/p&gt;  &lt;p&gt;Just select SOA &amp;amp; BPM Infrastructure and will check its dependency (MDS).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S-1gCb1c29I/AAAAAAAACLE/iUHAiKbr63s/s1600-h/image%5B82%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/S-1gDr6EqqI/AAAAAAAACLI/g2Jx_nvteZs/image_thumb%5B36%5D.png?imgmax=800" width="675" height="356" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Then go forward : the RCU will handle the tablespaces &amp;amp; users for you&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/S-1gEPZfnOI/AAAAAAAACLM/SxjsYIyXxpE/s1600-h/image%5B83%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1gEjgmvZI/AAAAAAAACLQ/YzYnMk-wE5M/image_thumb%5B37%5D.png?imgmax=800" width="540" height="214" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt; : If you were ever forced to drop some schema, know that you may have to execute this procedure to be able to get rid of the SOAINFRA schema.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;BEGIN      &lt;br /&gt;&amp;#160; DBMS_AQADM.DROP_QUEUE_TABLE('EDN_OAOO_DELIVERY_TABLE', FORCE =&amp;gt; TRUE);       &lt;br /&gt;&amp;#160; DBMS_AQADM.DROP_QUEUE_TABLE('EDN_EVENT_QUEUE_TABLE', FORCE =&amp;gt; TRUE);       &lt;br /&gt;&amp;#160; DBMS_AQADM.DROP_QUEUE_TABLE('IP_QTAB', FORCE =&amp;gt; TRUE);       &lt;br /&gt;END;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;A summary screen will show you the information you entered :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/S-1gFr20gOI/AAAAAAAACLU/GNCcZZMF6h0/s1600-h/image%5B133%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/S-1gGfVxd8I/AAAAAAAACLY/IgjMRmIKC4s/image_thumb%5B61%5D.png?imgmax=800" width="644" height="483" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Click “Create”.&lt;/p&gt;  &lt;p&gt;Normally, everything should go painlessly and at the end, another summary screen will show up :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/S-1gG5TtYII/AAAAAAAACLc/mY0Skur6_4w/s1600-h/image%5B85%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1gHU8fGiI/AAAAAAAACLg/5BkpU4KnJ2A/image_thumb%5B39%5D.png?imgmax=800" width="710" height="109" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Close the window and you’re done with the RCU.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;2.6) SOA Suite PS1 (11.1.1.2)&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So as I wrote it in the introduction, you’ll have to install the first patchset, then then second one.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Unzip the file &lt;strong&gt;ofm_soa_generic_11.1.1.2.0_disk1_1of1&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Go in &lt;strong&gt;UNZIP_FOLDER\Disk1 and run setup.exe&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;A DOS window will ask you to enter a JAVA_HOME &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enter the path to the JDK in “Program Files”&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/S-1gH7ZbJfI/AAAAAAAACLk/2GxH8z-7cwM/s1600-h/image%5B62%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/S-1gIUawj7I/AAAAAAAACLo/P-R6Fbx88sg/image_thumb%5B22%5D.png?imgmax=800" width="1028" height="132" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The DOS window will then vanish, and the Oracle Universal Installer will pop up :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/S-1gJXeRJ6I/AAAAAAAACLs/1-hWK50ejzM/s1600-h/image%5B73%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1gKIZ46cI/AAAAAAAACLw/wqajjcnFz2I/image_thumb%5B27%5D.png?imgmax=800" width="650" height="507" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Chose the WebLogic Home in which you installed WebLogic Server 64 bits ([…]\&lt;strong&gt;SOASuite11gR1PS2\OFM&lt;/strong&gt;)&lt;/p&gt;  &lt;p&gt;Make sure that the “Oracle Home” has the proper value.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S-1gKbp0MtI/AAAAAAAACL0/Der0_fP9Mgo/s1600-h/image%5B74%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1gK8fl4hI/AAAAAAAACL4/z3QgsZz54SE/image_thumb%5B28%5D.png?imgmax=800" width="438" height="102" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Then click install on the next screen.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/S-1gL6XoiXI/AAAAAAAACL8/OBciCbp3nBY/s1600-h/image%5B75%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/S-1gMvdp4BI/AAAAAAAACMA/HLTNhftRfK4/image_thumb%5B29%5D.png?imgmax=800" width="653" height="509" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You should normally have in your MIDDLEWARE_HOME the following directory structure :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/S-1gNToH6FI/AAAAAAAACME/PIuk3plPCn0/s1600-h/image%5B145%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/S-1gN-1c7uI/AAAAAAAACMI/ezZ7RCnvvFg/image_thumb%5B67%5D.png?imgmax=800" width="187" height="349" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;2.7) SOA Suite PS1 (11.1.1.3)&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now it’s done, we will upgrade our SOA Suite with the latest patchset.&lt;/p&gt;  &lt;p&gt;In a word, it’s just like the PS1 : you first have to unzip the file “&lt;strong&gt;ofm_soa_generic_11.1.1.3.0_disk1_1of1.zip&lt;/strong&gt;” and then execute the setup.exe in the directory “&lt;strong&gt;Disk1&lt;/strong&gt;”.&lt;/p&gt;  &lt;p&gt;You will be asked to enter the original directory in which you installed :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;your Oracle Middleware home (&lt;strong&gt;SOASuite11gR1PS2\OFM&lt;/strong&gt;) &lt;/li&gt;    &lt;li&gt;your Oracle SOA Suite directory (&lt;strong&gt;Oracle_SOA&lt;/strong&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/S-1gOqw5H3I/AAAAAAAACMM/3ALoqqNdMDs/s1600-h/image%5B101%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/S-1gPWNS4gI/AAAAAAAACMQ/JL9wpfKSSuI/image_thumb%5B45%5D.png?imgmax=800" width="665" height="537" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And here you go again :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/S-1gQv6aY2I/AAAAAAAACMU/kJgggLcnvPs/s1600-h/image%5B106%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/S-1gRaQlfFI/AAAAAAAACMY/Nf6rc_6YIjk/image_thumb%5B48%5D.png?imgmax=800" width="664" height="534" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;But this time note the versions that are displayed : they’re all in 11.1.1.3.0.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Okay now’s everything is configured.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;3) Checking&lt;/h2&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;3.1) 64 bits installation&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This part is optional : just to check that WLS was correctly installed in 64 bits, you can create a sample domain, start your server and check the following :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;starting weblogic with Java version:      &lt;br /&gt;java version &amp;quot;1.6.0_20-ea&amp;quot;       &lt;br /&gt;Java(TM) SE Runtime Environment (build 1.6.0_20-ea-b02)       &lt;br /&gt;Java HotSpot(TM) &lt;font color="#0000ff"&gt;64-Bit Server&lt;/font&gt; VM (build 17.0-b12, mixed mode)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And : &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;14 mai 2010 01 h 20 CEST&amp;gt; &amp;lt;Info&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000377&amp;gt; &amp;lt;Starting WebLogic Server with Java HotSpot(TM)&lt;font color="#0080ff"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;64-Bit Server&lt;/font&gt; VM Version 17.0-b12 from Sun Microsystems Inc.&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You should also see some references to the native 64 libraries in the PATH :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;[…] \&lt;font color="#0000ff"&gt;server\native\win\x64&lt;/font&gt; […]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;3.2) SOA Suite PS2&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Check that all the templates are available.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S_Bg5Ajm2cI/AAAAAAAACOk/Mukqza54Csw/s1600-h/image146.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1gTPXosOI/AAAAAAAACOo/bClECgNuD2U/image_thumb68.png?imgmax=800" width="793" height="568" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;4) Conclusion&lt;/h2&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It is an official recommendation to install JDev in a directory and the SOA Suite in another, but I made a test in which I did override the WLS installed by JDev and it seemed to work.&lt;/p&gt;  &lt;p&gt;Some stuff I found weird : in the “&lt;strong&gt;SOASuite11gR1PS2\OFM\wlserver_10.3\common\bin&lt;/strong&gt;” directory when I run &lt;strong&gt;config.exe&lt;/strong&gt;, I don’t have the same result as if I had run &lt;strong&gt;config.cmd&lt;/strong&gt; …&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;config.exe &lt;/strong&gt;gives me :&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/S_Bg5Ajm2cI/AAAAAAAACOs/jteUCKLjl1w/s1600-h/image141.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/S-1gTPXosOI/AAAAAAAACOw/lTLofWfwhNE/image_thumb65.png?imgmax=800" width="793" height="568" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Whereas &lt;strong&gt;config.cmd&lt;/strong&gt; gives me :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/S-1gUhriiyI/AAAAAAAACMs/lzbUkqWrbrA/s1600-h/image%5B140%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/S-1gVcReAiI/AAAAAAAACMw/16uu6j0pLDs/image_thumb%5B64%5D.png?imgmax=800" width="788" height="563" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Got to check whether this a common behavior or not ! :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3e25b0eb-bf7d-4c2d-aac9-1c7cae33aa75" class="wlWriterEditableSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/windows+seven" rel="tag"&gt;windows seven&lt;/a&gt;,&lt;a href="http://technorati.com/tags/soa+suite+11gR1PS2" rel="tag"&gt;soa suite 11gR1PS2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/rcu" rel="tag"&gt;rcu&lt;/a&gt;,&lt;a href="http://technorati.com/tags/weblogic+server" rel="tag"&gt;weblogic server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/jdeveloper" rel="tag"&gt;jdeveloper&lt;/a&gt;,&lt;a href="http://technorati.com/tags/11.1.1.3" rel="tag"&gt;11.1.1.3&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-7823701074163631183?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/7823701074163631183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=7823701074163631183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/7823701074163631183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/7823701074163631183'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2010/05/installing-soa-suite-11gr1-ps2-on.html' title='Installing SOA Suite 11gR1 PS2 on Windows Se7en (64 bits)'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_bayCgqm3V20/S-1f2vEkPJI/AAAAAAAACJw/hzVFRPYZ0qY/s72-c/image_thumb%5B40%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-8014113068635880715</id><published>2010-05-09T00:44:00.011+02:00</published><updated>2010-05-09T10:47:56.106+02:00</updated><title type='text'>Shared Libraries versus Optional Packages</title><content type='html'>Starting with WebLogic Server 9, BEA introduced an interesting concept aiming at sharing more easily libraries between EARs.   &lt;br /&gt;From a performance point of view and memory imprint, there’s absolutely no change : the library will still be loaded in each and every EAR classloader.   &lt;br /&gt;But from a packaging point of view, it allows you to reduce significantly the size of your archives, by externalizing the common libraries.   &lt;br /&gt;Moreover, when you have to upgrade one of your lib, it’s easier to do, thanks to centralization.   &lt;br /&gt;&lt;br /&gt;In my case, I’m currently working on a key SOA project on which a huge work had been done on isolating services from a business point of view.   &lt;br /&gt;But technically, all the services were packaged in the same EAR, which is a serious problem for the high availability we are supposed to provide.   &lt;br /&gt;(in case of a new version, it would lead to an undeployment of the whole archive : &lt;a href="http://download.oracle.com/docs/cd/E13222_01/wls/docs100/deployment/redeploy.html#wp1020276" target="_blank"&gt;production redeployment&lt;/a&gt; is not an option since the archive is pretty bulky)   &lt;br /&gt;So I had to explode the EAR in several WARs and adopt a strategy for the library sharing.   &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Deploying libraries&lt;/h2&gt;&lt;br /&gt;First of all, whether you'll use the “shared library” or the “optional package” mechanism, your libraries (JARs in our case but can be WAR, RAR …)   &lt;br /&gt;must respect a certain definition in their manifests, such as :   &lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Extension-Name: fr.mbutton.blog&lt;br /&gt;Specification-Vendor: Tengah Consulting &lt;br /&gt;Specification-Version: 1.0 &lt;br /&gt;Implementation-Vendor-Id: fr.tengah-consulting &lt;br /&gt;Implementation-Vendor: Tengah Consulting &lt;br /&gt;Implementation-Version: 1.1&lt;/pre&gt;&lt;/blockquote&gt;This example has been inspired by the &lt;a href="http://java.sun.com/j2se/1.4.2/docs/guide/extensions/versioning.html" target="_blank"&gt;example found on sun.com&lt;/a&gt;.&lt;br /&gt;Based on my experience, the only lines that really matter are the following :&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Extension-Name: fr.mbutton.blog&lt;br /&gt;Specification-Version: 1.0&lt;br /&gt;Implementation-Version: 1.1&lt;/pre&gt;&lt;/blockquote&gt;WebLogic Server will use the extension name to determine the name it will use for the library you’re deploying.&lt;br /&gt;If none, then the name of the file itself will be used to qualify deployed archive name, as explained on &lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/libraries.html#wp1067450" target="_blank"&gt;Oracle documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In my case, I had to list all the libraries used in our application and see whether they were eligible for being deployed as a shared library.&lt;br /&gt;And I realized that lots of libraries you can find on the market are / were not thought to be deployed as optional package / shared libraries.&lt;br /&gt;&lt;br /&gt;So far, the only libraries that were clearly designed following this standard are the libs from Apache.&lt;br /&gt;Regarding the specification &amp;amp; implementation versions, you may specify those pieces of information &lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/deployment/deploy.html#wp1023538" target="_blank"&gt;while deploying&lt;/a&gt;,&lt;br /&gt;but it is a good practice to have them described in the library manifest.&lt;br /&gt;&lt;br /&gt;Moreover as described in the official Oracle documentation, you should be careful while using this modus operandi :&lt;br /&gt;&lt;blockquote&gt;“If both the manifest file and the &lt;code&gt;weblogic.Deployer&lt;/code&gt; command line specify version information, and the values do not match, the deployment fails. &lt;br /&gt;If you initially registered a library without providing a specification or implementation version,&lt;br /&gt;you must undeploy the library before registering a newer version and specifying version string information.&lt;br /&gt;&lt;br /&gt;You can register multiple versions of a library or package, but each version must use the same version strings. &lt;br /&gt;For example, you cannot register a library having only a specification version,&lt;br /&gt;and then register a new version of the library having both a specification and an implementation version.”&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-size: 24px; font-weight: bold;"&gt;Referencing Shared Libraries&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now our libraries are correctly defined and deployed the use as shared libraries is really simple. &lt;br /&gt;According to the documentation about the weblogic deployment descriptors (&lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/webapp/weblogic_xml.html#wp1060332" target="_blank"&gt;weblogic.xml&lt;/a&gt; &amp;amp; &lt;a href="http://download.oracle.com/docs/cd/E11035_01/wls100/programming/app_xml.html#wp1076531" target="_blank"&gt;weblogic-application.xml&lt;/a&gt;), the way to reference a library is the following :&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;library-ref&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;library-name&amp;gt;fr.mbutton.blog&amp;lt;/library-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;specification-version&amp;gt;1.0&amp;lt;/specification-version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;implementation-version&amp;gt;1.1&amp;lt;/implementation-version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exact-match&amp;gt;false&amp;lt;/exact-match&amp;gt;&lt;br /&gt;&amp;lt;/library-ref&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;But one major problem is that you cannot reference all the types, just as &lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/libraries.html#wp1071062" target="_blank"&gt;it is clearly said in the official documentation&lt;/a&gt; :&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;“You cannot reference any other type of shared Java EE library (EJB, Enterprise application, or plain JAR file)&lt;/em&gt; &lt;br /&gt;&lt;em&gt;from the &lt;code&gt;weblogic.xml&lt;/code&gt; deployment descriptor file of a Web Application.”&lt;/em&gt;&lt;/blockquote&gt;In other words, it is impossible to reference JAR files in a web application (WAR).&lt;br /&gt;Hummmm … annoying since it’s exactly what I’m trying to do …&lt;br /&gt;Then my friend &amp;amp; colleague &lt;a href="http://fr.linkedin.com/pub/romain-buquet/2/5b2/702" target="_blank"&gt;Romain&lt;/a&gt; told me about the optional packages.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 24px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 24px; font-weight: bold;"&gt;Referencing Optional Packages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With optional packages, that annoying limitation is no more. &lt;br /&gt;If you followed the pieces of advice regarding the correct deployment of libraries for a use as shared libraries,&lt;br /&gt;that’s perfect because you won’t have anything to change to switch to optional packages.&lt;br /&gt;&lt;br /&gt;The only thing that changes is the way you will refer to them. &lt;br /&gt;Using optional packages, you simply have to update the manifest for your WAR such as :&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Extension-List: blog&lt;br /&gt;blog-Extension-Name: fr.mbutton.blog&lt;br /&gt;blog-Specification-Version: 1.0&lt;br /&gt;blog-Implementation-Version: 1.1&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;And suppose we have another library :&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;library-ref&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;library-name&amp;gt;org.springframework&amp;lt;/library-name&amp;gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;specification-version&amp;gt;3.0&amp;lt;/specification-version&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;implementation-version&amp;gt;3.9beta&amp;lt;/implementation-version&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;exact-match&amp;gt;false&amp;lt;/exact-match&amp;gt; &lt;br /&gt;&amp;lt;/library-ref&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;This time, the definition in the manifest would be :&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Extension-List: blog spring&lt;br /&gt;blog-Extension-Name: fr.mbutton.blog&lt;br /&gt;spring-Extension-Name: org.springframework&lt;br /&gt;blog-Specification-Version: 1.0&lt;br /&gt;spring-Implementation-Version: 3.9beta&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Once again, I’m not inventing this : you can read it &lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/libraries.html#wp1064645" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 24px; font-weight: bold;"&gt;Finally …&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Okay here we are, time for a conclusion !&lt;br /&gt;&lt;br /&gt;Shared libraries :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;are cool but do not allow all type of referencing (-) &lt;/li&gt;&lt;li&gt;are WebLogic Server specific (-) &lt;/li&gt;&lt;li&gt;are XML based (+?) &lt;/li&gt;&lt;/ul&gt;Whereas optional packages :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;are standard … (+) &lt;/li&gt;&lt;li&gt;… but completely based on manifests : almost worst than Cobol ! (-) &lt;/li&gt;&lt;li&gt;allow a lot more possibilities (+) &lt;/li&gt;&lt;/ul&gt;Hope this post helped to enlighten a bit your path.&lt;br /&gt;&lt;br /&gt;Resources :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Oracle documentation &lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/libraries.html" target="_blank"&gt;here&lt;/a&gt; &amp;amp; &lt;a href="http://java.sun.com/j2se/1.4.2/docs/guide/extensions/versioning.html" target="_blank"&gt;here&lt;/a&gt; (Sun) &lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.oracle.com/jamesbayer/2009/12/weblogic_server_shared_librari_1.html" target="_blank"&gt;James’ blog&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/weblogic+server" rel="tag"&gt;weblogic server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/optional+packages" rel="tag"&gt;optional packages&lt;/a&gt;,&lt;a href="http://technorati.com/tags/shared+libraries" rel="tag"&gt;shared libraries&lt;/a&gt;,&lt;a href="http://technorati.com/tags/manifest" rel="tag"&gt;manifest&lt;/a&gt;,&lt;a href="http://technorati.com/tags/sharing+jar+across+wars" rel="tag"&gt;sharing jar across wars&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-8014113068635880715?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/8014113068635880715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=8014113068635880715' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/8014113068635880715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/8014113068635880715'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2010/05/shared-libraries-versus-optional.html' title='Shared Libraries versus Optional Packages'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-6184190833850794451</id><published>2010-05-06T22:56:00.001+02:00</published><updated>2010-05-06T22:56:46.496+02:00</updated><title type='text'>About some of the tools I am using in my everyday life</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;As a consultant, I'm always on the run, switching from clients to others, resolving (or at least, trying to) problems.&lt;/p&gt;  &lt;p&gt;(even if it's not been the case lately, since I'm working for a very large client who needs a lot of attention :p)&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Anyway, I could not do my job without my tools. And as they are very very useful to me, I wanted to share them with you !&lt;/p&gt;  &lt;p&gt;Sorry &lt;a href="http://fr.linkedin.com/in/adudons" target="_blank"&gt;Aurélien&lt;/a&gt; for taking your blogpost idea, but I’ve been waiting about a year for your blog to be created, and I’m still waiting ;)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Network (tools to grab some remote files, setup a FTP server ...)&lt;/h2&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First of all, &lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank"&gt;Putty&lt;/a&gt;. Very famous SSH client I find very useful BUT even more when used within &lt;a href="http://puttycm.free.fr/cms/" target="_blank"&gt;Putty Connection Manager&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The latter is a layer above putty that allows you to centralize all your putty windows, enter some extra-commands, such as auto-login etc.&lt;/p&gt;  &lt;p&gt;I'm using it everyday !&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Then, when you want to browse a remote server windows-style, you may use a FTP client (of course, &lt;/p&gt;  &lt;p&gt;only if the server you want to reach is running a FTP server). &lt;/p&gt;  &lt;p&gt;In that case, the most famous FTP client is probably &lt;a href="http://filezilla-project.org/" target="_blank"&gt;FileZilla&lt;/a&gt;. If you want to serve your files through FTP, &lt;/p&gt;  &lt;p&gt;you may use &lt;a href="http://filezilla-project.org/" target="_blank"&gt;FileZilla Server&lt;/a&gt; or &lt;a href="http://www.serv-u.com/" target="_blank"&gt;Serv-U FTP&lt;/a&gt;, which is pretty good too (but not free).&lt;/p&gt;  &lt;p&gt;Else, I use &lt;a href="http://winscp.net/eng/download.php" target="_blank"&gt;WinSCP&lt;/a&gt;, SFTP / FTP but also SCP client.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When you really want to know what’s going on&amp;amp; what’s exchanged between two servers, you may use &lt;a href="http://www.fiddler2.com/fiddler2/" target="_blank"&gt;Fiddler&lt;/a&gt; to watch HTTP traffic. &lt;/p&gt;  &lt;p&gt;And if you want to “go deep”, use &lt;a href="http://www.wireshark.org/" target="_blank"&gt;WireShark&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you’re looking for a cool &amp;amp; free LDAP client, then forget about &lt;a href="http://www.ldapbrowser.com/" target="_blank"&gt;Softerra&lt;/a&gt; &amp;amp; &lt;a href="http://jxplorer.org/" target="_blank"&gt;JXplorer&lt;/a&gt; ! &lt;/p&gt;  &lt;p&gt;Try &lt;a href="http://directory.apache.org/studio/" target="_blank"&gt;Apache Directory Studio&lt;/a&gt; and you’ll see what I mean …&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Database&lt;/h2&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Well, all depends on the database manufacturer you're relying on. Personally, it's Oracle (no kidding). &lt;/p&gt;  &lt;p&gt;Then as my personal database, I'm using &lt;a href="http://www.oracle.com/technology/products/database/xe/index.html" target="_blank"&gt;Oracle XE&lt;/a&gt;, and as a client, I'm using Oracle &lt;a href="http://www.oracle.com/technology/products/database/sql_developer/index.html" target="_blank"&gt;SQL Developer&lt;/a&gt;, which is pretty good.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Java / Java EE&lt;/h2&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I will not start a war by saying that my IDE is the best :)&lt;/p&gt;  &lt;p&gt;I’m using &lt;a href="http://www.oracle.com/technology/products/workshop/index.html"&gt;Workshop&lt;/a&gt; (Eclipse with a BEA flavor) but it’s more a pain in the … than everything else ! &lt;/p&gt;  &lt;p&gt;I remember enjoying &lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJ&lt;/a&gt; Idea but it was a long time ago. &lt;a href="http://netbeans.org/"&gt;NetBeans&lt;/a&gt; has a pretty good reputation !&lt;/p&gt;  &lt;p&gt;I have been playing with &lt;a href="http://www.oracle.com/technology/products/jdev/index.html"&gt;JDeveloper&lt;/a&gt; and even if it took me a while to get used to it, I can say it’s not bad, rather good in fact.&lt;/p&gt;  &lt;p&gt;Finally, I would go for Eclipse without the bunch of annoying plugins brought by Workshop.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When I’m stuck on a common error such as “NoClassDefFoundError”, my life saver is “&lt;a href="http://sourceforge.net/projects/jarfinder/"&gt;Jar Finder&lt;/a&gt;”. &lt;/p&gt;  &lt;p&gt;You may find some other ways to do so, such as websites, Eclipse plugins etc,&lt;/p&gt;  &lt;p&gt;but I can assure you that there is nothing better than this tool ! &lt;/p&gt;  &lt;p&gt;Quick to start (no workspace to load …, can use it offline) and pretty efficient : the must-have.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And sometimes, when I want to take a closer to look to an implementation, I use &lt;a href="http://java.decompiler.free.fr/"&gt;JD-*&lt;/a&gt; (Java Decompiler) which is an excellent, &lt;/p&gt;  &lt;p&gt;I would even say the best tool to assist you in decompiling Java classes.&lt;/p&gt; (and the fact it’s been written by a &lt;a href="http://fr.linkedin.com/pub/emmanuel-dupuy/2/8a9/580"&gt;former colleague&lt;/a&gt; has nothing to do with it ! :D)   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As everyone using webservices, I’m using &lt;a href="http://www.soapui.org/"&gt;SOAPUi&lt;/a&gt; (which allows you in its latest version to do some stress test too !)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And when I have to perform some stress tests, I’m using &lt;a href="http://jakarta.apache.org/jmeter/"&gt;JMeter&lt;/a&gt; (I tried once &lt;a href="http://www.opensta.org/"&gt;OpenSTA&lt;/a&gt; but was more at ease with JMeter).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Dealing with JMS, I’m also using &lt;a href="http://www.hermesjms.com/confluence/display/HJMS/Home"&gt;HermesJMS&lt;/a&gt; wich is good (not always providing the best stability but cool even though).&lt;/p&gt;  &lt;p&gt;My former colleague James blogged about it and its &lt;a href="http://blogs.oracle.com/jamesbayer/2008/01/hermes_jms_open_source_jms_con.html"&gt;integration with WebLogic Server&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When I want to analyse some thread dumps, I’m using &lt;a href="http://yusuke.homeip.net/samurai/en/index.html"&gt;Samurai&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;h2&gt;Knowledge sharing (in other words blogging !)&lt;/h2&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To me, online writing is not a good solution. You may lose your content, you can't write anywhere and so on.&lt;/p&gt;  &lt;p&gt;As an offline writer, I'm using &lt;a href="http://download.live.com/writer" target="_blank"&gt;Windows Live Writer&lt;/a&gt;, which is pretty good. It supports a lots of blog providers : &lt;/p&gt;  &lt;p&gt;I started with it when I first blogged on Dev2Dev on WordPress, then I switched to blogspot and WLW switched without any trouble.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To shoot and capture screens, I use &lt;a href=" http://www.gadwin.com/printscreen/"&gt;Gadwin&lt;/a&gt; which can be used in a free edition and it’s excellent ! &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Other&lt;/h2&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Who hasn’t faced one day an annoying popup saying there was not enough space to copy a very important file ?&lt;/p&gt;  &lt;p&gt;When such a situation happens, you can spend a lot of time looking for some files &amp;amp; folders to delete or you can use &lt;a href="http://windirstat.info/"&gt;WinDirStat&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It’s a freeware which will allow you to find in a snap &lt;a href="http://img.clubic.com/photo/01892504.jpg" target="_blank"&gt;the biggest files on your harddrive&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I’m also currently playing with Sun’s (Oracle’s ?) &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt; to virtualize a whole development environment &lt;/p&gt;  &lt;p&gt;and it’s hard not be seduced by this wonderful soft. If you try it, you will adopt it :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To replace the original Windows file copying system, I’ve chosen &lt;a href="http://supercopier.sfxteam.org/"&gt;SuperCopier&lt;/a&gt;. Far better !&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And last but not least, the super text editor : Notepad++ ! &lt;/p&gt;  &lt;p&gt;If you’re working with XML : read that &lt;a href="http://www.twu.ca/divisions/technology/sst/orion/blog/tidy-notepad-and-xml.html"&gt;useful post&lt;/a&gt; about enabling XML indent in Notepad++.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Well that’s all for now and if you have an extraordinary tool you like to share, don’t hesitate to post a comment ! :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f332db54-629e-44f5-bb82-7a8e469b4e32" class="wlWriterEditableSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/j2EE+tools" rel="tag"&gt;j2EE tools&lt;/a&gt;,&lt;a href="http://technorati.com/tags/java+ee+tools" rel="tag"&gt;java ee tools&lt;/a&gt;,&lt;a href="http://technorati.com/tags/virtualbox+weblogic" rel="tag"&gt;virtualbox weblogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/hermesjms" rel="tag"&gt;hermesjms&lt;/a&gt;,&lt;a href="http://technorati.com/tags/notepad%2b%2b" rel="tag"&gt;notepad++&lt;/a&gt;,&lt;a href="http://technorati.com/tags/apache+virtual+directory+studio" rel="tag"&gt;apache virtual directory studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/wireshark" rel="tag"&gt;wireshark&lt;/a&gt;,&lt;a href="http://technorati.com/tags/fiddler" rel="tag"&gt;fiddler&lt;/a&gt;,&lt;a href="http://technorati.com/tags/windirstat" rel="tag"&gt;windirstat&lt;/a&gt;,&lt;a href="http://technorati.com/tags/putty" rel="tag"&gt;putty&lt;/a&gt;,&lt;a href="http://technorati.com/tags/putty+connection+manager" rel="tag"&gt;putty connection manager&lt;/a&gt;,&lt;a href="http://technorati.com/tags/sql+developer" rel="tag"&gt;sql developer&lt;/a&gt;,&lt;a href="http://technorati.com/tags/oracle+xe" rel="tag"&gt;oracle xe&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-6184190833850794451?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/6184190833850794451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=6184190833850794451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/6184190833850794451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/6184190833850794451'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2010/05/about-some-of-tools-i-am-using-in-my.html' title='About some of the tools I am using in my everyday life'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-5345734273685329474</id><published>2009-10-24T00:18:00.001+02:00</published><updated>2009-11-07T16:12:58.924+01:00</updated><title type='text'>Troubleshooting two common JMS exceptions</title><content type='html'>&lt;p&gt;I've been working with a particular architecture lately.&lt;/p&gt; &lt;p&gt;It's composed of an application server (WebLogic Server 10), hosting webservices, an ESB (ALSB 2.5) and an EAI / BPM (WLI 8.1 SP5).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SuIrruiaSUI/AAAAAAAACC8/1jatmswRjiE/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SuIrsGXB2BI/AAAAAAAACDA/pnyHZqYdoJM/image_thumb%5B1%5D.png?imgmax=800" width="544" height="602"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The point we are going to focus on is the JMS communication between WLI 8.1 SP5 &amp;amp; WLS 10.&lt;/p&gt; &lt;p&gt;WLI is hosting a JMS server and WLS 10, is hosting a foreign JMS Server, representing the WLI JMS Server.&lt;/p&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;First exception &lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;From time to time, we happened to have this exception showing up in the logs :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;&amp;lt;23 oct. 2009 21 h 50 CEST&amp;gt; &amp;lt;Error&amp;gt; &amp;lt;JTA&amp;gt; &amp;lt;BEA-114089&amp;gt; &amp;lt;User [&amp;lt;anonymous&amp;gt;] is not authorized to invoke ackPrepare on a Coordinator.&amp;gt;&lt;br&gt;&amp;lt;23 oct. 2009 21 h 54 CEST&amp;gt; &amp;lt;Error&amp;gt; &amp;lt;JTA&amp;gt; &amp;lt;BEA-110495&amp;gt; &amp;lt;User [&amp;lt;anonymous&amp;gt;] is not authorized to invoke AckRollback on a Coordinator.&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;These particular errors were happening when WLS was sending a JMS message towards WLI  &lt;p&gt;(which was &lt;em&gt;pending&lt;/em&gt; since the transaction wasn't commited nor rollbacked yet) and then tried to commit the transaction.  &lt;p&gt;Then we saw the first message (BEA-114089). WLS, seeing that it couldn't commit, tried to rollback but it still wasn't allowed to do such a thing.  &lt;p&gt;If we take a look at the official documentation :  &lt;p&gt;&amp;nbsp; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;BEA-114089&lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Error: &lt;/em&gt;&lt;/strong&gt;User [&lt;em&gt;principal&lt;/em&gt;] is not authorized to invoke ackPrepare on a Coordinator.  &lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;The user with identity [&lt;em&gt;principal&lt;/em&gt;] should not be attempting to directly invoke internal methods on the Coordinator object. This might subvert transactional integrity. &lt;/font&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;Permission was denied, and the attempt was ignored.&lt;/font&gt;  &lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;  &lt;p&gt;This might be a symptom of a potential security attack, or alternately, &lt;font color="#0000ff"&gt;a problem with the "system" security identity of the server&lt;/font&gt;.  &lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;  &lt;p&gt;Verify that the client software is not directly invoking an internal WebLogic system object.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;And  &lt;p&gt;&amp;nbsp; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;BEA-110495&lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Error: &lt;/em&gt;&lt;/strong&gt;User [&lt;em&gt;principal&lt;/em&gt;] is not authorized to invoke AckRollback on a Coordinator.  &lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;The user with identity [&lt;em&gt;principal&lt;/em&gt;] should not be attempting to directly invoke internal methods on the Coordinator object. This might subvert transactional integrity. &lt;/font&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;Permission was denied, and the attempt was ignored.&lt;/font&gt;  &lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;  &lt;p&gt;This might be a symptom of a potential security attack, or alternately, &lt;font color="#0000ff"&gt;a problem with the "system" security identity of the server&lt;/font&gt;.  &lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;  &lt;p&gt;Verify that client software is not directly invoking an internal WebLogic system object.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;We see that at some point, these explanations are not very useful.  &lt;p&gt;I then made a sandbox to reproduce this problem.  &lt;p&gt;I played with cross-domain security and security interoperability mode.  &lt;p&gt;Before playing with these two options, I strongly recommend you to read this official documentation :  &lt;ul&gt; &lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jms/trans.html#wp1039006"&gt;http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jms/trans.html#wp1039006&lt;/a&gt;  &lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jta/trxcon.html#interop"&gt;http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jta/trxcon.html#interop&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Finally, I came to the conclusion that these errors only happened when I had cross-domain security enabled (with identical credentials on both domains)&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;and that the security interoperabilty mode was set to "&lt;em&gt;Performance&lt;/em&gt;" on WLS 10. (by default, this is the mode defined on WLS 8.1).&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;In spite of the fact that official documentation says "&lt;em&gt;Every participating server must set the &lt;code&gt;Security Interoperability Mode&lt;/code&gt; parameter to the same value&lt;/em&gt;",&lt;/p&gt; &lt;p&gt;in my case, it worked with &lt;em&gt;Performance&lt;/em&gt; on WLS 8.1 (WLI) and &lt;em&gt;Compatibility&lt;/em&gt; on WLS 10 ...&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Second Exception&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;During my tests I also encountered an annoying error :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;WSEE:13&amp;gt;&lt;br&gt;Error invoking fr.edf.test.transaction.SampleWebService (POJO): weblogic.jms.common.JMSException&amp;lt;ComponentHandler.handleRequest:115&amp;gt;&lt;br&gt;&amp;lt;WSEE:13&amp;gt;&lt;font color="#ff0000"&gt;weblogic.jms.common.JMSException: Connection not found&lt;/font&gt;&amp;lt;ComponentHandler.handleRequest:115&amp;gt;&lt;br&gt;&lt;font color="#ff0000"&gt;weblogic.jms.common.JMSException: Connection not found&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSync(DispatcherAdapter.java:45)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.jms.client.JMSConnection.setupJMSSession(JMSConnection.java:499)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.jms.client.JMSConnection.createSessionInternal(JMSConnection.java:467)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.jms.client.JMSConnection.createQueueSession(JMSConnection.java:432)&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I had to google some time to figure out that this error came from the fact that both my admin servers were named "admin".&lt;/p&gt; &lt;p&gt;Seen in the official doc :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Please note the following limitations for inter-domain transactions:  &lt;ul&gt; &lt;li&gt;&lt;a name="wp1042693"&gt;&lt;/a&gt;The domains and all participating resources must have unique names. That is, you cannot have a JDBC data source, a server, or a domain with the same name as an object in another domain or the domain itself.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Well, that's it for now. I'm sure there are lots of potential other errors, but I hope that, at least, these two explanations may help some fellows out.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:699dd2d3-986f-4b94-ab09-1d0e6ba4ea98" class="wlWriterSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/jms" rel="tag"&gt;jms&lt;/a&gt;,&lt;a href="http://technorati.com/tags/jta" rel="tag"&gt;jta&lt;/a&gt;,&lt;a href="http://technorati.com/tags/transaction" rel="tag"&gt;transaction&lt;/a&gt;,&lt;a href="http://technorati.com/tags/wls%208.1" rel="tag"&gt;wls 8.1&lt;/a&gt;,&lt;a href="http://technorati.com/tags/wls%2010" rel="tag"&gt;wls 10&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BEA-110495" rel="tag"&gt;BEA-110495&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BEA-114089" rel="tag"&gt;BEA-114089&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JMSException" rel="tag"&gt;JMSException&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Security%20Interoperability" rel="tag"&gt;Security Interoperability&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cross-domain%20security" rel="tag"&gt;cross-domain security&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-5345734273685329474?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/5345734273685329474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=5345734273685329474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5345734273685329474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5345734273685329474'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/10/troubleshooting-two-common-jms.html' title='Troubleshooting two common JMS exceptions'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_bayCgqm3V20/SuIrsGXB2BI/AAAAAAAACDA/pnyHZqYdoJM/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-4607494350907925736</id><published>2009-09-20T15:39:00.001+02:00</published><updated>2009-10-24T00:28:31.640+02:00</updated><title type='text'>How to suspend / resume WLI 8.1 EventGenerators programmatically ?</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You sometimes may have to programmatically pause your EventGenerator (EG) consumption.&lt;/p&gt; &lt;p&gt;And this, for various reasons, such as pausing all processes while one specific is running, or coding your own administration application.&lt;/p&gt; &lt;p&gt;BEA | Oracle doesn't come with a simple way of doing so. And the reason is obvious : theoretically, you don't have to manipulate those objects,&lt;/p&gt; &lt;p&gt;through another way as the WLI console.&lt;/p&gt; &lt;p&gt;However, this post will help you to do so.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;First way : JMX&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Since JMX wasn't officially finished while WLI 8.1 was released, BEA chose to implement its own version.&lt;/p&gt; &lt;p&gt;I quote : "&lt;a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/e13754/compat.htm#i1129273" target="_blank"&gt;Prior to 9.0, WebLogic Server used its own JMX implementation based on the JMX 1.0 specification.&lt;/a&gt;"&lt;/p&gt; &lt;p&gt;As a result, it's not fun to juggle between the official JMX and the BEA implementation.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Second way : Using the official but not-normally-callable API&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;As you may have guessed, we are going to use the WLI console functions since those suspend &amp;amp; resume functions are already used there.&lt;/p&gt; &lt;p&gt;If you take a look at your WLS 8.1 installation directory, you will find the WLI console WAR in the directory WLS_HOME \ weblogic81 \ integration \ lib \ console.&lt;/p&gt; &lt;p&gt;If you open this WAR, you will see some interesting classes, such as EventGeneratorUtils and so on. &lt;/p&gt; &lt;p&gt;But these are only classes, available in the WEB-INF directory of the WAR, thus no easy way to know the dependencies between them.&lt;/p&gt; &lt;p&gt;The best solution would be to have a JAR. &lt;/p&gt; &lt;p&gt;Well, if you have created a WLI domain, you will find exactly what you need !&lt;/p&gt; &lt;p&gt;Let's assume we have an administration server whose name is "AdminServer" (pretty good name, huh ? :) )&lt;/p&gt; &lt;p&gt;Then check in the extract directory, the directory corresponding to the WLI Console :&lt;/p&gt; &lt;p&gt;DOMAIN_HOME \ AdminServer \ .wlnotdelete \ extract \ AdminServer_WLI Console_wliconsole \ jarfiles&lt;/p&gt; &lt;p&gt;And you should see something like that :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/SrYwllO4eMI/AAAAAAAACBs/7nTUX8t5c1Y/s1600-h/image4.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SrYwmFw1bMI/AAAAAAAACBw/23g1BIH0kG0/image_thumb2.png?imgmax=800" width="861" height="572"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Two directories in which you have a directory called "jarfiles". There's an interesting file "_wl_cls_gen.jar".&lt;/p&gt; &lt;p&gt;It contains all the classes used for the WLI Console, and then all the classes used for managing EG lifecycles.&lt;/p&gt; &lt;p&gt;Just add this Jar &amp;amp; Log4J in your IDE classpath project and you're good to go.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;To go straightforward, here is the class I wrote :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;import java.util.HashMap;&lt;br&gt;import java.util.List;&lt;br&gt;import java.util.Map;  &lt;p&gt;import javax.management.MBeanException;  &lt;p&gt;import org.apache.log4j.Logger;  &lt;p&gt;import com.bea.wli.oam.eventgenerators.EventGeneratorUtils;&lt;br&gt;import com.bea.wli.oam.eventgenerators.EventGeneratorWrapper;&lt;br&gt;import com.bea.wli.oam.eventgenerators.file.FileEventGeneratorHelper;&lt;br&gt;import com.bea.wli.oam.eventgenerators.jms.JmsEventGeneratorHelper;&lt;br&gt;import com.bea.wli.oam.eventgenerators.timer.TimerEventGeneratorHelper;  &lt;p&gt;/**&lt;br&gt;* @author mbutton&lt;br&gt;* &lt;br&gt;*/&lt;br&gt;public class EGManager {  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private transient Logger logger = Logger.getLogger(getClass());  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static final String TIMER_EG = "TIMER";  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static final String JMS_EG = "JMS";  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static final String FILE_EG = "FILE";  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static Map timerEG;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static Map jmsEG;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static Map fileEG;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Constructor that initialises the maps representing the declared EGs.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @throws EGManagerException &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public EGManager() throws EGManagerException {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; indexTimerEventGenerators();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; indexJMSEventGenerators();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; indexFileEventGenerators();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (MBeanException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.error("Problème lors de l'indexation des EventGenerators", e);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new EGManagerException("Problème lors de l'initialisation : les EventGenerators n'ont pu être récupérés.");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (non-javadoc) Indexes the TIMER EG family&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @throws MBeanException&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void indexTimerEventGenerators() throws MBeanException {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List timerEGs = TimerEventGeneratorHelper.getAllTimerEventGenerators();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timerEG = indexEventGenerators(timerEGs);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (non-javadoc) Indexes the FILE EG family&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @throws MBeanException&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void indexFileEventGenerators() throws MBeanException {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List fileEGs = FileEventGeneratorHelper.getAllFileEventGenerators();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fileEG = indexEventGenerators(fileEGs);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (non-javadoc) Indexes the JMS EG family&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @throws MBeanException&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void indexJMSEventGenerators() throws MBeanException {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List jmsEGs = JmsEventGeneratorHelper.getAllJmsEventGenerators();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jmsEG = indexEventGenerators(jmsEGs);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (non-javadoc) Indexes a List with the EG name as a key and the&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * EventGeneratorWrapper as the object.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param eventGenerators&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the EG list to be indexed&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return a Map containing the indexed information.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private Map indexEventGenerators(List eventGenerators) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Map indexedEG = new HashMap();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int size = (eventGenerators != null) ? eventGenerators.size() : 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EventGeneratorWrapper currentEGWrapper = null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; size; i++) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentEGWrapper = (EventGeneratorWrapper) eventGenerators.get(i);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; indexedEG.put(currentEGWrapper.getName(), currentEGWrapper);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return indexedEG;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Method used to suspend a running EventGenerator&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param eventGeneratorType&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the type (File, JMS, ...) of the EG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param eventGeneratorName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the EG name as it appears through the WLI console&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @throws EGManagerException&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void suspendEventGenerator(String eventGeneratorType, String eventGeneratorName) throws EGManagerException {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkEventGeneratorType(eventGeneratorType);  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EventGeneratorWrapper eg = getEventGeneratorWrapper(eventGeneratorType, eventGeneratorName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (eg != null) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EventGeneratorUtils.suspendGenerator(eg);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.error("Impossible d'arrêter l'EventGenerator " + eventGeneratorName, e);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new EGManagerException("Impossible d'arrêter l'EventGenerator " + eventGeneratorName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new EGManagerException("L'event Generator de type " + eventGeneratorType + " et de nom " + eventGeneratorName + " n'a pas été trouvé.");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Method used to resume a suspended EventGenerator&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param eventGeneratorType&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the type (File, JMS, ...) of the EG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param eventGeneratorName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the EG name as it appears through the WLI console&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @throws EGManagerException&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void resumeEventGenerator(String eventGeneratorType, String eventGeneratorName) throws EGManagerException {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkEventGeneratorType(eventGeneratorType);  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EventGeneratorWrapper eg = getEventGeneratorWrapper(eventGeneratorType, eventGeneratorName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (eg != null) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EventGeneratorUtils.resumeGenerator(eg);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.error("Impossible de relancer l'EventGenerator " + eventGeneratorName, e);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new EGManagerException("Impossible de relancer l'EventGenerator " + eventGeneratorName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new EGManagerException("L'event Generator de type " + eventGeneratorType + " et de nom " + eventGeneratorName + " n'a pas été trouvé.");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (non-javadoc) From the indexed EG list, it returns the&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * EventGeneratorWrapper matching the EventGenerator looked for.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param eventGeneratorType&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the type (File, JMS, ...) of the EG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param eventGeneratorName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the EG name as it appears through the WLI console&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return the matching EventGeneratorWrapper&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private EventGeneratorWrapper getEventGeneratorWrapper(String eventGeneratorType, String eventGeneratorName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EventGeneratorWrapper result = null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (TIMER_EG.equals(eventGeneratorType)) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = (EventGeneratorWrapper) timerEG.get(eventGeneratorName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (JMS_EG.equals(eventGeneratorType)) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = (EventGeneratorWrapper) jmsEG.get(eventGeneratorName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (FILE_EG.equals(eventGeneratorType)) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = (EventGeneratorWrapper) fileEG.get(eventGeneratorName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (non-javadoc) Method used to check that the given EventGenerator type is&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * correct.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param eventGeneratorType&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the type (File, JMS, ...) of the EG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void checkEventGeneratorType(String eventGeneratorType) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (eventGeneratorType == null&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; || eventGeneratorType.equals("")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; || (!eventGeneratorType.equalsIgnoreCase(TIMER_EG) &amp;amp;&amp;amp; !eventGeneratorType.equalsIgnoreCase(JMS_EG) &amp;amp;&amp;amp; !eventGeneratorType&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .equalsIgnoreCase(FILE_EG))) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new IllegalArgumentException("Le type de l'EventGenerator '" + eventGeneratorType + "' n'est pas correct.");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @author mbutton&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Exception used to raise an error while manipulating EventGeneratorWrappers to the front layer.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class EGManagerException extends Exception {  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final long serialVersionUID = 1L;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Constructor&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param message&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public EGManagerException(String message) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(message);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param args&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EGManager egm;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; egm = new EGManager();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; egm.suspendEventGenerator(EGManager.TIMER_EG, "TimerSampleEG");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (EGManagerException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;There you go !&lt;/p&gt; &lt;p&gt;To sum up, you have two methods on the EGManager : suspendEventGenerator &amp;amp; resumeEventGenerator.&lt;/p&gt; &lt;p&gt;Both take a EventGenerator type as the first parameter and the name of the EventGenerator as a second argument.&lt;/p&gt; &lt;p&gt;This class was designed only for Timer EG, JMS EG &amp;amp; File EG. But you may add other types and translate the French messages :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;But there is one limitation to that implementation. Actually, those objects are sensed to be called during a proper session via the WLI Console.&lt;/p&gt; &lt;p&gt;It means you have to be logged on.&lt;/p&gt; &lt;p&gt;In my case, we were creating another console, then I just had to secure my WebApp and everything went ok after that.&lt;/p&gt; &lt;p&gt;To do so, let's check my other post "&lt;a href="http://m-button.blogspot.com/2009/09/reminder-on-how-to-quickly-secure-web.html" target="_blank"&gt;Reminder on how to quickly secure a web app on WebLogic Server&lt;/a&gt;".&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;u&gt;&lt;em&gt;Update&lt;/em&gt;&lt;/u&gt; : I also had to call these methods from WLI processes. The solution I chose was to add the following annotation to each process that had to manipulate EG.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;* @common:security run-as="weblogic"&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Of course, "weblogic" has to be a valid principal.&lt;/p&gt; &lt;p&gt;For instance, in a real-world example :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;/**&lt;br&gt;* @jpd:process process::&lt;br&gt;* &amp;lt;process name="PlayWithEventGenerators"&amp;gt;&lt;br&gt;*&amp;nbsp;&amp;nbsp; &amp;lt;clientRequest name="Client Request" method="clientRequest"/&amp;gt;&lt;br&gt;*&amp;nbsp;&amp;nbsp; &amp;lt;perform name="Do The Business" method="perform"/&amp;gt;&lt;br&gt;* &amp;lt;/process&amp;gt;::&lt;br&gt;&lt;font color="#0000ff"&gt;* @common:security run-as="weblogic"&lt;/font&gt;&lt;br&gt;*/&lt;br&gt;public class PlayWithEventGenerators implements com.bea.jpd.ProcessDefinition&lt;br&gt;{ [...] }&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:172de857-4e3d-4f6f-8596-10cb17822cb7" class="wlWriterSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/WLI" rel="tag"&gt;WLI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/EventGenerator" rel="tag"&gt;EventGenerator&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Suspend" rel="tag"&gt;Suspend&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Resume" rel="tag"&gt;Resume&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Programmatically" rel="tag"&gt;Programmatically&lt;/a&gt;,&lt;a href="http://technorati.com/tags/8.1" rel="tag"&gt;8.1&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WebLogic%20Integration" rel="tag"&gt;WebLogic Integration&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WebLogic" rel="tag"&gt;WebLogic&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-4607494350907925736?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/4607494350907925736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=4607494350907925736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/4607494350907925736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/4607494350907925736'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/09/how-to-suspend-resume-wli-81.html' title='How to suspend / resume WLI 8.1 EventGenerators programmatically ?'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_bayCgqm3V20/SrYwmFw1bMI/AAAAAAAACBw/23g1BIH0kG0/s72-c/image_thumb2.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-5374919700447947680</id><published>2009-09-20T15:29:00.001+02:00</published><updated>2009-09-20T15:29:19.062+02:00</updated><title type='text'>Reminder on how to quickly secure a web application on WebLogic Server</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;This post is not about a highly technical subject, but I guess it's nice to have it explained in a few words, for beginners,&lt;/p&gt; &lt;p&gt;and have the real stuff at a glance for experimented users who just want a reminder.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Actually, note the security has nothing to do with your code !&lt;/p&gt; &lt;p&gt;All this aspect relies on configuration + the login page and the error page (JSPs).&lt;/p&gt; &lt;p&gt;Here's what you have to do.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Assume you have a webapp called "MyWebApp".&lt;/p&gt; &lt;p&gt;In the WEB-INF directory, you'll have a web.xml and, if you want to deploy it on WebLogic server, another XML file : weblogic.xml.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SrYuLFWrK1I/AAAAAAAACBk/t2S_fqilW54/s1600-h/image2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SrYuLYbxUJI/AAAAAAAACBo/ZCx_fhLoDDw/image_thumb.png?imgmax=800" width="159" height="163"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Note : Here's presented the authentication through a html form. &lt;/p&gt; &lt;p&gt;In blue, the important stuff.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Web.xml :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br&gt;&amp;lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "&lt;a href="http://java.sun.com/dtd/web-app_2_3.dtd&amp;quot;"&gt;http://java.sun.com/dtd/web-app_2_3.dtd"&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;lt;web-app id="WebApp_ID"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;display-name&amp;gt;MyWebApp&amp;lt;/display-name&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;welcome-file-list&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/welcome-file-list&amp;gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;security-constraint&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;web-resource-collection&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;web-resource-name&amp;gt;All&amp;lt;/web-resource-name&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;http-method&amp;gt;GET&amp;lt;/http-method&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;http-method&amp;gt;POST&amp;lt;/http-method&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/web-resource-collection&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;auth-constraint&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;webuser&amp;lt;/role-name&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/auth-constraint&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security-constraint&amp;gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;login-config&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;lt;auth-method&amp;gt;FORM&amp;lt;/auth-method&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form-login-config&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form-login-page&amp;gt;/login.jsp&amp;lt;/form-login-page&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form-error-page&amp;gt;/login_failed.jsp&amp;lt;/form-error-page&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form-login-config&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/login-config&amp;gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;security-role&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;lt;role-name&amp;gt;webuser&amp;lt;/role-name&amp;gt;&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security-role&amp;gt;&lt;br&gt;&amp;lt;/web-app&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Weblogic.xml :  &lt;p&gt;&amp;nbsp; &lt;blockquote&gt; &lt;p&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br&gt;&amp;lt;weblogic-web-app xmlns="&lt;a href="http://www.bea.com/ns/weblogic/90&amp;quot;"&gt;http://www.bea.com/ns/weblogic/90"&lt;/a&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:xsi="&lt;a href="http://www.w3.org/2001/XMLSchema-instance&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema-instance"&lt;/a&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xsi:schemaLocation="&lt;a href="http://www.bea.com/ns/weblogic/90"&gt;http://www.bea.com/ns/weblogic/90&lt;/a&gt; &lt;a href="http://www.bea.com/ns/weblogic/920/weblogic-web-app.xsd&amp;quot;"&gt;http://www.bea.com/ns/weblogic/920/weblogic-web-app.xsd"&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;weblogic-version&amp;gt;10.0&amp;lt;/weblogic-version&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;context-root&amp;gt;TestInterface&amp;lt;/context-root&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;security-role-assignment&amp;gt;&lt;br&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;webuser&amp;lt;/role-name&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;principal-name&amp;gt;Administrators&amp;lt;/principal-name&amp;gt;&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security-role-assignment&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;jsp-descriptor&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;page-check-seconds&amp;gt;-1&amp;lt;/page-check-seconds&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/jsp-descriptor&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;container-descriptor&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;session-monitoring-enabled&amp;gt;true&amp;lt;/session-monitoring-enabled&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/container-descriptor&amp;gt;&lt;br&gt;&amp;lt;/weblogic-web-app&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Login.jsp :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;html&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;head&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Security WebApp login page&amp;lt;/title&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;body&amp;gt; &lt;br&gt;&amp;nbsp; &amp;lt;blockquote&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;h2&amp;gt;Please enter your username and password:&amp;lt;/h2&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;p&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;form method="POST" action="&lt;font color="#0000ff"&gt;j_security_check&lt;/font&gt;"&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;table border=1&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;Username:&amp;lt;/td&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;input type="text" name="&lt;font color="#0000ff"&gt;j_username&lt;/font&gt;"&amp;gt;&amp;lt;/td&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;Password:&amp;lt;/td&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;input type="password" name="&lt;font color="#0000ff"&gt;j_password&lt;/font&gt;"&amp;gt;&amp;lt;/td&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td colspan=2 align=right&amp;gt;&amp;lt;input type=submit value="Submit"&amp;gt;&amp;lt;/td&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/blockquote&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;br&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;login_failed.jsp :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;%@ page&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; language="java"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; contentType="text/html;charset=UTF-8"&lt;br&gt;%&amp;gt;&amp;lt;%&lt;br&gt;&lt;font color="#0000ff"&gt;response.setStatus(200);&lt;/font&gt; // To prevent IE from catching the response with its own error page&lt;br&gt;%&amp;gt;&lt;br&gt;&amp;lt;html&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;head&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Security WebApp login error page&amp;lt;/title&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body bgcolor="#cccccc"&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;blockquote&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h2&amp;gt;Vous n'êtes pas autorisé à accéder à l'application.&amp;lt;/h2&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/blockquote&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;br&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;If you want to know more, take a look at &lt;a href="http://download.oracle.com/docs/cd/E13222_01/wls/docs100/security/thin_client.html" target="_blank"&gt;the official documentation&lt;/a&gt;.  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:457da145-4e47-48d5-8c78-94d3330c9215" class="wlWriterSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/secure" rel="tag"&gt;secure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/weblogic" rel="tag"&gt;weblogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/webapp" rel="tag"&gt;webapp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%20application" rel="tag"&gt;web application&lt;/a&gt;,&lt;a href="http://technorati.com/tags/j_security_check" rel="tag"&gt;j_security_check&lt;/a&gt;,&lt;a href="http://technorati.com/tags/role-name" rel="tag"&gt;role-name&lt;/a&gt;,&lt;a href="http://technorati.com/tags/auth-method" rel="tag"&gt;auth-method&lt;/a&gt;,&lt;a href="http://technorati.com/tags/url-pattern" rel="tag"&gt;url-pattern&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-5374919700447947680?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/5374919700447947680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=5374919700447947680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5374919700447947680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5374919700447947680'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/09/reminder-on-how-to-quickly-secure-web.html' title='Reminder on how to quickly secure a web application on WebLogic Server'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_bayCgqm3V20/SrYuLYbxUJI/AAAAAAAACBo/ZCx_fhLoDDw/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-5205621698057928725</id><published>2009-04-27T17:51:00.001+02:00</published><updated>2009-04-27T18:03:32.631+02:00</updated><title type='text'>How to create a distributed WebLogic domain ?</title><content type='html'>&lt;p&gt;Due to a lot of questions about that, I'll blog about the methodology to create &lt;/p&gt; &lt;p&gt;a simple domain, with a cluster distributed on several machines.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Architecture Schema&lt;/h2&gt; &lt;p&gt;Usually, a best practice is to keep the admin server away from managed servers. &lt;/p&gt; &lt;p&gt;Because, if a strong load happens and overloads a managed server, it will consume all the resources available&lt;/p&gt; &lt;p&gt;on the machine, including those needed for the admin server to be safe &amp;amp; running.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Then consider we have three machines, one admin server and four managed servers :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SfXUghQrPxI/AAAAAAAABSQ/2lI6l_VJdiA/s1600-h/image3.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SfXUhAl5V_I/AAAAAAAABSU/1GLS8oHqT4c/image_thumb1.png?imgmax=800" width="663" height="253"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Install the binaries&lt;/h2&gt; &lt;p&gt;This part is the easiest one. On each machine, you'll have to install the binaries.&lt;/p&gt; &lt;p&gt;I strongly recommend that you use the silent mode, which is faster and requires no manual intervention.&lt;/p&gt; &lt;p&gt;&lt;a title="http://e-docs.bea.com/common/docs100/install/silent.html" href="http://e-docs.bea.com/common/docs100/install/silent.html"&gt;http://e-docs.bea.com/common/docs100/install/silent.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Another advice : it may sound obvious, but you have to use the same WLS version on every machine ...&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Create the domain&lt;/h2&gt; &lt;p&gt;You've got two possibilities for a domain creation :&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Using the Config Wizard&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;This &lt;a href="http://edocs.bea.com/common/docs103/confgwiz/index.html" target="_blank"&gt;tool&lt;/a&gt; allows you to simply create a domain, by answering the asked questions, through &lt;a href="http://edocs.bea.com/common/docs103/confgwiz/startcw.html#wp1073603" target="_blank"&gt;a GUI&lt;/a&gt; or a &lt;a href="http://edocs.bea.com/common/docs103/confgwiz/startcw.html#wp1049231" target="_blank"&gt;command line&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;It's based on &lt;a href="http://edocs.bea.com/common/docs103/tempref/tempref.html" target="_blank"&gt;the default WebLogic template&lt;/a&gt;, which is almost empty :)&lt;/p&gt; &lt;p&gt;(you may later base your domain on your own template, but that's another topic).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SfXUhf4PVlI/AAAAAAAABSY/wXjF5XxaFGk/s1600-h/image4.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SfXUh5Bj_hI/AAAAAAAABSc/-VvEPgoccTk/image_thumb11.png?imgmax=800" width="477" height="268"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Using WLST&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Using WLST, the concept is the same, you will base your domain on the default WLS template and &lt;/p&gt; &lt;p&gt;then, &lt;a href="http://edocs.bea.com/wls/docs100/config_scripting/domains.html" target="_blank"&gt;you'll script the instructions to create your domain&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt; : you may also use WLST with WLS 7 &amp;amp; 8&lt;/p&gt; &lt;p&gt;Unfortunately, this tool was hosted on projects Dev2Dev, which is not available anymore.&lt;/p&gt; &lt;p&gt;If you're interested in getting it, I may send it to you through email (about 2 539k).&lt;/p&gt;&lt;/blockquote&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;Populate the domain&lt;/h2&gt; &lt;p&gt;When you &lt;a href="http://e-docs.bea.com/common/docs100/confgwiz/newdom.html#wp1080587" target="_blank"&gt;create a domain&lt;/a&gt;, as explained above, it will automatically create an administration server but&lt;/p&gt; &lt;p&gt;nothing else, unless you specify it. You can do so, either during the creation process, by chosing to &lt;/p&gt; &lt;p&gt;customize instead of selecting default, or by creating a light domain, launching&amp;nbsp; the admin server,&lt;/p&gt; &lt;p&gt;and then creating all the wanted resources.&lt;/p&gt; &lt;p&gt;No matter what is the solution you've taken, you'll need to configure at least two kind of resources :&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Machines (which only are a logical representation of your physical machines)  &lt;li&gt;Managed Servers, which represent the JVM hosting your business logic.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;It is mandatory that you define machines if you're willing to use the &lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/nodemgr/index.html" target="_blank"&gt;NodeManager&lt;/a&gt;. Else, even if you&lt;/p&gt; &lt;p&gt;don't want to use it, it's a good practice to define your machines. Will help you, when administrating&lt;/p&gt; &lt;p&gt;your domain, to see where your managed servers are hosted.&lt;/p&gt; &lt;p&gt;Then, once you've done those two steps, you may proceed to optional next steps (configuring datasources ...)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Distribute your domain&lt;/h2&gt; &lt;p&gt;Now your domain is full and complete, we need to duplicate it on other machines.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Pack &amp;amp; Unpack commands&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;These commands were designed to package a domain and unpackage it on another machine.&lt;/p&gt; &lt;p&gt;You could do the same by using a zip or a tar.gz, but using these commands will ensure you that&lt;/p&gt; &lt;p&gt;you have taken only the necessary files for your domain to work (no log files and unnecessary stuff).&lt;/p&gt; &lt;p&gt;&lt;a title="http://download.oracle.com/docs/cd/E12840_01/common/docs103/pack/commands.html" href="http://download.oracle.com/docs/cd/E12840_01/common/docs103/pack/commands.html"&gt;http://download.oracle.com/docs/cd/E12840_01/common/docs103/pack/commands.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Pack / Unpack (WLST version)&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;You can also do that task by using WLST.&lt;/p&gt; &lt;p&gt;Here is the pack script (taken from the WLST project page on dev2dev) :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;# pack.py: convert from pack command to wlst script  &lt;p&gt;# This script shows how to convert form the pack command to a wlst script.&lt;br&gt;# Note that the domain and template settings must be single-quoted.  &lt;p&gt;# Read in the domain that you want to templatize&lt;br&gt;readDomain(&amp;lt;domain&amp;gt;)  &lt;p&gt;# Create a template from the domain&lt;br&gt;writeTemplate(&amp;lt;template&amp;gt;)&amp;nbsp; &lt;p&gt;closeDomain() &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And here comes the unpack script :&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;# unpack.py: convert from unpack command to wlst script  &lt;p&gt;# This script shows how to convert from the unpack command to a wlst script.&lt;br&gt;# Note that the domain and template values, and the options to setOption, must be single-quoted  &lt;p&gt;# Specify the template that you want to use&lt;br&gt;readTemplate('c:\wls9\user_templates\wlst_wls_template.jar')  &lt;p&gt;# If you specified the -username and -password option in the unpack command, &lt;br&gt;# Specify them here. Otherwise, delete these lines`&lt;br&gt;# Note that the domain_name field here is just the name of the domain, not the full path as specified in writeDomain below&lt;br&gt;cd ('/Security/&amp;lt;domain-name&amp;gt;')&lt;br&gt;create (&amp;lt;user_name&amp;gt;,'User')&lt;br&gt;cd ('User/&amp;lt;user_name&amp;gt;')&lt;br&gt;set ('Password',&amp;lt;password&amp;gt;)  &lt;p&gt;# analogous to unpack -java_home &lt;br&gt;setOption('JavaHome',&amp;lt;java_home&amp;gt;)  &lt;p&gt;# analogous to unpack -server_start_mode &lt;br&gt;setOption('ServerStartMode',&amp;lt;server_start_mode&amp;gt;)  &lt;p&gt;# analogous to unpack -app_dir &lt;br&gt;setOption('AppDir',&amp;lt;app_dir&amp;gt;)  &lt;p&gt;# write the domain&lt;br&gt;writeDomain(&amp;lt;domain&amp;gt;)  &lt;p&gt;closeTemplate()&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;By the way, I was talking about the fact you can zip your domain and install it elsewhere : that possibility should be considered as an&lt;/p&gt; &lt;p&gt;excellent way of saving snapshots of your domain (for instance, before installing a new resource ...).&lt;/p&gt; &lt;p&gt;If something should go wrong, you would simply have to delete your domain and unzip your backup to start as it was before.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;NodeManager (optional)&lt;/h2&gt; &lt;p&gt;The &lt;a href="http://edocs.bea.com/wls/docs103/nodemgr/nodemgr_config.html" target="_blank"&gt;NodeManager&lt;/a&gt; is a tool that allows you several things, but the most important that come to my mind are :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;=&amp;gt; to start servers from the console  &lt;li&gt;=&amp;gt; to automatically restart a failed managed server  &lt;li&gt;=&amp;gt; to migrate pinned services (JTA / JMS)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;But some cilents don't want to use it because they prefer to use scripts. If this is your case, well, you're done.&lt;/p&gt; &lt;p&gt;Just start your managed servers on each machine and your cluster is up and running.&lt;/p&gt; &lt;p&gt;Else, read carefully the following lines !&lt;/p&gt; &lt;p&gt;For a domain to be managed by the NodeManager, you will have to &lt;a href="http://edocs.bea.com/wls/docs103/nodemgr/nodemgr_config.html#wp1097509" target="_blank"&gt;enroll&lt;/a&gt; it first.&lt;/p&gt; &lt;p&gt;That means that you've got to help the NodeManager to be aware that a new domain was created.&lt;/p&gt; &lt;p&gt;(this step is NOT necessary when you're using the config wizard)&lt;/p&gt; &lt;p&gt;To see if the different nodemanagers are reachable, check the machines.&lt;/p&gt; &lt;p&gt;In case of a problem, you may see : &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SfXUjP8IM_I/AAAAAAAABSg/XbxudQaoTdU/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/SfXUjXy72eI/AAAAAAAABSk/zexTN3Z6dgQ/image_thumb%5B3%5D.png?imgmax=800" width="512" height="351"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Of course, ideally, the status should be "Running".&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Start your servers&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If you chose to use the NodeManager, you only have to go on the administration console, and start your cluster.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SfXUj8o67sI/AAAAAAAABSo/qwX0MWevx18/s1600-h/image%5B12%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SfXUkkA0YNI/AAAAAAAABSs/woxtcRO1Ctk/image_thumb%5B5%5D.png?imgmax=800" width="564" height="471"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Or you may start your managed servers using the start scripts. But be aware that with this solution, since your domain&lt;/p&gt; &lt;p&gt;has been duplicated on each machine, you could start all the servers on each machine. It's up to you to start only the relevant&lt;/p&gt; &lt;p&gt;servers on each machine.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c682d613-3c6c-453b-9437-4dacd4a8af4d" class="wlWriterSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/weblogic%20domain" rel="tag"&gt;weblogic domain&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cluster" rel="tag"&gt;cluster&lt;/a&gt;,&lt;a href="http://technorati.com/tags/distributed" rel="tag"&gt;distributed&lt;/a&gt;,&lt;a href="http://technorati.com/tags/machine" rel="tag"&gt;machine&lt;/a&gt;,&lt;a href="http://technorati.com/tags/nodemanager" rel="tag"&gt;nodemanager&lt;/a&gt;,&lt;a href="http://technorati.com/tags/nmenroll" rel="tag"&gt;nmenroll&lt;/a&gt;,&lt;a href="http://technorati.com/tags/pack" rel="tag"&gt;pack&lt;/a&gt;,&lt;a href="http://technorati.com/tags/unpack" rel="tag"&gt;unpack&lt;/a&gt;,&lt;a href="http://technorati.com/tags/wlst" rel="tag"&gt;wlst&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-5205621698057928725?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/5205621698057928725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=5205621698057928725' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5205621698057928725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5205621698057928725'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/04/how-to-create-distributed-weblogic.html' title='How to create a distributed WebLogic domain ?'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_bayCgqm3V20/SfXUhAl5V_I/AAAAAAAABSU/1GLS8oHqT4c/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-2370127031652275497</id><published>2009-04-24T00:11:00.001+02:00</published><updated>2009-04-24T00:11:47.997+02:00</updated><title type='text'>SOA Suite 11g : first quick look</title><content type='html'>&lt;p&gt;Working @ Oracle, it gives me some interesting advantages, like the ability to play with the 11th version of&lt;/p&gt; &lt;p&gt;the &lt;a href="http://www.oracle.com/technology/products/ias/bpel/techpreview/2008-05-01-whats-new-in-oracle-soa-suite-tp4.pdf" target="_blank"&gt;Oracle SOA Suite&lt;/a&gt;, before its release to the market.&lt;/p&gt; &lt;p&gt;Here's a little summary of what I've had the chance to play with.&lt;/p&gt; &lt;p&gt;But, be aware that what I'm exposing right here is NOT representating the final version.&lt;/p&gt; &lt;p&gt;It's only a beta but as far as I can tell, our guys have done a good job !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;What's new ?&lt;/h2&gt; &lt;p&gt;Well, of course OC4J is gone and WebLogic Server has replaced it. &lt;/p&gt; &lt;p&gt;Now, we've got a new WLS template, reflecting the SOA Suite products :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SfDnXSnoo-I/AAAAAAAABRk/gK_D16McbKM/s1600-h/domain4.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="463" alt="domain" src="http://lh4.ggpht.com/_bayCgqm3V20/SfDnYGpHKCI/AAAAAAAABRo/jM6idiXbCb0/domain_thumb2.jpg?imgmax=800" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The installer has been updated (Xtreme Makeover :p) :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SfDnY5q4drI/AAAAAAAABRs/ZHtWowlXLKQ/s1600-h/installing4.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="installing" src="http://lh6.ggpht.com/_bayCgqm3V20/SfDnkTHg2EI/AAAAAAAABR0/pnK6LnY0u1o/installing_thumb2.jpg?imgmax=800" width="601" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And some webpages have been changed as well : &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SfDnk40QtUI/AAAAAAAABR4/WVtXqGhCjz8/s1600-h/admin_console3.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="382" alt="admin_console" src="http://lh5.ggpht.com/_bayCgqm3V20/SfDnliQGQBI/AAAAAAAABR8/s87ZRXKoYaM/admin_console_thumb1.jpg?imgmax=800" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SfDnmD_tt5I/AAAAAAAABSA/wrD1t4NvV1A/s1600-h/b2b3.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="b2b" src="http://lh6.ggpht.com/_bayCgqm3V20/SfDnm-NuCUI/AAAAAAAABSE/viy7v0pYqlE/b2b_thumb1.jpg?imgmax=800" width="603" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SfDnn38egUI/AAAAAAAABSI/S76qYruWYm8/s1600-h/oem3.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="339" alt="oem" src="http://lh6.ggpht.com/_bayCgqm3V20/SfDnomN7hnI/AAAAAAAABSM/Tq0ir8C7DgY/oem_thumb1.jpg?imgmax=800" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I'm quite a fan of that new graphical aspect.&lt;/p&gt; &lt;p&gt;I unfortunately didn't have enough time to play more with it, so stay tuned for the next episode :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;u&gt;However, what I think could be improved :&lt;/u&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;=&amp;gt; JDeveloper 11g still needs another WLS install to be able to launch (ideally, I would have expected a automated &lt;/p&gt; &lt;p&gt;installation with all the products and only one WLS install, but I'm sure it's on the list)&lt;/p&gt; &lt;p&gt;=&amp;gt; Enterprise Manager wasn't happy since the French resource bundle was missing. I would have prefered the English&lt;/p&gt; &lt;p&gt;one to be loaded by default if not found.&lt;/p&gt; &lt;p&gt;=&amp;gt; For now, loading times (when server starts up) are quite long. &lt;/p&gt; &lt;p&gt;=&amp;gt; I used to use my own JVM memory arguments by using the USER_MEM_ARGS variable. Now, it's impossible because, &lt;/p&gt; &lt;p&gt;it's already used as an internal variable. I would have liked another variable like SOA_MEM_ARGS and the possibility&lt;/p&gt; &lt;p&gt;to still have the USER_MEM_ARGS var overriding the other values.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bbc5ad2a-4afb-4c85-a718-a2f092d6c569" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/SOA%20Suite%2011g" rel="tag"&gt;SOA Suite 11g&lt;/a&gt;,&lt;a href="http://technorati.com/tags/first%20look" rel="tag"&gt;first look&lt;/a&gt;,&lt;a href="http://technorati.com/tags/jdeveloper11g" rel="tag"&gt;jdeveloper11g&lt;/a&gt;,&lt;a href="http://technorati.com/tags/weblogic%20server%2011g" rel="tag"&gt;weblogic server 11g&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-2370127031652275497?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/2370127031652275497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=2370127031652275497' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/2370127031652275497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/2370127031652275497'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/04/soa-suite-11g-first-quick-look.html' title='SOA Suite 11g : first quick look'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_bayCgqm3V20/SfDnYGpHKCI/AAAAAAAABRo/jM6idiXbCb0/s72-c/domain_thumb2.jpg?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-4555040414210428139</id><published>2009-04-24T00:03:00.001+02:00</published><updated>2009-04-24T00:03:03.120+02:00</updated><title type='text'>Building a high available and scalable architecture with WebLogic Server</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;h6&gt;&lt;/h6&gt; &lt;p&gt;For once, I'd like to talk about general points. As fas as I know, I still haven't seen any process&lt;/p&gt; &lt;p&gt;that has been respecting all these simple rules.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Determine the target&lt;/h2&gt; &lt;p&gt;Define your capacity planning.&lt;/p&gt; &lt;p&gt;What kind of business are you dealing with ?&lt;/p&gt; &lt;p&gt;Is it fault tolerant ?&lt;/p&gt; &lt;p&gt;Is there money involved ?&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Your application&lt;/h2&gt; &lt;p&gt;First of all, make sure you know what EAI, ETL, SOA and so on refer to.&lt;/p&gt; &lt;p&gt;Because before you build your house, you'd better know what tools exist &amp;amp; could help you.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Designing your application&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Separation of concern (a layer per function)&lt;/p&gt; &lt;p&gt;Use design patterns where applicable&lt;/p&gt; &lt;p&gt;Make your developpers write the documentation when they're coding. Else, you'll get some unmaintainable code.&lt;/p&gt; &lt;p&gt;Be sure that each class has its unit test !&lt;/p&gt; &lt;p&gt;No custom database access, use a connection pool.&lt;/p&gt; &lt;p&gt;Think beyond the scope of your application : are there some business services which &lt;a href="http://www.oracle.com/technology/pub/articles/bechara_reusable_service.html" target="_blank"&gt;could be reused later&lt;/a&gt; ?&lt;/p&gt; &lt;p&gt;Choose the technology that fits your needs (webservices are not THE ULTIMATE solution)&lt;/p&gt; &lt;p&gt;For instance, don't use Hibernate if you can't use it or tune it properly. Prefer a custom DAO layer if you feel more comfortable with it.&lt;/p&gt; &lt;p&gt;Generally, don't use a tool / framework just because it's cool or trendy. Take it if you really need it and &lt;/p&gt; &lt;p&gt;understand what it can bring to you.&lt;/p&gt; &lt;p&gt;Dependency injection : why not if you master the framework you're using.&lt;/p&gt; &lt;p&gt;What kind of data is going to be exchanged between your application and 3rd party app ? (size, protocol, frequence)&lt;/p&gt; &lt;p&gt;Do you need to manipulate huge loads of data ?&lt;/p&gt; &lt;p&gt;Make some POCs !!! And compare performance measures !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Tuning your application for production use&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Prefer the request scope instead of session : it will help keeping your session light.&lt;/p&gt; &lt;p&gt;Make all the session objects serializable and don't forget to use "transient" objets where applicable.&lt;/p&gt; &lt;p&gt;Your session should not exceed 35kb (for a good replication performance)&lt;/p&gt; &lt;p&gt;Think about packaging. Don't forget that some people are going to manage your application ! Eventually, use &lt;a href="http://m-button.blogspot.com/2008/08/how-to-use-deployment-plan.html" target="_blank"&gt;deployment plans&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Defining WorkManagers&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Even if you don't want to use them for now, define one for each subcomponent (webapp / EJB). &lt;/p&gt; &lt;p&gt;When starting, if WLS doesn't find it, it will use the default : you'll still be able to use them later.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;a href="http://m-button.blogspot.com/2008/09/how-to-deploy-hudson-on-weblogic.html" target="_blank"&gt;Continuous Integration&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Think about Maven !&lt;/p&gt; &lt;p&gt;Be sure that your code can be compiled EVERY DAY ! Use reports to detect as early as possible&lt;/p&gt; &lt;p&gt;the cyclomatic complexity, the lack of documentation, unit tests coverage and so on.&lt;/p&gt; &lt;p&gt;When integrating a new version, start from scratch : no iterative delivery.&lt;/p&gt; &lt;p&gt;You can even scratch your install and reinstall it from the beginning : a good way to know if you're at ease with WLST :)&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&amp;nbsp; &lt;p&gt;&lt;/p&gt; &lt;h2&gt;Your architecture&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Which frontend ?&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Choose a configuration with a minimum intelligence (WebServer + WLS Plugin)&lt;/p&gt; &lt;p&gt;If you plan using a hardware load-balancer, make sure it handles passive cookies and that you have someone in your team&lt;/p&gt; &lt;p&gt;who knows how it works and how to configure it.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;/h3&gt; &lt;h3&gt;&lt;u&gt;How many managed servers ?&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Depends on the capacity planning.&lt;/p&gt; &lt;p&gt;Should involve several physical machines, to have better SLA and/or handle a hardware crash.&lt;/p&gt; &lt;p&gt;You may think about setting up a MAN or WAN if needed (site disaster).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Security configuration (SSL, Authentication, Connection Filters ...) ?&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Set some connection filters to avoid man-in-the-middle attacks.&lt;/p&gt; &lt;p&gt;Use SSL if your data is important and must be encrypted but change the DemoCertificates &amp;amp; Keystores.&lt;/p&gt; &lt;p&gt;Remember that SSL has an impact on performance.&lt;/p&gt; &lt;p&gt;SSL might not be sufficient : use a &lt;a href="http://www.oracle.com/technology/pub/articles/damo-howto.html?_template=/ocom/print" target="_blank"&gt;real authentication&lt;/a&gt; if needed.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Creating your WebLogic domain&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Admin Server&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Chose a (free) default port and determine if you wish to dedicate a &lt;a href="http://e-docs.bea.com/wls/docs103/config_wls/network.html#AdministrationChannel" target="_blank"&gt;port for administration traffic&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Template and &lt;/u&gt;&lt;a href="http://edocs.bea.com/wls/docs103/config_scripting/using_WLST.html" target="_blank"&gt;WLST&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Don't forget to industrialize your building. If you have to setup a new configuration at once, &lt;/p&gt; &lt;p&gt;it will spare you a lot of time.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Managed Servers&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://edocs.bea.com/common/docs103/pack/commands.html" target="_blank"&gt;Pack / Unpack&lt;/a&gt; commands to export / import the domain on different machines. (it's like a zip but without the unnecessary files).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Setting up a &lt;/u&gt;&lt;a href="http://m-button.blogspot.com/2008/09/understanding-wls-10-clustering.html" target="_blank"&gt;cluster&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Use multicast only for backward compatibility. &lt;/p&gt; &lt;p&gt;Else Oracle recommends strongly the use of Unicast&lt;/p&gt; &lt;p&gt;Don't forget about the cluster address (even if WLS is completing it for you, it's good to know which servers are&lt;/p&gt; &lt;p&gt;defined in your cluster).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Creating your own certificates&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Using keytool, &lt;a href="http://m-button.blogspot.com/2008/11/how-to-configure-weblogic-to-use-ssl.html" target="_blank"&gt;manage your own certificates and keystores&lt;/a&gt; (trust &amp;amp; identity).&lt;/p&gt; &lt;p&gt;Once you've got your CSR, use a CA or make your own.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Setting up the NodeManager (machines)&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;I'm going to quote official documentation as it's very detailed.&lt;/p&gt; &lt;p&gt;&lt;a title="http://edocs.beasys.com/wls/docs103/nodemgr/nodemgr_config.html" href="http://edocs.beasys.com/wls/docs103/nodemgr/nodemgr_config.html"&gt;http://edocs.beasys.com/wls/docs103/nodemgr/nodemgr_config.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&amp;nbsp;&lt;/h3&gt; &lt;h2&gt;Tuning your domain performance&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Defining relevant &lt;/u&gt;&lt;a href="http://m-button.blogspot.com/2008/07/changing-server-log-level-with-wlst.html" target="_blank"&gt;log levels&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;No debug on a production server. By cutting out the unnecessary I/O, you'll gain performance and limit the risks of a "disk "quota exceeded".&lt;/p&gt; &lt;p&gt;Keep the logs on a dedicated file system, so that when they dwell, they do not crash the whole system.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Enabling Native I/O&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Sounds obvious, but a native &lt;a href="http://m-button.blogspot.com/2008/08/how-does-weblogic-handle-socket-muxers.html" target="_blank"&gt;socketmuxer&lt;/a&gt; can give you a large performance gain.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Configuring session replication&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Depends if you have to, but if it's the case, be sure your session isn't too big, and that all the objects you want to replicate are serializable.&lt;/p&gt; &lt;p&gt;Chose wisely your replication group.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Tuning the thread pool&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;The thread pool has to be defined to a sufficient initial value (default is one and is obviously not enough).&lt;/p&gt; &lt;p&gt;Adjust &lt;a href="http://m-button.blogspot.com/2009/02/tuning-default-workmanager-on-weblogic.html" target="_blank"&gt;this parameter&lt;/a&gt; according to the test results you got from your load tests.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Tuning the connection pool&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;One good way to size your connection pool is once again linked to the capacity planning. In a word, you have to put a quite high number&lt;/p&gt; &lt;p&gt;of connections. You launch a stress test and then you take a look at the max number of connections that were created. &lt;/p&gt; &lt;p&gt;It will give you the right number.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Configuring Panic &amp;amp; &lt;/u&gt;&lt;a href="http://m-button.blogspot.com/2008/11/how-to-manage-server-overload-thanks-to.html" target="_blank"&gt;Overload&lt;/a&gt;&lt;u&gt; modes&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;By default, no action is performed on an OOME and on stuck threads. So far, you can't do a lot of things, but it's better than nothing.&lt;/p&gt; &lt;p&gt;If your server faces a OOME (Out Of Memory Exception), you may request it to shut down. That way, if a NodeManager is up,&lt;/p&gt; &lt;p&gt;it can start your server up again. The main con is that you may not be aware of a server failure as it is fully automated.&lt;/p&gt; &lt;p&gt;Same thing for stuck threads : you can either chose to shut the instance down or switch it to an admin mode, that is to say,&lt;/p&gt; &lt;p&gt;serving only administration requests, for the time threads get unstuck.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&amp;nbsp;&lt;/h3&gt; &lt;h2&gt;Monitoring (optional but recommended)&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;JConsole&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Starting with JVM 1.5, Sun has shipped with its JVM a very nice tool to monitor and supervize a JVM : the JConsole.&lt;/p&gt; &lt;p&gt;&lt;a title="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html" href="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html"&gt;http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;JRockit Mission Control&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;BEA and now Oracle has its own JVM : JRockit. And the team (hi swedish fellows !) has developped a very cool tool as well.&lt;/p&gt; &lt;p&gt;It allows to monitor what's happening on your JVM, but can also record any activity for a later analysis.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;WLDF&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;Built-in (and then free) tool to replace the "8.1 Performance Tab". &lt;/p&gt; &lt;p&gt;You can choose to monitor all the MBeans exposed by WebLogic Server, that is to say, almost everything !&lt;/p&gt; &lt;p&gt;&lt;a title="http://e-docs.bea.com/wls/docs103/wldf_configuring/understand_wldf_config.html" href="http://e-docs.bea.com/wls/docs103/wldf_configuring/understand_wldf_config.html"&gt;http://e-docs.bea.com/wls/docs103/wldf_configuring/understand_wldf_config.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And you may instrument your code as well, as explained in &lt;a href="http://m-button.blogspot.com/2008/11/using-wldf-to-trace-time-taken-by-your.html" target="_blank"&gt;one of my previous posts&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;SNMP&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;The use of external tools such as Nagios, Cacto, Tivoli or Mercury BAC is possible with the activation of SNMP.&lt;/p&gt; &lt;p&gt;&lt;a title="http://edocs.beasys.com/wls/docs103/snmpman/index.html" href="http://edocs.beasys.com/wls/docs103/snmpman/index.html"&gt;http://edocs.beasys.com/wls/docs103/snmpman/index.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;&lt;u&gt;Oracle Enterprise Manager&lt;/u&gt;&lt;/h3&gt; &lt;p&gt;&lt;a title="http://www.oracle.com/enterprise_manager/index.html" href="http://www.oracle.com/enterprise_manager/index.html"&gt;http://www.oracle.com/enterprise_manager/index.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Summary : Application Delivery Process&lt;/h2&gt; &lt;p&gt;It sounds obvious but it's not often the case : your application must follow a lifecycle such as :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;=&amp;gt; Development / Unit Testing  &lt;li&gt;=&amp;gt; Integration (continuous) : build from scratch the application and make sure it deploys correctly and works.  &lt;li&gt;=&amp;gt; FuncTest : Play &lt;strong&gt;all&lt;/strong&gt; the scenarii that are going to be played by users.  &lt;li&gt;=&amp;gt; Benchmark : Once the application is approved : determine the capacity planning and perform  &lt;li&gt;stress tests (very high charge on a short timeline) &amp;amp; load tests (110% of your estimated charge on a large timeline)  &lt;li&gt;=&amp;gt; PreProduction : Deployment on this environment as if it were the final production environment.  &lt;li&gt;=&amp;gt; GO-LIVE : Two options.  &lt;ul&gt; &lt;li&gt;Either you apply the same procedure you did for the PreProduction (with a nightly shutdown for instance)  &lt;li&gt;Or you switch the roles and make the PreProduction become the Production and vice-versa.  &lt;li&gt;Or best solution, you have two clusters with a load-balancer which is going to perform a "graceful migration".&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6d44628e-2163-4bad-9ef2-72bc5ab375b8" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/best%20practices" rel="tag"&gt;best practices&lt;/a&gt;,&lt;a href="http://technorati.com/tags/weblogic" rel="tag"&gt;weblogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/J2EE" rel="tag"&gt;J2EE&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Java%20EE" rel="tag"&gt;Java EE&lt;/a&gt;,&lt;a href="http://technorati.com/tags/lifecycle" rel="tag"&gt;lifecycle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/production" rel="tag"&gt;production&lt;/a&gt;,&lt;a href="http://technorati.com/tags/developpement" rel="tag"&gt;developpement&lt;/a&gt;,&lt;a href="http://technorati.com/tags/continuous%20integration" rel="tag"&gt;continuous integration&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-4555040414210428139?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/4555040414210428139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=4555040414210428139' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/4555040414210428139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/4555040414210428139'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/04/building-high-available-and-scalable.html' title='Building a high available and scalable architecture with WebLogic Server'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-156518823426028811</id><published>2009-03-27T23:36:00.001+01:00</published><updated>2009-03-27T23:36:07.597+01:00</updated><title type='text'>WLI : JTA Timeout at about 300 seconds ?</title><content type='html'>&lt;p&gt;I've been fighting against WLI on that matter for the last two days.&lt;/p&gt; &lt;p&gt;In the beginning, when I saw that stacktrace : &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;27 mars 2009 12 h 38 IRST&amp;gt; &amp;lt;Error&amp;gt; &amp;lt;WLW&amp;gt; &amp;lt;000000&amp;gt; &amp;lt;Exception processing &lt;em&gt;myProcess&lt;/em&gt;&lt;br&gt;javax.transaction.TransactionRolledbackException: EJB Exception: : javax.transaction.TransactionRolledbackException: EJB Exception: :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;font color="#ff0000"&gt;weblogic.transaction.internal.TimedOutException: Transaction timed out after 303 seconds&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;BEA1-0141042BE78F2733AB68&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.transaction.internal.ServerTransactionImpl.wakeUp(ServerTransactionImpl.java:1600)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.transaction.internal.ServerTransactionManagerImpl.processTimedOutTransactions(ServerTransactionManagerImpl.java:1147)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.transaction.internal.TransactionManagerImpl.wakeUp(TransactionManagerImpl.java:1882)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.transaction.internal.ServerTransactionManagerImpl.wakeUp(ServerTransactionManagerImpl.java:1064)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.transaction.internal.WLSTimer.trigger(WLSTimer.java:31)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.time.common.internal.ScheduledTrigger.run(ScheduledTrigger.java:243)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:229)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:223)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;I thought to myself "This is pretty much annoying, but I guess I can handle that !".  &lt;p&gt;And I started to change the JTA parameters in the console :  &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/Sc1UySb2xuI/AAAAAAAABRQ/6kQI6UVVxaQ/s1600-h/image2.png"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/Sc1UzP1QV1I/AAAAAAAABRU/hpTU4KjSVds/s1600-h/image6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="206" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/Sc1U0IfBm2I/AAAAAAAABRY/wyvIUNBXioc/image_thumb2.png?imgmax=800" width="508" border="0"&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;em&gt;But it didn't change a thing ...&lt;/em&gt;  &lt;p&gt;Eureka ! It's got to be something related to the EJB as said in the error message.  &lt;p&gt;I then exploded (oh yeah) all my Event Generators (embodied by EJBs) and updated the weblogic DD such as :  &lt;p&gt;&amp;nbsp; &lt;blockquote&gt; &lt;p&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br&gt;&amp;lt;!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN" "&lt;a href="http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd&amp;quot;"&gt;http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd"&lt;/a&gt;&amp;gt;  &lt;p&gt;&amp;lt;weblogic-ejb-jar&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;weblogic-enterprise-bean&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ejb-name&amp;gt;CoctosExportCockpitJMSEventGenerator&amp;lt;/ejb-name&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;message-driven-descriptor&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;pool&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;max-beans-in-free-pool&amp;gt;15&amp;lt;/max-beans-in-free-pool&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;initial-beans-in-free-pool&amp;gt;15&amp;lt;/initial-beans-in-free-pool&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/pool&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;destination-jndi-name&amp;gt;jms.coctos.export.cockpitQueue&amp;lt;/destination-jndi-name&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/message-driven-descriptor&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;transaction-descriptor&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;trans-timeout-seconds&amp;gt;&lt;font color="#ff0000"&gt;3600&lt;/font&gt;&amp;lt;/trans-timeout-seconds&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/transaction-descriptor&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/weblogic-enterprise-bean&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;disable-warning&amp;gt;BEA-010001&amp;lt;/disable-warning&amp;gt; &amp;lt;!-- EJB class loaded from system CL --&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;disable-warning&amp;gt;BEA-010054&amp;lt;/disable-warning&amp;gt; &amp;lt;!-- EJB class loaded from system CL (ejbc) --&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;disable-warning&amp;gt;BEA-010200&amp;lt;/disable-warning&amp;gt; &amp;lt;!-- EJB class contains static member --&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;disable-warning&amp;gt;BEA-010202&amp;lt;/disable-warning&amp;gt; &amp;lt;!-- Call-by-reference disabled --&amp;gt;&lt;br&gt;&amp;lt;/weblogic-ejb-jar&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp; &lt;p&gt;&lt;em&gt;But it didn't change a thing ...&lt;/em&gt;  &lt;p&gt;I was a bit disappointed and lost because, to me, I had done all that was in my power.  &lt;p&gt;Thanks to Google (once again), I finally reached an &lt;a href="http://e-docs.bea.com/wli/docs102/bestpract/quickref.html#wp1081140" target="_blank"&gt;interesting page&lt;/a&gt; saying :  &lt;p&gt;"The default timeout period for a transaction is 300 seconds (5 minutes)."  &lt;p&gt;&amp;nbsp; &lt;p&gt;Oh gush ! Exactly what I was trying to figure out for two days !!!  &lt;p&gt;So, what am I to do to get rid of that exception ??? (thrill)  &lt;p&gt;&amp;nbsp; &lt;p&gt;Well, it's no big deal, but this option is not easily findable :  &lt;p&gt;Take your process project and locate the directory WEB-INF :  &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/Sc1U09IKp2I/AAAAAAAABRc/UCtgA5yggB0/s1600-h/image9.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="152" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/Sc1U1gM3CLI/AAAAAAAABRg/Jie6UoaFHoc/image_thumb3.png?imgmax=800" width="176" border="0"&gt;&lt;/a&gt;  &lt;p&gt;&amp;nbsp; &lt;p&gt;In that directory, you''ll find a &lt;strong&gt;wlw-config.xml&lt;/strong&gt; file.  &lt;p&gt;That's this file you'll have to modify to change the JTA timeout.  &lt;p&gt;&lt;u&gt;Example&lt;/u&gt; :  &lt;p&gt;&amp;nbsp; &lt;blockquote&gt; &lt;p&gt;&amp;lt;wlw-config xmlns="&lt;a href="http://www.bea.com/2003/03/wlw/config/&amp;quot;"&gt;http://www.bea.com/2003/03/wlw/config/"&lt;/a&gt;&amp;gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;transaction-timeout&amp;gt;3600&amp;lt;/transaction-timeout&amp;gt;&lt;br&gt;&amp;lt;/wlw-config&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;And voilà ! But be sure you understand the use of wlw-config.xml and wlw-runtime-config.xml.  &lt;p&gt;Quoting Oracle : Note that the values appearing in wlw-config.xml are hardcoded into the deployment EAR and cannot be overridden by other runtime configuration mechanisms.  &lt;p&gt;For most cases you should use &lt;a href="http://e-docs.bea.com/"&gt;wlw-runtime-config.xml&lt;/a&gt; to configure the runtime information for your Workshop application.  &lt;p&gt;&amp;nbsp; &lt;p&gt;Hope that helped !  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2a09723f-010b-4811-9eaa-4e30c3aa494b" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/wli" rel="tag"&gt;wli&lt;/a&gt;,&lt;a href="http://technorati.com/tags/weblogic" rel="tag"&gt;weblogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/jta" rel="tag"&gt;jta&lt;/a&gt;,&lt;a href="http://technorati.com/tags/timeout" rel="tag"&gt;timeout&lt;/a&gt;,&lt;a href="http://technorati.com/tags/300%20seconds" rel="tag"&gt;300 seconds&lt;/a&gt;,&lt;a href="http://technorati.com/tags/300" rel="tag"&gt;300&lt;/a&gt;,&lt;a href="http://technorati.com/tags/wlw-config.xml" rel="tag"&gt;wlw-config.xml&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-156518823426028811?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/156518823426028811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=156518823426028811' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/156518823426028811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/156518823426028811'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/03/wli-jta-timeout-at-about-300-seconds.html' title='WLI : JTA Timeout at about 300 seconds ?'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_bayCgqm3V20/Sc1U0IfBm2I/AAAAAAAABRY/wyvIUNBXioc/s72-c/image_thumb2.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-1420938335479200573</id><published>2009-03-19T15:17:00.001+01:00</published><updated>2009-03-19T15:17:24.317+01:00</updated><title type='text'>Searching on forums.bea.com</title><content type='html'>&lt;p&gt;Who hasn't faced one day a BEA search result leading to a page on forums.bea.com ?&lt;/p&gt; &lt;p&gt;Pretty easy answer : nobody.&lt;/p&gt; &lt;p&gt;Till a couple weeks ago, it was possible to use Google cache to get the desired posts.&lt;/p&gt; &lt;p&gt;But now the cache's expired, it's impossible.&lt;/p&gt; &lt;p&gt;Well, that's what lots of people think but they're mistaken !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Oracle has migrated the whole site onto forums.oracle.com.&lt;/p&gt; &lt;p&gt;Unfortunately, Google hasn't indexed those pages yet. &lt;/p&gt; &lt;p&gt;However, you still can perform a search directly on the site.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;As I like to take care of my readers :) , I've looked for the most direct link, and here it is :&lt;/p&gt; &lt;p&gt;&lt;a title="http://forums.oracle.com/forums/search.jspa?threadID=&amp;amp;q=&amp;amp;objID=c202&amp;amp;dateRange=all&amp;amp;numResults=30&amp;amp;rankBy=10001" href="http://forums.oracle.com/forums/search.jspa?threadID=&amp;amp;q=&amp;amp;objID=c202&amp;amp;dateRange=all&amp;amp;numResults=30&amp;amp;rankBy=10001"&gt;http://forums.oracle.com/forums/search.jspa?threadID=&amp;amp;q=&amp;amp;objID=c202&amp;amp;dateRange=all&amp;amp;numResults=30&amp;amp;rankBy=10001&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Click that link, enter some keywords, and voilà !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ca5473e7-c302-4353-b31f-2cb2e2a69fad" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/forums.bea.com" rel="tag"&gt;forums.bea.com&lt;/a&gt;,&lt;a href="http://technorati.com/tags/forum" rel="tag"&gt;forum&lt;/a&gt;,&lt;a href="http://technorati.com/tags/bea" rel="tag"&gt;bea&lt;/a&gt;,&lt;a href="http://technorati.com/tags/oracle" rel="tag"&gt;oracle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/google" rel="tag"&gt;google&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-1420938335479200573?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/1420938335479200573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=1420938335479200573' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/1420938335479200573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/1420938335479200573'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/03/searching-on-forumsbeacom.html' title='Searching on forums.bea.com'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-8810907513322614379</id><published>2009-03-16T00:25:00.001+01:00</published><updated>2009-03-19T15:20:57.895+01:00</updated><title type='text'>JAX-WS, OSB &amp; BPEL Process Manager : a simple example</title><content type='html'>&lt;p&gt;If you can't wait next summer to know what's going to happen with SOA Suite 11g,&lt;/p&gt; &lt;p&gt;here's a sample to manage your frustration :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Presenting the context&lt;/h1&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The example I've chosen is a quite simple one. Indeed, it's no real case,&lt;/p&gt; &lt;p&gt;just a convenient way to illustrate how the complete chain works.&lt;/p&gt; &lt;p&gt;=&amp;gt; A user wants to go to the movies. He will send the movie title to a webservice&lt;/p&gt; &lt;p&gt;which will route him to the theater where there are the most available seats.&lt;/p&gt; &lt;p&gt;To do that example, I've installed :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;=&amp;gt; OSB 10gR3 / Workshop 10gR3  &lt;li&gt;=&amp;gt; SOA Suite 10g 10.1.3.1.0&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In the end, I'll have three JVMs running :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;=&amp;gt; One for OSB  &lt;li&gt;=&amp;gt; One for WLS (hosting the webservices)  &lt;li&gt;=&amp;gt; One for BPEL Process Manager (OC4J)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Designing some webservices (JAX-WS)&lt;/h1&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;We'll design three webservices, in order to have enough data to process.&lt;/p&gt; &lt;p&gt;Three webservices (one per theater) :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;=&amp;gt; UGB  &lt;li&gt;=&amp;gt; Gomon (GMN)  &lt;li&gt;=&amp;gt; MK3&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/Sb2NTVgGFbI/AAAAAAAABNo/T4LBUgeouWo/s1600-h/image3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="354" alt="Workshop Structure" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2NUXT4RfI/AAAAAAAABNs/Qc-pfzSnWZc/image_thumb1.png?imgmax=800" width="274" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;They all have the same business contract : only the returned result differs from one to another.&lt;/p&gt; &lt;p&gt;You can have a detailed example on how to design a JAX-WS webservice on another blogpost :&lt;/p&gt; &lt;p&gt;&lt;a title="http://m-button.blogspot.com/2008/07/building-jax-rpc-or-jax-ws-webservices.html" href="http://m-button.blogspot.com/2008/07/building-jax-rpc-or-jax-ws-webservices.html"&gt;http://m-button.blogspot.com/2008/07/building-jax-rpc-or-jax-ws-webservices.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;u&gt;Example : the Gomon Webservice&lt;/u&gt;&lt;/p&gt; &lt;p&gt;&lt;u&gt;&lt;/u&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;package fr.mbutton.blog; &lt;/p&gt; &lt;p&gt;import javax.jws.*; &lt;/p&gt; &lt;p&gt;@WebService(targetNamespace="&lt;a href="http://fr.mbutton.blog/gomon&amp;quot;)"&gt;http://fr.mbutton.blog/gomon")&lt;/a&gt;&lt;br&gt;public class CheckAvailability_GMN { &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @WebMethod&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean isMovieStillPlaying(String movieTitle) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @WebMethod&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int getAvailableSeatsForMovie (String movieTitle) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 124;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And here's a sample build.xml for this webservice :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;project name="GMN" basedir="." default="build-webservice"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="dest.dir" value="D:\BEA_ROOT\user_projects\workspaces\osb_bpel\Theaters\EarContent" /&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="build-webservice"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;jwsc srcdir="src" destdir="${dest.dir}"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;jws file="fr/mbutton/blog/CheckAvailability_GMN.java" type="JAXWS" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/jwsc&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/project&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;The execution of the ANT build.xml will create one WAR per webservice. &lt;/p&gt; &lt;p&gt;Then, just deploy the three WARs to your WLS domain and make sure they're all reachable. &lt;/p&gt; &lt;p&gt;To do so, click on each of them : &lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/Sb2NWAs5nwI/AAAAAAAABNw/vM7hoNdGTec/s1600-h/image13.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="266" alt="Webservices Deployments" src="http://lh5.ggpht.com/_bayCgqm3V20/Sb2NXCUXoFI/AAAAAAAABN0/dlJxEQaEUu4/image_thumb9%5B1%5D.png?imgmax=800" width="855" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;And then, once you've clicked on the webservice you want to test, you should see a "Testing" tab. &lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/Sb2NYgsqVZI/AAAAAAAABN4/F5l2bWZRJp0/s1600-h/image17%5B1%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="344" alt="WSDL &amp;amp; Test Client" src="http://lh6.ggpht.com/_bayCgqm3V20/Sb2NZsxCMKI/AAAAAAAABN8/5vO5SQXFzpI/image_thumb11%5B1%5D.png?imgmax=800" width="678" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;You can choose either to show the WSDL or launch a test client. Either way, you'll be sure it's up &amp;amp; running. &lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;h1&gt;Setting up an OSB configuration&lt;/h1&gt; &lt;p&gt;Here's a very simple definition. No extra processing : the proxy service will directly route to the &lt;/p&gt; &lt;p&gt;business service, with no additional computing.&lt;/p&gt; &lt;p&gt;&lt;u&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/u&gt; : If you're working with two separate domains at the same time, I'll advise you to read that article :&lt;/p&gt; &lt;p&gt;&lt;a title="http://m-button.blogspot.com/2009/02/working-with-two-weblogic-domains-on.html" href="http://m-button.blogspot.com/2009/02/working-with-two-weblogic-domains-on.html"&gt;http://m-button.blogspot.com/2009/02/working-with-two-weblogic-domains-on.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;A little remark : if you take a closer look to the generated webservice, and especially to their WSDLs, you'll see&lt;/p&gt; &lt;p&gt;that the XML schema is imported :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt;&lt;pre&gt;&amp;lt;types&amp;gt;&lt;br /&gt;&amp;lt;xsd:schema&amp;gt;&lt;br /&gt;&amp;lt;xsd:import namespace=&lt;a href="http://fr.mbutton.blog/gomon"&gt;http://fr.mbutton.blog/gomon&lt;/a&gt; &lt;/pre&gt;&lt;pre&gt;     schemaLocation="http://192.168.100.1:8001/CheckAvailability_GMN/CheckAvailability_GMNService?xsd=1" /&amp;gt;&lt;br /&gt;&amp;lt;/xsd:schema&amp;gt;&lt;br /&gt;&amp;lt;/types&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In OSB, you'll have to import those schemas separately and then link them to the corresponding webservice.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/Sb2Naod7OYI/AAAAAAAABOA/lmdJepUMJ4c/s1600-h/image21%5B1%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="246" alt="OSB Schemas" src="http://lh5.ggpht.com/_bayCgqm3V20/Sb2Nb3vkDtI/AAAAAAAABOE/VxQorOP8lD8/image_thumb13.png?imgmax=800" width="1071" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Then create as explained above, one business service per webservice exposed, and one proxy service per business service, like :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/Sb2NdHZtgvI/AAAAAAAABOI/UdXqHAwjCCk/s1600-h/image25.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="457" alt="GMN Proxy Service" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2Ne8XKNeI/AAAAAAAABOM/3s2IfoYG5sA/image_thumb15.png?imgmax=800" width="731" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Once everything is correctly set up, test your configuration by trying to reach the proxy services.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To do so, click on a proxy service, it will lead you to this screen :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/Sb2NfxtigFI/AAAAAAAABOQ/u90i9gDyVW8/s1600-h/image29%5B1%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="219" alt="Review PS configuration" src="http://lh6.ggpht.com/_bayCgqm3V20/Sb2NgkvePQI/AAAAAAAABOU/7VR2LjeDWPA/image_thumb17.png?imgmax=800" width="862" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To test it, take your server URL (for example : &lt;a href="http://myserver:7001"&gt;http://myserver:7001&lt;/a&gt;), add the endpoint URI + "?WSDL" and check it you've got something :)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;No need to tell that if you don't, it's not normal, right ?&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h1&gt;Orchestrating webservice calls thanks to BPEL PM&lt;/h1&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Here we go ! Now, we've got three webservices up and running and we applied the mediator pattern thanks to an ESB.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;What we need now is to call the webservices, store the results and return a computed result.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Exactly what BPEL was designed for.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;u&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/u&gt; : former BEA clients used WLI (WebLogic Integration) for the same kind of matter.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;First thing, open JDeveloper and create a new Application (similar to an Eclipse workspace).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/Sb2NhRVZniI/AAAAAAAABOY/Yxj2kp9ml68/s1600-h/image52.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="446" alt="Application creation" src="http://lh6.ggpht.com/_bayCgqm3V20/Sb2Ni2txvhI/AAAAAAAABOc/bNdJmSzgyWE/image_thumb28.png?imgmax=800" width="478" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Once created, add a synchronous BPEL Process Project.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/Sb2NkZmLSyI/AAAAAAAABOg/1DOpXyVsrpo/s1600-h/image51.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="504" alt="BPEL process project type" src="http://lh4.ggpht.com/_bayCgqm3V20/Sb2Nlk2UmzI/AAAAAAAABOk/FB2S4fm7hIk/image_thumb27.png?imgmax=800" width="704" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Next step :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/Sb2NnbHO_0I/AAAAAAAABOo/yt6H84yruj8/s1600-h/image50.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="454" alt="BPEL Process creation" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2NopWr_yI/AAAAAAAABOs/-Ci_b5u-P7g/image_thumb26.png?imgmax=800" width="604" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the application pane, an empty BPEL project is created :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/Sb2NpqoQYOI/AAAAAAAABOw/AtlsMLtVnkQ/s1600-h/image45.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="210" alt="BPEL Structure" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2NqaSUEZI/AAAAAAAABO0/jLf5YnCWDEU/image_thumb23.png?imgmax=800" width="192" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the graphical view, you'll only see two steps (receiveInput &amp;amp; replyOutput) and a partnerLink (client).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/Sb2Nrb2pq4I/AAAAAAAABO4/LrBhmvJu_vg/s1600-h/image49.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="381" alt="BPEL basic process" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2NspfDJrI/AAAAAAAABO8/J70aiWLkP0Y/image_thumb25.png?imgmax=800" width="507" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;First of all, let's modify the name of the BPEL process variables.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To do so, open the associated XSD in Integration Content &amp;gt; Schemas and change element names (in blue) :&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;schema attributeFormDefault="unqualified"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elementFormDefault="qualified"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetNamespace="&lt;a href="http://fr.mbutton.blog&amp;quot;"&gt;http://fr.mbutton.blog"&lt;/a&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns="&lt;a href="http://www.w3.org/2001/XMLSchema&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema"&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;element name="BlogSampleProcessRequest"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;complexType&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sequence&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;element name="&lt;font color="#0000ff"&gt;movieTitle&lt;/font&gt;" type="string"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/sequence&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/complexType&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/element&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;element name="BlogSampleProcessResponse"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;complexType&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sequence&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;element name="&lt;font color="#0000ff"&gt;theaterName&lt;/font&gt;" type="string"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/sequence&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/complexType&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/element&amp;gt;&lt;br&gt;&amp;lt;/schema&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;As we will call three webservices at the same time, we'll need a "Flow" activity.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;(&lt;u&gt;&lt;em&gt;Note &lt;/em&gt;&lt;/u&gt;: BPEL PM does spawn a thread for each branch. Whereas WLI has a flow-like activity, it's not parallel but sequential)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Drag and drop it to the node between the receive and the reply.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/Sb2Nt9J5z-I/AAAAAAAABPA/REhU88tlOos/s1600-h/image56.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="453" alt="Flow" src="http://lh6.ggpht.com/_bayCgqm3V20/Sb2NvKAQjnI/AAAAAAAABPI/Yh3sf9K1fMM/image_thumb30.png?imgmax=800" width="679" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Open the branches. We'll need three branches and in each, a call to a webservice will be performed.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Add an "Invoke" activity in the first branch.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/Sb2Nwc16j_I/AAAAAAAABPM/4yrJODytd-w/s1600-h/image60.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="406" alt="Flow &amp;amp; invoke" src="http://lh6.ggpht.com/_bayCgqm3V20/Sb2Nx4DJOSI/AAAAAAAABPQ/LnGS7owXb3U/image_thumb32.png?imgmax=800" width="772" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We'll have to link that Invoke activity to one of the webservice. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;What you have to know is that any external part to the BPEL process &lt;/p&gt;&lt;br /&gt;&lt;p&gt;is called a "Partner Link" or "Adapter". &lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;PartnerLink (client, webservice)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Adapter (file, JMS message and so on)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;So to create a reference to the webservice, let's create a partnerLink.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Drag and drop a partnerLink service to the right side of the BPEL process. (it's a good practice to keep BPEL process callers &lt;/p&gt;&lt;br /&gt;&lt;p&gt;on the left and BPEL process called partners on the right).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/Sb2NzII6TII/AAAAAAAABPU/KHvO8ezS5F8/s1600-h/image63.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2Nzwg2GtI/AAAAAAAABPY/n6gmm-R6l8U/image_thumb33.png?imgmax=800" width="178" border="0"&gt;&lt;/a&gt; &lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/Sb2N07W9B8I/AAAAAAAABPc/QCNfnPn2P8M/s1600-h/image66.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/Sb2N1l1WoQI/AAAAAAAABPg/RgsruRS5jHM/image_thumb34.png?imgmax=800" width="220" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Once the item is dropped, a popup will show up.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/Sb2N22ypzII/AAAAAAAABPk/V8oQrABrPOE/s1600-h/image70.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="364" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2N3_EGLCI/AAAAAAAABPo/nmohKUU581k/image_thumb36.png?imgmax=800" width="422" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Enter the URL of your webservice and click refresh (circle made of the two blue arrows).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/Sb2N48cEVeI/AAAAAAAABPs/cfolC5NvTKI/s1600-h/image74.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="128" alt="Popup" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2N57lqwFI/AAAAAAAABPw/LYJZxN-yJEY/image_thumb38.png?imgmax=800" width="627" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Accept the proposal.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Draw a line between the invoke action and the partnerLink (you can bind these items differently)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/Sb2N7TJ56UI/AAAAAAAABP0/1iJr-OVaB0M/s1600-h/image81.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="238" alt="Linking invoke &amp;amp; partnerLink" src="http://lh5.ggpht.com/_bayCgqm3V20/Sb2N8F7jrsI/AAAAAAAABP4/6SREdrYP-6o/image_thumb41.png?imgmax=800" width="575" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Choose the operation to invoke and create local variables.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/Sb2N8z3qXhI/AAAAAAAABP8/PpQ0tMJgbnk/s1600-h/image89.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="394" alt="PartnerLink Creation" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2N-hOHL8I/AAAAAAAABQA/9ZbnBWNlRSs/image_thumb45.png?imgmax=800" width="424" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For now, the wiring has been made, but we need to assign the bpel input variable to the webservice input variable.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Just add a Assign activity &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/Sb2N_fq0zTI/AAAAAAAABQE/w1nXCiRZLx8/s1600-h/image93.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="310" alt="Assign" src="http://lh6.ggpht.com/_bayCgqm3V20/Sb2OAaDvbEI/AAAAAAAABQI/GNoRYCqrEOs/image_thumb47.png?imgmax=800" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;and copy the value such as :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/Sb2OBm9VEWI/AAAAAAAABQM/rer7EbqOceA/s1600-h/image97.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="554" alt="Copy operation" src="http://lh6.ggpht.com/_bayCgqm3V20/Sb2OCjOikrI/AAAAAAAABQQ/5bUWN0ds_18/image_thumb49.png?imgmax=800" width="704" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In order to see if our bpel process is working, we'll add another Assign activity which will assign the returned value&lt;/p&gt;&lt;br /&gt;&lt;p&gt;to the client.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/Sb2OEYaqd0I/AAAAAAAABQU/OmDiPdqk-x8/s1600-h/image4%5B1%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="554" alt="Copy operation" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2OGA9FnWI/AAAAAAAABQY/nPzWUsHRE7A/image_thumb1%5B1%5D.png?imgmax=800" width="760" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Of course, this copy isn't right : the returned result represents a number of seats and the client expects a theater name ...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;But it's just for some testing matters.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To build and deploy your BPEL process, edit the build.properties and make sure all the information match your configuration.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;(port/user/password ...)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Right-click the application, chose "Make". Then right-click on the build.xml file and choose "Run Ant Target" &amp;gt; "Deploy".&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Log in to your BPEL console (for me, it's &lt;a title="http://localhost:8888/BPELConsole" href="http://localhost:8888/BPELConsole"&gt;http://localhost:8888/BPELConsole&lt;/a&gt;).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Select your BPEL Process and run the test console. Enter a movie title and notice the result.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It should be something like :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/Sb2OJVNGrGI/AAAAAAAABQc/9aKhpessbDk/s1600-h/image8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="569" alt="BPEL Flow" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2OK1t61BI/AAAAAAAABQg/foh0enC3iuI/image_thumb3.png?imgmax=800" width="652" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Our BPEL process works perfectly.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I won't go deeper in the process and explain how to compare and assign values; you can figure out what to do next&lt;/p&gt;&lt;br /&gt;&lt;p&gt;by yourself and if not, you will find some good references on the Net. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;If you want to learn more, contact Oracle University :)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h1&gt;Exposing the BPEL process through OSB&lt;/h1&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Last but not least, our BPEL process has to be exposed as a webservice. But as we started to use the mediator pattern, &lt;/p&gt;&lt;br /&gt;&lt;p&gt;no way a client can call the BPEL process directly. It has to be called through the ESB.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To do so, create a business service based on the BPEL process WSDL.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To get the WSDL, click on the corresponding tab :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/Sb2OL7PrYrI/AAAAAAAABQk/y1BfwrWw5xc/s1600-h/image12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="397" alt="WSDL &amp;amp; Enpoint URI" src="http://lh4.ggpht.com/_bayCgqm3V20/Sb2ONM1-q_I/AAAAAAAABQo/lE6ha03jUq4/image_thumb5.png?imgmax=800" width="639" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;And in the bus, create a Business Service based on this WSDL.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;u&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/u&gt; : You'll have to create a schema first.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import your schema from the URL (for me it's : &lt;a title="http://mbutton01:8888/orabpel/default/BlogSample/1.0/BlogSample.xsd" href="http://mbutton01:8888/orabpel/default/BlogSample/1.0/BlogSample.xsd"&gt;http://mbutton01:8888/orabpel/default/BlogSample/1.0/BlogSample.xsd&lt;/a&gt;)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Once your WSDL is successfully created, map a business service on it and choose "BPEL 10g" as the transport :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/Sb2OOTmn1wI/AAAAAAAABQs/no2KwCtGHQ0/s1600-h/image16.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/Sb2OPFQ_G3I/AAAAAAAABQw/IgkC6vfwg2w/s1600-h/image20.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="416" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2OP3auPMI/AAAAAAAABQ0/XJL2cacqA9I/image_thumb9.png?imgmax=800" width="621" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For the endpoint URI, use the URL given on the WSDL page, but replace protocol "http" by "opmn".&lt;/p&gt;&lt;br /&gt;&lt;p&gt;On the next screen, chose "Synchronous Client".&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Review and accept the configuration.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/Sb2ORKiWApI/AAAAAAAABQ4/Gf5IyU-5MzM/s1600-h/image24.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="583" alt="Creating the business service for the bpel process" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2OSQmYE6I/AAAAAAAABQ8/BpPgx0fPbGQ/image_thumb11.png?imgmax=800" width="844" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Create a proxy service based on the newly created business service :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/Sb2OTy_H3oI/AAAAAAAABRA/TBplaC2Vlzc/s1600-h/image28.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="452" alt="Creating the BPEL Proxy Service" src="http://lh3.ggpht.com/_bayCgqm3V20/Sb2OVSM8xWI/AAAAAAAABRE/d7MuLcn1hzY/image_thumb13%5B1%5D.png?imgmax=800" width="725" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Test your proxy service and you should have your BPEL process correctly exposed.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/Sb2OXBZcy9I/AAAAAAAABRI/NXtVr24I3a4/s1600-h/image32.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="672" alt="BPEL WSDL exposed" src="http://lh4.ggpht.com/_bayCgqm3V20/Sb2OYU_lrMI/AAAAAAAABRM/2KJe4JWSph8/image_thumb15%5B1%5D.png?imgmax=800" width="613" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cdd009ff-6f0c-4b3a-9934-338ca5bc8534" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/OSB" rel="tag"&gt;OSB&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BPEL" rel="tag"&gt;BPEL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JAX-WS" rel="tag"&gt;JAX-WS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WLS" rel="tag"&gt;WLS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WSDL" rel="tag"&gt;WSDL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JDeveloper" rel="tag"&gt;JDeveloper&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Workshop" rel="tag"&gt;Workshop&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-8810907513322614379?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/8810907513322614379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=8810907513322614379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/8810907513322614379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/8810907513322614379'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/03/jax-ws-osb-bpel-process-manager-simple.html' title='JAX-WS, OSB &amp;amp; BPEL Process Manager : a simple example'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_bayCgqm3V20/Sb2NUXT4RfI/AAAAAAAABNs/Qc-pfzSnWZc/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-3445172499498153684</id><published>2009-02-19T12:17:00.001+01:00</published><updated>2009-02-19T12:17:34.831+01:00</updated><title type='text'>Working with two WebLogic domains on the same machine</title><content type='html'>&lt;p&gt;If, like me, you have from time to time to work with two domains,&lt;/p&gt; &lt;p&gt;here are some tips which may help :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Change the debug port&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Well, that seems obvious, but if you have several servers, each one will have to use a different http port,&lt;/p&gt; &lt;p&gt;a different https port, but also a different debug port (assuming you're in development mode).&lt;/p&gt; &lt;p&gt;I figured out that only a few people know how to SIMPLY change the debug port.&lt;/p&gt; &lt;p&gt;Just add the line "set DEBUG_PORT=XXXX" in your startup script.&lt;/p&gt; &lt;p&gt;Ex : &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;@ECHO OFF &lt;/p&gt; &lt;p&gt;@REM WARNING: This file is created by the Configuration Wizard.&lt;br&gt;@REM Any changes to this script may be lost when adding extensions to this configuration. &lt;/p&gt; &lt;p&gt;SETLOCAL &lt;/p&gt; &lt;p&gt;set DOMAIN_HOME=D:\BEA_ROOT\user_projects\domains\9\sample&lt;br&gt;&lt;font color="#0000ff"&gt;SET DEBUG_PORT=8956&lt;/font&gt;&lt;br&gt;call "%DOMAIN_HOME%\bin\startWebLogic.cmd" %* &lt;/p&gt; &lt;p&gt;ENDLOCAL&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And that's it.&lt;/p&gt; &lt;p&gt;But wait a minute, a debug port is of course useful, but especially with an IDE !&lt;/p&gt; &lt;p&gt;Then, you will have to configure it because it's also listening on the default port.&lt;/p&gt; &lt;p&gt;I won't talk about JDev because I'm not working with it yet. I'll talk about Workshop.&lt;/p&gt; &lt;p&gt;If you take the server configuration in the "Java EE" view, you'll see something like that :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SZ0_tRbn-AI/AAAAAAAABMU/u1I49RCti0g/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="596" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SZ0_t0TrZQI/AAAAAAAABMY/XPj_kyC9ICg/image_thumb%5B1%5D.png?imgmax=800" width="337" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;With a debug port nowhere to be seen.&lt;/p&gt; &lt;p&gt;In fact, you'll have to switch to the Debug View.&lt;/p&gt; &lt;p&gt;And in the debug pane, right-click on your server (it has to be running).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SZ0_uaGDE4I/AAAAAAAABMc/LKhAUGHYv_s/s1600-h/image%5B7%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="504" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SZ0_u-6eAVI/AAAAAAAABMg/oJMGBdKGyYI/image_thumb%5B3%5D.png?imgmax=800" width="505" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And then you'll be able to change that "hidden" option :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SZ0_vNXii3I/AAAAAAAABMk/z63vU2VxGa0/s1600-h/image%5B11%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="394" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SZ0_vkvhJWI/AAAAAAAABMo/iMkZjncnuWU/image_thumb%5B5%5D.png?imgmax=800" width="305" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Change the admin console cookie name&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If&amp;nbsp; you're using Firefox, you may have noticed that it is hard to work with two WebLogic administration consoles at the same time.&lt;/p&gt; &lt;p&gt;It comes from the fact they share the same cookie and then each action on one console will log you out from the other one.&lt;/p&gt; &lt;p&gt;If I'm not mistaken it's possible to change that name &lt;u&gt;only in the 10.3&lt;/u&gt;. To do so, go on the domain page.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SZ0_vzt97kI/AAAAAAAABMs/5wPmMSa5Qvc/s1600-h/image%5B18%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="167" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SZ0_wOw5CLI/AAAAAAAABMw/3M82oeXdMOY/image_thumb%5B8%5D.png?imgmax=800" width="519" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And then click on the "Advanced Section" at the bottom of the page, and you'll see :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SZ0_wnQeO_I/AAAAAAAABM0/SKcFt8hNs4o/s1600-h/image%5B22%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="195" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SZ0_w02SGhI/AAAAAAAABM4/_XkGPvvNW1I/image_thumb%5B10%5D.png?imgmax=800" width="557" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If you have two domains, changing only one cookie name will be sufficient :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Another tip for developers&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Personnally, I find the development feature that consists in an auto-lock for editing really annoying.&lt;/p&gt; &lt;p&gt;If you want to use your IDE to deploy, you may have a message telling you that the deployment can't &lt;/p&gt; &lt;p&gt;be done since an editing session is in progress. I gave a tip based on WLST to stop editing,&lt;/p&gt; &lt;p&gt;but finally, I guess it's better to desactivate this feature.&lt;/p&gt; &lt;p&gt;To do so :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SZ0_xUchyvI/AAAAAAAABM8/7hgH8jchxWs/s1600-h/image%5B31%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="53" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SZ0_xml7z3I/AAAAAAAABNA/7gJ-qcFTWN0/image_thumb%5B15%5D.png?imgmax=800" width="341" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And then :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SZ0_x-ufH9I/AAAAAAAABNE/9nbKhwzTHzo/s1600-h/image%5B26%5D.png"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/SZ0_zGbHneI/AAAAAAAABNI/ewScBKi_Cn4/s1600-h/image%5B30%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="254" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SZ0_znGlhxI/AAAAAAAABNM/u0C2cVuySWE/image_thumb%5B14%5D.png?imgmax=800" width="354" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Desactivate "Automatically Acquire Lock and Activate Changes".&lt;/p&gt; &lt;p&gt;You're now good to go develop :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8014b174-6ec3-4890-ad37-96fb2815e8c1" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/weblogic" rel="tag"&gt;weblogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/debug%20port" rel="tag"&gt;debug port&lt;/a&gt;,&lt;a href="http://technorati.com/tags/eclipse" rel="tag"&gt;eclipse&lt;/a&gt;,&lt;a href="http://technorati.com/tags/workshop" rel="tag"&gt;workshop&lt;/a&gt;,&lt;a href="http://technorati.com/tags/administration%20console%20cookie" rel="tag"&gt;administration console cookie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/auto-lock" rel="tag"&gt;auto-lock&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-3445172499498153684?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/3445172499498153684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=3445172499498153684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/3445172499498153684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/3445172499498153684'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/02/working-with-two-weblogic-domains-on.html' title='Working with two WebLogic domains on the same machine'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_bayCgqm3V20/SZ0_t0TrZQI/AAAAAAAABMY/XPj_kyC9ICg/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-5402001291125781111</id><published>2009-02-03T22:20:00.001+01:00</published><updated>2009-02-03T22:20:01.544+01:00</updated><title type='text'>Navigating among the MBeans with WLST ... Unix-style !</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Lots of clients have been asking : "why is it so complicated to navigate through the MBean trees ?"&lt;/p&gt; &lt;p&gt;By "complicated", they mean the use of functions instead of simple instructions.&lt;/p&gt; &lt;p&gt;Still unclear ? :)&lt;/p&gt; &lt;p&gt;Well, the most obvious example is :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Unix : cd .. / cd Servers  &lt;li&gt;WLST : cd ('..') / cd ('Servers')&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Seen on &lt;a href="http://weblogicserver.blogspot.com/2008/12/easy-syntax-with-wlst.html" target="_blank"&gt;Bala's blog&lt;/a&gt;, a cool (and undocumented) function is available : &lt;strong&gt;easeSyntax()&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Its name speaks for itself : this function aims at making the syntax easier.&lt;/p&gt; &lt;p&gt;It will allow you to type commands as you would do on Unix.&lt;/p&gt; &lt;p&gt;To quit using that simplified syntax, just type once again &lt;strong&gt;easeSyntax()&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And you're done !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:500c7074-df96-4003-b847-1a438d35ea6a" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/wlst" rel="tag"&gt;wlst&lt;/a&gt;,&lt;a href="http://technorati.com/tags/unix" rel="tag"&gt;unix&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cd" rel="tag"&gt;cd&lt;/a&gt;,&lt;a href="http://technorati.com/tags/easeSyntax" rel="tag"&gt;easeSyntax&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-5402001291125781111?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/5402001291125781111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=5402001291125781111' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5402001291125781111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5402001291125781111'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/02/navigating-among-mbeans-with-wlst-unix.html' title='Navigating among the MBeans with WLST ... Unix-style !'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-8733285550578810296</id><published>2009-02-03T00:27:00.001+01:00</published><updated>2009-10-24T00:41:50.836+02:00</updated><title type='text'>Tuning the default WorkManager on WebLogic Server</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If you're not yet familiar with WorkManagers, well, it's time ! :)&lt;/p&gt; &lt;p&gt;With WLS 8, we had the concept of ExecuteQueues, replaced by workmanagers, starting with WLS 9. What's changed ? &lt;/p&gt; &lt;p&gt;Well, it's got self-tuning, allows a large number of SLA combinations and ... well, go read the official documentation about it :)&lt;/p&gt; &lt;p&gt;(Gush, I wanted to point towards E-docs, but it has been finally killed ... RIP ! I'll miss you)&lt;/p&gt; &lt;p&gt;So have a look at &lt;a href="http://www.oracle.com/technology/pub/articles/dev2arch/2006/01/workload-management.html" target="_blank"&gt;this good article&lt;/a&gt; instead.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Playing with the default workmanager&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The default workmanager, as its name tells, is the workmanager defined by default.Thus, all applications deployed on WLS will use it.&lt;/p&gt; &lt;p&gt;One good thing is to first understand how they work, and then define some custom, matching the business rules or SLA you need.&lt;/p&gt; &lt;p&gt;But sometimes, when your application is already in production, it's obvious you can't take your EAR / WAR, update the deployment descriptor(s) and redeploy it.&lt;/p&gt; &lt;p&gt;(well, you could if your app isn't too big, thanks to side-by-side deployment, but that's another story)&lt;/p&gt; &lt;p&gt;But if you're interested, here's &lt;a href="http://download.oracle.com/otn_hosted_doc/wls/redeployment/wls-side-by-side-non-annotation_viewlet_swf.html" target="_blank"&gt;a live demo by my colleague Steve Button&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The default workmanager belongs to a threadpool.&lt;/p&gt; &lt;p&gt;As the initial threadpool comes with only five threads, that's not much.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SYeBY_yhPlI/AAAAAAAABL8/o3VLc9TiCZ8/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SYeBZo-nwKI/AAAAAAAABMA/zVFcCJ33Un4/image_thumb%5B2%5D.png?imgmax=800" width="412" height="457"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If your application has to face a large number of hits, you may want to start with more than that.&lt;/p&gt; &lt;p&gt;Well, that's quite easy. You've got two ways to do so.&lt;/p&gt; &lt;h3&gt;&amp;nbsp;&lt;/h3&gt; &lt;h3&gt;1) Modifying the config.xml&lt;/h3&gt; &lt;p&gt;Just add the following line(s) in your server definition :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;server&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;name&amp;gt;AdminServer&amp;lt;/name&amp;gt;&lt;/p&gt; &lt;p&gt;&amp;lt;&lt;a href="http://download.oracle.com/docs/cd/E11035_01/wls100/schemaref/security/http.www.bea.com.ns.weblogic.920.domain/types/kerneltype.self-tuning-thread-pool-size-min.html" target="_blank"&gt;self-tuning-thread-pool-size-min&lt;/a&gt;&amp;gt;100&amp;lt;/self-tuning-thread-pool-size-min&amp;gt;&lt;/p&gt; &lt;p&gt;&amp;lt;&lt;a href="http://download.oracle.com/docs/cd/E11035_01/wls100/schemaref/security/http.www.bea.com.ns.weblogic.920.domain/types/kerneltype.self-tuning-thread-pool-size-max.html" target="_blank"&gt;self-tuning-thread-pool-size-max&lt;/a&gt;&amp;gt;200&amp;lt;/self-tuning-thread-pool-size-max&amp;gt;&lt;/p&gt; &lt;p&gt;[...]&lt;/p&gt; &lt;p&gt;&amp;lt;/server&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;h3&gt;2) Adding some JVM parameters&lt;/h3&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Personally, that's my favorite option since I don't like when people go in a generated config file&lt;/p&gt; &lt;p&gt;and mess up with tags. If you're sure of what you're doing, that's ok, but it's safer the following way :&lt;/p&gt; &lt;p&gt;add the following option in your command line : &lt;strong&gt;-Dweblogic.threadpool.MinPoolSize=100 &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Observing the result&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Personally, I decided to apply the change by adding the JVM parameter.&lt;/p&gt; &lt;p&gt;To do so, I just updated the startWeblogic script with the USER_MEM_ARGS line.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;@ECHO OFF  &lt;p&gt;@REM WARNING: This file is created by the Configuration Wizard.&lt;br&gt;@REM Any changes to this script may be lost when adding extensions to this configuration.  &lt;p&gt;SETLOCAL  &lt;p&gt;set DOMAIN_HOME=D:\BEA_ROOT\user_projects\domains\essex\ora_bpel&lt;br&gt;&lt;font color="#0000ff"&gt;set USER_MEM_ARGS=-Dweblogic.threadpool.MinPoolSize=100&lt;/font&gt;&lt;br&gt;call "%DOMAIN_HOME%\bin\startWebLogic.cmd" %*  &lt;p&gt;ENDLOCAL&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Reboot WLS and see the option has been taken into account :  &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SYeBad1R4nI/AAAAAAAABME/gbqhdiMCyWA/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SYeBayZqrrI/AAAAAAAABMI/sqWh67Poltw/image_thumb%5B5%5D.png?imgmax=800" width="396" height="94"&gt;&lt;/a&gt;  &lt;p&gt;&amp;nbsp; &lt;p&gt;And finally :  &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SYeBbSnmjuI/AAAAAAAABMM/ki8lPAnnzdc/s1600-h/image%5B13%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/SYeBb21Dd8I/AAAAAAAABMQ/fKwATvjiF9Q/image_thumb%5B7%5D.png?imgmax=800" width="421" height="452"&gt;&lt;/a&gt;  &lt;p&gt;&amp;nbsp; &lt;p&gt;Wasn't so hard, was it ? :)  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ad82d2dd-27cf-4cb0-8711-d598bf205071" class="wlWriterSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/tuning" rel="tag"&gt;tuning&lt;/a&gt;,&lt;a href="http://technorati.com/tags/default%20workmanager" rel="tag"&gt;default workmanager&lt;/a&gt;,&lt;a href="http://technorati.com/tags/weblogic.threadpool.MinPoolSize" rel="tag"&gt;weblogic.threadpool.MinPoolSize&lt;/a&gt;,&lt;a href="http://technorati.com/tags/self-tuning-thread-pool-size-min" rel="tag"&gt;self-tuning-thread-pool-size-min&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-8733285550578810296?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/8733285550578810296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=8733285550578810296' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/8733285550578810296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/8733285550578810296'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/02/tuning-default-workmanager-on-weblogic.html' title='Tuning the default WorkManager on WebLogic Server'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_bayCgqm3V20/SYeBZo-nwKI/AAAAAAAABMA/zVFcCJ33Un4/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-197317319518425527</id><published>2009-02-02T23:32:00.001+01:00</published><updated>2009-02-02T23:32:28.105+01:00</updated><title type='text'>T5000 / CMT CPU and Java operations</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Recently, I discussed with several clients who were planning to or made the switch from their V890 servers to T5000 Sun Server.&lt;/p&gt; &lt;p&gt;If you're considering this change too, please notice that these TX000 servers are excellent for handling heavy loads, &lt;/p&gt; &lt;p&gt;but as their architectures are based on &lt;a href="http://en.wikipedia.org/wiki/Simultaneous_multithreading" target="_blank"&gt;CMT CPU&lt;/a&gt;, simple operations that cannot be parallelized are simply (much) longer.&lt;/p&gt; &lt;p&gt;And unfortunately, when an app server starts, it's a succession of tasks, that were not designed to be simultaneous.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I can tell that a large application, deploying in 5 minutes on a V890 did exceed 20 minutes on a T5000 !&lt;/p&gt; &lt;p&gt;But once the application is deployed, a better behavior has been observed under a strong load, for the T5000. &lt;/p&gt; &lt;p&gt;But, I guess you have to know it before you take that kind of decision ...&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a title="http://blogs.sun.com/Benoit/entry/sap_et_t5000_retour_d" href="http://blogs.sun.com/Benoit/entry/sap_et_t5000_retour_d"&gt;http://blogs.sun.com/Benoit/entry/sap_et_t5000_retour_d&lt;/a&gt; (French)&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.optaros.com/blogs/sun-t2000t5000-and-alfresco-not-good-combination"&gt;http://www.optaros.com/blogs/sun-t2000t5000-and-alfresco-not-good-combination&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:65ad802c-b26a-4fe3-ad0a-42ba21103a3c" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/V890" rel="tag"&gt;V890&lt;/a&gt;,&lt;a href="http://technorati.com/tags/T5000" rel="tag"&gt;T5000&lt;/a&gt;,&lt;a href="http://technorati.com/tags/long%20deployment" rel="tag"&gt;long deployment&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-197317319518425527?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/197317319518425527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=197317319518425527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/197317319518425527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/197317319518425527'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/02/t5000-cmt-cpu-and-java-operations.html' title='T5000 / CMT CPU and Java operations'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-7435449341843741543</id><published>2009-01-04T15:27:00.001+01:00</published><updated>2009-01-04T15:28:48.656+01:00</updated><title type='text'>Configuring Oracle RAC with Oracle WebLogic Server</title><content type='html'>&lt;p&gt;Oracle RAC is the solution to provide high-avaibility to your database. It's based on a active-active cluster.&lt;/p&gt; &lt;p&gt;Even before BEA was bought by Oracle, some &lt;a href="http://edocs.bea.com/wls/docs100/jdbc_admin/oracle_rac.html" target="_blank"&gt;documentation to use RAC with WLS was provided&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;First of all : activating JDBC debug mode on WebLogic&lt;/h1&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;This step is very important since it will enable us to see how WebLogic behaves.&lt;/p&gt; &lt;p&gt;To do so, enable the verbose debug by clicking "JDBC" on the Debug window :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SWDHH0qS3KI/AAAAAAAABLc/lPpzkD_dptg/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="673" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/SWDHIv6TPZI/AAAAAAAABLg/i9hDbYDBFws/image_thumb%5B2%5D.png?imgmax=800" width="879" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;(And don't forget to set the log level to &lt;strong&gt;DEBUG &lt;/strong&gt;on your server)&lt;/p&gt; &lt;p&gt;Then, you should see (with a connection pool composed of 5 connections) :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;gt; CE:test (10) sqlQuery = SELECT 1 FROM DUAL&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;lt; CE:test (40) returns 1&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;gt; CE:test (10) sqlQuery = SELECT 1 FROM DUAL&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;lt; CE:test (40) returns 1&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;gt; CE:test (10) sqlQuery = SELECT 1 FROM DUAL&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;lt; CE:test (40) returns 1&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;gt; CE:test (10) sqlQuery = SELECT 1 FROM DUAL&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;lt; CE:test (40) returns 1&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;gt; CE:test (10) sqlQuery = SELECT 1 FROM DUAL&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Choosing the configuration&lt;/h1&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;BEA | Oracle recommendation : Multipools / Multidatasources&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;As exposed by this picture, the principle of Multidatasources is simple : one pool per database.&lt;/p&gt; &lt;p&gt;And one multidatasource to rule them all :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SWDHKVmCd5I/AAAAAAAABLk/Q65_e51AqGA/s1600-h/clip_image0025.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="476" alt="clip_image002" src="http://lh3.ggpht.com/_bayCgqm3V20/SWDHL8iXWZI/AAAAAAAABLo/sXR9-NTpFAg/clip_image002_thumb2.gif?imgmax=800" width="608" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;But I had a recent discussion with one of my colleague about a behavior I found not normal.&lt;/p&gt; &lt;p&gt;Let's take a concrete example : if you have a connection pool configured like : &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SWDHMj8VBWI/AAAAAAAABLs/4AzlPJyKwAw/s1600-h/image3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="396" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SWDHOnJqB9I/AAAAAAAABLw/RFJWpuNZZ7o/image_thumb1.png?imgmax=800" width="479" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The interesting options here are : &lt;/p&gt; &lt;ul&gt; &lt;li&gt;=&amp;gt; Initial Capacity : 5  &lt;li&gt;=&amp;gt; Test Frequency : 10 (seconds)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;It means that when you start your server, 5 connections will be created. Fine&lt;/p&gt; &lt;p&gt;And the "Test Frequency" allows to test periodically if the connections in the pool are OK.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt; : the other test option is to enable the "Test Connections On Reserve" option which will test a connection &lt;/p&gt; &lt;p&gt;prior to be given to a client : be aware that it will increase dramatically the number of hits on the database !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If the database crashes, the pool will automatically destroy the bad connections, thanks to the pool testing options.&lt;/p&gt; &lt;p&gt;What when the database comes back ? Well, your connection pool will recreate only one connection.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Error&amp;gt; &amp;lt;JDBC&amp;gt; &amp;lt;BEA-001112&amp;gt; &amp;lt;Test "SELECT 1 FROM DUAL" set up for pool "JDBC Data Source-0" &lt;/p&gt; &lt;p&gt;failed with exception: "java.sql.SQLRecoverableException: Il n'y a plus de données à lire dans le socket".&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;lt;* CE:test (30) returns -1&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCConn&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt;ConnectionEnv.cleanup, &lt;a href="mailto:jconn=oracle.jdbc.driver.T4CConnection@131e51d"&gt;jconn=oracle.jdbc.driver.T4CConnection@131e51d&lt;/a&gt;, &lt;/p&gt; &lt;p&gt;isXA=false, isJTS=false, jconn.isolationLevel=2, initialIsolationLevel=2, dirtyIsolationLevel=false&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Info&amp;gt; &amp;lt;JDBC&amp;gt; &amp;lt;BEA-001128&amp;gt; &amp;lt;Connection for pool "JDBC Data Source-0" closed.&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Info&amp;gt; &amp;lt;JDBC&amp;gt; &amp;lt;BEA-001067&amp;gt; &amp;lt;Connection for pool "JDBC Data Source-0" refreshed.&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;gt; CE:initialize (10)&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;lt; CE:initialize (20) returns&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;gt; CE:test (10) sqlQuery = SELECT 1 FROM DUAL&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;gt; CE:test (10) sqlQuery = SELECT 1 FROM DUAL&amp;gt;&lt;br&gt;&amp;lt;30 oct. 2008 16 h 03 CET&amp;gt; &amp;lt;Debug&amp;gt; &amp;lt;JDBCInternal&amp;gt; &amp;lt;BEA-000000&amp;gt; &amp;lt; &amp;lt; CE:test (40) returns 1&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;It's not a bug, it's a feature :) &lt;/p&gt; &lt;p&gt;Seriously, this behavior is WAD (works as designed) : the reason is that a simultaneaous connection creations can be very power consuming.&lt;/p&gt; &lt;p&gt;Then if a rush is in progress, that creation could impact the working users. BEA decided that was not acceptable.&lt;/p&gt; &lt;p&gt;Connections are then recreated when requested.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;TAF&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;As TAF requires the use of an OCI Driver, which is NOT supported by WebLogic, the use of that method is impossible.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;CTF / FCF&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I personnally have a preference for &lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/java.102/b14355/fstconfo.htm#CIHJBFFC" target="_blank"&gt;Fast Connection Failover&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;First, you have to configure ONS (Oracle Name Service) since it's not (yet) shipped within WLS (as it's the case with IAS).&lt;/p&gt; &lt;p&gt;You will have to download and install it. (&lt;a href="http://metalink.oracle.com/" target="_blank"&gt;Metalink&lt;/a&gt; 553806.1).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;With that connection mode, you simply have to configure the connection URL like :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;jdbc:oracle:thin:@(DESCRIPTION=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ADDRESS=(PROTOCOL=TCP)(HOST=&lt;font color="#0000ff"&gt;host1&lt;/font&gt;)(PORT=&lt;font color="#0000ff"&gt;1521&lt;/font&gt;))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ADDRESS=(PROTOCOL=TCP)(HOST=&lt;font color="#0000ff"&gt;host2&lt;/font&gt;)(PORT=&lt;font color="#0000ff"&gt;1521&lt;/font&gt;))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (FAILOVER=&lt;font color="#0000ff"&gt;off&lt;/font&gt;)(LOAD_BALANCE=&lt;font color="#0000ff"&gt;on&lt;/font&gt;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=&lt;font color="#0000ff"&gt;RAC&lt;/font&gt;))) &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And the properties like :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;ods.ONSConfiguration("nodes=&lt;font color="#0000ff"&gt;host1&lt;/font&gt;:&lt;font color="#0000ff"&gt;5000&lt;/font&gt;,&lt;font color="#0000ff"&gt;host2&lt;/font&gt;:&lt;font color="#0000ff"&gt;5000&lt;/font&gt;")&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;But if you set a property like that, as &lt;a href="http://edocs.bea.com/wls/docs100/jdbc_admin/oracle_rac.html#wp1084441" target="_blank"&gt;stated in the official documentation&lt;/a&gt;, you will have a little surprise.&lt;/p&gt; &lt;p&gt;You may end with a configuration file like that :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;property&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;name&amp;gt;ods.ONSConfiguration("nodes&amp;lt;/name&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;value&amp;gt;&lt;font color="#0000ff"&gt;host1:5000&lt;/font&gt;,&lt;font color="#0000ff"&gt;host2:5000&lt;/font&gt;")&amp;lt;/value&amp;gt;&lt;br&gt;&amp;lt;/property&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;In order to have a proper value, type instead : &lt;strong&gt;ods.ONSConfiguration=nodes=machine01:port,machine02:port&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;And it should give the following result in your configuration file : &lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;blockquote&gt; &lt;p&gt;&amp;lt;property&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;name&amp;gt;ods.ONSConfiguration&amp;lt;/name&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;value&amp;gt;nodes=&lt;font color="#0000ff"&gt;host1:5000&lt;/font&gt;,&lt;font color="#0000ff"&gt;host2:5000&lt;/font&gt;&amp;lt;/value&amp;gt;&lt;br&gt;&amp;lt;/property&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;h1&gt;Configuration Choice&lt;/h1&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;Well, there is no good answer to that question, since each architecture &amp;amp; associated needs are different. &lt;/p&gt; &lt;p&gt;You will have to experiment it by yourself. Play with your configuration, make some load tests. &lt;/p&gt; &lt;p&gt;Crash the database, keep an eye on transactions, check if the way failover is handled fits your needs, etc.&lt;/p&gt; &lt;p&gt;Then you should be able to determine which one fits best your architecture. &lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;h1&gt;Tips for testing the behavior&lt;/h1&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;From an Oracle point of view, simply type the following command in your favorite SQL prompt :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;select sid, serial#, schemaname, program from v$session where schemaname = 'SAMPLE'&lt;/strong&gt; (where SAMPLE is the name of your schema)&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;It should display something like :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;SID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SERIAL#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCHEMANAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROGRAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;---------------------- ---------------------- ------------------------------ ---------------------------------------------------------------- &lt;br&gt;19&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQL Developer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JDBC Thin Client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;22&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JDBC Thin Client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;24&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JDBC Thin Client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;26&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JDBC Thin Client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;27&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JDBC Thin Client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt; : if you want to kill a session, you have to type that command : &lt;strong&gt;alter system kill session 'sid,serial#' IMMEDIATE;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt; : If during your stress test you encountered an error saying the number of database connections is too high, just type the command :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;ALTER SYSTEM SET SESSIONS = 226 SCOPE = SPFILE&lt;/strong&gt;&lt;br&gt;(SCOPE = SPFILE / MEMORY / BOTH) (SPFile has to be binary)&amp;nbsp; &lt;/p&gt; &lt;p&gt;and where 226 is the number of simultaneous connections you want &lt;/p&gt; &lt;p&gt;More information at page 28 &lt;a href="http://www.oracle.com/technology/books/pdfs/sample%20chapter1459.pdf" target="_blank"&gt;of this pdf&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1fbb526b-fb33-4f0f-ab18-5fc5dff26407" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/welogic" rel="tag"&gt;welogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/oracle%20rac" rel="tag"&gt;oracle rac&lt;/a&gt;,&lt;a href="http://technorati.com/tags/load-balancing" rel="tag"&gt;load-balancing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/failover" rel="tag"&gt;failover&lt;/a&gt;,&lt;a href="http://technorati.com/tags/v$session" rel="tag"&gt;v$session&lt;/a&gt;,&lt;a href="http://technorati.com/tags/spfile" rel="tag"&gt;spfile&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-7435449341843741543?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/7435449341843741543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=7435449341843741543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/7435449341843741543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/7435449341843741543'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/01/configuring-oracle-rac-with-oracle.html' title='Configuring Oracle RAC with Oracle WebLogic Server'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_bayCgqm3V20/SWDHIv6TPZI/AAAAAAAABLg/i9hDbYDBFws/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-2801901303424324219</id><published>2009-01-04T14:52:00.001+01:00</published><updated>2009-01-04T14:52:00.557+01:00</updated><title type='text'>Happy New Year !!!</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;I wish you all the best for this new year ! &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt; &lt;object id="ecard6_english" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="315" width="500" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"&gt;&lt;param name="_cx" value="13229"&gt;&lt;param name="_cy" value="8334"&gt;&lt;param name="FlashVars" value=""&gt;&lt;param name="Movie" value="http://www.oracle.com/greeting_cards/swf/ecard6_english.swf"&gt;&lt;param name="Src" value="http://www.oracle.com/greeting_cards/swf/ecard6_english.swf"&gt;&lt;param name="WMode" value="Window"&gt;&lt;param name="Play" value="0"&gt;&lt;param name="Loop" value="-1"&gt;&lt;param name="Quality" value="High"&gt;&lt;param name="SAlign" value=""&gt;&lt;param name="Menu" value="-1"&gt;&lt;param name="Base" value=""&gt;&lt;param name="AllowScriptAccess" value="sameDomain"&gt;&lt;param name="Scale" value="ShowAll"&gt;&lt;param name="DeviceFont" value="0"&gt;&lt;param name="EmbedMovie" value="0"&gt;&lt;param name="BGColor" value="000000"&gt;&lt;param name="SWRemote" value=""&gt;&lt;param name="MovieData" value=""&gt;&lt;param name="SeamlessTabbing" value="1"&gt;&lt;param name="Profile" value="0"&gt;&lt;param name="ProfileAddress" value=""&gt;&lt;param name="ProfilePort" value="0"&gt;&lt;param name="AllowNetworking" value="all"&gt;&lt;param name="AllowFullScreen" value="false"&gt; 					 	&lt;embed src="http://www.oracle.com/greeting_cards/swf/ecard6_english.swf" quality="high" bgcolor="#000000" width="500" height="315" name="ecard6_english" align="middle" allowscriptaccess="sameDomain" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; 	&lt;/object&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-2801901303424324219?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/2801901303424324219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=2801901303424324219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/2801901303424324219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/2801901303424324219'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2009/01/happy-new-year.html' title='Happy New Year !!!'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-8579284418570069761</id><published>2008-12-30T17:52:00.018+01:00</published><updated>2010-05-21T23:14:21.048+02:00</updated><title type='text'>Sizing Apache in front of WebLogic</title><content type='html'>&lt;p&gt;Apache is a very used HTTP WebServer.&lt;/p&gt;&lt;p&gt;And I can't count the number of times I have been working with clients using it in their architectures.&lt;/p&gt;&lt;p&gt;But often, it is used with the default configuration or slightly tuned.&lt;/p&gt;&lt;p&gt;Even if this is normally not part of my job, I guess it's important to know how to use it properly.&lt;/p&gt;&lt;p&gt;You may also take a look at the post I wrote about &lt;a href="http://m-button.blogspot.com/2008/11/how-to-configure-weblogic-to-use-ssl.html" target="_blank"&gt;SSL between Apache &amp;amp; WLS&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;First of all : monitoring your workers&lt;/h2&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Well, first of all, I think it's essential to know how your Apache WS reacts.&lt;/p&gt;&lt;p&gt;Indeed, when load-testing your application, it's good to know how your application server behaves,&lt;/p&gt;&lt;p&gt;(hoping it's WebLogic ;) ) but it's also good to know if the webserver (or a load balancer hardware) is not a potential bottleneck.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;Configuration&lt;/h3&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;To do so, it's quite easy : just activate the webserver status like shown below :&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;LoadModule status_module modules/mod_status.so&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;ExtendedStatus On  &lt;p&gt;[...]  &lt;p&gt;&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetHandler server-status&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order Deny,Allow&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Deny from all&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from .foo.com&lt;br /&gt;&amp;lt;/Location&amp;gt;  &lt;p&gt;&amp;lt;LocationMatch "/(?!server-status)"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetHandler weblogic-handler&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Conf WLS ...  &lt;p&gt;&amp;lt;/LocationMatch&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp; &lt;p&gt;Let me explain that configuration.  &lt;ol&gt;&lt;li&gt;=&amp;gt; LoadModule [...]/mod_status.so&amp;nbsp; : mandatory if we want to monitor Apache (&lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_status.html" target="_blank"&gt;more info&lt;/a&gt;)&lt;br /&gt;&lt;li&gt;=&amp;gt; &lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_status.html#extendedstatus" target="_blank"&gt;ExtendedStatus&lt;/a&gt; : allows to see some additional configuration, like CPU, memory ... Essential then. Beware of the performance !&lt;br /&gt;&lt;li&gt;=&amp;gt; Location /server-status : all incoming requests on this URI will be handled by the server-status&lt;br /&gt;&lt;li&gt;=&amp;gt; LocationMatch "/(?!server-status)" : requests on all the other URIs will be handled by WebLogic&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ol&gt;&lt;p&gt;&lt;u&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/u&gt; : LocationMatch allows you to use regular expressions. I personnaly refer to &lt;a href="http://www.python.org/doc/2.5.2/lib/re-syntax.html" target="_blank"&gt;python doc&lt;/a&gt; when needed.&lt;/p&gt;&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;Result : what does it display ?&lt;/h3&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SVpQ55TN_bI/AAAAAAAABK0/ReNy9MOC_YY/s1600-h/image3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="512" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SVpRPwJFD4I/AAAAAAAABK4/L89jej6SUcA/image_thumb1.png?imgmax=800" width="575" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;What's important here is: &lt;strong&gt;1 requests currently being processed, 249 idle workers&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;And if you look at your default configuration, you'll see that the number of requests "currently being processed" added &lt;/p&gt;&lt;p&gt;to the number of idle workers is the number set in the httpd.conf : &lt;strong&gt;ThreadsPerChild 250&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Considering the scoreboard :&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;Scoreboard Key: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;_&lt;/code&gt;&lt;/b&gt;" Waiting for Connection&lt;/li&gt; &lt;br /&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;S&lt;/code&gt;&lt;/b&gt;" Starting up&lt;/li&gt; &lt;br /&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;R&lt;/code&gt;&lt;/b&gt;" Reading Request&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;W&lt;/code&gt;&lt;/b&gt;" Sending Reply&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;K&lt;/code&gt;&lt;/b&gt;" Keepalive (read)&lt;/li&gt; &lt;br /&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;D&lt;/code&gt;&lt;/b&gt;" DNS Lookup&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;C&lt;/code&gt;&lt;/b&gt;" Closing connection&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;L&lt;/code&gt;&lt;/b&gt;" Logging&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;G&lt;/code&gt;&lt;/b&gt;" Gracefully finishing&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;I&lt;/code&gt;&lt;/b&gt;" Idle cleanup of worker&lt;/li&gt; &lt;br /&gt;&lt;li&gt;"&lt;b&gt;&lt;code&gt;.&lt;/code&gt;&lt;/b&gt;" Open slot with no current process&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/pre&gt;&amp;nbsp; &lt;p&gt;We then have one working thread 'W', 249 idle '_' and a big number that do nothing.  &lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;Sizing your Apache&lt;/h2&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Let's take a number of ThreadsPerChild equal to 1920.&lt;/p&gt;&lt;p&gt;If we set that value, what's displayed is different : &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SVpRbIu7OMI/AAAAAAAABK8/fAlU9PakMH8/s1600-h/image8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="591" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SVpRrXwLhqI/AAAAAAAABLA/euG5Ep8sptQ/image_thumb4.png?imgmax=800" width="560" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I've reached the maximum number of workers for my configuration.&lt;/p&gt;&lt;p&gt;That way, Apache will reserve all the possible workers to serve requests.&lt;/p&gt;&lt;p&gt;This configuration implies a higher CPU activity. That's why you've got to adjust the number of workers, following your&lt;/p&gt;&lt;p&gt;capacity planning, in order to have a good compromise.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/u&gt; : It's not the only parameter you can play with to tune your webserver, but this one is quite important.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5cb542dd-dae9-4bc8-bf42-df90d3670a81" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/apache" rel="tag"&gt;apache&lt;/a&gt;,&lt;a href="http://technorati.com/tags/weblogic" rel="tag"&gt;weblogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/sizing" rel="tag"&gt;sizing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/extendedstatus" rel="tag"&gt;extendedstatus&lt;/a&gt;,&lt;a href="http://technorati.com/tags/locationmatch" rel="tag"&gt;locationmatch&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-8579284418570069761?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/8579284418570069761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=8579284418570069761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/8579284418570069761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/8579284418570069761'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2008/12/sizing-apache-in-front-of-weblogic.html' title='Sizing Apache in front of WebLogic'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_bayCgqm3V20/SVpRPwJFD4I/AAAAAAAABK4/L89jej6SUcA/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-5309297883094382126</id><published>2008-11-25T22:50:00.001+01:00</published><updated>2009-11-11T14:59:55.901+01:00</updated><title type='text'>Using WLDF to trace the time taken by your methods</title><content type='html'>&lt;p&gt;WLDF stands for &lt;a href="http://download.oracle.com/docs/cd/E15051_01/wls/docs103/wldf_configuring/understand_wldf_config.html" target="_blank"&gt;WebLogic Diagnostic Framework&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;It's shipped within WebLogic Server and allow three types of features to help you diagnose your application and/or server :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;=&amp;gt; Collected Metrics  &lt;li&gt;=&amp;gt; Watch &amp;amp; Notification  &lt;li&gt;=&amp;gt; Instrumentation&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;We're going to focus on the AOP feature, commonly known as "Instrumentation".&lt;/p&gt; &lt;p&gt;I assume you're familiar with &lt;a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming" target="_blank"&gt;AOP concepts&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Sample Application : presentation&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Our application is composed of three classes, calling each other the following way :&lt;/p&gt; &lt;p&gt;Component1 -&amp;gt; Component2 -&amp;gt; Component3&lt;/p&gt; &lt;p&gt;Each call will be delayed by a pause, in order to be able to observe some concrete data later.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SSxy64uUHWI/AAAAAAAABJk/UM7pvdyJ5ic/s1600-h/image3.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SSxy7WLDYwI/AAAAAAAABJo/7pUs6b4Gk0U/image_thumb1.png?imgmax=800" width="256" height="310"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;For instance, here's the code for Component1 :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;package fr.mbutton.blog.wldf;  &lt;p&gt;/**&lt;br&gt;* @author mbutton&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;public class Component1 implements CallerInterface {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void call () {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.sleep(5000);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (InterruptedException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CallerInterface comp = new Component2();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; comp.call();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;Configuring WLDF&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;From the application point of view&lt;/h3&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The configuration is pretty easy. It is embodied in a file weblogic-diagnostics.xml, which resides in the META-INF directory.&lt;/p&gt; &lt;p&gt;(I have chosen application scope, but you may chose the server scope. This is discussed in the &lt;a href="http://download.oracle.com/docs/cd/E15051_01/wls/docs103/wldf_configuring/understand_wldf_config.html#wp1080290" target="_blank"&gt;official documentation&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SSxy7y7fTMI/AAAAAAAABJs/ULMm7mvG5H0/s1600-h/image6.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SSxy8N4S9BI/AAAAAAAABJw/Gmeb5hVbre8/image_thumb2.png?imgmax=800" width="232" height="122"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Here's the content of this file :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;wldf-resource xmlns="&lt;a href="http://www.bea.com/ns/weblogic/90/diagnostics&amp;quot;"&gt;http://www.bea.com/ns/weblogic/90/diagnostics"&lt;/a&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:xsi="&lt;a href="http://www.w3.org/2001/XMLSchema-instance&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema-instance"&lt;/a&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xsi:schemaLocation="&lt;a href="http://www.bea.com/ns/weblogic/90/diagnostics.xsd&amp;quot;"&gt;http://www.bea.com/ns/weblogic/90/diagnostics.xsd"&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;Sample WLDF resource&amp;lt;/name&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;instrumentation&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;wldf-instrumentation-monitor&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;sample&amp;lt;/name&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action&amp;gt;TraceElapsedTimeAction&amp;lt;/action&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;location-type&amp;gt;around&amp;lt;/location-type&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;pointcut&amp;gt;execution( * fr.mbutton.blog.wldf.* call*(...));&amp;lt;/pointcut&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/wldf-instrumentation-monitor&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/instrumentation&amp;gt;&lt;br&gt;&amp;lt;/wldf-resource&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Let's take a closer look to the tags :  &lt;ul&gt; &lt;li&gt;=&amp;gt; enabled : has obviously to be set to true :) for both instrumentation &amp;amp; monitor  &lt;li&gt;=&amp;gt; name : has to be unique  &lt;li&gt;=&amp;gt; &lt;a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/e13714/appendix_instrum_library.htm#i1049219" target="_blank"&gt;action&lt;/a&gt; : the action that has to be performed. Can be one of the following :  &lt;ul&gt; &lt;p&gt;DisplayArgumentsAction&lt;br&gt;StackDumpAction&lt;br&gt;ThreadDumpAction&lt;br&gt;TraceAction&lt;br&gt;TraceElapsedTimeAction&lt;/p&gt;&lt;/ul&gt; &lt;li&gt;=&amp;gt; location-type : before / after / around  &lt;li&gt;=&amp;gt; pointcut : the kind of execution on which the AOP behavior has to be performed&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;For more information, as usual, take a look at the &lt;a href="http://download.oracle.com/docs/cd/E15051_01/wls/docs103/wldf_configuring/understand_wldf_config.html#wp1080290" target="_blank"&gt;official documentation&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;h3&gt;From the server point of view&lt;/h3&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You have to configure a DyeInjectionMonitor. &lt;/p&gt; &lt;p&gt;To do so, activate the instrumentation by creating a module, and activating the instrumentation like shown below :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SSxy9G5DXnI/AAAAAAAABJ0/PCUGK3OgZ9c/s1600-h/image25.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SSxy90jstqI/AAAAAAAABJ4/4z0mjMhz8Zk/image_thumb15.png?imgmax=800" width="644" height="293"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You may configure the DyeInjectionMonitor by adding some "&lt;a href="http://download-llnw.oracle.com/docs/cd/E13222_01/wls/docs90/wldf_configuring/config_context.html#1087055" target="_blank"&gt;Dye Flag&lt;/a&gt;".&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SSxy-lGXK9I/AAAAAAAABJ8/gx5QySQxSPE/s1600-h/image29.png"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SvrBY7WCjgI/AAAAAAAACEU/-hJ7Tv4hEp8/s1600-h/image%5B12%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/SvrBZnhpYvI/AAAAAAAACEY/gsz-JKOcew0/image_thumb%5B9%5D.png?imgmax=800" width="416" height="600"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;For instance, here I added the dye flag "ADDR1". Make sure the flag you've chosen appears in the &lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/javadocs/weblogic/diagnostics/context/DiagnosticContextConstants.html" target="_blank"&gt;authorized constants&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Deploy your application to the server.&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You may encounter the following error while deploying from Workshop.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SSxzAWfMt_I/AAAAAAAABKE/rLB1y9EeOZs/s1600-h/image10.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SSxzA1_IKCI/AAAAAAAABKI/OL6YVRiuNJI/image_thumb4.png?imgmax=800" width="737" height="313"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;It comes from the fact the console in development mode does not use (in theory) the configuration management,&lt;/p&gt; &lt;p&gt;aka the "Lock &amp;amp; Edit" feature. &lt;/p&gt; &lt;p&gt;To fix that, use WLST to release the lock, like :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SSxzBV4duVI/AAAAAAAABKM/syuTzDmWGH0/s1600-h/image14.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SSxzBxZRGgI/AAAAAAAABKQ/yTz2sSq_15Y/image_thumb6.png?imgmax=800" width="510" height="230"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I know it's not cool, but sometimes that's just the way it is.&lt;/p&gt; &lt;p&gt;And if you're not familiar with WLST, it will be the perfect occasion :)&lt;/p&gt; &lt;p&gt;Once deployed, launch the class Component1.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Displaying the data with the WLDF console extension&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Installing the console extension&lt;/h3&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The console extension has to be installed into your domain. A console extension is a single JAR file.&lt;/p&gt; &lt;p&gt;For the WLDF extension, it's shipped within the standard WLS distribution.&lt;/p&gt; &lt;p&gt;You will find it here : &lt;strong&gt;BEA_HOME \ wlserver_10.3 \ server \ lib \ console-ext \ diagnostics-console-extension.jar&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Then copy it in the directory : &lt;strong&gt;DOMAIN_HOME \ console-ext&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Restart your server and you should see a new tab :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SSxzCHSTIyI/AAAAAAAABKU/Ve7hTrcUq8g/s1600-h/image33.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SSxzCsxYx3I/AAAAAAAABKY/cW9f49i2sXU/image_thumb19.png?imgmax=800" width="518" height="121"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Viewing the collected data&lt;/h3&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Click this new tab, and then go in the "Request" tab. &lt;/p&gt; &lt;p&gt;Choose the server on which you have the EAR deployed (if many)&lt;/p&gt; &lt;p&gt;If no data is visible, click reload and then refresh.&lt;/p&gt; &lt;p&gt;You should get something like :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SSxzDOPFrSI/AAAAAAAABKc/DxS0w7xypAQ/s1600-h/result24.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="result2" src="http://lh6.ggpht.com/_bayCgqm3V20/SSxzD4CiQqI/AAAAAAAABKg/tGBpIuNL3pk/result2_thumb2.jpg?imgmax=800" width="1028" height="250"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If you chose a particular method call, you may see a more detailed view like :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/SSxzEvpmupI/AAAAAAAABKk/2XsMxo6M-DQ/s1600-h/result5.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="result" src="http://lh3.ggpht.com/_bayCgqm3V20/SSxzFSc5DeI/AAAAAAAABKo/BLrWkikMjh8/result_thumb3.jpg?imgmax=800" width="644" height="363"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Let's zoom the contextual window :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SSxzGFrtHxI/AAAAAAAABKs/9uyzOeht2vQ/s1600-h/image37.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SSxzG_5UAkI/AAAAAAAABKw/ufV5XUIOBwM/image_thumb21.png?imgmax=800" width="333" height="80"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;There you go : you have a powerful tool, right here with no extra product ! :)&lt;/p&gt; &lt;p&gt;Hope it gave you a good example of the AOP use of WLDF.&lt;/p&gt; &lt;p&gt;If you want more info about WLDF, take a look at the page :&lt;/p&gt; &lt;p&gt;&lt;a href="http://download-llnw.oracle.com/docs/cd/E13222_01/wls/docs90/wldf_configuring/index.html" target="_blank"&gt;http://download-llnw.oracle.com/docs/cd/E13222_01/wls/docs90/wldf_configuring/index.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Have fun !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:48f17fcf-5a93-4c93-8435-a257726becb1" class="wlWriterSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/wldf" rel="tag"&gt;wldf&lt;/a&gt;,&lt;a href="http://technorati.com/tags/weblogic" rel="tag"&gt;weblogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/console-extension" rel="tag"&gt;console-extension&lt;/a&gt;,&lt;a href="http://technorati.com/tags/aop" rel="tag"&gt;aop&lt;/a&gt;,&lt;a href="http://technorati.com/tags/traceelapsedtimeaction" rel="tag"&gt;traceelapsedtimeaction&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-5309297883094382126?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/5309297883094382126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=5309297883094382126' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5309297883094382126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/5309297883094382126'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2008/11/using-wldf-to-trace-time-taken-by-your.html' title='Using WLDF to trace the time taken by your methods'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_bayCgqm3V20/SSxy7WLDYwI/AAAAAAAABJo/7pUs6b4Gk0U/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-8833636968477044240</id><published>2008-11-11T00:31:00.001+01:00</published><updated>2008-11-11T00:31:44.737+01:00</updated><title type='text'>How to configure WebLogic to use SSL with Apache ?</title><content type='html'>&lt;p&gt;We will start this example from the very beginning. &lt;/p&gt; &lt;p&gt;We'll create a certificate, a keystore and will perform all the different steps needed to get us started (using &lt;a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/keytool.html" target="_blank"&gt;Keytool&lt;/a&gt; &amp;amp; &lt;a href="http://www.openssl.org/" target="_blank"&gt;OpenSSL&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;Then we'll configure WebLogic to use that keystore.&lt;/p&gt; &lt;p&gt;Once a browser is able to access WebLogic, we will configure Apache to use SSL with WebLogic.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;1 - Create a CSR &amp;amp; a keystore&lt;/h2&gt; &lt;p&gt;In order to create these components, the tool used is Keytool from Sun. You have it in any JVM install :&lt;/p&gt; &lt;p&gt;For me it's : %BEA_HOME%\jdk160_05\bin\keytool.exe&lt;/p&gt; &lt;p&gt;For this example, as I'm lazy sometimes, I'm going to use &lt;a href="http://yellowcat1.free.fr/index_ktl.html" target="_blank"&gt;Keytool UI&lt;/a&gt;, which is a graphical version of keytool, as its name tells.&lt;/p&gt; &lt;p&gt;First, let's create a sample and empty JKS. (JKS stands for &lt;strong&gt;J&lt;/strong&gt;ava &lt;strong&gt;K&lt;/strong&gt;ey&lt;strong&gt;S&lt;/strong&gt;tore)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SRjD_b8liMI/AAAAAAAABH0/wxeNq7s-MhQ/s1600-h/image%5B35%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="404" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SRjEAToyW9I/AAAAAAAABH4/RLVN5h_OQQM/image_thumb%5B19%5D.png?imgmax=800" width="644" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;In this example, the password used is "weblogic".&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Then just create a CSR (&lt;strong&gt;C&lt;/strong&gt;ertificate &lt;strong&gt;S&lt;/strong&gt;igning &lt;strong&gt;R&lt;/strong&gt;equest) &lt;/p&gt; &lt;p&gt;Specify the previously created JKS and the algorithm to use :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SRjEBhjbqUI/AAAAAAAABH8/u7G0fppfRKQ/s1600-h/image%5B33%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="416" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SRjECb1XKLI/AAAAAAAABIA/06WR8y_Kw4k/image_thumb%5B17%5D.png?imgmax=800" width="660" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Fill in the different fields, as you would with Keytool :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SRjEDFjOTrI/AAAAAAAABIE/zB_ZdMISZ1k/s1600-h/image%5B32%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="356" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SRjEDxTEW_I/AAAAAAAABII/vQCE0Of6tn4/image_thumb%5B16%5D.png?imgmax=800" width="515" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The creation should result in a small popup :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SRjEE6PL6KI/AAAAAAAABIM/526XZ6BkzgI/s1600-h/image%5B31%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="183" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SRjEFryuinI/AAAAAAAABIQ/KWRH6VwIkq4/image_thumb%5B15%5D.png?imgmax=800" width="449" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Viewing the content of the keystore &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/SRjEGqTSaKI/AAAAAAAABIU/pWadn-FHzEA/s1600-h/image%5B30%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="451" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/SRjEHhRzMYI/AAAAAAAABIY/TuCAD5RqdIc/image_thumb%5B14%5D.png?imgmax=800" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I used the following for the private key : &lt;/p&gt; &lt;ul&gt; &lt;li&gt;alias : privatekey  &lt;li&gt;password : weblogic&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;2 - Configure WebLogic to use the previously created keystore&lt;/h2&gt; &lt;p&gt;That's the easy part :)&lt;/p&gt; &lt;p&gt;Start your server and check that you have SSL enabled.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/SRjEIVnvswI/AAAAAAAABIc/CVXwY5batQU/s1600-h/image%5B28%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="204" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SRjEI1y0NdI/AAAAAAAABIg/3dKqqWBMudE/image_thumb%5B12%5D.png?imgmax=800" width="462" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Then just change the identity of the server to point towards our keystore.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SRjEJv0Bc0I/AAAAAAAABIk/c6TPLy1gYmU/s1600-h/image%5B39%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="358" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SRjEKQuW5XI/AAAAAAAABIo/Yph1Df8hYAg/image_thumb%5B21%5D.png?imgmax=800" width="643" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Here are the different options proposed. In our example, the option that best fits our need is "Custom identity &amp;amp; Java Standard Trust".&lt;/p&gt; &lt;p&gt;"Custom Identity" means we're using our own keystore and "Java Standard Trust" means we use the truststore from the JDK.&lt;/p&gt; &lt;p&gt;(%BEA_HOME%\jdk160_05\jre\lib\security\cacerts)&lt;/p&gt; &lt;p&gt;A truststore is a keystore containing all the trusted certificates.&lt;/p&gt; &lt;p&gt;You may print the truststore, just to see what's inside :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/SRjEL5ONE0I/AAAAAAAABIs/hwxl88J4-PA/s1600-h/image%5B26%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="299" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SRjEM2uLNVI/AAAAAAAABIw/hNJ8LRqsE_k/image_thumb%5B10%5D.png?imgmax=800" width="796" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You can see that Verisign, Thawte and many other CA (Certificate Authorities) are listed.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SRjENn6NZaI/AAAAAAAABI0/GUKQ6oqINvI/s1600-h/image%5B44%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="114" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SRjEObBW94I/AAAAAAAABI4/-BQDZCF2J3U/image_thumb%5B24%5D.png?imgmax=800" width="786" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/SRjEPTEzrNI/AAAAAAAABI8/2IP05582OFU/s1600-h/image%5B48%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="470" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SRjEQejTDiI/AAAAAAAABJA/y8ffTx5BDbk/image_thumb%5B26%5D.png?imgmax=800" width="657" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;We only have to specify the keystore we created, the type which is JKS and the password.&lt;/p&gt; &lt;p&gt;As for the Trust, just type the default password, which is "changeit".&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;A quick look in the WLS console shows :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;10 nov. 2008 23 h 47 CET&amp;gt; &amp;lt;Error&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000297&amp;gt; &lt;br&gt;&amp;lt;Inconsistent security configuration, weblogic.management.configuration.ConfigurationException: &lt;br&gt;Cannot retrieve identity certificate and private key on server AdminServer, because the keystore entry alias is not specified.&amp;gt;  &lt;p&gt;&amp;lt;10 nov. 2008 23 h 47 CET&amp;gt; &amp;lt;Error&amp;gt; &amp;lt;Server&amp;gt; &amp;lt;BEA-002618&amp;gt; &lt;br&gt;&amp;lt;An invalid attempt was made to configure a channel for unconfigured protocol "Cannot retrieve identity certificate &lt;br&gt;and private key on server AdminServer, because the keystore entry alias is not specified.".&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;It's because we didn't supply the private key alias.  &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/SRjESFqQNmI/AAAAAAAABJE/yypSFMuLYUA/s1600-h/image%5B56%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="573" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SRjETKOSBJI/AAAAAAAABJI/saqzhYXFYd0/image_thumb%5B30%5D.png?imgmax=800" width="637" border="0"&gt;&lt;/a&gt;  &lt;p&gt;&amp;nbsp; &lt;p&gt;Just type the alias (privatekey) and the password (weblogic) and save.  &lt;p&gt;This time, WLS seems to be happier :  &lt;p&gt;&amp;nbsp; &lt;blockquote&gt; &lt;p&gt;&amp;lt;10 nov. 2008 23 h 52 CET&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Security&amp;gt; &amp;lt;BEA-090171&amp;gt; &lt;br&gt;&amp;lt;Loading the identity certificate and private key stored under the alias privateKey from the JKS keystore&lt;br&gt;file D:\BEA_ROOT\user_projects\domains\essex\ssl\blog\mbutton.jks.&amp;gt;  &lt;p&gt;&amp;lt;10 nov. 2008 23 h 52 CET&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Security&amp;gt; &amp;lt;BEA-090169&amp;gt; &lt;br&gt;&amp;lt;Loading trusted certificates from the jks keystore file D:\BEA_ROOT\WLS_10.3\JDK160~1\jre\lib\security\cacerts.&amp;gt;  &lt;p&gt;&amp;lt;10 nov. 2008 23 h 52 CET&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Server&amp;gt; &amp;lt;BEA-002613&amp;gt; &lt;br&gt;&amp;lt;Channel "DefaultSecure" is now listening on 192.168.1.4:7002 for protocols iiops, t3s, &lt;br&gt;CLUSTER-BROADCAST-SECURE, ldaps, https.&amp;gt;  &lt;p&gt;&amp;lt;10 nov. 2008 23 h 52 CET&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Server&amp;gt; &amp;lt;BEA-002613&amp;gt; &lt;br&gt;&amp;lt;Channel "DefaultSecure[1]" is now listening on 127.0.0.1:7002 for protocols iiops, t3s, &lt;br&gt;CLUSTER-BROADCAST-SECURE, ldaps, https.&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Let's try to access the console using the secure port (7002).&lt;/p&gt; &lt;p&gt;A popup shows up :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SRjET3u62NI/AAAAAAAABJM/2kWqpXBzjyE/s1600-h/image%5B60%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="312" alt="image" src="http://lh3.ggpht.com/_bayCgqm3V20/SRjEUt-IlBI/AAAAAAAABJQ/RwgcURPrXIQ/image_thumb%5B32%5D.png?imgmax=800" width="388" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Just some warning message saying that the certificate has been emitted by someone I don't trust&lt;/p&gt; &lt;p&gt;and that the certificate name doesn't match the site name. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SRjEVRIAS4I/AAAAAAAABJU/Y_WdqZA_ivE/s1600-h/image%5B64%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="118" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/SRjEWNPtv-I/AAAAAAAABJY/rmRbJERdB3M/image_thumb%5B34%5D.png?imgmax=800" width="511" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;It works.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;3 - Display the certificate presented by WebLogic&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;To display the certificate, we've got two possibilities :&lt;/p&gt; &lt;p&gt;Click the lock in the browser window and use the built-in functionality to display the certificates.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SRjEWrmc1sI/AAAAAAAABJc/QWN1jERiNJE/s1600-h/image%5B67%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="81" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/SRjEXgnDEdI/AAAAAAAABJg/uD1zjVLhiP0/image_thumb%5B35%5D.png?imgmax=800" width="179" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Or use OpenSSL, which is the method I prefer.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;C:\Documents and Settings\mbutton&amp;gt;&lt;font color="#800080"&gt;openssl s_client&amp;nbsp; -connect localhost:7002&lt;br&gt;&lt;/font&gt;Loading 'screen' into random state - done&lt;br&gt;CONNECTED(00000728)&lt;br&gt;depth=0 /emailAddress=mbutton@bea.com/C=FR/ST=Hauts-de-seine/L=Courbevoie/O=Oracle-BEA/OU=Consulting/CN=fr.mbutton.blog&lt;br&gt;verify error:num=18:self signed certificate&lt;br&gt;verify return:1&lt;br&gt;depth=0 /emailAddress=mbutton@bea.com/C=FR/ST=Hauts-de-seine/L=Courbevoie/O=Oracle-BEA/OU=Consulting/CN=fr.mbutton.blog&lt;br&gt;verify return:1&lt;br&gt;---&lt;br&gt;Certificate chain&lt;br&gt;0 s:/emailAddress=mbutton@bea.com/C=FR/ST=Hauts-de-seine/L=Courbevoie/O=Oracle-BEA/OU=Consulting/CN=fr.mbutton.blog&lt;br&gt;&amp;nbsp;&amp;nbsp; i:/emailAddress=mbutton@bea.com/C=FR/ST=Hauts-de-seine/L=Courbevoie/O=Oracle-BEA/OU=Consulting/CN=fr.mbutton.blog&lt;br&gt;---&lt;br&gt;Server certificate&lt;br&gt;&lt;font color="#ff0000"&gt;-----BEGIN CERTIFICATE-----&lt;br&gt;MIICtzCCAiCgAwIBAgIESRixbTANBgkqhkiG9w0BAQUFADCBnzEeMBwGCSqGSIb3&lt;br&gt;DQEJARYPbWJ1dHRvbkBiZWEuY29tMQswCQYDVQQGEwJGUjEXMBUGA1UECAwOSGF1&lt;br&gt;dHMtZGUtc2VpbmUxEzARBgNVBAcMCkNvdXJiZXZvaWUxEzARBgNVBAoMCk9yYWNs&lt;br&gt;ZS1CRUExEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD2ZyLm1idXR0b24u&lt;br&gt;YmxvZzAeFw0wODExMTAyMjEwNTNaFw0xMTExMTAyMjEwNTNaMIGfMR4wHAYJKoZI&lt;br&gt;hvcNAQkBFg9tYnV0dG9uQGJlYS5jb20xCzAJBgNVBAYTAkZSMRcwFQYDVQQIDA5I&lt;br&gt;YXV0cy1kZS1zZWluZTETMBEGA1UEBwwKQ291cmJldm9pZTETMBEGA1UECgwKT3Jh&lt;br&gt;Y2xlLUJFQTETMBEGA1UECwwKQ29uc3VsdGluZzEYMBYGA1UEAwwPZnIubWJ1dHRv&lt;br&gt;bi5ibG9nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCE4Eu/kWbTfjFQNWzm&lt;br&gt;YEGLEO8Mp7SY9R2d4MpZTCAPdS7DSjY1AsJMlTDxomsWAKdU/UaQuf0quyuO4oiM&lt;br&gt;7IxFMTHXEZ1TgXMUgHGgNYnkQIivcbskUFJuPUoYHW6mR9rlIkkVSkTPUVWaGvzt&lt;br&gt;gubEQhUvc1ndt8bpQRmnnOkZgQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAEEpAwNF&lt;br&gt;Fa21wGzoBk7WzQkHuWKfY3D2mCuON+u9GWHxrQoDG+u6i4LyY/5DK9IMrs5tzq7u&lt;br&gt;9htJAryKJVMpHH05Nb0Bq9ZENylHLb8nIeAZP6A8w1WVb4xfRC1KAz7HLcA3xlBw&lt;br&gt;9+RanPitwglr9GX6teINf8te3m7hVS1wC3Hg&lt;br&gt;-----END CERTIFICATE-----&lt;/font&gt;&lt;br&gt;subject=/emailAddress=mbutton@bea.com/C=FR/ST=Hauts-de-seine/L=Courbevoie/O=Oracle-BEA/OU=Consulting/CN=fr.mbutton.blog&lt;br&gt;issuer=/emailAddress=mbutton@bea.com/C=FR/ST=Hauts-de-seine/L=Courbevoie/O=Oracle-BEA/OU=Consulting/CN=fr.mbutton.blog&lt;br&gt;---&lt;br&gt;No client certificate CA names sent&lt;br&gt;---&lt;br&gt;SSL handshake has read 829 bytes and written 306 bytes&lt;br&gt;---&lt;br&gt;New, TLSv1/SSLv3, Cipher is RC4-MD5&lt;br&gt;Server public key is 1024 bit&lt;br&gt;Compression: NONE&lt;br&gt;Expansion: NONE&lt;br&gt;SSL-Session:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protocol&amp;nbsp; : TLSv1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cipher&amp;nbsp;&amp;nbsp;&amp;nbsp; : RC4-MD5&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session-ID: 48076FBB49156AD46E8B1DE5C6761319&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session-ID-ctx:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Master-Key: 0FE8F6A1A4A498FBE9832D7BE2FD999C2DA9C697F1311F6DE39A461293AD643E12DB8089828082581352D8FD5FF8E310&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Key-Arg&amp;nbsp;&amp;nbsp; : None&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start Time: 1226358012&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Timeout&amp;nbsp;&amp;nbsp; : 300 (sec)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Verify return code: 18 (self signed certificate)&lt;br&gt;---&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The section in red represents the certificate presented by the server.&lt;/p&gt; &lt;p&gt;ASCII delimited by "-----BEGIN CERTIFICATE-----" &amp;amp; "-----END CERTIFICATE-----" means it's a PEM.&lt;/p&gt; &lt;p&gt;We need to isolate it. Then just copy it in a file and name it "server.pem" for instance.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;4 - Configure Apache SSL to access WebLogic &lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;First, copy the apache plugin in the apache modules directory.&lt;/p&gt; &lt;p&gt;%BEA_ROOT%\wlserver_10.3\server\plugin\win\32\mod_wl_22.so &lt;/p&gt; &lt;p&gt;towards %APACHE_HOME%\modules&lt;/p&gt; &lt;p&gt;In your httpd.conf, add the following lines to have a clean and separate configuration for WebLogic.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;############## WLS 10 Proxy Plugin&lt;br&gt;&amp;lt;IfModule !mod_weblogic.c&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LoadModule weblogic_module modules/mod_wl_22.so&lt;br&gt;&amp;lt;/IfModule&amp;gt;  &lt;p&gt;&amp;lt;IfModule mod_weblogic.c&amp;gt;&lt;br&gt;&amp;nbsp; # Config file for WebLogic Server that defines the parameters&lt;br&gt;&amp;nbsp; Include conf/weblogic.conf &lt;br&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;These few lines include the file weblogic.conf.&lt;/p&gt; &lt;p&gt;This file looks like :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;IfModule mod_weblogic.c&amp;gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Location&amp;nbsp; /console&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetHandler weblogic-handler&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WebLogicHost localhost&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WebLogicPort 7002  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # SSL&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SecureProxy ON&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WLProxySSL ON&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RequireSSLHostMatch false&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TrustedCAFile D:\BEA_ROOT\user_projects\domains\essex\ssl\blog\server.pem&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnforceBasicConstraints false  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WLLogFile D:\BEA_ROOT\user_projects\domains\essex\ssl\blog\wlproxy.log&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug ALL&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DebugConfigInfo ON&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Location&amp;gt;&lt;br&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;As you may have noticed, the "TrustedCAFile" is the full path towards our server certificate (the one we got from OpenSSL !) &lt;p&gt;For more information about configuring WebLogic plugin, &lt;a title="http://edocs.bea.com/wls/docs100/plugins/apache.html" href="http://edocs.bea.com/wls/docs100/plugins/apache.html"&gt;http://edocs.bea.com/wls/docs100/plugins/apache.html&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Then accessing the console through the following URL : &lt;a href="http://localhost/console"&gt;http://localhost/console&lt;/a&gt; shows in the wlproxy.log :  &lt;p&gt;&amp;nbsp; &lt;blockquote&gt; &lt;p&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; &lt;br&gt;================New Request: [GET /console HTTP/1.1] =================&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; INFO: SSL is configured&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; SSL Main Context not set. Calling InitSSL&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; INFO: SSL configured successfully&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Using Uri /console&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; After trimming path: '/console'&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; The final request string is '/console'&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Host extracted from serverlist is [localhost]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Initializing lastIndex=0 for a list of length=1&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; getListNode: created a new server node: id='localhost:7002' server_name='localhost', port='80'&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; attempt #0 out of a max of 5&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Trying a pooled connection for '127.0.0.1/7002/7002'&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; getPooledConn: No more connections in the pool for Host[127.0.0.1] Port[7002] SecurePort[7002]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; general list: trying connect to '127.0.0.1'/7002/7002 at line 2619 for '/console'&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; New SSL URL: match = 0 oid = 22&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Connect returns -1, and error no set to 10035, msg 'Unknown error'&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; EINPROGRESS in connect() - selecting&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Setting peerID for new SSL connection&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; 7f00 0001 5a1b 0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....Z...&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Local Port of the socket is 1782&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Remote Host 127.0.0.1 Remote Port 7002&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; general list: created a new connection to '127.0.0.1'/7002 for '/console', Local port:1782&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from clnt:[Accept]=[image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, ...&lt;/p&gt; &lt;p&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from clnt:[Accept-Language]=[fr]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from clnt:[Accept-Encoding]=[gzip, deflate]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from clnt:[User-Agent]=[Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ...&lt;/p&gt; &lt;p&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from clnt:[Host]=[localhost]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from clnt:[Connection]=[Keep-Alive]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; URL::sendHeaders(): meth='GET' file='/console' protocol='HTTP/1.1'&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[Accept]=[image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, ...&lt;/p&gt; &lt;p&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[Accept-Language]=[fr]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[Accept-Encoding]=[gzip, deflate]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[User-Agent]=[Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ...&lt;/p&gt; &lt;p&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[Host]=[localhost]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[Connection]=[Keep-Alive]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[WL-Proxy-SSL]=[true]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[WL-Proxy-Client-IP]=[127.0.0.1]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[Proxy-Client-IP]=[127.0.0.1]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[X-Forwarded-For]=[127.0.0.1]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[X-WebLogic-KeepAliveSecs]=[30]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to WLS:[X-WebLogic-Force-JVMID]=[unset]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; &lt;font color="#ff0000"&gt;INFO: Certificate validation succeeded&lt;br&gt;&lt;/font&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; INFO: Negotiated to cipher: 3&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; SSLWrite sent 782&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; SSLWrite completed, sent 782&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Reader::fill() SSLRead success, read: 202&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; URL::parseHeaders: CompleteStatusLine set to [HTTP/1.1 302 Moved Temporarily]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; URL::parseHeaders: StatusLine set to [302 Moved Temporarily]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from WLS:[Date]=[Mon, 10 Nov 2008 23:08:43 GMT]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from WLS:[Transfer-Encoding]=[chunked]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from WLS:[Location]=[&lt;a href="https://localhost/console/]"&gt;https://localhost/console/]&lt;/a&gt;&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from WLS:[X-WebLogic-JVMID]=[-353258681]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs from WLS:[X-Powered-By]=[Servlet/2.5 JSP/2.1]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; parsed all headers OK&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; sendResponse() : r-&amp;gt;status = '302'&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to client (reset):[Date]=[Mon, 10 Nov 2008 23:08:43 GMT]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to client (reset):[Location]=[&lt;a href="https://localhost/console/]"&gt;https://localhost/console/]&lt;/a&gt;&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; for 127.0.0.1/7002/7002, updated JVMID: -353258681&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Hdrs to client (reset):[X-Powered-By]=[Servlet/2.5 JSP/2.1]&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Reader::fill() SSLRead success, read: 255&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; Reader::fill() SSLRead success, read: 8&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; canRecycle: conn=1 status=302 isKA=1 clen=-1 isCTE=1&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; closeConn: pooling for '127.0.0.1/7002'&lt;br&gt;Tue Nov 11 00:08:43 2008 &amp;lt;502412263585231&amp;gt; &lt;font color="#ff0000"&gt;request [/console] processed sucessfully..................&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And if we set a bad certificate name, restart Apache, an access to the same URL shows :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Tue Nov 11 00:09:59 2008 &amp;lt;340812263585991&amp;gt; &lt;br&gt;================New Request: [GET /console HTTP/1.1] =================&lt;br&gt;Tue Nov 11 00:09:59 2008 &amp;lt;340812263585991&amp;gt; INFO: SSL is configured&lt;br&gt;Tue Nov 11 00:09:59 2008 &amp;lt;340812263585991&amp;gt; SSL Main Context not set. Calling InitSSL&lt;br&gt;Tue Nov 11 00:09:59 2008 &amp;lt;340812263585991&amp;gt; &lt;font color="#ff0000"&gt;ERROR: SSL initialization failed&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;So this it ...  &lt;p&gt;Hope it was clear and useful. Anyway, here are just the main lines. Don't go in production with such a configuration :)  &lt;p&gt;(even if it's not worst than using WebLogic DemoTrust &amp;amp; DemoCertificates ...)  &lt;p&gt;&amp;nbsp; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2c561c4a-dce8-4be1-9fbb-360fccb612eb" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/weblogic" rel="tag"&gt;weblogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/apache" rel="tag"&gt;apache&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ssl" rel="tag"&gt;ssl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mod_ssl" rel="tag"&gt;mod_ssl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/keytool" rel="tag"&gt;keytool&lt;/a&gt;,&lt;a href="http://technorati.com/tags/openssl" rel="tag"&gt;openssl&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-8833636968477044240?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/8833636968477044240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=8833636968477044240' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/8833636968477044240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/8833636968477044240'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2008/11/how-to-configure-weblogic-to-use-ssl.html' title='How to configure WebLogic to use SSL with Apache ?'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_bayCgqm3V20/SRjEAToyW9I/AAAAAAAABH4/RLVN5h_OQQM/s72-c/image_thumb%5B19%5D.png?imgmax=800' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-7604578618007006638</id><published>2008-11-04T18:20:00.001+01:00</published><updated>2008-11-04T18:20:29.955+01:00</updated><title type='text'>[Book Review] BPEL for Web Services 2nd Edition</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Lately (thanks to the fact we've been absorbed by Oracle), I've been quite interested in BPEL and especially in Oracle BPEL Process Manager.&lt;/p&gt; &lt;p&gt;I ran into some tutorials, easily &lt;a href="http://www.oracle.com/technology/products/ias/bpel/htdocs/dev_support.html" target="_blank"&gt;findable on OTN&lt;/a&gt; and that gave me the will to go further.&lt;/p&gt; &lt;p&gt;Unfortunately, since I'm still a BEA consultant, I'm not working with this product &lt;/p&gt; &lt;p&gt;and therefore, I can't play with it in my everyday life (and I don't think my clients would appreciate :D)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I then decided to get a book covering the subject, but which one ?&lt;/p&gt; &lt;p&gt;As usually, I looked at Packt Publishing, who's covering (generally well) that kind of topic.&lt;/p&gt; &lt;p&gt;Bingo ! I found that book "&lt;a href="http://www.packtpub.com/bpel2e/book" target="_blank"&gt;Business Process Execution Language" for Web Services - 2nd Edition&lt;/a&gt;" which matches at 100% my need !&lt;/p&gt; &lt;p&gt;Actually, I got &lt;a href="http://www.packtpub.com/bpel2e-FR/book" target="_blank"&gt;this one&lt;/a&gt;, which is the french version :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I particularly appreciated the book "&lt;a href="http://m-button.blogspot.com/2008/08/book-review-service-oriented.html" target="_blank"&gt;Service Oriented Architecture with Java&lt;/a&gt;" but this one is awesome.&lt;/p&gt; &lt;p&gt;It goes with a general presentation on how BPEL links with SOA. Then, the webservice stack is detailed (WSSE, WS-Coordination ...)&lt;/p&gt; &lt;p&gt;And after that appetizer, we dive into BPEL, and its implementation in OPM (Oracle BPEL Process Manager).&lt;/p&gt; &lt;p&gt;That's was really agreable to read, I wouldn't say it's like a roman, but ...&lt;/p&gt; &lt;p&gt;Next chapter, Advanced BPEL : we see some more elaborate process. &lt;/p&gt; &lt;p&gt;Well, I could go on but go take a look at &lt;a href="http://www.packtpub.com/page/Business_Process_Execution_Language_for_Web_Services_2nd_Edition_Table_of_Contents" target="_blank"&gt;the full TOC&lt;/a&gt; and you'll see what I'm talking about.&lt;/p&gt; &lt;p&gt;A special note for the chapter 6, which deals with proprietary behaviors from OPM and WSIF (which personnally reminds me a bit of an EAI ...)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You may get a taste of it by reading &lt;a href="http://www.packtpub.com/files/BPEL2ndEd_Chapter5_Oracle_BPEL_Process_Manager_and_BPEL_Designer_Overview.pdf" target="_blank"&gt;this sample chapter&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;As you may have understood, this book is excellent for who wants to work with BPEL and OPM.&lt;/p&gt; &lt;p&gt;(the last chapter deals with Microsoft BizTalk, but I didn't read it !)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Strongly recommended !!!&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:169085f2-6bac-4842-9801-5c9dc2a9e334" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/oracle%20bpel%20process%20manager" rel="tag"&gt;oracle bpel process manager&lt;/a&gt;,&lt;a href="http://technorati.com/tags/packt%20publishing" rel="tag"&gt;packt publishing&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-7604578618007006638?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/7604578618007006638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=7604578618007006638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/7604578618007006638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/7604578618007006638'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2008/11/book-review-bpel-for-web-services-2nd.html' title='[Book Review] BPEL for Web Services 2nd Edition'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-4040314745489793901</id><published>2008-11-04T16:30:00.001+01:00</published><updated>2009-11-07T16:11:18.628+01:00</updated><title type='text'>JDeveloper 11 &amp; SOA / BPEL</title><content type='html'>&lt;p&gt;Today, I downloaded JDeveloper 11 production version, the brand new version of the Oracle IDE.&lt;/p&gt; &lt;p&gt;First look, that's not bad : quite sexy indeed.&lt;/p&gt; &lt;p&gt;Okay, let's leave that look 'n' feel matter and back to business ! Let's design a sample BPEL process ...&lt;/p&gt; &lt;p&gt;After 5 minutes of furious clicks (yes, I'm more used to Eclipse / Workshop 10), I checked whether I had forgotten a naughty option but no ... &lt;/p&gt; &lt;p&gt;I couldn't definitely find how to create a "SOA Project".&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Thanks to Google (definitely my friend), I found that link :&lt;/p&gt; &lt;p&gt;&lt;a title="http://forums.oracle.com/forums/thread.jspa?threadID=724742&amp;amp;tstart=0" href="http://forums.oracle.com/forums/thread.jspa?threadID=724742&amp;amp;tstart=0"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=724742&amp;amp;tstart=0&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Heidi Buelow, our SOA Suite Product Manager (if I'm not mistaken) says that the current production release does NOT support BPEL.&lt;/p&gt; &lt;p&gt;To be able to work with it, you will have to download the &lt;a href="http://download.oracle.com/otn/java/jdeveloper/11/jdevstudio1111.zip" target="_blank"&gt;JDeveloper SOA TP4&lt;/a&gt; !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Okay, let's get it !&lt;/p&gt; &lt;p&gt;I don't know why but I tried 4 times to download the file from OTN (with a simple browser) and each time, my download stopped at about 90%.&lt;/p&gt; &lt;p&gt;I used a download tool (GetRight) and now JDev 11G SOA TechPreview 4 is mine.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;But no, still doesn't work ! I could recently check on Metalink (Oracle Support) what was to be done to activate the SOA sugar.&lt;/p&gt; &lt;p&gt;Go in the directory &lt;strong&gt;JDEV_HOME \ jdev \ bin&lt;/strong&gt;&amp;nbsp; and edit the file "jdev.conf".&lt;/p&gt; &lt;p&gt;Comment the line starting with "AddVMOption -Dide.noextension=oracle.bam [...]" by adding a # in front of it.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And that's it : you will be able to do some BPEL with your favorite 11g IDE.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;u&gt;&lt;em&gt;Edit&lt;/em&gt;&lt;/u&gt; : Now, the brand new version is out, you still may encounter a problem to use the "SOA Tier". &lt;/p&gt; &lt;p&gt;After installing Jdev 11.1.1.1.0 (11g), go in the menu "Help &amp;gt; Check for Updates" and you should see "Oracle SOA Composite Editor". &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SvWOEk6QY2I/AAAAAAAACEM/pSQkM87ZO1c/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SvWOFQOOeAI/AAAAAAAACEQ/49_TWc8YwH0/image_thumb%5B4%5D.png?imgmax=800" width="644" height="484"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;After the install, simply restart and you're done.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:36aea200-f67a-4712-8a45-612bfabd2b49" class="wlWriterSmartContent"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/oracle" rel="tag"&gt;oracle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/jdeveloper%2011G" rel="tag"&gt;jdeveloper 11G&lt;/a&gt;,&lt;a href="http://technorati.com/tags/soa" rel="tag"&gt;soa&lt;/a&gt;,&lt;a href="http://technorati.com/tags/bpel" rel="tag"&gt;bpel&lt;/a&gt;,&lt;a href="http://technorati.com/tags/download" rel="tag"&gt;download&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-4040314745489793901?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/4040314745489793901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=4040314745489793901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/4040314745489793901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/4040314745489793901'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2008/11/jdeveloper-11-soa-bpel.html' title='JDeveloper 11 &amp;amp; SOA / BPEL'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_bayCgqm3V20/SvWOFQOOeAI/AAAAAAAACEQ/49_TWc8YwH0/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-431419685537008617</id><published>2008-11-04T12:37:00.001+01:00</published><updated>2008-11-04T12:37:09.826+01:00</updated><title type='text'>How to manage a server overload thanks to WorkManagers ?</title><content type='html'>&lt;p&gt;In WebLogic 8, you had the &lt;strong&gt;ExecuteQueues&lt;/strong&gt; to perform some tuning about the number of threads, assigning different scope of execution ...&lt;/p&gt; &lt;p&gt;In WebLogic 9+, the concept of &lt;strong&gt;WorkManager&lt;/strong&gt; has been introduced.&lt;/p&gt; &lt;p&gt;BEA strongly recommends the use of &lt;strong&gt;WorkManagers&lt;/strong&gt; instead of ExecuteQueues. &lt;/p&gt; &lt;p&gt;However, if you want to use the old mechanism, you may by specifying the option &lt;strong&gt;"-Dweblogic.Use81StyleExecuteQueues=true"&lt;/strong&gt; in your JVM startup script.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;One of the interesting use of &lt;strong&gt;WorkManager&lt;/strong&gt; is to avoid an overload to a server by specifying a maximum request number.&lt;/p&gt; &lt;p&gt;Beyond that number, the server will reject new requests. Of course, it has a meaning only if you're using a cluster ...&lt;/p&gt; &lt;p&gt;Else, you would have some 5XX exceptions coming back to your users !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;One of the prerequisites for that solution to work is that you use the WebLogic plugin, &lt;/p&gt; &lt;p&gt;and that you let the &lt;strong&gt;IdemPotent&lt;/strong&gt; &amp;amp; the &lt;strong&gt;Dynamic Server List&lt;/strong&gt; options set to true (which should be the case by default) in your plugin configuration.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Creating the resources&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;First, you will have to define a capacity constraint. Target it on the chosen instance.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SRAztUiFmAI/AAAAAAAABHI/LCUFtoBAwms/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="331" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/SRAzuj47ObI/AAAAAAAABHM/LbEwvXXVNg4/image_thumb%5B4%5D.png?imgmax=800" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Then, specify the maximum number of requests your instance can handle.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SRAzvLq3BXI/AAAAAAAABHQ/f4zRf2K3tJg/s1600-h/image3%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="97" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/SRAzvqJX8BI/AAAAAAAABHU/Hr9jlg9czY4/image3_thumb%5B2%5D.png?imgmax=800" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Then create the wrapping &lt;strong&gt;WorkManager&lt;/strong&gt; and choose the subcomponent previously created (&lt;strong&gt;capacity constraint&lt;/strong&gt;).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_bayCgqm3V20/SRAzxAXC_HI/AAAAAAAABHY/UYkl10iAEWY/s1600-h/image6%5B8%5D.png"&gt;&lt;a href="http://lh6.ggpht.com/_bayCgqm3V20/SRAzynnDQZI/AAAAAAAABHc/BBXfxJCAvIs/s1600-h/image9%5B1%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="314" alt="image" src="http://lh4.ggpht.com/_bayCgqm3V20/SRAz0KKrHiI/AAAAAAAABHg/P2zOob_J7CE/image9_thumb.png?imgmax=800" width="644" border="0"&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Assign that &lt;strong&gt;WorkManager&lt;/strong&gt; to the server, (same instance targetted by the &lt;strong&gt;capacity constraint&lt;/strong&gt;).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Checking the creation&lt;/h2&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Then check that your &lt;strong&gt;WorkManager&lt;/strong&gt; and the &lt;strong&gt;capacity constraint&lt;/strong&gt; are correctly targetted&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://lh4.ggpht.com/_bayCgqm3V20/SRAz1z8ktaI/AAAAAAAABHk/r4ipuqs0NS0/s1600-h/image%5B14%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="396" alt="image" src="http://lh5.ggpht.com/_bayCgqm3V20/SRAz3oHSeWI/AAAAAAAABHo/5WlnIrcRMCg/image_thumb%5B10%5D.png?imgmax=800" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You're done.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And when the 101st request arrives on the server, the latter will send a HTTP 503 error.&lt;/p&gt; &lt;p&gt;Combined to the configuration of your plugin, this will dispatch the request to the next WebLogic Server instance in the cluster,&lt;/p&gt; &lt;p&gt;as shown below.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_bayCgqm3V20/SRAz4LrkoeI/AAAAAAAABHs/UKn9BAUG_Gg/s1600-h/image%5B10%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="869" alt="image" src="http://lh6.ggpht.com/_bayCgqm3V20/SRAz5NNhG0I/AAAAAAAABHw/AwhT3uKBiZ4/image_thumb%5B8%5D.png?imgmax=800" width="767" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c56024cc-b61b-4900-b0eb-fbe1b3250c87" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/weblogic" rel="tag"&gt;weblogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/plugin" rel="tag"&gt;plugin&lt;/a&gt;,&lt;a href="http://technorati.com/tags/load-balancing" rel="tag"&gt;load-balancing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/workmanager" rel="tag"&gt;workmanager&lt;/a&gt;,&lt;a href="http://technorati.com/tags/execute%20queues" rel="tag"&gt;execute queues&lt;/a&gt;,&lt;a href="http://technorati.com/tags/overload" rel="tag"&gt;overload&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-431419685537008617?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/431419685537008617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=431419685537008617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/431419685537008617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/431419685537008617'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2008/11/how-to-manage-server-overload-thanks-to.html' title='How to manage a server overload thanks to WorkManagers ?'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_bayCgqm3V20/SRAzuj47ObI/AAAAAAAABHM/LbEwvXXVNg4/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-6761587655414952783</id><published>2008-09-25T15:28:00.002+02:00</published><updated>2008-10-26T15:34:50.048+01:00</updated><title type='text'>[Book Review] Apache JMeter</title><content type='html'>&lt;p&gt;As always, I'm reviewing a book from the rising publisher &amp;quot;Packt Publishing&amp;quot;.&lt;/p&gt;  &lt;p&gt;First thing I thought when holding the book is : &amp;quot;Wow, it's slim&amp;quot; :)&lt;/p&gt;  &lt;p&gt;I previously worked with JMeter in 2003 and I appreciated the power of that excellent tool. I also used OpenSTA which is different. &lt;/p&gt;  &lt;p&gt;I didn't work enough time with it to be able to compare them.    &lt;br /&gt;Yet, just on a feeling level, I was more convinced by JMeter.&lt;/p&gt;  &lt;p&gt;Thus, it's with excitement that I read the first pages. &lt;/p&gt;  &lt;p&gt;The first chapters were all about the basics : very useful for beginners or people who don't know what JMeter looks like.&lt;/p&gt;  &lt;p&gt;It's really a must-read if you're new to JMeter. Else, it's a good refresh about the way you design and configure your test plans, etc.&lt;/p&gt;  &lt;p&gt;It provides the useful information to know and I especially appreciated the last chapter (advanced configuration) in which you learn about FTP among other functionalities.&lt;/p&gt;  &lt;p&gt;Recommended for everyone who need to rapidly understand and use this tremendous tool.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.packtpub.com/beginning-apache-jmeter/book/hp/jmeter-abr/" href="http://www.packtpub.com/beginning-apache-jmeter/book/hp/jmeter-abr/"&gt;http://www.packtpub.com/beginning-apache-jmeter/book/hp/jmeter-abr/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You may find a sample chapter here : &lt;a title="http://www.packtpub.com/article/functional-testing-with-jmeter" href="http://www.packtpub.com/article/functional-testing-with-jmeter"&gt;http://www.packtpub.com/article/functional-testing-with-jmeter&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:82ef41ac-b6a3-4acf-bf86-71bcb62af76d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Mots clés Technorati : &lt;a href="http://technorati.com/tags/book%20review" rel="tag"&gt;book review&lt;/a&gt;,&lt;a href="http://technorati.com/tags/jmeter" rel="tag"&gt;jmeter&lt;/a&gt;,&lt;a href="http://technorati.com/tags/packt%20publishing" rel="tag"&gt;packt publishing&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2592381182145606344-6761587655414952783?l=m-button.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-button.blogspot.com/feeds/6761587655414952783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2592381182145606344&amp;postID=6761587655414952783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/6761587655414952783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2592381182145606344/posts/default/6761587655414952783'/><link rel='alternate' type='text/html' href='http://m-button.blogspot.com/2008/09/book-review-apache-jmeter.html' title='[Book Review] Apache JMeter'/><author><name>Maxence Button</name><uri>http://www.blogger.com/profile/03432797928549149364</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_bayCgqm3V20/SMk3ZIRqwTI/AAAAAAAAAzM/eeu1lfIrI7I/S220/linkedin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2592381182145606344.post-5853027721096122042</id><published>2008-09-19T10:00:00.005+02:00</published><updated>2008-10-26T15:35:52.864+01:00</updated><title type='text'>Using JSP Precompilation in WebLogic</title><content type='html'>&lt;p&gt;Typically, when you deploy an application, WebLogic Server tries to precompile the JSPs of your application. &lt;/p&gt;  &lt;p&gt;But why ? How is it sensed to work normally ? What does this mechanism offer ? &lt;/p&gt;  &lt;p&gt;That's what I'm going to explain in this article.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h2&gt;How did it work before ?&lt;/h2&gt;  &lt;p&gt;Well the original schema is the following : you typically deploy your application to your application server. &lt;/p&gt;  &lt;p&gt;Once it's deployed, the first user that accesses a JSP has to wait a little bit, the time the JSP got compiled (transformed into a servlet).&lt;/p&gt;  &lt;p&gt;As you can see, there is a small problem here : the fact that the JSP is compiled when a user accesses it. &lt;/p&gt;  &lt;p&gt;It implies that some users may have to experience a delay when requesting a page, that's not exactly the idea of a good quality of service ...&lt;/p&gt;  &lt;p&gt;That's this issue the precompilation was designed to address.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h2&gt;How do I setup precompilation ?&lt;/h2&gt;  &lt;p&gt;Nowadays, almost all application servers use precompilation. &lt;/p&gt;  &lt;p&gt;As written above, precompilation is a way to prevent first users from compiling pages and then wait for them to show up.&lt;/p&gt;  &lt;p&gt;You may use precompilation before or during a deployment.&lt;/p&gt;  &lt;p&gt;You've got several ways to do so :&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Using the &lt;em&gt;weblogic.appc&lt;/em&gt; tool (pre-deployment compilation)&lt;/h3&gt;  &lt;p&gt;One good practice is to take the precompilation step and remove it from the deployment process.&lt;/p&gt;  &lt;p&gt;When I say remove, it doesn't mean that we're going to suppress it, but rather than we will reorder the process.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt; : You could also use &lt;a href="http://edocs.bea.com/wls/docs100/webapp/reference.html#wp57794" target="_blank"&gt;&lt;em&gt;weblogic.jspc&lt;/em&gt;&lt;/a&gt; but it's deprecated.&lt;/p&gt;  &lt;p&gt;Execute the &lt;em&gt;appc&lt;/em&gt; tool like :&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/maxence.button/SNNcBPXRwyI/AAAAAAAAAzk/V7zp80sXqaY/s1600-h/image14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="298" alt="image" src="http://lh4.ggpht.com/maxence.button/SNNcB9uJEFI/AAAAAAAAAzo/-esnuaIxCpY/image_thumb8.png?imgmax=800" width="934" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;You'll see that the size of the WAR has changed (initially 2k)&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/maxence.button/SNNcCLAagVI/AAAAAAAAAzs/_A4lOhAHssA/s1600-h/image18.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="57" alt="image" src="http://lh4.ggpht.com/maxence.button/SNNcCWGv9jI/AAAAAAAAAzw/BvmRBB4ybfg/image_thumb10.png?imgmax=800" width="645" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;If we take a closer look at the content of the WAR, we see a new directory and a new file :&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/maxence.button/SNNcC-ITqAI/AAAAAAAAAz0/la5A_w-0njM/s1600-h/image22.png"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/maxence.button/SNNcDal7_0I/AAAAAAAAAz4/szE-wMBH8CI/s1600-h/image26.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="119" alt="image" src="http://lh6.ggpht.com/maxence.button/SNNcDqIcq2I/AAAAAAAAAz8/-PowTLFvP40/image_thumb14.png?imgmax=800" width="649" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;As you can see, a new object &amp;quot;__index.class&amp;quot; has been created in the jsp_servlet directory, under &lt;em&gt;WEB-INF\classes&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt; : When using Workshop, you may precompile your JSP by just checking a box :&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/maxence.button/SNNcECc7hxI/AAAAAAAAA0A/YGy-60ev5d8/s1600-h/image10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="419" alt="image" src="http://lh4.ggpht.com/maxence.button/SNNcEccDXSI/AAAAAAAAA0E/ObJ2eiA3Epw/image_thumb6.png?imgmax=800" width="508" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;   &lt;br /&gt;&lt;/h3&gt;  &lt;h3&gt;Using the default mechanism : weblogic.xml (during deployment)&lt;/h3&gt;  &lt;p&gt;The default behavior is to not compile JSPs. If you want to turn that feature on, you'll have to specify it in your &lt;a href="http://edocs.bea.com/wls/docs100/webapp/weblogic_xml.html#wp1038491" target="_blank"&gt;DD weblogic.xml&lt;/a&gt;.&
