<?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-21854841</id><updated>2012-01-07T03:29:03.558+01:00</updated><category term='bpel'/><category term='jdeveloper'/><category term='rules'/><category term='java'/><category term='zimbra'/><category term='coherence'/><category term='esb'/><category term='soa'/><category term='op5'/><category term='.net'/><category term='beehive'/><category term='barracuda'/><category term='web services'/><category term='jvm'/><category term='toplink'/><category term='adf'/><title type='text'>my thoughts</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>73</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21854841.post-6580988691384531518</id><published>2011-06-15T14:08:00.003+02:00</published><updated>2011-06-15T14:18:01.692+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='barracuda'/><category scheme='http://www.blogger.com/atom/ns#' term='beehive'/><title type='text'>Configure Oracle Beehive with Barracuda Loadbalancer</title><content type='html'>&lt;span style="font-family: trebuchet ms;font-size:100%;" &gt;Oracle / F5 provides instructions for configuring Beehive with BIG-IP, however for other loadbalancers the information is very limited. As we use Barracuda loadbalancer at our site, we had to set this up. In case someone else is using this setup, this might help a bit.&lt;br /&gt;&lt;br /&gt;I will assume that you have your Barracuda loadbalancer up &amp;amp; running, so I will not go into details about that. Also, as we do SSL offloading in the loadbalancer these instructions assumes that you have your certificate uploaded to the loadbalancer. To do SSL offloading in the loadbalancer was recommended to us by Oracle as doing this on the Beehive servers will consume a significant amount of resources.&lt;br /&gt;&lt;br /&gt;The actual setup of Beehive in Barracuda is then quite straightforward, start by creating separate service for each of the Beehive services. That means one service each for HTTP, IMAP, SMTP, XMPP and BTP.&lt;br /&gt;&lt;br /&gt;Note that you cannot do SSL offloading in the loadbalancer for the XMPP service. For this service you will have to terminate the SSL in your Beehive node, using the instructions provided in the Beehive documentation for XMPP. We had a SR running with Oracle Support for a while until they could confirm that it wasn't possible. In the end we decided not to use the Barracuda for XMPP, instead we routed the traffic directly to one of our Beehive nodes.&lt;br /&gt;&lt;br /&gt;The Barracuda services should then be configured as follows:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="font-family: trebuchet ms;"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;HTTP as a 'Layer 7 - HTTP' service &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;IMAP as a 'TCP Proxy' service&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;SMTP as a 'TCP Proxy' service&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;BTP as a 'TCP Proxy' service&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: trebuchet ms;font-size:100%;" &gt;&lt;br /&gt;In each of the services you will need to enable SSL Offloading as this options default to 'No'. Apart from that, you could basically use the default options from the Barracuda. For the HTTP service you probably also want to consider the 'Send traffic to Last Resort Server' that will direct any HTTP request to a web server that will display some information in case Beehive for some reason becomes unavailable.&lt;br /&gt;&lt;br /&gt;To summarize, the setup of Oracle Beehive with Barracuda loadbalancer is a quite simple &amp;amp; straightforward, we did not encounter any particular issues during the setup, with the exception of the XMPP issue.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-6580988691384531518?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/6580988691384531518/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2011/06/configure-oracle-beehive-with-barracuda.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/6580988691384531518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/6580988691384531518'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2011/06/configure-oracle-beehive-with-barracuda.html' title='Configure Oracle Beehive with Barracuda Loadbalancer'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-1727510090613085637</id><published>2011-01-26T14:37:00.004+01:00</published><updated>2011-01-26T14:53:32.805+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='op5'/><category scheme='http://www.blogger.com/atom/ns#' term='beehive'/><title type='text'>Using op5 (Nagios) for Beehive Monitoring</title><content type='html'>In addition to using Enterprise Manager we also use op5, a Nagios based monitoring software. So, naturally I wanted to be able to monitor some of the Beehive services using this tool as well as Enterprise Manger. What I initially wanted to know was basically if the OC4J containers in Beehive were up and running or not. As op5 uses the standard NRPE (Nagios Remote Plugin Executor) agent in order to perform the monitoring, the task wasn't that hard to accomplish.&lt;br /&gt;&lt;br /&gt;The first (and basically only issue) was that I couldn't find and good NRPE plugins to use to perform the monitoring with. The standard check_procs plugin couldn't be used as I did not find any ways to distinguish between the different OC4J processes using this plugin. Well, this wasn't a big issue as you basically can use any given script as a NRPE plugin. So, I quickly created a script that would allow me to count the # of processes for the different OC4J containers, not the prettiest solution, but it does the job.&lt;br /&gt;&lt;br /&gt;Here is the script:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;OK_PROCESSES="4"&lt;br /&gt;PROC_NAME="BEEAPP"&lt;br /&gt;&lt;br /&gt;while getopts "o:N:" optionName; do&lt;br /&gt;case "${optionName}" in&lt;br /&gt; "o") OK_PROCESSES="${OPTARG}";;&lt;br /&gt; "N") PROC_NAME="${OPTARG}";;&lt;br /&gt;esac&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;CURRENT_PROCESSES=`ps -ef | grep ${PROC_NAME} | grep -v bash | grep -v grep | wc -l`&lt;br /&gt;&lt;br /&gt;if [[ ${CURRENT_PROCESSES} -eq ${OK_PROCESSES} ]]; then&lt;br /&gt;echo "${PROC_NAME} OK: ${CURRENT_PROCESSES} processes"&lt;br /&gt;exit 0&lt;br /&gt;else&lt;br /&gt;echo "${PROC_NAME} ERROR: incorrect number of processes: ${CURRENT_PROCESSES}"&lt;br /&gt;exit 2&lt;br /&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Once the script was in place I could continue to configure op5 to use these lines for the monitoring:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;command[bee_core]=/opt/plugins/check_beehive -o 2 -N BEECORE&lt;br /&gt;command[bee_mgmt]=/opt/plugins/check_beehive -o 1 -N BEEMGMT&lt;br /&gt;command[bee_app]=/opt/plugins/check_beehive -o 4 -N BEEAPP&lt;br /&gt;command[bee_client]=/opt/plugins/check_beehive -o 4 -N BEECLIENT&lt;br /&gt;command[bee_soa]=/opt/plugins/check_beehive -o 1 -N oc4j_soa&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;And finally I just had to add these commands as services in op5 (as check_nrpe services) and the monitoring was up &amp;amp; running.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-1727510090613085637?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/1727510090613085637/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2011/01/using-op5-nagios-for-beehive-monitoring.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/1727510090613085637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/1727510090613085637'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2011/01/using-op5-nagios-for-beehive-monitoring.html' title='Using op5 (Nagios) for Beehive Monitoring'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-8376262845373133351</id><published>2011-01-20T16:12:00.003+01:00</published><updated>2011-01-20T16:16:50.757+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zimbra'/><category scheme='http://www.blogger.com/atom/ns#' term='beehive'/><title type='text'>Some Notes About the Help in the Oracle Zimbra Client</title><content type='html'>One thing that is a bit annoying in the Oracle Zimbra Client for Beehive is that the help that is included in the client is not modified to reflect that changes that has been made to the client from Oracle's side. Instead comes the Zimbra client with the standard Zimbra help and there are many things there that is likely to confuse your end users.&lt;br /&gt;&lt;br /&gt;For example, it contains a section about "Instant Messaging Basics", but there is no instant messaging functions in the Oracle version of the Zimbra client. Some other things that are mentioned but not exists are Spell Check, Multiple signatures, Conversations, Zimlets and many more. As these things are mentioned but non existent will most likely confuse you end users.&lt;br /&gt;&lt;br /&gt;So what we have done is instead written our own instruction on how-to use the Zimbra web client and put these instructions on our Intranet. Then we have redirected the Help link in the Beehive Zimbra client to point there instead.&lt;br /&gt;&lt;br /&gt;To implement the redirection you can just change the file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&amp;lt;BEEHIVE_HOME&amp;gt;/j2ee/BEECLIENT/applications/zimbra-ui/zimbra/help/en_US/advanced/Zimbra_User_Help.htm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and implement a simple HTTP redirect there. If you have multiple BEECLIENT instances you need to implement the change in each of them (putting a soft link in place won't work here).&lt;br /&gt;&lt;br /&gt;Also, just be careful that when you apply a patch or upgrade Beehive you most likely will have to re-implement this change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-8376262845373133351?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/8376262845373133351/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2011/01/some-notes-about-help-in-oracle-zimbra.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/8376262845373133351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/8376262845373133351'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2011/01/some-notes-about-help-in-oracle-zimbra.html' title='Some Notes About the Help in the Oracle Zimbra Client'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-6352803004743623756</id><published>2011-01-14T11:33:00.003+01:00</published><updated>2011-01-14T11:50:17.849+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beehive'/><title type='text'>Mailing lists in Beehive</title><content type='html'>One things that strikes you when starting to setup Beehive is the absence of mailing lists. Even though Beehive focuses on collaboration rather than on e-mail, mailing lists still plays an important role in an organisation. So, given the fact that you don't have regular mailing lists in Beehive but your end users demand them, what can you do? So far we have seen 3 options that you can use in Beehive.&lt;br /&gt;&lt;br /&gt;* Using Beehive workspaces&lt;br /&gt;* Using Beehive (or in our case Active Directory) groups&lt;br /&gt;* Using an external mailing list server&lt;br /&gt;&lt;br /&gt;I will discuss these options below and give you my take on each of them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Using Beehive workspaces&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Each user can create a workspace in Beehive and add users to it. So this can be used to mimic a  mailing list, but imho, it is a bit of an overkill to setup a workspace just to be able to have a mailing list. As any user can create a workspace you quickly loses any naming standards you might have in place within your organisation, which will make it practically impossible to find the right mailing list for the end users. Also, you will loose control of abandoned workspaces within Beehive when employees leaves. You could have a centralized administration for company wide workspaces and uses these as mailing lists, but this will turn some of your employees into full time workspace administrators.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Using Beehive groups&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In our case we synchronize our Active Directory with Beehive and have user and group management there. As you can set a mail address on a group you can use this as an alternative to mailing lists. However, as you do not want any given person to have the right to work inside your LDAP server, this option leads either to a lot of work for your LDAP administrators or you will have to setup a 3:rd party product (or create your own) only for the purpose of handling group memberships. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Using an external mailing list server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is perhaps the best option to choose for having mailing lists within Beehive. You will only have setup the initial mailing list and you will have to create an external contact in Beehive (if the address should be visible in the address list), but once that is done you can delegate all administration of the list to the list owner. You will also be able to keep any naming standards that you might have in place. Below is an overview on how this could be setup.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fn6sutDzAVA/TTAp6F5W4OI/AAAAAAAAAFs/lusCuhdcql8/s1600/overview.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 228px; height: 320px;" src="http://1.bp.blogspot.com/_fn6sutDzAVA/TTAp6F5W4OI/AAAAAAAAAFs/lusCuhdcql8/s320/overview.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5561991617794466018" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-6352803004743623756?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/6352803004743623756/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2011/01/mailing-lists-in-beehive.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/6352803004743623756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/6352803004743623756'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2011/01/mailing-lists-in-beehive.html' title='Mailing lists in Beehive'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_fn6sutDzAVA/TTAp6F5W4OI/AAAAAAAAAFs/lusCuhdcql8/s72-c/overview.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-8883311796844669189</id><published>2011-01-12T15:59:00.002+01:00</published><updated>2011-01-12T16:14:32.156+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beehive'/><title type='text'>Relaunching this Blog</title><content type='html'>I have now regained some interest in keeping a technical blog again, so I will once again start to write some technical stuff in it. This time it will be on Oracle Beehive and other things that occurs in my daily work that might be of interest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-8883311796844669189?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/8883311796844669189/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2011/01/relaunching-this-blog.html#comment-form' title='1 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/8883311796844669189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/8883311796844669189'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2011/01/relaunching-this-blog.html' title='Relaunching this Blog'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-8253661037156500341</id><published>2008-12-17T10:17:00.000+01:00</published><updated>2008-12-17T10:19:02.858+01:00</updated><title type='text'>Final Post (on SOA &amp; Java)</title><content type='html'>&lt;span style="font-family: georgia;font-size:100%;" &gt;This is the final post I will make in this blog about SOA and Java. After almost 10 years at Oracle, today is my last day here. I will now go on a 3-week long vacation before I will pick up some new challenges. As my main focus will switch away from the SOA &amp;amp; Java world, I will not continue to write about these topics anymore. I will keep the old articles here for reference and historical interest. I will still continue to post in this blog, but it will be on completely different topics. So, I just would like to say thank you to those of you who has been reading this blog so far!&lt;br /&gt;&lt;br /&gt;Take care!&lt;br /&gt;Stellan&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-8253661037156500341?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/8253661037156500341/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/12/final-post-on-soa-java.html#comment-form' title='1 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/8253661037156500341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/8253661037156500341'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/12/final-post-on-soa-java.html' title='Final Post (on SOA &amp; Java)'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-5982240785561352884</id><published>2008-08-22T14:32:00.001+02:00</published><updated>2011-10-06T21:43:26.794+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coherence'/><title type='text'>5 Top Products we Acquired from BEA</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;Having spent the last weeks looking into the products that we got added to our product stack with the acquisition of BEA, I now feel that I'm starting to get a grip on them and can see how they will fit into our product portfolio. So far some of the products feels very strong and I will elaborate a bit on why I think so in this post. So, I'd like to rank the 5 strongest products, in my opinion, that we got from BEA.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;#5 Oracle BPM aka AL BPM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;This product will certainly fill a gap in our portfolio for creating business process. It will enable you to quickly &amp;amp; efficiently create business processes. It will also assist with the monitoring of them according to KPI, which will assist in improving the processes according to business needs. It does in no way replace our other products for creating processes, like BPEL, for example. Rather it complements it in a very good way. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Sure, there is a danger here that users starts to generate &amp;amp; implement processes on their own, similar to what we see in the database area where users stores business data in spreadsheets or small databases outside of their main databases. One could perhaps compare this risk of generating "process islands" similar to the risk of generating "information islands" for data storage. However, as we will not be able to prevent users from storing data outside of the main databases we will likewise not be able to stop them from creating processes outside of the main &lt;a href="http://www.oracle.com/technologies/soa/index.html"&gt;SOA&lt;/a&gt; architecture, thus we need to be able to provide a good tool for this purpose and this is &lt;a href="http://www.oracle.com/technologies/bpm/index.html"&gt;BPM&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;#4 WebLogic Server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;You might be a bit surprised that I put &lt;a href="http://www.oracle.com/technology/products/weblogic/index.html"&gt;WebLogic&lt;/a&gt; only as number four. The main reason is that WebLogic plays in an area where I think that we already have a very strong product. For sure, WebLogic is a darn good Application Server too, but we got other products from BEA that imho better fills gaps in our product portfolio, thus WebLogic only ends up in spot four.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The two main things like about WebLogic, and where I think that Oracle AS could be better, is in administration and JMS. The administration tools for WebLogic I find superior to the ones we provide with Oracle AS. The concept of the administration server, which you use to push configuration out to the managed servers is very nice, and will ensure that all servers in a cluster has the same configuration. This was not so easy to do in Oracle AS. Also I find the JMS implementation in WebLogic superior to the one we have in Oracle AS, however, I will not go into the details in this post about this.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;There are a few things that I like in Oracle AS, that WebLogic don't have, for example that ability to run the OC4J container standalone just to mention one.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;#3 AL Data Services Platform&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Also perhaps a surprise. In this case it's not so much the product itself, it's rather the area that it's targeting that is interesting. As of today the common way of writing software is in a three-tier architecture: GUI-Middleware-Database. I believe that this will change in the near future and that we will see that four-tier architectures will become more and more common where we introduce a data &amp;amp; computing grid between the middleware and the database, so that we will look into architectures that looks like: GUI-Middleware-Grid-Database.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;We already have a few products in our product stack that targets this domain, like &lt;a href="http://www.oracle.com/products/middleware/odi/odi-suite.html"&gt;ODI&lt;/a&gt; and &lt;a href="http://www.oracle.com/technology/products/coherence/index.html"&gt;Coherence&lt;/a&gt;. But we still miss a few pieces to be able to provide a complete stack of products for this domain and here is where the functionality from the Data Services Platform comes into the picture. WebLogic perhaps provides a better choice for an existing product, while DSP provides us with functions that will be crucial for the next big thing. That is why DSP is higher on my list.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;#2 Tuxedo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Before the middleware era, C, C++ and Cobol were the common languages for accessing the Oracle database. When Oracle entered the middleware area it was all Java, Java and some more Java. Sure, we provide modules for Pearl &amp;amp; PHP, but Java is THE middleware language in the Oracle stack. I guess the C &amp;amp; Cobol developers may have felt a bit stepmotherly treated along the road. That is, until now.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;a href="http://www.oracle.com/technology/products/tuxedo/index.html"&gt;Tuxedo&lt;/a&gt; can be described as a middleware platform for C, C++ and Cobol. Sure, developers for these languages have previously had the option to license Tuxedo from BEA, but to have it in-house is imho a big bonus for Oracle. This will hopefully give the large group of people developing in C, C++ and Cobol the message that they are not forgotten by Oracle. It will also show that Java is no longer the only option that we provide for developing middleware.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;#1 JRockit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Before the buy of BEA we could provide all pieces of software, from the operating system to the developer IDE, except for one piece; a JDK. With BEA we now have &lt;a href="http://www.oracle.com/technology/products/jrockit/index.html"&gt;JRockit&lt;/a&gt;, however, this is not the main reason why it is on the number spot on my list.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The Liquid VM version of JRockit will enable you to run Java applications directly on top of a virtual machine without any operating system. This is a very cool feature that will boost many Java applications. Still, this is neither the reason why JRockit ends up in the number one spot.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The reason I have JRockit on place number one is the Real Time version of JRockit. This will enable users to run their Java applications with minimal and deterministic interruption for garbage collection. This is a very crucial feature for existing Java applications that needs to be highly performing, but even more important will the combination of JRockit RT and Coherence be. This combination will enable Java developers to write the next generation of Java applications that will perform on the same level as C / C++ applications. This is something that has been missing in the Java world for a long, long time. Hence, JRockit ends up in my number one spot.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-5982240785561352884?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/5982240785561352884/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/08/5-top-products-we-acquired-from-bea.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5982240785561352884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5982240785561352884'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/08/5-top-products-we-acquired-from-bea.html' title='5 Top Products we Acquired from BEA'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-4765133451265586739</id><published>2008-08-20T10:05:00.002+02:00</published><updated>2011-06-15T14:21:00.542+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coherence'/><title type='text'>Coherence 3.4 Developer Pre-Release 2 Available</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;The Coherence 3.4 developer pre-release 2 is now available for download. Please note that this release is only available via Oracle MetaLink for customers with CSI numbers.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Please refer to the release notes for a full list &amp;amp; complete details on the new features&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To obtain the Oracle Coherence 3.4 Developer Pre-Release 2 product, logon to MetaLink and lookup &lt;a href="https://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&amp;amp;p_id=732071.1"&gt;Note 732071.1&lt;/a&gt; and follow the directions.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-4765133451265586739?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/4765133451265586739/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/08/coherence-34-developer-pre-release-2.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4765133451265586739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4765133451265586739'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/08/coherence-34-developer-pre-release-2.html' title='Coherence 3.4 Developer Pre-Release 2 Available'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-7713532172689527102</id><published>2008-08-18T12:40:00.004+02:00</published><updated>2011-06-15T14:20:21.101+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bpel'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>BPA, BPEL &amp; BPM. Jungle or a Wide Open Road?</title><content type='html'>&lt;span style=";font-family:arial;font-size:100%;"  &gt;We (Oracle) provide several tools within the business process design &amp;amp; development area. Also, with the acquisition of BEA we got even more tools to add to our product stack. At a first glance this might be a bit confusing and it also might appear as there are some overlaps between the different tools, however, if you look a little deeper you will find that there is a place for each of these tools within your arsenal for creating business processes.&lt;br /&gt;&lt;br /&gt;Let's start by have a quick glance at the players, whom they are and what they are do before we do a more throughout comparison between them.&lt;br /&gt;&lt;br /&gt;To start with, the players are: Oracle Business Process Analysis Suite, Oracle BPM Suite.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/bpa/index.html"&gt;Oracle Business Process Analysis Suite&lt;/a&gt;&lt;br /&gt;This is the architects' tool. It includes support for process modeling and simulation which makes this a key component of the business process lifecycle. It provides a graphical modeling environment for defining process maps and detailed process flows consisting of both human and automated steps. It also supports data modeling, organizational modeling, impact analysis and rich report generation. Through simulation, you can quickly determine the performance of the process under certain hypothetical conditions. The &lt;a href="http://download.oracle.com/otn/nt/ias/101340/Oracle_Business_Process_Architect_Quick_Start_Guide.pdf"&gt;Business Process Architect Quick Start Guide &lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;is a good place to learn more about this tool.&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/bpm/index.html"&gt;Oracle BPM Suite&lt;/a&gt;&lt;br /&gt;This is a software suite that integrates all phases of the BPM lifecycle (modeling, implementation, execution and monitoring). It will provide the user with an end-to-end tool for all aspects of the business process lifecycle. It is also very suitable to process development according to agile ideas.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/ias/bpel/index.html"&gt;Oracle BPEL Process Manager&lt;/a&gt;&lt;br /&gt;The Oracle BPEL PM tool will enable to user to create processes that adhere to the BPEL standard. It consists of both a design time and a runtime environment. The design time environment is integrated into &lt;a href="http://www.oracle.com/technology/software/products/jdev/index.html"&gt;Oracle JDeveloper&lt;/a&gt; and the BPEL PM runtime is highly performing and can be installed on top the most common application servers.&lt;br /&gt;&lt;br /&gt;So, after introducing the players, let's have a deeper look into when to use each of these tools by using some examples.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Example 1&lt;/span&gt;&lt;br /&gt;Acme Inc. is entering the world of SOA. They will replace or integrate all their current processes into a single SOA strategy. Ron is an architect that has been given the task to model this new SOA strategy. Which of the above tools would be most appropriate for Ron to use?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Example 2&lt;/span&gt;&lt;br /&gt;Karen is a department manger who also is quite technical. She work for a company that promotes empowerment quite heavily, and she has quite lot of flexibility of how she runs the day to day business of her department. Today she manually handles the holiday requests of her staff using mail and a spreadsheet; however, she would like to automate the process somehow. The company does not have a generic holiday approval process; it is up to each manager to handle, which is in line with their ideas on empowerment. Which of the above tools would be the best for Karen to use to automate this process?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Example 3&lt;/span&gt;&lt;br /&gt;John is a software engineer that has been given the task to implement an order entry process. The process has already been designed and he has been given the blueprint. The process is very crucial to the business of the company and needs to be available 24*7, thus it will be deployed in a HA environment. Which of the above tools would be the best for John to use?&lt;br /&gt;&lt;br /&gt;Well, the answers might be obvious to the you, however, they should give you an idea on where each of the tools in the Oracle BPM stack can help you with various aspects of your process modeling &amp;amp; creation.&lt;br /&gt;&lt;br /&gt;Oh, I almost forgot, the answers. In Example 1 the Oracle BPA Suite is the obvious choice. In Example 2, most people would go for Oracle BPM Suite as this will help with all phases of the BPM lifecycle. Example 3 would be an example on where to use Oracle BPEL Process Manager as you have High Availability requirements.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-7713532172689527102?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/7713532172689527102/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/08/bpa-bpel-bpm-jungle-or-wide-open-road.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7713532172689527102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7713532172689527102'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/08/bpa-bpel-bpm-jungle-or-wide-open-road.html' title='BPA, BPEL &amp; BPM. Jungle or a Wide Open Road?'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-4372754369261854879</id><published>2008-08-15T12:18:00.004+02:00</published><updated>2008-12-08T10:40:54.483+01:00</updated><title type='text'>Summer Recap</title><content type='html'>&lt;span style=";font-family:arial;font-size:100%;"  &gt;Coming back from the holiday, I've noticed that several interesting things have happened with my domain of interest. So, I'd thought I'd make a recap over some of the stuff that's happened.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BEA Acquisition&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I guess no one has missed this. For those of us working in the Middleware area I believe that this is really good news. For sure, some of the products do have an overlap, but what's more important is that the BEA stack will fill in some of the gaps that I think we have had in the past in our middleware stack. I won't dwell more on this now, but will get back with more details in later posts. Most of the information about Oracle &amp;amp; BEA can be found &lt;a href="http://www.oracle.com/bea/index.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One link that I'd just like to highlight is the &lt;a href="http://www.oracle.com/bea/oracle-bea-partner-faq.pdf"&gt;Partner Frequently Asked Questions&lt;/a&gt; (quite obvious as I'm working with our strategic partners...).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New Products&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As always, being away for a few weeks will give a list of new and interesting products to use. Here is a short list of some of the highlights in my opinion:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;a href="http://www.oracle.com/technology/software/products/ias/bea_main.html"&gt;Oracle WebLogic Server 10.3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;a href="http://www.oracle.com/technology/software/products/jrockit/index.html"&gt;Oracle JRockit&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;a href="http://www.oracle.com/technology/software/products/jdev/index.html"&gt;Oracle JDeveloper (10.1.3.4) &lt;/a&gt;&lt;br /&gt;Notice that there is also a separate standalone ADF Installer, for those of you installing the ADF runtime on a server...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;a href="http://www.oracle.com/technology/software/products/oepe/index.html"&gt;Oracle Enterprise Pack for Eclipse 1.0&lt;br /&gt;&lt;br /&gt;&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;a href="http://www.oracle.com/technology/software/products/cep/index.html"&gt;Oracle Complex Event Processing 2.0&lt;br /&gt;&lt;br /&gt;&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;a href="http://www.oracle.com/technology/software/products/ias/bea_main.html?msgid=6683885"&gt;Oracle BEA Product Downloads&lt;/a&gt;&lt;br /&gt;All Oracle BEA products downloads on one page...&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-4372754369261854879?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/4372754369261854879/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/08/summer-recap.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4372754369261854879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4372754369261854879'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/08/summer-recap.html' title='Summer Recap'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-2445610764229224477</id><published>2008-07-02T09:44:00.000+02:00</published><updated>2008-12-08T10:40:54.484+01:00</updated><title type='text'>BEA Information on OTN</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;As of today there will be information added on OTN for the Oracle BEA products. Here are some links to get started with:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Oracle BEA Product Downloads&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/software/products/ias/bea_main.html"&gt;&lt;span style="font-family: arial;"&gt;http://www.oracle.com/technology/software/products/ias/bea_main.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Architects Center&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/architect/index.html"&gt;&lt;span style="font-family: arial;"&gt;http://www.oracle.com/technology/architect/index.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Oracle Service Bus Federation with JMS Store-and-Forward and Dynamic Routing in SOA&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/pub/articles/rusman-alsb.html"&gt;&lt;span style="font-family: arial;"&gt;http://www.oracle.com/technology/pub/articles/rusman-alsb.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Deploying The SRDemo ADF Sample Application on WebLogic Servers&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/jdev/howtos/weblogic/deployingwls.html"&gt;&lt;span style="font-family: arial;"&gt;http://www.oracle.com/technology/products/jdev/howtos/weblogic/deployingwls.html&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-2445610764229224477?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/2445610764229224477/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/07/bea-information-on-otn.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/2445610764229224477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/2445610764229224477'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/07/bea-information-on-otn.html' title='BEA Information on OTN'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-5671486151645896181</id><published>2008-06-25T10:23:00.003+02:00</published><updated>2011-06-15T14:22:23.345+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><title type='text'>Specifying the Default ESB Design Time Instance</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;This week I'm running a SOA HA class, and one question that usually comes up during these sessions is the one about the Oracle ESB design time instance. As you probably are aware of, this instance can only run in an Active-Passive setup (I will not dwell about the details of that in this post), so the obvious follow-up question, which isn't answered in the &lt;a href="http://download.oracle.com/docs/cd/B31017_01/core.1013/b28939/toc.htm"&gt;Enterprise Deployment Guide&lt;/a&gt;, is how do you specify which one of the instance you have configured and deployed the ESB design time on is going to be the default one?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Well, if you follow the instructions in the EDG 3.1.16, where you set:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;process-type id="OC4J_ESBDT" module-id="OC4J" service-failover="1" status="enabled"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;you cannot really tell. If you start the instances at approximately the same time, you cannot really say which instance that will be started, for example, suppose that you have configured the instances to be brought up at boot time, and you start the machines at the same time. This might be fine, but under most circumstances you probably would like to select which one that will be the default running ESB design time instance. Well, you obviously always have the option to manually start the selected default instance first, and this problem will then go away.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Using the &lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;"&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;service-weight&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;"&lt;/span&gt;&lt;/span&gt; parameter can help you a bit with this task. The details of this parameter are described in the &lt;a href="http://download.oracle.com/docs/cd/B31017_01/core.1013/b28944/common.htm#sthref503"&gt;Process Manager and Notification Server Administrator's Guide&lt;/a&gt;. Basically, the higher value of this parameter, the higher priority to use this instance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;So, suppose that you configure the instance on machine Apa as:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;process-type id="OC4J_ESBDT" module-id="OC4J" service-failover="1" service-weight="200" status="enabled"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;and the instance on machine Bepa as:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;process-type id="OC4J_ESBDT" module-id="OC4J" service-failover="1" service-weight="100" status="enabled"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;OPMN will start the instance on machine Apa, given that they are started approximately at the same time. However, if the instance on machine Bepa has already been started and is up &amp;amp; running, and you then start the instance on machine Apa, OPMN will not bring down the instance on machine Bepa. So, using this solution will only work if the instances are started at approximately the same time.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If you really want to be sure that a specific instance is primary used, like the instance on machine Apa in the example above, you will have to create an event-script in the pre-start section for the instance running on Apa that brings down the instance running on Bepa. This way the instance on Apa will always will be used, regardless if Bepa is already running. There are some drawbacks with this solution that are documented in the &lt;a href="http://download.oracle.com/docs/cd/B31017_01/core.1013/b28944/common.htm#CJHEHGBJ"&gt;OPMN documentation&lt;/a&gt; that you should be aware of if considering this solution.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-5671486151645896181?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/5671486151645896181/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/06/specifying-default-esb-design-time.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5671486151645896181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5671486151645896181'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/06/specifying-default-esb-design-time.html' title='Specifying the Default ESB Design Time Instance'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-3144113699833217060</id><published>2008-06-16T18:49:00.001+02:00</published><updated>2011-10-06T21:43:26.794+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coherence'/><title type='text'>Coherence 3.4 Developer Pre-Release Available</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;The Coherence 3.4 developer pre-release is now available for download. Please note that this release is only available via &lt;a href="http://metalink.oracle.com"&gt;Oracle MetaLink&lt;/a&gt; for customers with CSI numbers.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Some of the new features are:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;Coherence C++ API&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;New Coherence Serialization Framework&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;New and Improved Coherence Data Grid Functionality&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;Management Framework Enhancements&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;and many, many more...&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;Please refer to the &lt;a href="http://wiki.tangosol.com/display/COH34UG/Coherence+3.4+Release+Notes"&gt;release notes&lt;/a&gt; for a full list &amp;amp; complete details on the new features&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: arial;"&gt;To obtain the Oracle Coherence 3.4 Developer Pre-Release 1 product, logon to &lt;a href="http://metalink.oracle.com"&gt;MetaLink&lt;/a&gt; and lookup Note 602553.1 and follow the directions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;For further details about the Oracle Coherence 3.4 Developer Pre-Release please refer to &lt;a href="http://www.oracle.com/technology/products/coherence/coherencedatagrid/34.html"&gt;this&lt;/a&gt; OTN page.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-3144113699833217060?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/3144113699833217060/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/06/coherence-34-developer-pre-release.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/3144113699833217060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/3144113699833217060'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/06/coherence-34-developer-pre-release.html' title='Coherence 3.4 Developer Pre-Release Available'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-1606574707903119001</id><published>2008-06-05T12:51:00.004+02:00</published><updated>2011-06-15T14:22:02.785+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='bpel'/><title type='text'>Using DirectSQL in BPEL / ESB Database Adapter</title><content type='html'>&lt;span style="font-family:arial;"&gt;If you read the &lt;a href="http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28994/adptr_db.htm"&gt;Database Adapters User's Guide&lt;/a&gt; you will sooner or later get to the Performance section, and there you will find &lt;span style="font-style: italic;"&gt;DirectSQLPerformance&lt;/span&gt; briefly mentioned. However, it is not described in details, so here are some additional comments on this feature. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;font-family:arial;" &gt;The Default Behaviour&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The normal way for the Database Adapter to work is to use TopLink between the adapter and the Database. This is transparent to the end user when creating a database adapter in either ESB or BPEL. The only hint that you will get that TopLink is involved is in your source project. Here you will find a generated TopLink mapping file and some additional classes used by TopLink within your project. In most cases you will not have to worry about this at all. TopLink behaves like a good citizen within your process, and things work fine.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:arial;" &gt;What is DirectSQL?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This is a feature of the Database Adapter that let it bypass the TopLink framework, and instead use direct JDBC SQL calls to the database. Well, it will not totally bypass TopLink, it will still be used for generating the SQL, obtaining connections, and table introspection. However, other functions of TopLink (for example the cache) will not be used under DirectSQL.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;So, why bother about DirectSQL at all? Well it can, under some circumstances, give you better performance. I have found that it is very hard to identify these circumstances and predict when it will and when it won't improve the performance. The advice is basically just to test it, and see if improves the performance or not. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:arial;" &gt;What are the Gotchas?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;There are some requirements that need to be fulfilled in order for this feature to work. If you have configured DirectSQL, but some of the requirements are not fulfilled, the adapter will fallback and use TopLink. It will in these cases also log a warning message why it didn't work.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The restrictions that needs to be taken into account are listed below: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;For an Inbound Adapter you must have DeletePollingStrategy.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;For an Outbound Adapter you can only use it with Insert.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;It only works for flat table structures.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;It is limited to work with String, Number, Clob, Blob and  Date &amp;amp; Time Types only.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;It does not work with the DetectOmissions feature.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:arial;" &gt;How is it Configured?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;It is configured in the adapter WSDL file:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:arial;" &gt;&amp;lt;jca:operation&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:arial;" &gt;InteractionSpec="oracle.tip.adapter.db.DBWriteInteractionSpec"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:arial;" &gt;DescriptorName="myService.PerfOut"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:arial;" &gt;DmlType="insert"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:arial;" &gt;DetectOmissions="false"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:arial;" &gt;UseDirectSql="true"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:arial;" &gt;OptimizeMerge="true"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:arial;" &gt;MappingsMetaDataURL="myService_toplink_mappings.xml" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Note that you in addition to setting &lt;span style="color: rgb(0, 0, 153);"&gt;UseDirectSql="true"&lt;/span&gt; you must also set &lt;span style="color: rgb(0, 0, 153);"&gt;DetectOmissions="false"&lt;/span&gt;, this because DetectOmissions defaults to true.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-1606574707903119001?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/1606574707903119001/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/06/using-directsql-in-bpel-esb-database.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/1606574707903119001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/1606574707903119001'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/06/using-directsql-in-bpel-esb-database.html' title='Using DirectSQL in BPEL / ESB Database Adapter'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-7247887956053042493</id><published>2008-05-20T15:33:00.001+02:00</published><updated>2011-10-06T21:43:26.794+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coherence'/><title type='text'>5 Reasons Why I Like Coherence</title><content type='html'>&lt;span style="font-family:arial;"&gt;There are many reasons to like Coherence, below are five of my favourite reasons why I like this product. I have taken away some of the most obvious ones, like it's performance &amp;amp; scalability, and will try to point out a few ones that might be missed at the first glance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;1. It's a Very Cool Product&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The last time I ever saw a product that made me raise my eyebrows was when I first saw TopLink, which I guess was sometime back in 2002. At that time I remember that it was a struggle to efficiently map Java objects to relational data. Using pure JDBC calls and populate the objects from the result sets were the common way of doing this back then. It often took efforts &amp;amp; resources to achieve this somewhat effective. TopLink solved that problem so nicely, and all of a sudden the problem no longer existed. Today I feel that with the emerge of SOA applications, we see more and more problems related to performance &amp;amp; scalability and I firmly believe that Coherence will be one product that will help greatly here. (Sorry, I could not resist mentioning performance &amp;amp; scalability...)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;2. It's Designed to Handle Failure&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;At any time any given Coherence node can be taken away from the cluster, and the cluster will still continue to work without interruption. The idea is not to protect individual nodes from failing, but to keep the cluster as a whole alive. In order to do so, Coherence has at any given point in time a pre-defined backup plan on what to do with the data in case of failure of an individual cache node and how to distribute the load among the other cluster members. This is a nice one. Most applications works the other way, they are designed to stay up and does everything to prevent them from dying, even if this means dropping client connections, for example. The clients were lost, but the process managed to stay up. Reminds me of the saying "Won the battle, but lost the war...". I think this approach is one that more applications should take; don't worry if you loose an individual component of the application as long as the application as a whole stays up.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;3. It's Easy to Install&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;It's a small zip archive, ~8M. You just download &amp;amp; unzip, and the installation is finished and you are ready to run. No installers, no product registry, nothing. I really prefer these types of installations to others. It's simple, it's easy and it works.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;4. It's Configurable&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;...and it has reasonable default values. As far as I can recall, I have never came across an application that has such a vast amount options of options in order to alter the configuration to get it to work as you want to. Sure, most applications have the option to alter some of the behaviour with Java and/or XML configurable parameters in order to tweak it, but so far I have not seen any application that comes even close to Coherence on the amount of options you have. Oh, I almost forgot to mention that you could for the options use either Java or XML; you are not restricted to only one of them, which unfortunately is quite common. Did I mention that I also think that most default values make sense, which is unfortunately not so common?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;5. It's Extensible &amp;amp; Modular&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Suppose that you don't like some parts of how Coherence works. For example, you don't think that none of the default caching schemas that Coherence provides really provides what you want. Well no problem, Coherence provides you with a vast set of Interfaces that you can use in order to build you own implementation that behaves the way you want. Some examples are CacheMap, CacheStore, CacheLoader, and AccessController etc, just to mention a few. This is something that I'd like to see more of in other applications as well.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-7247887956053042493?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/7247887956053042493/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/05/5-reasons-why-i-like-coherence.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7247887956053042493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7247887956053042493'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/05/5-reasons-why-i-like-coherence.html' title='5 Reasons Why I Like Coherence'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-4139226853433675418</id><published>2008-05-16T12:53:00.003+02:00</published><updated>2011-06-15T14:21:26.302+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coherence'/><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper'/><title type='text'>Using Coherence with JDeveloper on Machines with Multiple IP Addresses</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Deepak Vohra has published a very nice &lt;a href="http://www.oracle.com/technology/pub/articles/vohra-coherence.html"&gt;tutorial&lt;/a&gt; on &lt;a href="http://www.oracle.com/technology/index.html"&gt;OTN&lt;/a&gt; on using &lt;a href="http://www.oracle.com/technology/products/coherence/index.html"&gt;Coherence&lt;/a&gt; from &lt;a href="http://www.oracle.com/technology/products/jdev/index.html"&gt;JDeveloper&lt;/a&gt;. It gives you a step-by-step guide on how-to get started using Coherence from within JDeveloper.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;One thing that you should keep in mind going through this tutorial is if you are running this tutorial on a machine with multiple network cards. For example, you have installed the Loopback Adapter on your PC. As long as you are running a single cache (as in the example) this doesn't give you any issues, but if you startup another cluster node outside of JDeveloper and you want to ensure that they belongs to the same cluster then you should specify the IP address that you want the cluster nodes to bind to, otherwise it could happen that they end up binding to different IP addresses on your machine, for example one binds to your NIC and another one binds to you Loopback Adapter, and in this case they won't belong to the same cluster. By default Coherence will attempt to obtain the IP to bind to using the java.net.InetAddress.getLocalHost() call, so it shouldn't happen, but I've seen this happening, so it can happen.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;You can solve this issue by specifying the IP address to bind to by using the Java parameter &lt;span style="color: rgb(51, 51, 255);"&gt;tangosol.coherence.localhost&lt;/span&gt;, like &lt;span style="color: rgb(51, 51, 255);"&gt;-Dtangosol.coherence.localhost=192.168.96.1&lt;/span&gt; on the command line when starting the external cache. In JDeveloper this would be done in the 'Run Configuration' configuration as described in the tutorial.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-4139226853433675418?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/4139226853433675418/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/05/using-coherence-with-jdeveloper-on.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4139226853433675418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4139226853433675418'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/05/using-coherence-with-jdeveloper-on.html' title='Using Coherence with JDeveloper on Machines with Multiple IP Addresses'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-7418935301446524971</id><published>2008-05-14T10:25:00.002+02:00</published><updated>2008-05-14T10:28:49.326+02:00</updated><title type='text'>New Address</title><content type='html'>Moved this blog to a new address. The new address is &lt;a href="http://selectedthoughts.com/"&gt;http://selectedthoughts.com&lt;/a&gt;, the old link should still continue to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-7418935301446524971?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/7418935301446524971/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/05/new-address.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7418935301446524971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7418935301446524971'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/05/new-address.html' title='New Address'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-956678924860766627</id><published>2008-05-13T13:37:00.002+02:00</published><updated>2011-10-06T21:35:58.353+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Integrating Java &amp; .Net</title><content type='html'>&lt;span style="font-family: arial;"&gt;Had a discussion yesterday about Java &amp;amp; .Net integration. Of course, the usual suspects came up; JNI, &lt;a href="http://j-integra.intrinsyc.com/"&gt;J-Integra&lt;/a&gt; , &lt;a href="http://www.jnbridge.com/"&gt;JNBridge&lt;/a&gt;, &lt;a href="http://www.codemesh.com/products/juggernet/index.html"&gt;JuggerNET&lt;/a&gt;, &lt;a href="http://www.javain.com/javain/oojni.jsp"&gt;OOJNI&lt;/a&gt; etc. However if you do not only need to convert the objects, but also need to have the objects cached for fast transparent access from both Java and .Net, using Coherence is definitely an option. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Coherence provides transparent conversion to and from Java and .Net data types, including custom application user types. This enables .Net applications to access cached Java objects as native .Net objects and Java applications, including data grid members and Java clients, to access cached .Net objects as native Java objects.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;a href="http://www.oracle.com/products/middleware/coherence/docs/coherence-dotnet-datasheet.pdf"&gt;Here&lt;/a&gt; you can find more details about Coherence for .Net. It is available for &lt;a href="http://www.oracle.com/technology/software/products/ias/htdocs/coherence.html"&gt;download&lt;/a&gt; on OTN. The download includes a .Net demo. To run this demo you either need Visual Studio, or you can use &lt;a href="http://sourceforge.net/projects/sharpdevelop"&gt;SharpDevelop&lt;/a&gt; (an open source IDE for the .Net platform).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-956678924860766627?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/956678924860766627/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/05/integrating-java-net.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/956678924860766627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/956678924860766627'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/05/integrating-java-net.html' title='Integrating Java &amp; .Net'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-1232646623282763241</id><published>2008-05-07T13:42:00.002+02:00</published><updated>2008-12-08T10:40:54.485+01:00</updated><title type='text'>Cumulative Patch #8 for SOA Suite 10.1.3.3 Out Now</title><content type='html'>&lt;span style=""&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family: arial;font-size:100%;" &gt;The latest cumulative patch for SOA Suite 10.1.3.3 is out now (MLR#8). All MLR Bundle Patches also include previous Bundle Patches and the base 10.1.3.3.1 patch, so you need only to apply the latest MLR patch either on top of the main SOA Suite 10.1.3.3 release or on any previous 10.1.3.3.1 MLR patch.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;p style="font-family: arial;font-family:arial;"  class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;font-family:arial;"  class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;For additional details please have a look at the &lt;a href="https://metalink.oracle.com/"&gt;MetaLink&lt;/a&gt; note 553914.1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;span style="font-family: arial;font-size:100%;" &gt;&lt;span style=""&gt;The patch number is 6906880 (SOA Suite 10.1.3.3 MLR#8) and is available for download on &lt;a href="https://metalink.oracle.com/"&gt;MetaLink&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-1232646623282763241?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/1232646623282763241/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/05/cumulative-patch-8-for-soa-suite-10133.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/1232646623282763241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/1232646623282763241'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/05/cumulative-patch-8-for-soa-suite-10133.html' title='Cumulative Patch #8 for SOA Suite 10.1.3.3 Out Now'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-1059810874361544552</id><published>2008-04-29T09:37:00.002+02:00</published><updated>2008-12-08T10:40:09.128+01:00</updated><title type='text'>Coherence OTN Page Updated</title><content type='html'>&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="375582820-28042008"&gt;The Coherence  pages on OTN have been reorganized and updated with a lot of new  content. The URL is:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span class="375582820-28042008"&gt;&lt;a href="http://www.oracle.com/technology/products/coherence/index.html"&gt;http://www.oracle.com/technology/products/coherence/index.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-1059810874361544552?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/1059810874361544552/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/04/coherence-otn-page-updated.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/1059810874361544552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/1059810874361544552'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/04/coherence-otn-page-updated.html' title='Coherence OTN Page Updated'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-5602340708820964152</id><published>2008-04-16T14:34:00.000+02:00</published><updated>2011-10-06T21:35:32.033+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>Re-Configuring a Web Service DataControl to Point to Another WSDL</title><content type='html'>&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;A common issue that occurs in all projects is the question about moving an Application between different environments; for example, moving from the Development environment to the Test environment or from the Test environment to the Production environment. Normally this is not a big issue, you just make some modifications to your build scripts (Ant, Maven or whatever you use), or you already have different targets within them for the different environments, and within these targets you point the Application to use the appropriate resources (like Databases) for the different environments. Quite convenient. For most type of resources this approach works fine, however when you use an ADF Application that accesses Web Services via a DataControl exactly how-to do this is not that obvious.&lt;br /&gt;&lt;br /&gt;Suppose that you have a Web Services available in a Test and in a Production environment. The URLs are:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Test:&lt;/span&gt;&lt;br /&gt;http://MyTestHost/myContext/TheWebServiceSoapHttpPort?WSDL&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Production:&lt;/span&gt;&lt;br /&gt;http://MyProductionHost/myContext/TheWebServiceSoapHttpPort?WSDL&lt;br /&gt;&lt;br /&gt;Now, you create a new JDeveloper project with a Web Service DataControl that point to the Test URL. You then start to browse the project and you find a file called DataControls.dcx. Within this file you find a pointer to a WSDL file (under DataControlConfigs -&amp;gt; AdapterDataControl -&amp;gt; Source -&amp;gt; definition). Great! This must the pointer to my Web Service you think, which is reasonable to believe cause there is no single other reference to a WSDL available within your whole project. So, you modify your Ant build script, creates deployment targets for the different environments that points to the respective WSDL and you deploy to the Test environment. This works fine (well, since the Web Service was generated towards this WSDL, it should). Next, you deploy to the Production environment but now when you run the Application, you still see data from the Test environment. What the ¤%&amp;amp;" going on???&lt;br /&gt;&lt;br /&gt;The answer here is that there is a little more to the story then what appears at first sight. If you have a look in the WAR file for the Application, you will notice a file called connections.xml, sounds promising, right, as the connections seems to be the problem here? If you open it, you will find some interesting information, but first...&lt;br /&gt;&lt;br /&gt;If you go back and have another look at your DataControls.dcx under the definitions section, you see an element like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;service name="TheWebService" namespace="http://testwsdcx/" connection="ClientService"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;as the connection here is the same as the name in the definition it is easy to believe that this point to the definition, however, that is not the case. The connection attribute points instead to the corresponding Reference element in the connections.xml file. Further, in the Reference section, you will find the real pointers that the DataControl uses to communicate with the Web Service. I said pointers, cause there are two for each Reference element; one to the WSDL (under wsconnection) and one to the Port (under service -&amp;gt; port -&amp;gt; soap).&lt;br /&gt;&lt;br /&gt;I might at this point just add for reference that JDeveloper adds this file automatically to the WAR file during deployment; however, I think you have figured that one out already...&lt;br /&gt;&lt;br /&gt;So, based on the above discussion we can now solve the problem in two ways:&lt;br /&gt;&lt;br /&gt;Option A: Let your build script modify the connections.xml file and point to the correct.&lt;br /&gt;&lt;br /&gt;Option B: Copy the whole Reference section for your Web Service connection and give it another name, for example ClientServiceTest and ClientServiceProd. You can then choose which connection to use by pointing the connection attribute in the DataControls.dcx to the correct definition, like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;service name="TheWebService" namespace="http://testwsdcx/" connection="ClientServiceTest"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Or:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;service name="TheWebService" namespace="http://testwsdcx/" connection="ClientServiceProd"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and of course, you need to handle this in your build script. So far I haven't found any major differences between the approaches, however I think that Option B looks a bit cleaner, but the choice is really yours.&lt;br /&gt;&lt;br /&gt;Oh, I almost forgot... The connections.xml file is found on the Application level, not on the Project level, for JDeveloper. It is not visible in the IDE, but you can find it in the .adf/META-INF folder for your Application.&lt;br /&gt;&lt;br /&gt;I'm assuming that the Web Services in the example above are identical; just that they are deployed to different machines...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-5602340708820964152?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/5602340708820964152/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/04/re-configuring-web-service-datacontrol.html#comment-form' title='1 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5602340708820964152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5602340708820964152'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/04/re-configuring-web-service-datacontrol.html' title='Re-Configuring a Web Service DataControl to Point to Another WSDL'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-9205386706774038335</id><published>2008-04-07T15:51:00.002+02:00</published><updated>2011-10-06T21:34:24.304+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bpel'/><title type='text'>Calling Asynchronous BPEL Process Results in ORABPEL-02118</title><content type='html'>&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;If you try to invoke an asynchronous BPEL process that is deployed to Oracle BPEL Process Manager 10.1.3.3 or later you may end up with an ORABPEL-02118 error. Also, this problem was not seen in earlier versions of Oracle BPEL Process Manager.&lt;br /&gt;&lt;br /&gt;This problem occurs due to that the default behaviour regarding variables for completed instances has changed between these versions. In pre 10.1.3.3 release the default behaviour were to keep global variable information along with the instance information for completed BPEL processes. In 10.1.3.3 this behaviour changed for performance reasons, so that the default behaviour is now not to keep any global variables for a BPEL process once the BPEL process has completed.&lt;br /&gt;&lt;br /&gt;Note that you can configure this &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;behaviour&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt; on a process level basis by using the parameter &lt;span style="color: rgb(51, 51, 255);"&gt;keepGlobalVariables&lt;/span&gt; in the bpel.xml file for the specific process:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;BPELSuitcase&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;BPELProcess src="..." id="..."&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       &amp;lt;configurations&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;         &amp;lt;property name="keepGlobalVariables"&amp;gt;true&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       &amp;lt;/configurations&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   &amp;lt;/BPELProcess&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;/BPELSuitcase&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-9205386706774038335?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/9205386706774038335/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/04/calling-asynchronous-bpel-process.html#comment-form' title='4 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/9205386706774038335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/9205386706774038335'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/04/calling-asynchronous-bpel-process.html' title='Calling Asynchronous BPEL Process Results in ORABPEL-02118'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-7339992797882036098</id><published>2008-02-26T14:06:00.003+01:00</published><updated>2011-10-06T21:34:24.304+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bpel'/><title type='text'>'Version Mismatch' Problem when Invoking a BPEL Partner Link that has Both SOAP 1.1 and SOAP 1.2 Endpoints</title><content type='html'>&lt;span style=";font-family:arial;font-size:85%;"  &gt;During a recent project we encountered a strange problem. When invoking a Partner Link that is defined towards a Web Service that has both SOAP 1.1 and SOAP 1.2 endpoints defined we got a Version Mismatch fault back. This was quite unexpected, and I assumed that doing some searches on the famous search engine using terms like 'VersionMismatch Oracle BPEL' would yield some relevant hits, but it didn't.&lt;br /&gt;&lt;br /&gt;Suppose that you have created a Web Service that have multiple ports and bindings, for example, you have both a SOAP 1.1 and a SOAP 1.2 endpoint defined for the Web service. You have also tested the Web Service using a plain Java Client and that works fine. However, when you try to invoke the Web Service as a Partner Link from BPEL you get the following exception instead of the (expected) result:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;fault&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &amp;lt;remoteFault xmlns="http://schemas.oracle.com/bpel/extension"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;part name="code"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;code&amp;gt;VersionMismatch&amp;lt;/code&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/part&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;part name="summary"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;summary&amp;gt;Version Mismatch&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/part&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;part name="detail"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;detail&amp;gt;null&amp;lt;/detail&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/part&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/remoteFault&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/fault&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It doesn't matter which endpoint (the SOAP 1.1 or the SOAP 1.2) you define the Partner Link to use. You end up with the exception in both cases. At a first glance it looks like BPEL is either sending a SOAP 1.1 message to the SOAP 1.2 port or sending a SOAP 1.1 message to the SOAP 1.2 port. If this occurs then the SOAP spec requires that a "Version Mismatching" fault is raised for such usage; but if this was the case - why does the error occurs regardless of which endpoint that is chosen???&lt;br /&gt;&lt;br /&gt;Also, if you remove either of the ports &amp;amp; bindings from the Web Service WSDL (it doesn't matter which one) and then configures the Partner Link to use the other one, all works fine.&lt;br /&gt;&lt;br /&gt;I do not have an explanation for this error, and have only tested it on Oracle SOA Suite 10.1.3.3.&lt;br /&gt;&lt;br /&gt;However, there is an easy workaround to the problem:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol style="font-family: arial;font-family:arial;" &gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Download 2 local copies to your project of the WSDL for the Web Service.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Remove one port &amp;amp; binding (not the same...) from each of the local WSDL copies.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Define 2 Partner Links in your BPEL project, one based on each of the local WSDL copies.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Implement a Switch to invoke the appropriate Partner Link in your BPEL process.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;If you just have the need to invoke either of the endpoints, you of course just need to create one local copy, remove one of the ports &amp;amp; bindings and use this local copy of the WSDL for the Partner Link.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-7339992797882036098?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/7339992797882036098/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2008/02/version-mismatch-problem-when-invoking.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7339992797882036098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7339992797882036098'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2008/02/version-mismatch-problem-when-invoking.html' title='&apos;Version Mismatch&apos; Problem when Invoking a BPEL Partner Link that has Both SOAP 1.1 and SOAP 1.2 Endpoints'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-8362720495197895649</id><published>2007-12-05T17:24:00.000+01:00</published><updated>2011-10-06T21:43:51.719+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>Maintaining Changes to Web Services</title><content type='html'>&lt;span style=";font-family:arial;font-size:85%;"  &gt;A common problem that occurs when working with Web Services is how-to maintaining changes to the WSDL and/or XSD files that are used by the service. The problem occurs when performing changes to the WSDL (or XSD) files like removing operations, renaming operations, changing the structure of data types etc. As you might always not be aware of which clients that are using your service(s); you want to make sure that they continues to work even after you have implemented changes to your service. As support for dealing with this has not been built into the Web services architecture / standards; it is basically left to each implementer to deal with this problem.&lt;br /&gt;&lt;br /&gt;One way of dealing with this problem is to use Namespaces versions. The approach for this is as:&lt;br /&gt;&lt;br /&gt;1. Use different XML namespaces for different version of the service.&lt;br /&gt;2. Send a specific namespace value along with every SOAP message and result.&lt;br /&gt;3. Based on this value a Web Service implementation (mediator) can then correctly determine what to do with the incoming message.&lt;br /&gt;&lt;br /&gt;You first need to ensure that the namespace for the XML elements resulting from that document is unique, for example, suppose that you now are using a namespace like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;targetNamespace="http://example.com/mySchema.xsd"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;You then need to change this to:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;targetNamespace="http://example.com/2007/11/01/mySchema.xsd"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Where the numbers are year, month and date (it is not likely that you will alter the namespace more than once a day...).&lt;br /&gt;&lt;br /&gt;Now each request will be accompanied with a reference to a namespace thus leaving it up to the Web Services to deal with what to do with requests that come in for any particular namespace.&lt;br /&gt;&lt;br /&gt;Next thing is to decide what to do with the various types of incoming requests. One approach here is to generate an error if a request for an older namespace is received, and leave it up to the client to deal with this. Another approach is to use a mediator, as mentioned earlier in the post. The task of the mediator is to determine what to do with Web service requests that come in for any particular namespace. This is done by examination of the date stamp on the namespace (introduced in the previous steps) and then route requests from the older namespace to the older version of the Web service, while routing requests from the newer namespace to the new version of the Web service. This means that the URL to the Web Service (the mediator) will always be the same to your external clients, while you are routing it to different services internally.&lt;br /&gt;&lt;br /&gt;As a mediator you could either use a Web Service that you write the code yourself for to handle this, or you could look into using our &lt;a href="http://www.oracle.com/appserver/esb.html"&gt;ESB (Enterprise Service Bus)&lt;/a&gt; product for this task.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-8362720495197895649?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/8362720495197895649/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/12/maintaining-changes-to-web-services.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/8362720495197895649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/8362720495197895649'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/12/maintaining-changes-to-web-services.html' title='Maintaining Changes to Web Services'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-9034299496925104770</id><published>2007-11-27T10:34:00.000+01:00</published><updated>2011-10-06T21:35:32.034+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>Building a Web Service from a XSD using JDeveloper 11</title><content type='html'>&lt;span style=";font-family:arial;font-size:85%;"  &gt;A few days ago I wrote a &lt;a href="http://beautifulwaste.blogspot.com/2007/11/building-web-service-from-xsd-using.html"&gt;post&lt;/a&gt; about building a Web Service from a XSD using JDeveloper 10.1.3.3. As a result of this I got a mail from &lt;a href="http://kingsfleet.blogspot.com/"&gt;Gerard Davison&lt;/a&gt; who informed me that this will be even easier in JDeveloper 11 using the WSDL editor and the top down generator:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Create a new WSDL&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Put the XSD somewhere nearby in the project&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Tile the editors&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Pick up the country info element and drop in the empty "PortType" column. The tool will prompt you for the name of the portType, and generate a single operation that takes this types as the input and output message.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Pick up and drop the portType on the binding, then the new binding on the services column. You should now have a valid WSDL&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Now use the generate Java web service from WSDL wizard.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;This will now generate all the right code and binding classes in one step without you needing to do any JAXB work.&lt;br /&gt;&lt;br /&gt;Thanks a lot for the information Gerard!&lt;br /&gt;&lt;br /&gt;It also turns out that we are having &lt;a href="http://www.oracle.com/technology/products/jdev/viewlets/11/index.html"&gt;a demo for this on OTN&lt;/a&gt;, check the one under 'WSDL Editor New Features'.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-9034299496925104770?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/9034299496925104770/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/11/building-web-service-from-xsd-using_27.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/9034299496925104770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/9034299496925104770'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/11/building-web-service-from-xsd-using_27.html' title='Building a Web Service from a XSD using JDeveloper 11'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-5259650316764795442</id><published>2007-11-23T14:30:00.000+01:00</published><updated>2011-10-06T21:36:36.704+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jvm'/><title type='text'>Some Notes on the XX:AppendRatio JVM Parameter</title><content type='html'>&lt;span style=";font-family:arial;font-size:85%;"  &gt;If you install the Oracle Application Server 10.1.3.1+ you will see that the JVM parameter &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;-XX:AppendRatio=3&lt;/span&gt; is set for the OC4J instance by default, however there is not much describing it in the documentation, and it might not be exactly clear from its name what it is used for.&lt;br /&gt;&lt;br /&gt;The only entry in the Oracle documentation is found in the &lt;a href="http://download-uk.oracle.com/docs/cd/B32110_01/core.1013/b28942/top_issues.htm"&gt;Oracle Application Server Performance Guide 10g Release 3 (10.1.3.1.0), Chapter 3 - Top Performance Areas&lt;/a&gt; where we say that:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"With the Sun 5.0 JVM, under some circumstances under heavy load, synchronization in an application can result in thread starvation. This may cause some requests for an application to appear hung or to timeout after a long time.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;In 10g Release 3 (10.1.3.1.0) the parameter: &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;-XX:AppendRatio=3&lt;/span&gt; is specified by default for managed OC4J. For standalone OC4J, if you believe your installation has this problem, we recommend setting the JDK parameter: &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;-XX:AppendRatio=3&lt;/span&gt; to avoid this problem."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is also a reference to the Sun JVM Bug Database entry &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4985566"&gt;4985566&lt;/a&gt; that describes the details of the problem.&lt;br /&gt;&lt;br /&gt;However, there is a better description of the problem and the purpose in the Sun JVM Bug Database entry &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6383015"&gt;6383015&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here the purpose of the parameter is described as: &lt;span style="font-style: italic;"&gt;"The VM option &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;-XX:AppendRatio=N&lt;/span&gt; can be used to control how often an append is done rather than an append. If set to 0 then every enqueue will be an append and the observed behaviour will be 'fair' if desiring FIFO like ordering."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It then continues a bit down with: &lt;span style="font-style: italic;"&gt;"In 1.5.0 the monitor queuing policy is 'mostly prepend', which is essentially LIFO except that every N queue additions are done as an append rather than a prepend. Prepending yields better throughput/performance by trying to allow the most recently blocked thread to run next in the expectation that it will still have a warm cache etc."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So, with this is mind we can go to the following conclusions:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;If the &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;XX:AppendRatio&lt;/span&gt; parameter is unset in JDK 1.5 then the monitor queuing policy will be LIFO. This might cause some threads to be treated unfair, and lead to starvation.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;If the &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;XX:AppendRatio&lt;/span&gt; parameter is set to 0 then the monitor queuing policy will be almost like FIFO, however 100% FIFO is not guaranteed as described in bug &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4985566"&gt;4985566&lt;/a&gt; above.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;If the &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;XX:AppendRatio&lt;/span&gt; parameter is set to 3 then each 3:rd queue addition is done as an append rather than a prepend. This will take some advantage of the performance benefits using LIFO, but it will better ensure fairness trying to prevent thread starvation.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;So, I hope this have given you a better understanding of what the XX:AppendRatio JVM Parameter does and why it is set by default when installing the Oracle Application Server 10.1.3.1+.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-5259650316764795442?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/5259650316764795442/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/11/some-notes-on-xxappendratio-jvm.html#comment-form' title='4 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5259650316764795442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5259650316764795442'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/11/some-notes-on-xxappendratio-jvm.html' title='Some Notes on the XX:AppendRatio JVM Parameter'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-4253552663998479326</id><published>2007-11-22T12:35:00.000+01:00</published><updated>2011-10-06T21:38:33.179+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>Building a Web Service from a XSD using JDeveloper</title><content type='html'>&lt;span style=";font-family:arial;font-size:85%;"  &gt;Yesterday I was asked how to create a Web Service from a XSD file using JDeveloper by a colleague, so I thought I'd might share the answer I gave to a wider audience. Hopefully someone else out there might also have some use for it.&lt;br /&gt;&lt;br /&gt;The purpose of this example is to show how you can build a Java Web Service starting with only a single XSD file using JDeveloper.&lt;br /&gt;&lt;br /&gt;1. Create an empty project in JDeveloper (I used version 10.1.3.3).&lt;br /&gt;&lt;br /&gt;2. Add the XSD to your project, in this example I use an XSD that looks like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;schema xmlns="http://www.w3.org/2001/XMLSchema"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;targetNamespace="http://www.oracle.com/pcbpel/CountryInfo"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;elementFormDefault="qualified"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;element name="CountryInfo"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;complexType&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;sequence&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;element name="Country" maxOccurs="unbounded"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;complexType&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;sequence&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;element name="Name" type="string"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;element name="Capital" type="string"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;element name="Area" type="decimal"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/sequence&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/complexType&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/element&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/sequence&amp;gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/complexType&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/element&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/schema&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. Select the XSD in the Applications Navigator&lt;br /&gt;&lt;br /&gt;4. Select Tools -&amp;gt; JAXB Compilation from the Menu&lt;br /&gt;&lt;br /&gt;5. Now you have JAXB generated Java classes based on your XSD in your project. This is described more in:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/webapps/online-help/jdeveloper/10.1.3?navId=4&amp;amp;navSetId=_&amp;amp;vtTopicFile=working_with_xml/xml_pjaxb.html"&gt;http://www.oracle.com/webapps/online-help/jdeveloper/10.1.3?navId=4&amp;amp;navSetId=_&amp;amp;vtTopicFile=working_with_xml/xml_pjaxb.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Create a new Java class, this is the class that will be the Web Service&lt;br /&gt;&lt;br /&gt;7. In this class create a method (this will be exposed as a Web Service method) it has a &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;javax.xml.soap.SOAPElement&lt;/span&gt; as input parameter and void as return value, like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;public void testMethod(javax.xml.soap.SOAPElement myDoc)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;8. In the method body, add code to unmarshal the document and in this example just write it to System.out:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;try {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;JAXBContext jc = JAXBContext.newInstance("project3");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;Unmarshaller u = jc.createUnmarshaller();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;CountryInfo countryInfo = (CountryInfo)u.unmarshal(myDoc);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;List lst = countryInfo.getCountry();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;for(Iterator iter = lst.iterator(); iter.hasNext();) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;CountryInfo.CountryType country = (CountryInfo.CountryType)iter.next();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;System.out.println( country.getName() + ", " + country.getCapital());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;catch (JAXBException je) {  je.printStackTrace();  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9. Start the Java Web Service wizard from the New Gallery, select the newly generated class and just use the default values in the Wizard, except for SOAP Format, here use Document/Literal.&lt;br /&gt;&lt;br /&gt;10. Before deploying the Web Service, make sure that all needed files are included in the deployment profile.&lt;br /&gt;&lt;br /&gt;11. Once done, either deploy the Web Service to an Application Server or standalone OC4J instance and test it using XML like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;CountryInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;             xsi:schemaLocation="http://www.oracle.com/pcbpel/CountryInfo src/xsd/CountryInfo.xsd"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;             xmlns="http://www.oracle.com/pcbpel/CountryInfo"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;  &amp;lt;Country&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    &amp;lt;Name&amp;gt;Sweden&amp;lt;/Name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    &amp;lt;Capital&amp;gt;Stockholm&amp;lt;/Capital&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    &amp;lt;Area&amp;gt;1.0&amp;lt;/Area&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;  &amp;lt;/Country&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&amp;lt;/CountryInfo&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;this should give the following printed to System.out:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;07/11/22 12:29:31 Sweden, Stockholm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-4253552663998479326?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/4253552663998479326/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/11/building-web-service-from-xsd-using.html#comment-form' title='3 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4253552663998479326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4253552663998479326'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/11/building-web-service-from-xsd-using.html' title='Building a Web Service from a XSD using JDeveloper'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-9168629473695331405</id><published>2007-11-16T10:48:00.000+01:00</published><updated>2011-10-06T21:36:36.704+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jvm'/><title type='text'>Don't Forget of the Permanent Generation...</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;This week I was at a customer where we would install a SOA Suite server and deploy quite a lot of BPEL processes onto it. Most things went fine until the end of the deployment where we encountered a problem: &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;java.lang.OutOfMemoryException&lt;/span&gt;, I was first a bit confused since we had assigned 2Gb of memory to the JVM - so how could that be?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Simple, I forgot about the Permanent Generation Size, and this post is my equivalent of writing it on the black board 100 times in order to remind myself to not forget about it again in the future...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;We solved the problem by adding these 2 JVM parameters:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;-XX:PermSize=256 -XX:MaxPermSize=256m&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;So, what do they do?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;The permanent generation is allocated outside of the normal heap and holds objects of the VM itself such as class objects and method objects. If you have programs that load many classes (like deployment of many BPEL processes in a batch), you may need a larger permanent generation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Since the sizing of this is done independently from the other generations, this means that even if you setup a heap of 2Gb, you might still encounter problems in the permanent generation cause if you do not specify this it will fallback on the defaults .&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Why are they set to the same value above? Simply because we want to minimize large garbage collection here.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Once we had reconfigured the OC4J instance with these settings the deployment went fine.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-9168629473695331405?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/9168629473695331405/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/11/dont-forget-of-permanent-generation.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/9168629473695331405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/9168629473695331405'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/11/dont-forget-of-permanent-generation.html' title='Don&apos;t Forget of the Permanent Generation...'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-7010015583031465485</id><published>2007-10-04T13:54:00.000+02:00</published><updated>2008-12-08T10:40:54.488+01:00</updated><title type='text'>What is an Oracle SOA Suite 10.1.3.1+ Cluster?</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-style: italic;"&gt; "Cluster - a number of things of the same kind, growing or held together; a bunch: a cluster of grapes.". &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is how a cluster is defined in the dictionary (&lt;a href="http://dictionary.reference.com/"&gt;http://dictionary.reference.com&lt;/a&gt;). Not a particularly exact definition, at least not to me. Then, one often hears that a SOA Suite installation runs in a 'cluster'. But what does this actually means? The definition did not give a particularly good definition. Also, as there are several ways to connect instances together to form a cluster it could be good to know exactly which way that is used in each case. There are (at least) four different ways to form a cluster in Oracle SOA Suite 10.1.3.1+ ; these are:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;ONS Topology&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;OC4J Group&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;BPEL JGroup Config&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;OC4J Session Replication&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Let's now discuss them more in detail.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;span style="font-family:arial;"&gt;ONS Topology&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This is a group of Oracle Notification Server (ONS) in a farm configured to run in same topology. Basically; two or more loosely connected Oracle Application Server nodes. You can create this by using either of the 4 methods Dynamic node discovery, Static hubs, Connection via gateways or Manual configuration. You can read more about these methods in:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://download-uk.oracle.com/docs/cd/B32110_01/web.1013/b28950/topology.htm#CHDCAIFD"&gt;&lt;span style="font-family:arial;"&gt;http://download-uk.oracle.com/docs/cd/B32110_01/web.1013/b28950/topology.htm#CHDCAIFD&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I assume that this is the way most people refer to when they are talking about an Oracle SOA Suite cluster.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;OC4J Group&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This is a management concept, which is a set of OC4J instances that belong to the same group. Groups enable you to perform common configuration, administration, and deployment tasks simultaneously on all OC4J instances in a group. Some people might argue that this is not a cluster, but is certainly "a number of things of the same kind held together", so according to the dictionary it would be a cluster.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Read more about OC4J Groups in:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download-uk.oracle.com/docs/cd/B32110_01/web.1013/b28950/topology.htm#BIHGICBJ"&gt;&lt;span style="font-family:arial;"&gt;http://download-uk.oracle.com/docs/cd/B32110_01/web.1013/b28950/topology.htm#BIHGICBJ&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;BPEL JGroup Config&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This clustering concept allows defining a topology for BPEL instances, for example new processes. This concept uses an Active / Passive model (for the concerned process). In case of a server failure, another Oracle BPEL Server running on another server resumes the process from the last dehydration point.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Read more about this in:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28980/clusteringsoa.htm"&gt;&lt;span style="font-family:arial;"&gt;http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28980/clusteringsoa.htm&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;OC4J Session Replication&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This is a way to replicate sessions in state across applications. This can also be referred to as an application cluster and is the same set of applications hosted by two or more OC4J instances. It can be enabled either globally for all applications running within an OC4J instance or on application basis. There are three ways to do this: multicast, peer-to-peer or database replication. Read more about these in:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/B31017_01/web.1013/b28950/cluster.htm"&gt;&lt;span style="font-family:arial;"&gt;http://download.oracle.com/docs/cd/B31017_01/web.1013/b28950/cluster.htm&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To summarize, there are (at least) 4 different ways of creating an Oracle SOA Suite 10.1.3.1 cluster. These are the methods and also the intended purpose of them:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;ONS Topology: To connect two or more loosely connected Oracle Application Server nodes.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;OC4J Group: To create a group with a set of OC4J instances.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;BPEL JGroup Config: A set of BPEL Servers that shares the same dehydration store and listens on the same JGroup channels.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;OC4J Session Replication: Used to replicate state across an application deployed on two or more OC4J instances.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;So, what do you mean when talking about clusters?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-7010015583031465485?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/7010015583031465485/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/10/what-is-oracle-soa-suite-10131-cluster.html#comment-form' title='4 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7010015583031465485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7010015583031465485'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/10/what-is-oracle-soa-suite-10131-cluster.html' title='What is an Oracle SOA Suite 10.1.3.1+ Cluster?'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-2254469338291758089</id><published>2007-09-17T13:47:00.000+02:00</published><updated>2008-12-08T10:40:36.446+01:00</updated><title type='text'>Using Berkeley DB Inside Your JDeveloper Project</title><content type='html'>&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Sometimes you need a small database within your JDeveloper project, but you don't want to install any of the usual suspects like Oracle Database 10g Express Edition or Oracle Lite. If so, Oracle Berkeley DB is an ideal candidate. It's very easy to get started with it inside JDeveloper; just follow the steps below, and you will be up and running in just 15 minutes. Start by downloading the Oracle Berkeley DB Java Edition from the OTN:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/software/products/berkeley-db/je/index.html"&gt;http://www.oracle.com/technology/software/products/berkeley-db/je/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Create a new Project in JDeveloper&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Create a new Library in the JDeveloper project that contains the lib/je-3.2.44.jar file from the Berkeley DB distribution.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Save the Project.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Create a new folder in the file system under the newly created JDeveloper project named: src/collections/hello&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;In the file system, copy the file examples/collections/hello/HelloDatabaseWorld.java from the Berkeley DB distribution and put it into the src/collections/hello folder.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;In JDeveloper, refresh the project. The copied file should now appear in the JDeveloper project under Application Sources.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Create a new directory under your project directory called tmp. This is were the database will reside. If you want to place the database somewhere else, change the line in the HelloDatabaseWorld.java that says:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;String dir = "./tmp";&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Run the project inside JDeveloper, the result should be similar to:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;Writing data&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;Reading data&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;0 Hello&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;1 Database&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;2 World&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;br /&gt;If you want to read more about Oracle Berkeley DB Java Edition, please refer to this URL:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/berkeley-db/je/index.html"&gt;http://www.oracle.com/technology/products/berkeley-db/je/index.html&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-2254469338291758089?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/2254469338291758089/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/using-berkeley-db-inside-your.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/2254469338291758089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/2254469338291758089'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/using-berkeley-db-inside-your.html' title='Using Berkeley DB Inside Your JDeveloper Project'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-7974768821368096018</id><published>2007-09-14T10:54:00.000+02:00</published><updated>2008-12-08T10:39:56.293+01:00</updated><title type='text'>Is it Enough with Business Analysts and Developers when Developing a Rule Based Application?</title><content type='html'>&lt;span style=";font-family:georgia;font-size:85%;"  &gt;When talking about rule based programming one often hear that it enables business users and developers to work together. The business users can focus on the business rules part and the developers on the code writing part. This sounds good the first times you hear it, but after a while (at least for me) this sounds perhaps a bit too good to be true. Let me tell you why I believe this to be too good to be true.&lt;br /&gt;&lt;br /&gt;If we start to look at the role of the developer; he or she should write the underlying code for the application, and not have to focus on the actual business rules that should be implemented in the system, i.e., should a certain threshold be above or below a certain level, and what should the level be? He should just know that based on this and that data that comes from these and those sources some rules should be applied and then this and that should happen. He should not have to care about exactly what the rules are, how many they are, what thresholds that should be set etc. These things should be left to the business analyst.&lt;br /&gt;&lt;br /&gt;The business analyst should on the other hand not have to worry about how to get the data etc, he should just work on the business rules and set the right thresholds that should trigger certain things, for example a discount should be applied for certain customers, but not for others. He should just decide which customers the discount should be applied for and when it should be applied.&lt;br /&gt;&lt;br /&gt;Now, don't get me wrong here, I firmly believe that this distinction is good, but I do not believe that it is enough, here are some reasons why:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul  style="font-family:georgia;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;The tools requires the business user to be aware of technical issue that he or should not have to be aware of.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;I have not yet seen a tool that is easy enough for a business user to use.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;br /&gt;There are further points on my list, but I will stick with these two for the rest of the discussion. This is not just only for our product in this area; this also goes for our competitors.&lt;br /&gt;&lt;br /&gt;Normally the rules are stored in a repository, this requires from the end user to be aware of the location, how to open it, how to navigate to right screen, how to alter the rules and/or variables, how to add the syntax for new rules etc. I believe that any business analyst could learn these things, but is this really things that he/she should be focusing his time on? If I would run a business I would rather see them spend time on doing what they to best; not being a part time developer.&lt;br /&gt;&lt;br /&gt;I would instead like to see that these things are handled by just a handful of people; I'll call them Business Rules Maintainers. These are the ones who should be working with the deeper maintenance of the rule repository; they could have a Business Analysts background but also needs to be aware of the technical parts of your rule product.&lt;br /&gt;&lt;br /&gt;Now, the business analysts still needs to be there, and they need to be able to quickly adapt the rule system to the business, for example, one of you analysts suddenly discovers that a competitor has lowered the levels for being eligible for a discount and you think that this will impact your business if you do not do the same, so the analyst needs to quickly adjust your current discount levels in the system. At this point he should not have to open a full blown rule administration tool for this, he should just have to open a custom GUI in where he could quickly see what the current discount levels are and equally fast alter and save them.&lt;br /&gt;&lt;br /&gt;So, to summarize, I believe that when you are designing the system, you should also start to think if your standard rule administration tool is easy enough to use for all your business analysts. If you come to this conclusion, fine. If not, start to think in terms how you could build a custom GUI for your business analysts that they could easy use to quickly tune your business to sudden changes in the environment, and make this GUI as simple as possible to use so that you won't have to turn your analysts into part time programmers. It might not be necessary to incorporate all your rules and threshold variable in this GUI, just the ones that are most critical to your business, and leave the rest to be maintained by the subset of your analysts that are the Business Rules Maintainers.&lt;br /&gt;&lt;br /&gt;So to finalize the discussion, I think that when talking about developing and maintaining a rule based system, it is not enough to split the roles into developers and business analysts, I believe that at least one more role is necessary. It could also be that even further roles are necessary, but that is another discussion.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-7974768821368096018?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/7974768821368096018/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/is-it-enough-with-business-analysts-and.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7974768821368096018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7974768821368096018'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/is-it-enough-with-business-analysts-and.html' title='Is it Enough with Business Analysts and Developers when Developing a Rule Based Application?'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-3818523612644897651</id><published>2007-09-12T10:06:00.000+02:00</published><updated>2011-10-06T21:41:33.097+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>Introduction Into Oracle Business Rules and Rule Based Programming</title><content type='html'>&lt;span style=";font-family:georgia;font-size:85%;"  &gt;I was asked the other day by a colleague who wanted to get an introduction into Oracle Business Rules if I had some tips &amp; pointers in order to get started, so I thought I'd might put the answer here; perhaps some more people can use it as well.&lt;br /&gt;&lt;br /&gt;For a short, but good introduction to what rule based programming is, please check:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webreference.com/programming/rule/"&gt;http://www.webreference.com/programming/rule/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The article describes short and concise what rule base programming is all about.&lt;br /&gt;&lt;br /&gt;OK, so now you know what it is, but how to get started using it? If you are using the Oracle SOA Suite, then you already have a rule engine in place, so why not start using it?&lt;br /&gt;&lt;br /&gt;To see a viewlet on how-to use it, go to the Rules section in OTN: &lt;a href="http://www.oracle.com/technology/products/ias/business_rules/index.html"&gt;http://www.oracle.com/technology/products/ias/business_rules/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is available under the 'Viewlets and Tutorials' section. After that, it is time to start learning more about it.&lt;br /&gt;&lt;br /&gt;If you have a developer's background, I would suggest that you start with the 'Oracle Business Rules Language Reference' (available at: &lt;a href="http://download.oracle.com/docs/cd/B32110_01/web.1013/b28964/toc.htm"&gt;http://download.oracle.com/docs/cd/B32110_01/web.1013/b28964/toc.htm&lt;/a&gt;), this will give you a feel for how the Rule language works; after all this is really the foundation. When going through this document, you will of course need the API, it's available here: &lt;a href="http://download.oracle.com/docs/cd/B32110_01/web.1013/b28966/toc.htm"&gt;http://download.oracle.com/docs/cd/B32110_01/web.1013/b28966/toc.htm&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The document contains many small examples that will help you to get started and get familiar with the language. The examples are run using a command line interface that ships with the product. An alternative is to download the RulesTools extension for JDeveloper 10.1.3.x. This will give you the option to execute script files written in the Rules Language directly in JDeveloper, as well as some other stuff that will ease programming in the Rules Language.&lt;br /&gt;&lt;br /&gt;Once you are familiar with the Rule language, or if you are coming from a more business oriented background, you should start to have a look into the Oracle Business Rules Rule Author; it is the GUI that is used for creating the rules. The documentation for it is available here: &lt;a href="http://download.oracle.com/docs/cd/B32110_01/web.1013/b28965/toc.htm"&gt;http://download.oracle.com/docs/cd/B32110_01/web.1013/b28965/toc.htm&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In the previous given link to the Rules section on OTN you will find even more demos and tutorials to help you get started with the Oracle Business Rules.&lt;br /&gt;&lt;br /&gt;I hope this will help you to take your first steps down the road of Oracle Business Rules and rule based programming. Good luck!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-3818523612644897651?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/3818523612644897651/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/introduction-into-oracle-business-rules.html#comment-form' title='4 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/3818523612644897651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/3818523612644897651'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/introduction-into-oracle-business-rules.html' title='Introduction Into Oracle Business Rules and Rule Based Programming'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-5460794498151494816</id><published>2007-09-05T11:15:00.000+02:00</published><updated>2008-12-08T10:40:36.447+01:00</updated><title type='text'>Oracle Lite, JDeveloper and Invalid Oracle URL specifiedError Code 17067</title><content type='html'>&lt;span style=";font-family:georgia;font-size:85%;"  &gt;Oracle Lite and me have never been friends, but I think that I now have finally beaten the ghost. The background is that I simply wanted to use the OLite in order to do some testing, instead of having run to run a full DB, I wanted to use OLite. So far so good.&lt;br /&gt;&lt;br /&gt;I started to configure a DB connection in JDeveloper towards the OLite, and this part went smooth and without problem. Next, I created a small project in JDeveloper based on TopLink and session facade beans. This went fine as well, JDeveloper nicely created my POJO's based on the tables. Finally I created a JSF page to display the data. All in all, the design process went smooth as silk.&lt;br /&gt;&lt;br /&gt;The problems started when running the project on the embedded OC4J. All I got was a little error saying:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;Internal Exception: java.sql.SQLException: Invalid Oracle URL specifiedError Code: 17067&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I performed a few searches on this, but could not really find any useful information, so it was time to start to dig. My first thought was that this was a class loading issue, and that the error was not really the real error; so I added the olite40.jar to about all places that would be relevant for my JDeveloper installation. It did not help; I still ended up with the same error.&lt;br /&gt;&lt;br /&gt;Next thought, perhaps the error message was a bit relevant after all, so I added a data-sources.xml file to my project (and an orion-application.xml) to get better control of the data sources. Further, I added a new data source based on the predefined OLite connection and told the session.xml file to use this connection. I did not yet make any further modifications, the new data source was correctly picked up, but I ended up with the same error.&lt;br /&gt;&lt;br /&gt;Here was what the original data source looked like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;connection-pool name="jdev-connection-pool-LocalSoaSuiteOLitee"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;user="username" password="password" url="jdbc:polite4@localhost:1531:orabpel"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;/connection-pool&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;managed-data-source name="jdev-connection-managed-LocalSoaSuiteOLitee" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;jndi-name="jdbc/LocalSoaSuiteOLiteeDS" connection-pool-name="jdev-connection-pool-LocalSoaSuiteOLitee"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I noticed the small piece: factory-class="oracle.jdbc.pool.OracleDataSource", this looked a bit strange to me, so I tested to change this into: factory-class="oracle.lite.poljdbc.POLJDBCDriver" instead, like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;connection-pool name="jdev-connection-pool-LocalSoaSuiteOLitee"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;connection-factory factory-class="oracle.lite.poljdbc.POLJDBCDriver" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;user="username" password="password" url="jdbc:polite4@localhost:1531:orabpel"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;/connection-pool&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;managed-data-source name="jdev-connection-managed-LocalSoaSuiteOLitee" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;jndi-name="jdbc/LocalSoaSuiteOLiteeDS" connection-pool-name="jdev-connection-pool-LocalSoaSuiteOLitee"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once I restarted the project, it all went fine. So, why this did happen after all? Well, it looks as JDeveloper treats an OLite connection as an Oracle connection, so when it generates the data-sources.xml file for the embedded OC4J instance is sets the factory class to what it would be for an Oracle database. With this mind, I can summarize what I did into these steps:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;Add a data-sources.xml file and an orion-application.xml file to the project.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;Create a new data source.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;Change the factory-class to oracle.lite.poljdbc.POLJDBCDriver.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-5460794498151494816?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/5460794498151494816/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/oracle-lite-jdeveloper-and-invalid.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5460794498151494816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5460794498151494816'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/oracle-lite-jdeveloper-and-invalid.html' title='Oracle Lite, JDeveloper and Invalid Oracle URL specifiedError Code 17067'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-4168384323724283007</id><published>2007-09-04T12:39:00.000+02:00</published><updated>2008-12-08T10:40:36.447+01:00</updated><title type='text'>A Small Comment on MySQL in JDeveloper 11 (Preview Release)</title><content type='html'>&lt;span style=";font-family:georgia;font-size:85%;"  &gt;Today I've been doing some tests using MySQL together with the JDeveloper 11 Preview Release. This worked fine, most of the info is covered in the Help chapter, &lt;span style="font-style: italic;"&gt;"Working with Non-Oracle Database"&lt;/span&gt;. However, I missed out one small piece; how to get it to work together with the Embedded OC4J, or rather, where to put the MySQL JDBC JAR file? This as I got an&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;"Exception: oracle.oc4j.sql.config.DataSourceConfigException: Unable to create : com.mysql.jdbc.Driver"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;when trying to run my application.&lt;br /&gt;&lt;br /&gt;As of JDeveloper 11, a new default directory structure for user-specific content in JDeveloper for Windows is used. The default location for the system subdirectory is now &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;%APPDATA%\JDeveloper\systemXX.XX.XX.XX&lt;/span&gt;, where:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;    %APPDATA% is the Windows Application Data directory for the user (usually &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;C:\Documents and Settings\&amp;lt;username&amp;gt;&lt;user&gt;\Application Data&lt;/user&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;    XX.XX.XX.XX is a unique number of the product build, for example, system11.1.1.0.17.45.02&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;br /&gt;So, in my case, the MySQL JDBC JAR file (&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;mysql-connector-java-3.1.12-bin.jar&lt;/span&gt;) should go into the directory:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;C:\Documents and Settings\&lt;username&gt;&lt;/username&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-size:85%;"&gt;&amp;lt;username&amp;gt;&lt;/span&gt;&lt;user&gt;&lt;/user&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;username&gt;\Application Data\JDeveloper\system11.1.1.0.17.45.24\o.j2ee\embedded-oc4j\applib&lt;/username&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once I put it there, and restarted the embedded OC4J, it worked fine.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-4168384323724283007?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/4168384323724283007/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/small-comment-on-mysql-in-jdeveloper-11.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4168384323724283007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4168384323724283007'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/small-comment-on-mysql-in-jdeveloper-11.html' title='A Small Comment on MySQL in JDeveloper 11 (Preview Release)'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-7652615130329431520</id><published>2007-09-03T10:34:00.000+02:00</published><updated>2007-09-03T10:36:56.154+02:00</updated><title type='text'>Combining Information</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt;It exists countless articles &amp; blog entries about ADF, however, I have found that quite often do they not exactly cover the exact topic that I am looking for, but, if I combine a few of them they can often together build a solution that is useful for me.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;For example, in most cases when you want to display a certain record, the easiest approach if to use a ViewObject with a bind variable and then use the executeWithParams approach, as described in Duncan's blog here:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groundside.com/blog/DuncanMills.php?title=executewithparams_my_new_best_buddy&amp;more=1&amp;amp;c=1&amp;tb=1&amp;amp;pb=1"&gt;&lt;span style="font-family: georgia;"&gt;http://groundside.com/blog/DuncanMills.php?title=executewithparams_my_new_best_buddy&amp;more=1&amp;amp;c=1&amp;tb=1&amp;amp;pb=1&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;Last week I was assisting one of our partners in a project, and they wanted to display a certain record, but they did not want to use this approach. Instead they wanted to set the selected record based on a parameter sent to the page, and set the record is something like an 'onLoad' event for the page. So, what we did here was to use the processScope variable as described in this article to send the parameter:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/doc/devguide/communicatingBetweenPages.html"&gt;&lt;span style="font-family: georgia;"&gt;http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/doc/devguide/communicatingBetweenPages.html&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;and then combining this with an ADF Page Phase Listener as described here to set the record:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groundside.com/blog/DuncanMills.php?title=adf_executing_code_on_page_load&amp;more=1&amp;amp;c=1&amp;tb=1&amp;amp;pb=1"&gt;&lt;span style="font-family: georgia;"&gt;http://groundside.com/blog/DuncanMills.php?title=adf_executing_code_on_page_load&amp;more=1&amp;amp;c=1&amp;tb=1&amp;amp;pb=1&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;The PagePhaseListener is implemented in the backing bean and this then uses the setCurrentRowWithKeyValue to set the correct row in the iterator, something like:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;if (event.getPhaseId() == Lifecycle.PREPARE_MODEL_ID) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;  AdfFacesContext afContext = AdfFacesContext.getCurrentInstance();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;  String myValue = (String)afContext.getProcessScope().get("myKey");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;  FacesPageLifecycleContext ctx = (FacesPageLifecycleContext)event.getLifecycleContext();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;  DCIteratorBinding iter = ((DCBindingContainer)ctx.getBindingContainer()).findIteratorBinding("&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;  DepartmentsView1Iterator");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;  iter.setCurrentRowWithKeyValue(myValue);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 51, 255);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;So, all-in-all, by combining 2 useful articles, I were able to solve the problem, even if no single article covered the problem.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-7652615130329431520?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/7652615130329431520/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/combining-information.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7652615130329431520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7652615130329431520'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/09/combining-information.html' title='Combining Information'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-1399036938873323572</id><published>2007-08-20T10:50:00.000+02:00</published><updated>2007-08-20T10:52:21.133+02:00</updated><title type='text'>New Semester, New Job</title><content type='html'>&lt;span style=""&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: georgia;"&gt;It's been a bit quiet here from the last weeks, but now I'm back from my holiday where I spent most of the time moving (and some renovation...) out from the city into a house on the country side about 50 kilometres south of Gothenburg. I am also starting a new job. I am joining Oracle's PTS group here in EMEA. Platform Technology Solutions, PTS, is part of Oracle's Server Technologies Product Development Division, and provides the shortest link between our Partners and key Customers and Oracle R&amp;D. PTS ensures that members of the Oracle Partner Network are proficient in Oracle technology. That's the high level definition; exactly what my role will be in this mission will be carved out during the next few weeks. With this change in mind, I guess what I will be writing about here will also be changed a little, but I won't dwell about this now, instead, time will tell.&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-1399036938873323572?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/1399036938873323572/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/08/new-semester-new-job.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/1399036938873323572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/1399036938873323572'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/08/new-semester-new-job.html' title='New Semester, New Job'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-7716578048255698365</id><published>2007-06-29T12:45:00.000+02:00</published><updated>2008-12-08T10:40:44.434+01:00</updated><title type='text'>JDeveloper 10.1.3.3 Released</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;JDeveloper 10.1.3.3 build 4157 has now been released to OTN for download:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: georgia;" href="http://www.oracle.com/technology/software/products/jdev/htdocs/soft10133.html"&gt;http://www.oracle.com/technology/software/products/jdev/htdocs/soft10133.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;A list of the bugs fixed in this release can be found at:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: georgia;" href="http://www.oracle.com/technology/products/jdev/htdocs/10.1.3.3/fixlist.htm"&gt;http://www.oracle.com/technology/products/jdev/htdocs/10.1.3.3/fixlist.htm&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-7716578048255698365?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/7716578048255698365/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/06/jdeveloper-10133-released.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7716578048255698365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7716578048255698365'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/06/jdeveloper-10133-released.html' title='JDeveloper 10.1.3.3 Released'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-7263826223100955119</id><published>2007-06-26T16:25:00.000+02:00</published><updated>2011-10-06T21:39:51.057+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adf'/><title type='text'>Altering the Show/Hide Text of a "detailStamp" Facet</title><content type='html'>&lt;span style=";font-family:georgia;font-size:85%;"  &gt;Another question that is related to the one that I answered in my previous post is how you can alter the Show/Hide text in the &lt;span style="color: rgb(102, 51, 255);"&gt;&amp;lt;f:facet name="detailStamp"&amp;gt;&lt;/span&gt;. The answer to this one is to use the &lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;af:showDetail id="showDetail1"&amp;gt;&lt;/span&gt; component instead and set the attributes &lt;span style="color: rgb(51, 102, 255);"&gt;disclosedText&lt;/span&gt; and &lt;span style="color: rgb(51, 102, 255);"&gt;undisclosedText&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;If you drag and drop a Master table with in-line details in a JSF page with JDeveloper, it will generate code like:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;font-size:85%;"  &gt;&amp;lt;f:facet name="detailStamp"&amp;gt;&lt;br /&gt; &amp;lt;af:table rows="#{bindings.DeptView1.rangeSize}"&lt;br /&gt;     emptyText="No rows yet." var="detailRow"&lt;br /&gt;     value="#{row.children}"&amp;gt;&lt;br /&gt;   &amp;lt;af:column headerText="#{row.children[0].labels.Ename}"&lt;br /&gt;       sortable="false" sortProperty="Ename"&amp;gt;&lt;br /&gt;     &amp;lt;af:outputText value="#{detailRow.Ename}"/&amp;gt;&lt;br /&gt;   &amp;lt;/af:column&amp;gt;&lt;br /&gt;   &amp;lt;af:column headerText="#{row.children[0].labels.Job}"&lt;br /&gt;       sortable="false" sortProperty="Job"&amp;gt;&lt;br /&gt;    &amp;lt;af:outputText value="#{detailRow.Job}"/&amp;gt;&lt;br /&gt;   &amp;lt;/af:column&amp;gt;&lt;br /&gt; &amp;lt;/af:table&amp;gt;&lt;br /&gt;&amp;lt;/f:facet&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;for the in-line table. Here you cannot change the generated Show/Hide text that ADF generates. See the image below (in Swedish):&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fn6sutDzAVA/RoEiBy4OzqI/AAAAAAAAAAk/kGLOTCYvw0Y/s1600-h/before.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_fn6sutDzAVA/RoEiBy4OzqI/AAAAAAAAAAk/kGLOTCYvw0Y/s320/before.JPG" alt="" id="BLOGGER_PHOTO_ID_5080379268883467938" border="0" /&gt;&lt;/a&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;If you want to modify these, to something like:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fn6sutDzAVA/RoEiBy4OzrI/AAAAAAAAAAs/1rayAUOegtM/s1600-h/after.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_fn6sutDzAVA/RoEiBy4OzrI/AAAAAAAAAAs/1rayAUOegtM/s320/after.JPG" alt="" id="BLOGGER_PHOTO_ID_5080379268883467954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;you need to use some code along the line of:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;af:column headerText="Test" sortable="false"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;  &amp;lt;af:showDetail id="showDetail1" disclosedText="Brown" undisclosedText="Charlie"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;    &amp;lt;af:table rows="#{bindings.DeptView1.rangeSize}"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;        emptyText="No rows yet." var="detailRow"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;        value="#{row.children}"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;      &amp;lt;af:column headerText="#{row.children[0].labels.Ename}"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;          sortable="false" sortProperty="Ename"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;        &amp;lt;af:outputText value="#{detailRow.Ename}"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;      &amp;lt;/af:column&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;      &amp;lt;af:column headerText="#{row.children[0].labels.Job}"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;          sortable="false" sortProperty="Job"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;        &amp;lt;af:outputText value="#{detailRow.Job}"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;      &amp;lt;/af:column&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;    &amp;lt;/af:table&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;  &amp;lt;/af:showDetail&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;/af:column&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:georgia;" &gt;If you do not want to have any text at all, just set the attributes &lt;span style="color: rgb(51, 102, 255);"&gt;disclosedText=""&lt;/span&gt; and &lt;span style="color: rgb(51, 102, 255);"&gt;undisclosedText=""&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-7263826223100955119?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/7263826223100955119/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/06/altering-showhide-text-of-detailstamp.html#comment-form' title='1 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7263826223100955119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7263826223100955119'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/06/altering-showhide-text-of-detailstamp.html' title='Altering the Show/Hide Text of a &quot;detailStamp&quot; Facet'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_fn6sutDzAVA/RoEiBy4OzqI/AAAAAAAAAAk/kGLOTCYvw0Y/s72-c/before.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-6793377428593706157</id><published>2007-06-21T13:11:00.000+02:00</published><updated>2011-10-06T21:41:57.198+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adf'/><title type='text'>Hiding the Header for the Selection Facet</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;A question that I have seen on a few occasions is how you can hide the "Select" heading in the table when using the selection facet. Here is a solution for that problem that is based on this entry: &lt;a href="http://www.orablogs.com/fnimphius/archives/001973.html"&gt;http://www.orablogs.com/fnimphius/archives/001973.html&lt;/a&gt; in Frank Nimphius blog. Please note that, as Frank writes, that "&lt;span style="font-style: italic;"&gt;Note that the CSS uses translateable text (or here translateable component names) to identify the component, which makes this solution weak.&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;You can hide the 'Select' text by setting the text size to 0 for the concerned table header style (using display:none will not work, as it will cause the table headers to display over the incorrect column).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Here is the Table as default:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fn6sutDzAVA/Rnpd1S4OzoI/AAAAAAAAAAU/hrmQy0zZWbc/s1600-h/before.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_fn6sutDzAVA/Rnpd1S4OzoI/AAAAAAAAAAU/hrmQy0zZWbc/s320/before.JPG" alt="" id="BLOGGER_PHOTO_ID_5078474699995795074" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;The "Select" (or in Swedish "Välj") header is controlled by this style (th.x2z) element (see page source):&lt;/span&gt;  &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;th scope="col" width="1%" nowrap class="x2z"&amp;gt;Välj&amp;lt;/th&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;Now you can alter the af:tableSelectMany by changing the code in the page to:&lt;/span&gt;  &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;f:facet name="selection"&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;br /&gt; &amp;lt;af:tableSelectMany text="Test"&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;br /&gt;       &amp;lt;f:verbatim&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;br /&gt;           &amp;lt;style type="text/css"&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;br /&gt;               th.x2z{font-size: 0};&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;br /&gt;           &amp;lt;/style&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;br /&gt;      &amp;lt;/f:verbatim&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;br /&gt; &amp;lt;/af:tableSelectMany&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;br /&gt;&amp;lt;/f:facet&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;This will result in the following table:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fn6sutDzAVA/RnpecS4OzpI/AAAAAAAAAAc/XFVHnmun5Kg/s1600-h/after.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_fn6sutDzAVA/RnpecS4OzpI/AAAAAAAAAAc/XFVHnmun5Kg/s320/after.JPG" alt="" id="BLOGGER_PHOTO_ID_5078475370010693266" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;Now the "Select" (or "Välj") test is set to 0 size, thus will not be displayed.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-6793377428593706157?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/6793377428593706157/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/06/hiding-header-for-selection-facet.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/6793377428593706157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/6793377428593706157'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/06/hiding-header-for-selection-facet.html' title='Hiding the Header for the Selection Facet'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_fn6sutDzAVA/Rnpd1S4OzoI/AAAAAAAAAAU/hrmQy0zZWbc/s72-c/before.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-3988143984747860549</id><published>2007-06-14T13:51:00.000+02:00</published><updated>2011-10-06T21:42:56.949+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Running a JAR File that Includes Another JAR From the Command Prompt</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;Today I got a question from a colleague on how-to run a JAR file that includes another JAR file directly from the command prompt, he couldn't get this to work - it just ended up with java.lang.NoClassDefFoundError exception. At first glance this seemed quite trivial, but it turned out to be more complicated than I first thought. My initial attempts also resulted in java.lang.NoClassDefFoundError, so I started to search around a bit for further information about the topic. This led me to this site &lt;a href="http://one-jar.sourceforge.net/"&gt;http://one-jar.sourceforge.net/&lt;/a&gt;, and (as always) it turned out that someone else already solved the problem.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;As I use JDeveloper (of course...) it needs to be added a few steps in addition to using one-jar to get the whole process to work, this is documented below.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;1. First I created a new Workspace in JDeveloper with 2 projects 'mainproject' and 'subproject'. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;2. In the 'subproject' there is a single dummy that have one method that just writes something to the System.out. There is also a JAR deployment profile that includes the mentioned class. The target JAR file I just called sub.jar.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;3. Now it's time to create the 'mainproject'. As I am using the One-JAR in the end there are 2 restrictions I need to take into account for this project:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;a. The main class needs to be named 'Main'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;b. The target JAR file needs to be called 'main.jar'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;I created a new class called 'Main' in the 'mainproject', added a dependency in the Project Properties to 'subproject' and created a dummy method in this class that uses the class created under 2. I ran the Main class inside JDeveloper to ensure that it worked before proceeding.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;After that I created a JAR deployment profile. I made sure to name the target JAR file to 'main.jar'. Also checked the 'Include Manifest File (META-INF/MANIFEST.MF)' box and pointed the 'Main Class' to my 'Main' class. Next I made sure NOT to include my classes from the 'subproject' into this JAR file. This as they will be provided in a separate JAR file.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;4. Next, it was time to download and install One-JAR. One-JAR can be downloaded from &lt;a href="http://sourceforge.net/projects/one-jar"&gt;http://sourceforge.net/projects/one-jar&lt;/a&gt;. I created a new empty folder on my file system and placed the one-jar-boot-0.95.jar file there and renamed this to one-jar.jar. In my newly created folder I also added 2 subfolders 'main' and 'lib'. Once done I deployed my 2 JAR filed from JDeveloper, main.jar and sub.jar and placed them in the respective folders (main.jar in main and sub.jar in lib). The archive now has a structure similar to what is shown below:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fn6sutDzAVA/RnEsVC4OznI/AAAAAAAAAAM/LeZl5nZnAKs/s1600-h/jar.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_fn6sutDzAVA/RnEsVC4OznI/AAAAAAAAAAM/LeZl5nZnAKs/s320/jar.jpg" alt="" id="BLOGGER_PHOTO_ID_5075886995084856946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;5. Now it's time to test this, and if it works correctly then the result should look something like:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);font-family:courier new;" &gt;D:\home\Demos\OneJARDemo\deploy&gt;java -jar one-jar.jar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);font-family:courier new;" &gt;Hello from Main&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);font-family:courier new;" &gt;Hello from sub project!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-3988143984747860549?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/3988143984747860549/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/06/running-jar-file-that-includes-another.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/3988143984747860549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/3988143984747860549'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/06/running-jar-file-that-includes-another.html' title='Running a JAR File that Includes Another JAR From the Command Prompt'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_fn6sutDzAVA/RnEsVC4OznI/AAAAAAAAAAM/LeZl5nZnAKs/s72-c/jar.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-4313222450742262842</id><published>2007-06-04T13:06:00.000+02:00</published><updated>2011-10-06T21:41:33.098+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>About Rules and Execution Order</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;A question that pops-up from time to time is about Rules and execution order, i.e., is there a way to control the execution order of rules? There are technically two ways of doing this. The first way of obtaining this is by using rule priorities, the second is to use the ruleset stack.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;However, I believe that using rule priorities in general should really be avoided, and is usually discouraged for two reasons; first, if will impact performance negative with respect to the built-in conflict resolution strategies. Secondly, it is considered bad style to use priorities in rule based programming to try to force a specific order. If you find yourself using priorities for most of your rules, then you should consider if using a rule based approach is really the best solution for your problem. If you want strict control over execution order, then you are really using procedural programming and not rule based programming.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;If you still want to execution order, you should use the ruleset stack. This will be a more flexible solution than using a single ruleset and using rule priorities. How to do this is described in the Oracle Business Rules Language Reference, section 1.4.3 '&lt;/span&gt;&lt;a style="font-family: georgia;" href="http://download-uk.oracle.com/docs/cd/B32110_01/web.1013/b28964/rlprog.htm#CEGJEACD"&gt;Ordering Rule Firing&lt;/a&gt;&lt;span style="font-family:georgia;"&gt;'. &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-4313222450742262842?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/4313222450742262842/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/06/about-rules-and-execution-order.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4313222450742262842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4313222450742262842'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/06/about-rules-and-execution-order.html' title='About Rules and Execution Order'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-4753400414102818672</id><published>2007-05-30T14:08:00.000+02:00</published><updated>2011-10-06T21:39:51.057+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adf'/><title type='text'>ADF Faces Multi Select Table using JDeveloper 11g Technology Preview</title><content type='html'>&lt;span style=";font-family:georgia;font-size:85%;"  &gt;About a year ago Frank Nimphius wrote this post &lt;a href="http://www.orablogs.com/fnimphius/archives/001778.html"&gt;(http://www.orablogs.com/fnimphius/archives/001778.html&lt;/a&gt;) about multi-selection in ADF Faces tables. I tried out this approach recently using the JDeveloper 11g Technology Preview release and found that things have changed slightly since then.  The purpose here is not to fully describe this feature, for that please see Frank's post, but to point to the changes between 10.1.3 and the 11g Preview version.&lt;br /&gt;&lt;br /&gt;These are the main changes in short:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;No need to create the selectMany component any longer.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;A Slightly different way to iterate through the rows is needed.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;br /&gt;Once you have created the table using 11g, you will notice that it looks slightly different:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/234/521354760_a52e32106e.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/234/521354760_a52e32106e.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As mentioned before, you no longer needs to use a &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;'tableSelectMany'&lt;/span&gt; component to get multi-selections for the table, instead you define the &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;'rowSelection' &lt;/span&gt;and &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;'binding'&lt;/span&gt; attributes directly on the &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;'table' &lt;/span&gt;element, like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;rows="#{bindings.DeptView1.rangeSize}"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;first="#{bindings.DeptView1.rangeStart}"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;emptyText="#{bindings.DeptView1.viewable ? 'No rows yet.' : 'Access Denied.'}"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;fetchSize="#{bindings.DeptView1.rangeSize}"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;rowSelection="multiple" id="table1"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;selectionListener="#{api.table1_selectionListener}"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;binding="#{api.myTable}"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&amp;gt;&lt;/span&gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:georgia;" &gt;Next, you need to map the managed bean to use the RichTable class, like:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;managed-property&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;property-name&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;myTable&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;/property-name&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;property-class&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;oracle.adf.view.rich.component.rich.data.RichTable&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;/property-class&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;value&gt;#{table1}&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;/value&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;/managed-property&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;af:table...'&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;af:table value="#{bindings.DeptView1.collectionModel}" var="row"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;managed-property&gt;&lt;/managed-property&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;&lt;property-name&gt;&lt;/property-name&gt;&lt;/span&gt;&lt;/af:table&gt;&lt;/span&gt;and, also to use this class also in the backing bean:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;private RichTable _table;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;public RichTable getMyTable() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;return _table;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;public void setMyTable(RichTable table) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;this._table = table;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As mentioned before, the way to iterate through the rows have also changed a bit. In 10.1.3 you could use:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;Key _key = (Key) keyIter.next(); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;directly, in 11g I noticed that you have to use this approach instead:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;List l = (List)rowSetIter.next();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;Key key = (Key)l.get(0);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Also, you use the &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;'getSelectedRowKeys()&lt;/span&gt;' method instead of &lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;'getSelectionState().getKeySet()'&lt;/span&gt;. The full code will look something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;RichTable table = this.getMyTable();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;RowKeySet rowSet = table.getSelectedRowKeys();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;Iterator rowSetIter = rowSet.iterator();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;DCBindingContainer bindings = this.getBindingContainer();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;DCIteratorBinding iter = bindings.findIteratorBinding("DeptView1Iterator");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;while (rowSetIter.hasNext()) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;List l = (List)rowSetIter.next();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;Key key = (Key)l.get(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;iter.setCurrentRowWithKey(key.toStringFormat(true));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;Row r = iter.getCurrentRow();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;System.out.println("selected dept " + r.getAttribute("Dname"));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, with these changes in mind, the result of the above should end up in an output similar to:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);font-family:courier new;" &gt;07/05/30 13:36:33 selected dept SALES&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);font-family:courier new;" &gt;07/05/30 13:36:33 selected dept RESEARCH&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope this have illustrated the changes between the 10.1.3 and the 11g Preview Release for the multi-selection table.&lt;br /&gt;&lt;af:tableselectmany...' component="" to="" get="" selections="" for="" instead="" you="" define="" rowselection="" and="" binding="" attributes="" directly="" on="" the=""&gt;&lt;br /&gt;&lt;/af:tableselectmany...'&gt;&lt;/af:table...'&gt;&lt;/af:tableselectmany...'&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-4753400414102818672?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/4753400414102818672/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/05/adf-faces-multi-select-table-using.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4753400414102818672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/4753400414102818672'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/05/adf-faces-multi-select-table-using.html' title='ADF Faces Multi Select Table using JDeveloper 11g Technology Preview'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/234/521354760_a52e32106e_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-8626346583514465641</id><published>2007-05-08T09:42:00.000+02:00</published><updated>2008-12-08T10:40:36.448+01:00</updated><title type='text'>New Technology Preview Releases of JDeveloper, OC4J &amp; TopLink</title><content type='html'>&lt;span style="font-family: times new roman;font-size:100%;" &gt;The 11.1.1 Technology Preview releases of JDeveloper, OC4J and TopLink are now available for download on OTN. You can find them at these URL's:&lt;br /&gt;&lt;br /&gt;JDeveloper:&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/jdev/11/index.html"&gt;http://www.oracle.com/technology/products/jdev/11/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TopLink:&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/software/products/ias/htdocs/1111topsoft.html"&gt;http://www.oracle.com/technology/software/products/ias/htdocs/1111topsoft.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OC4J:&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/software/products/ias/htdocs/utilsoft_preview.html"&gt;http://www.oracle.com/technology/software/products/ias/htdocs/utilsoft_preview.html&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-8626346583514465641?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/8626346583514465641/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/05/new-technology-preview-releases-of.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/8626346583514465641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/8626346583514465641'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/05/new-technology-preview-releases-of.html' title='New Technology Preview Releases of JDeveloper, OC4J &amp; TopLink'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-5553818497259451745</id><published>2007-04-27T10:25:00.000+02:00</published><updated>2011-10-06T21:38:33.179+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>Problems Calling .Net Web Services from UTL_DBWS</title><content type='html'>&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;I've been having some issues with a problem from a customer, the scenario is quite simple; they simply want to call a .Net Web Service from the database using utl_dbws. This should be fairly straightforward, however, this did not work as expected, instead I've been keep getting this error message:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;ORA-29532: Java call terminated by uncaught Java exception:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;javax.xml.rpc.soap.SOAPFaultException: Server did not recognize the value of HTTP Header SOAPAction: .&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ORA-06512: at "SYS.UTL_DBWS", line 387&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ORA-06512: at "SYS.UTL_DBWS", line 384&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and I could simply not figure out why. So, when I read the utl_dbws api for the 111:th time (give or take a few times...) I found that:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"'SOAPACTION_USE': This boolean property indicates whether or not SOAPAction is to be used. The default value of this property is 'FALSE'."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;which certainly corresponds to the error message I've been getting, as it indicates that no SOAPAction is being sent.&lt;br /&gt;&lt;br /&gt;So, I simply added these lines:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;sys.utl_dbws.set_property(call_, 'SOAPACTION_USE', 'TRUE');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sys.utl_dbws.set_property(call_, 'SOAPACTION_URI', 'http://tempuri.org/Hello');&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and the request went fine. A few lines that made the difference but took me too long time to find out...&lt;br /&gt;&lt;br /&gt;The utl_dbws package is described in:&lt;br /&gt;&lt;a href="http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14258/u_dbws.htm#sthref13863"&gt;http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14258/u_dbws.htm#sthref13863&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The The SOAPAction HTTP Header Field is described in:&lt;br /&gt;&lt;a href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528"&gt;http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-5553818497259451745?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/5553818497259451745/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/04/problems-calling-net-web-services-from.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5553818497259451745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5553818497259451745'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/04/problems-calling-net-web-services-from.html' title='Problems Calling .Net Web Services from UTL_DBWS'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-5296047387051640293</id><published>2007-03-19T08:52:00.000+01:00</published><updated>2011-10-06T21:42:56.949+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Exposing a Java Service Facade for an EJB 3.0 Entity as a Web Service</title><content type='html'>&lt;span style=";font-family:arial;font-size:85%;"  &gt;A few days ago I tried to expose a Java Service Facade for an EJB 3.0 entity as a Web Service using JDeveloper. At first, I had a problem with this, however, once I found the culprit, it was quite obvious. Here are the steps I took:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol  style="font-family:arial;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Created Entity Objects - by using the Wizards in JDeveloper, this went very smooth.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Created the JavaServiceFacade Exposing the Entity, no problems here either.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Expose the Java Service Facade as a Web Service using the Wizards. So far so good.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Configure the persistence.xml file.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Now I got a problem, I did not get the expected results back, instead I ended up with a java.lang.NullPointerException, and when browsing the log files I found:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;2007-03-07 13:46:35.434 ERROR OWS-04046 Caught exception while handling request: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;  java.lang.NullPointerException java.lang.NullPointerException &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So, what was the problem? This problem occurs when the persistance.xml file point to a datasource rather than a direct JDBC connection. Since the JavaServiceFacade class is plain J2SE class, using a datasource in the persistance.xml can be used with EJB application only. For example you can create a EJB SessionFacade and publish this as a Web Service. Once I had re-defined the persistance.xml to point to a direct JDBC connection, it worked, like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:85%;" &gt;&lt;span style="font-family: courier new;"&gt;  ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &amp;lt;persistence-unit name="WebServicesMetaData"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &amp;lt;class&amp;gt;webservicesmetadata.Countries&amp;lt;/class&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      &amp;lt;property name="toplink.jdbc.driver" value="oracle.jdbc.OracleDriver"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      &amp;lt;property name="toplink.jdbc.url"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                value="jdbc:oracle:thin:@myHost:myPort:mySID"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      &amp;lt;property name="toplink.jdbc.user" value="hr"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      &amp;lt;property name="toplink.jdbc.password" value="hr_password"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      &amp;lt;property name="toplink.target-database" value="Oracle"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      &amp;lt;property name="toplink.logging.level" value="FINER"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &amp;lt;/persistence-unit&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  ...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-5296047387051640293?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/5296047387051640293/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/03/exposing-java-service-facade-for-ejb-30.html#comment-form' title='1 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5296047387051640293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5296047387051640293'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/03/exposing-java-service-facade-for-ejb-30.html' title='Exposing a Java Service Facade for an EJB 3.0 Entity as a Web Service'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-6120238315182282795</id><published>2007-02-28T17:15:00.000+01:00</published><updated>2011-10-06T21:41:33.099+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>Recursion in Rules</title><content type='html'>&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;span style="font-size:100%;"&gt;Long time since I wrote something about Rules, so, here is a small sample for using recursion in Rules. Implementing recursion in Rules is fairly easy, just assert a new fact in the action-block of a rule, that's it. By asserting a new fact to the system, the system will re-evaluate, and recursion has taken place.&lt;br /&gt;&lt;br /&gt;Below is an example that will illustrate this, it will find and print all ancestor relationships that are the result of three parent relationships. Andy is a parent of Betty, Betty is a parent of Charlie and Charlie is a parent of Donna. Which are the resulting ancestor relationships?&lt;br /&gt;&lt;br /&gt;Running this program will reveal the result...&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;ruleset main {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  class Parent {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       String a; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;          String b; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    class Ancestor {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;          String a; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;          String b; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  // Convert a Parent relationship to an Ancestor relationship&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    rule parentToAncestor  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;          if ( (fact Parent p) ) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                assert(new Ancestor(a: p.a, b: p.b)); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    // If A is parent of B and B is an Ancestor of C, then A is an Ancestor of C&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  rule parentAndAncestorToAncestor {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      (fact Parent p) &amp;&amp;amp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      (fact Ancestor a) &amp;&amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      p.b.equals(a.a)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      assert(new Ancestor(a: p.a , b: a.b)); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  // Printout all Ancestors relationships&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  rule printAncestors  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if (fact Ancestor a) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      println(a.a + " is an ancestor of " + a.b);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  // Setup some parent relations...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    assert(new Parent(a: "Andy"   , b: "Betty"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    assert(new Parent(a: "Betty"  , b: "Charlie"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    assert(new Parent(a: "Charlie", b: "Donna"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  // Evaluate the ruleset&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  run();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;} &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;below is the result:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;Andy is an ancestor of Donna&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Betty is an ancestor of Donna&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Charlie is an ancestor of Donna&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Andy is an ancestor of Charlie&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Betty is an ancestor of Charlie&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Andy is an ancestor of Betty&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-6120238315182282795?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/6120238315182282795/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/02/recursion-in-rules.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/6120238315182282795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/6120238315182282795'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/02/recursion-in-rules.html' title='Recursion in Rules'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-5081144093984358575</id><published>2007-02-23T13:23:00.000+01:00</published><updated>2008-12-08T10:40:25.777+01:00</updated><title type='text'>Using the JDeveloper HTTP Analyser to Trace Web Services Calls from the RDBMS</title><content type='html'>&lt;span style="font-size:85%;"&gt;As you know, you can use the HTTP Analyser within JDeveloper to examine the network traffic of a client connecting to a Web Service. Usually one uses the HTTP Analyser from within JDeveloper, but it can also be used to track calls from a Web Services client residing within the RDBMS.&lt;br /&gt;&lt;br /&gt;This is the approach to take to do this:&lt;br /&gt;&lt;br /&gt;First, you start the HTTP Analyser normally by selecting View Http Analyser within JDeveloper. It then opens in its own window inside JDeveloper, run the HTTP Analyser by clicking  &lt;span style="color: rgb(51, 255, 51);"&gt;&gt;&lt;/span&gt; '(the small green button...)'.&lt;br /&gt;&lt;br /&gt;Next, you need to tell the RDBMS Web Service client to use this instance of the HTTP Analyser as a proxy, this can be done with the following line:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;  sys.utl_dbws.set_http_proxy('&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;&lt;host&gt;&lt;myport&gt;'); &lt;/myport&gt;&lt;/host&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and here you specify the host where JDeveloper is running as the host, the port is by default 8099, so unless you know that this has been changed, use this.&lt;br /&gt;&lt;br /&gt;Now it's time to run the call to the Web Service. The request/response packet pairs will now be listed in the HTTP Analyser. To examine the content of a request/response pair highlight it in the History tab and then click the Data tab.&lt;br /&gt;&lt;br /&gt;The should give you further details about the exact request / response sequence taking place.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-5081144093984358575?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/5081144093984358575/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/02/using-jdeveloper-http-analyser-to-trace.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5081144093984358575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/5081144093984358575'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/02/using-jdeveloper-http-analyser-to-trace.html' title='Using the JDeveloper HTTP Analyser to Trace Web Services Calls from the RDBMS'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-214987677368151462</id><published>2007-02-16T10:03:00.000+01:00</published><updated>2008-12-08T10:40:25.778+01:00</updated><title type='text'>Changed the Connection for a JDeveloper Generated PL/SQL Web Service</title><content type='html'>&lt;span style="font-size:85%;"&gt;Have you ever been annoyed that the JDeveloper PL/SQL Wizard is not able to change the Connection? Once you have created the Web Service, the field for the Connection is not editable. At least I have.&lt;br /&gt;&lt;br /&gt;Unfortunately doesn't the Wizard support switching the Connection. However, it is possible to do this in another way, this has not been tested to 100%, but I have used on several occasions and it seems to do the trick. So, if you want a 100% safe solution, you should re-create the Web Services. If you do not want to do that, and want to test this approach, you should ensure to have a backup of your project before progressing. Here is how you do it:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Close the JDeveloper project.&lt;br /&gt;2. Open the file myProject\src\mypackage\MyWebService.jaxrpc&lt;br /&gt;3. Edit the entry:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &lt;span style="color: rgb(51, 51, 153);"&gt;&lt;value n="PT_PLSQL_CONNECTION" v="MyConnectionName"&gt;&lt;/value&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;"&gt; &amp;lt;value n="PT_PLSQL_CONNECTION" v="MyConnectionName"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and change that to your new Connection and save the file.&lt;br /&gt;&lt;br /&gt;4. Open the Project&lt;br /&gt;&lt;br /&gt;5. Double click on the Web Service to open the Wizard. The new connection should now appear in the dialog. Click OK, this will re-generate the service to work towards the new connection.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-214987677368151462?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/214987677368151462/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/02/changed-connection-for-jdeveloper.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/214987677368151462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/214987677368151462'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/02/changed-connection-for-jdeveloper.html' title='Changed the Connection for a JDeveloper Generated PL/SQL Web Service'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-7994339405820209402</id><published>2007-02-01T16:14:00.000+01:00</published><updated>2011-10-06T21:39:51.057+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adf'/><title type='text'>Strange ADF Problem, Timepart of a Date Lost</title><content type='html'>Today I have been working on an issue that has intrigued me for a while. One of our customer has an application (ADF BC - Struts w. JSP) that first inserts some data into an Oracle DB by creating a new row in the corresponding ViewObject, then fetches some additional data from another DB, and updates the newly created ViewObject with this data, however, this process has failed. While debugging this problem I noticed that one of the parts of the Primary Key was a Date column, and in the log files there were entries like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;oracle.jbo.RowAlreadyDeletedException: JBO-25019: Riga entit? della chiave oracle.jbo.Key[1 2006-12-27 aaa] non trovata in MyTable.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I also noticed the following a bit further down in the log:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;06/12/27 12:22:31 [515] Original value :2006-12-27 12:22:28.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:courier new;" &gt;06/12/27 12:22:31 [516] Target value :2006-12-27&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;so, it seems quite obvious why the error occurs, the only question now would be why. Now, I wanted to have the error messages in English, so I then added &lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;-Duser.lang=en_US&lt;/span&gt;, and restarted the Application. Obviously I expected to get the error messages in English, but instead, it worked fine. Strange... I hope to find some explanation for this...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-7994339405820209402?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/7994339405820209402/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/02/strange-adf-problem-timepart-of-date.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7994339405820209402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/7994339405820209402'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/02/strange-adf-problem-timepart-of-date.html' title='Strange ADF Problem, Timepart of a Date Lost'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-116859482447826344</id><published>2007-01-12T10:30:00.000+01:00</published><updated>2011-10-06T21:39:51.058+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adf'/><title type='text'>Fix for Bug ADF JClient bug 5642176 Available</title><content type='html'>In the OTN thread:&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=297913&amp;start=15&amp;amp;tstart=0"&gt;&lt;br /&gt;http://forums.oracle.com/forums/thread.jspa?threadID=297913&amp;start=15&amp;amp;tstart=0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;there is a discusssion about a problem related to the ADF JClient bug  5642176. The patch for this bug is now available for download on &lt;a href="https://metalink.oracle.com/"&gt;MetaLink&lt;/a&gt;. To download it:&lt;br /&gt;   &lt;br /&gt;    1) In MetaLink, click tab "Patches &amp; Updates"&lt;br /&gt;    2) Click "Simple Search"&lt;br /&gt;    3) Select "Search By" "Patch Number"&lt;br /&gt;    4) Enter the patch number: 5642176&lt;br /&gt;    5) Select Microsoft Win-32 bit as the Platform (the patch is still Generic)&lt;br /&gt;    6) Click "Go"&lt;br /&gt;    7) Click "View Readme" and follow instructions to install the patch.&lt;br /&gt;&lt;br /&gt;The patch is available for JDeveloper 10.1.2.2 and 10.1.3.1. Please also refer to the MetaLink Note 406050.1 for further details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-116859482447826344?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/116859482447826344/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2007/01/fix-for-bug-adf-jclient-bug-5642176.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/116859482447826344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/116859482447826344'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2007/01/fix-for-bug-adf-jclient-bug-5642176.html' title='Fix for Bug ADF JClient bug 5642176 Available'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-116237681673305451</id><published>2006-11-01T11:25:00.000+01:00</published><updated>2008-12-08T10:40:44.434+01:00</updated><title type='text'>JDeveloper 10.1.3.1 Released</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;No updates in a long time... It's been busy times... Anyway, this is probably well known by now, but I add it for reference:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The new JDeveloper 10.1.3.1.0 (Build 3984) is available from OTN:&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: arial;" href="http://www.oracle.com/technology/software/products/jdev/htdocs/soft10131.html"&gt;http://www.oracle.com/technology/software/products/jdev/htdocs/soft10131.html &lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-116237681673305451?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/116237681673305451/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/11/jdeveloper-10131-released.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/116237681673305451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/116237681673305451'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/11/jdeveloper-10131-released.html' title='JDeveloper 10.1.3.1 Released'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-115823833636398405</id><published>2006-09-14T14:44:00.000+02:00</published><updated>2011-10-06T21:37:31.759+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='toplink'/><title type='text'>Hierarchical Questions Using TopLink</title><content type='html'>&lt;p style="font-family: arial;" class="MsoNormal"&gt;&lt;span style=""&gt;A colleague asked about how one can implement hierarchical questions using TopLink. There is a section in the manual describing this nicely. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNormal"&gt;&lt;span style=""&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style="font-size: 12pt; font-family: arial;"&gt;The URL to the section is: &lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.oracle.com/technology/products/ias/toplink/doc/1013/MAIN/_html/qryadv008.htm#i1134801"&gt;&lt;span style="font-size: 12pt;" lang="SV"&gt;&lt;span style="" lang="EN-US"&gt;http://www.oracle.com/technology/products/ias/toplink/doc/1013/MAIN/_html/qryadv008.htm#i1134801&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; font-family: arial;"&gt;The following code snippet is an excerpt from it:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;ReadAllQuery raq = new ReadAllQuery(Employee.class); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Expression startExpr = expressionBuilder.get("id").equal(new Integer(1)); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Expression connectBy = expressionBuilder.get("managedEmployees"); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Vector order = new Vector(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;order.addElement(expressionBuilder.get("lastName")); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;order.addElement(expressionBuilder.get("firstName")); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;raq.setHierarchicalQueryClause(startExpr, connectBy, order); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Vector employees = uow.executeQuery(raq); &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; font-family: arial;"&gt;&lt;br /&gt;this will generate the following SQL:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;SELECT * FROM EMPLOYEE START WITH ID=1 CONNECT BY PRIOR ID=MANAGER_ID  ORDER SIBLINGS BY LAST_NAME, FIRST_NAME&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-115823833636398405?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/115823833636398405/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/09/hierarchical-questions-using-toplink.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115823833636398405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115823833636398405'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/09/hierarchical-questions-using-toplink.html' title='Hierarchical Questions Using TopLink'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-115813021098078274</id><published>2006-09-13T08:47:00.000+02:00</published><updated>2008-12-08T10:40:44.435+01:00</updated><title type='text'>JDeveloper 10.1.3 ServiceUpdate 5 Available</title><content type='html'>A new Service Update for JDeveloper 10.1.3 is available via "Check for Updates".&lt;br /&gt;&lt;br /&gt;Please note that this is not applicable for the JDeveloper 10.1.3.1 Developer Preview.&lt;br /&gt;&lt;br /&gt;This is the fifth Service Update (SU5) for JDeveloper 10.1.3.0.4. It  fixes some commonly-encountered critical issues. We recommend that all  customers apply this Service Update. This Service Update requires that Service Update 1 has been installed.  Please ensure that JDeveloper Service Update 1 is already installed before  installing Service Update 5.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-115813021098078274?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/115813021098078274/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/09/jdeveloper-1013-serviceupdate-5.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115813021098078274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115813021098078274'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/09/jdeveloper-1013-serviceupdate-5.html' title='JDeveloper 10.1.3 ServiceUpdate 5 Available'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-115642032631599681</id><published>2006-08-24T13:50:00.000+02:00</published><updated>2006-08-24T13:52:06.580+02:00</updated><title type='text'>Keep the 'home' Instance Clean</title><content type='html'>&lt;span style="font-family: times new roman;"&gt;We sometimes sees people deploying applications to the default 'home' OC4J instance within the Oracle Application Server. Even though this will work, it is a better practice not deploying any Applications to this Instance, and leave this one alone. We have some internal use of this instance, and it is not ment for regular Application deployments. Therefore; please create a new OC4J instance and use this for your own Application deplyoments. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-115642032631599681?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/115642032631599681/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/08/keep-home-instance-clean.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115642032631599681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115642032631599681'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/08/keep-home-instance-clean.html' title='Keep the &apos;home&apos; Instance Clean'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-115634299965046887</id><published>2006-08-23T16:19:00.000+02:00</published><updated>2011-10-06T21:41:33.099+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>RuleAuthor Fails to Start with Strange Error Message</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-family:times new roman;"&gt;An interesting problem that has appeared recentley is that I've seen the RuleAuthor fail with an exception:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;java.io.FileNotFoundException: Could not find RuleHome.uix.uix&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="font-family:times new roman;"&gt;&lt;span style=""&gt;on a few occasions recently. It is possible to get to the login screen, but once you have logged in, this error appears.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:times new roman;"&gt;&lt;span style=""&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style=";font-family:times new roman;font-size:100%;"  &gt;It turned out; that this was caused by that the Oracle HTTP Server (OHS) was started by using apachectl instead of via OPMN. This led to inconsistency between the OHS to OC4J mapping in the mod_oc4j mappings. Could be worth keeping in mind...&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-115634299965046887?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/115634299965046887/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/08/ruleauthor-fails-to-start-with-strange.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115634299965046887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115634299965046887'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/08/ruleauthor-fails-to-start-with-strange.html' title='RuleAuthor Fails to Start with Strange Error Message'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-115571507490077694</id><published>2006-08-16T09:56:00.000+02:00</published><updated>2008-12-08T10:40:44.436+01:00</updated><title type='text'>Developer's Preview of Oracle Application Server 10g Release 3 (10.1.3.1.0) for the Oracle SOA Suite Out Now</title><content type='html'>A Developer's Preview of Oracle Application Server 10g Release 3 (10.1.3.1.0) Developer Preview for the Oracle SOA Suite is now out on OTN.&lt;br /&gt;&lt;br /&gt;It is available for download at: &lt;a href="http://www.oracle.com/technology/software/products/ias/soapreview.html"&gt;http://www.oracle.com/technology/software/products/ias/soapreview.html &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-115571507490077694?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/115571507490077694/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/08/developers-preview-of-oracle_16.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115571507490077694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115571507490077694'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/08/developers-preview-of-oracle_16.html' title='Developer&apos;s Preview of Oracle Application Server 10g Release 3 (10.1.3.1.0) for the Oracle SOA Suite Out Now'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-115571441861292823</id><published>2006-08-16T09:44:00.000+02:00</published><updated>2008-12-08T10:40:44.436+01:00</updated><title type='text'>Developer's Preview of Oracle JDeveloper 10g 10.1.3.1 Out Now</title><content type='html'>A Developer's Preview of  Oracle JDeveloper 10&lt;em&gt;g&lt;/em&gt; (10.1.3.1.0) is now out on OTN.&lt;br /&gt;&lt;br /&gt;It is available for download at: &lt;a href="http://www.oracle.com/technology/software/products/jdev/htdocs/soft10131studio.html"&gt;http://www.oracle.com/technology/software/products/jdev/htdocs/soft10131studio.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-115571441861292823?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/115571441861292823/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/08/developers-preview-of-oracle.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115571441861292823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115571441861292823'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/08/developers-preview-of-oracle.html' title='Developer&apos;s Preview of Oracle JDeveloper 10g 10.1.3.1 Out Now'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-115571389361296750</id><published>2006-08-16T09:38:00.000+02:00</published><updated>2008-12-08T10:40:36.452+01:00</updated><title type='text'>How do to Make JDeveloper Keep the Wrapper Code for EJB's for Debugging Purpose</title><content type='html'>Sometimes it is useful to have the wrapper code for EJB's for debugging. This code is not generated by default, but you can have JDeveloper generate it for you.&lt;br /&gt;&lt;br /&gt;The wrappers are not generated during compilation, but during deployment. The easiest way to get hold of them is to run the EJB in the embedded OC4J server, this will cause a deployment to take place, and the wrappers will be generated.&lt;br /&gt;&lt;br /&gt;You also need to set a switch for them to be generated. To do this you go to Project Properties -&gt; Runner, and add the following switches:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;code class="awiz"&gt;  -DKeepWrapperCode=true -DWrapperCodeDir=d:\tmp&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;and the wrapper code will be generated into whatever directory you specified with the &lt;span style="font-family:courier new;"&gt;-DWrapperCodeDir&lt;/span&gt; switch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-115571389361296750?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/115571389361296750/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/08/how-do-to-make-jdeveloper-keep-wrapper.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115571389361296750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115571389361296750'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/08/how-do-to-make-jdeveloper-keep-wrapper.html' title='How do to Make JDeveloper Keep the Wrapper Code for EJB&apos;s for Debugging Purpose'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-115209016788617377</id><published>2006-07-05T10:46:00.000+02:00</published><updated>2008-12-08T10:40:36.453+01:00</updated><title type='text'>Incremental Deployment using JDeveloper &amp; OC4J</title><content type='html'>In the JDeveloper online help and in the OC4J Deployment Guide 10.1.3, the option to use virtual directories is mentioned. This feature can be used to implement incremental deployment using JDeveloper &amp; OC4J.&lt;br /&gt;&lt;br /&gt;Here is how it works:&lt;br /&gt;The element 'virtual-directory' adds a virtual directory mapping for static content. This is conceptually similar to symbolic links on a UNIX system. The virtual directory enables you to make files in the "real" document root directory available to the application, even though the files do not physically reside in the Web application WAR file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is an example:&lt;br /&gt;&lt;br /&gt;1. Start JDeveloper &amp;amp; a standalone OC4J Server (10.1.3 versions).&lt;br /&gt;2. Create a new Workspace in JDeveloper, with 2 empty projects.&lt;br /&gt;3. In Project 1, create a new HTML page.&lt;br /&gt;4. Create a new WAR deployment profile for Project 1, set the J2EE Context to 'foo'.&lt;br /&gt;5. Deploy the application to the standalone OC4J server.&lt;br /&gt;6. Ensure that you can access the HTML file from a browser.&lt;br /&gt;7. In Project 2, create a new JSP file.&lt;br /&gt;8. Add the deployment descriptor orion-web.xml to Project 2. Add this line to that file:&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-family:courier new;"&gt;&lt;virtual-directory path="/foo"&gt;&lt;/virtual-directory&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;virtual-directory virtual-path="/foo" real-path="D:\oracle\oc4j1013\j2ee\home\applications\webapp1\webapp1" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  You need, of course, to alter the real-path to where your first application has been deployed. You could also have placed the files directly somewhere on the server, and referenced this directory here instead of creating a Project and deploying them.&lt;br /&gt;&lt;br /&gt;9. Create a new WAR deployment profile in Project 2, set the J2EE Context to 'fuu'.&lt;br /&gt;10. Deploy the application to the standalone OC4J server.&lt;br /&gt;11. Ensure that you can access the JSP file from a browser.&lt;br /&gt;12. Now you will be able to access the HTML file by using:&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-family:courier new;font-size:85%;"&gt;http://localhost:8888/fuu/foo/untitled1.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;13. Alter the JSP in Project 2 and re-deploy Project 2. Notice that you can still access the HTML file from the above URL without having to re-deploy also these files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-115209016788617377?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/115209016788617377/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/07/incremental-deployment-using.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115209016788617377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115209016788617377'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/07/incremental-deployment-using.html' title='Incremental Deployment using JDeveloper &amp; OC4J'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-115149501843420360</id><published>2006-06-28T13:37:00.000+02:00</published><updated>2008-12-08T10:40:36.453+01:00</updated><title type='text'>JDeveloper 10.1.3 SU4 Available</title><content type='html'>The Service Update 4 (SU4) for JDeveloper 10.1.3 is available.  Use 'Help' -&gt; 'Check for Updates' from within JDeveloper to download and install it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-115149501843420360?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/115149501843420360/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/06/jdeveloper-1013-su4-available.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115149501843420360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/115149501843420360'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/06/jdeveloper-1013-su4-available.html' title='JDeveloper 10.1.3 SU4 Available'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-114908691240317142</id><published>2006-05-31T16:36:00.000+02:00</published><updated>2006-05-31T16:48:32.420+02:00</updated><title type='text'>Configuring a 2:nd OC4J Instance for ADF use within an Oracle Application Server</title><content type='html'>When you setup a second OC4J instance within an Oracle Application Server 10.1.3 it won't have the ADF Libraries configured, this means that if you deploy an ADF application to this instance, it won't work. Further, there is no option neither within JDeveloper nor with the ADF Installer to configure this second instance for use with ADF, so what to do in this situation? Answer: You'll just have to do some manual configuration.&lt;br /&gt;&lt;br /&gt;Assuming that you have created the 2:nd OC4J instance by using the createInstance command, you then need to update the files server.xml and application.xml for this instance with some additional configuration before starting it.&lt;br /&gt;&lt;br /&gt;Both of these files are located in the directory:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; &amp;lt;ORCALE_AS_HOME&amp;gt;/j2ee/&amp;lt;INSTANCE_NAME&amp;gt;/config&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Open them with your favourite editor.&lt;br /&gt;&lt;br /&gt;Add the following entries:&lt;br /&gt;&lt;br /&gt;server.xml&lt;br /&gt;==========&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;shared-library name="oracle.expression-evaluator" version="10.1.3" library-compatible="true"&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/commons-el.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/oracle-el.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/jsp-el-api.jar"/&amp;gt;&lt;br /&gt;&amp;lt;/shared-library&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;shared-library name="adf.oracle.domain" version="10.1.3" library-compatible="true"&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/lib"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/commons-cli-1.0.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../mds/lib/concurrent.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../mds/lib/mdsrt.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/xmlef.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/commons-el.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/oracle-el.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/jsp-el-api.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/adfmtl.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/adfui.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/jdev-cm.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/adf-connections.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/dc-adapters.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../ord/jlib/ordim.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../ord/jlib/ordhttp.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/ojmisc.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../lib/xsqlserializers.jar"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.xml"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.jdbc"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.cache"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.dms"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.toplink"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.sqlj"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.ws.core"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.ws.client"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.xml.security"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.ws.security"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.ws.reliability"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.jwsdl"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.http.client"/&amp;gt;&lt;br /&gt;&amp;lt;/shared-library&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;shared-library name="adf.generic.domain" version="10.1.3" library-compatible="true"&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/bc4jdomgnrc.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/lib"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/commons-cli-1.0.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../mds/lib/concurrent.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../mds/lib/mdsrt.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/xmlef.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/commons-el.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/oracle-el.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/jsp-el-api.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/adfmtl.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/adfui.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/jdev-cm.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/adf-connections.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/dc-adapters.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../ord/jlib/ordim.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../ord/jlib/ordhttp.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../jlib/ojmisc.jar"/&amp;gt;&lt;br /&gt; &amp;lt;code-source path="../../../lib/xsqlserializers.jar"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.xml"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.jdbc"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.cache"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.dms"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.toplink"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.sqlj"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.ws.core"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.ws.client"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.xml.security"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.ws.security"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.ws.reliability"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.jwsdl"/&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="oracle.http.client"/&amp;gt;&lt;br /&gt;&amp;lt;/shared-library&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;application name="bc4j" path="../../../BC4J/redist/bc4j.ear" start="true" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;application.xml&lt;br /&gt;===============&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;imported-shared-libraries&amp;gt;&lt;br /&gt; &amp;lt;import-shared-library name="adf.oracle.domain"/&amp;gt;&lt;br /&gt;&amp;lt;/imported-shared-libraries&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Please also verify that the file jdev-cm.jar exists in the location pointed by the line:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; &amp;lt;code-source path="../../../BC4J/jlib/jdev-cm.jar"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If this file does not exists there, just copy it from your JDeveloper installation to this location.&lt;br /&gt;&lt;br /&gt;When you now start the 2:nd instance you will be able to deploy ADF applications also to this instance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-114908691240317142?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/114908691240317142/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/05/configuring-2nd-oc4j-instance-for-adf.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114908691240317142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114908691240317142'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/05/configuring-2nd-oc4j-instance-for-adf.html' title='Configuring a 2:nd OC4J Instance for ADF use within an Oracle Application Server'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-114906270570632904</id><published>2006-05-31T09:57:00.000+02:00</published><updated>2008-12-08T10:40:36.454+01:00</updated><title type='text'>JDeveloper Release 9.0.4.3 Out</title><content type='html'>The 9.0.4.3 maintenance release is now out. For information of bugs fixed in this release, please refer to:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/jdev/htdocs/904/9043_fix_list.html"&gt;http://www.oracle.com/technology/products/jdev/htdocs/904/9043_fix_list.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It can be downloaded from OTN at the URL:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/software/htdocs/jdevlic.html?http://otn.oracle.com/software/products/jdev/htdocs/soft9043.html"&gt;http://www.oracle.com/technology/software/htdocs/jdevlic.html?http://otn.oracle.com/software/products/jdev/htdocs/soft9043.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For reference, here is the current list of the latest releases of the JDeveloper versions:&lt;br /&gt;&lt;br /&gt;9.0.4.3&lt;br /&gt;9.0.5.2&lt;br /&gt;10.1.2.1&lt;br /&gt;10.1.3 SU3&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-114906270570632904?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/114906270570632904/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/05/jdeveloper-release-9043-out.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114906270570632904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114906270570632904'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/05/jdeveloper-release-9043-out.html' title='JDeveloper Release 9.0.4.3 Out'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-114432492509231137</id><published>2006-04-06T13:48:00.000+02:00</published><updated>2011-10-06T21:41:33.100+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>Recursion in RL Functions</title><content type='html'>Today I was thinking if it were possible to create recursive functions in the RL Language, so I made a small test by calculating factorials. I started by defining the function as:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  function factorial(long  x) returns long {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    if( x == 1) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           return 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    } else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           return x*(factorial( x-1 ));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Next, I just ran it by using:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  println("The factorial of 12 is: " + factorial(12) + ".");&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and this gave me the expected result of:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  The factorial of 12 is: 479001600.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;so, this seems to work fine.&lt;br /&gt;&lt;br /&gt;Next thing will be to try recursion for facts, and of course for rules... More about that later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-114432492509231137?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/114432492509231137/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/04/recursion-in-rl-functions.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114432492509231137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114432492509231137'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/04/recursion-in-rl-functions.html' title='Recursion in RL Functions'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-114404746349814719</id><published>2006-04-03T08:56:00.000+02:00</published><updated>2006-04-03T08:57:43.500+02:00</updated><title type='text'>Site Feeds</title><content type='html'>Added links to Atom and RSS feed links  in the Links section. They are also available here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://beautifulwaste.blogspot.com/atom.xml"&gt;Atom Site Feed&lt;/a&gt;&lt;br /&gt;&lt;a href="http://feeds.feedburner.com/StellansBlog"&gt;RSS Site Feed&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-114404746349814719?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/114404746349814719/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/04/site-feeds.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114404746349814719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114404746349814719'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/04/site-feeds.html' title='Site Feeds'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-114379344653926037</id><published>2006-03-31T10:14:00.000+02:00</published><updated>2006-03-31T10:24:06.550+02:00</updated><title type='text'>How to Remove the Topic / Folder info in Metalink</title><content type='html'>Note, this post only applies to those who use the Oracle Support system Metalink.&lt;br /&gt;&lt;br /&gt;When browsing articles in Metalink, by default the Folder and Topic information is displayed in the list of articles. This can by quite annoying, but it's easy to switch off.&lt;br /&gt;&lt;br /&gt;To do this, just click on the 'Hide Folder / Topic' button just above the articles. See the picture below:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7050/2214/1600/before.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/7050/2214/320/before.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once switched off, the list looks much neater, in my opinion, as shown below:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7050/2214/1600/after.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/7050/2214/320/after.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-114379344653926037?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/114379344653926037/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/03/how-to-remove-topic-folder-info-in.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114379344653926037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114379344653926037'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/03/how-to-remove-topic-folder-info-in.html' title='How to Remove the Topic / Folder info in Metalink'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-114370182936471640</id><published>2006-03-30T08:46:00.000+02:00</published><updated>2011-10-06T21:41:33.100+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>RL Language Rules Extension for JDeveloper</title><content type='html'>I have created an extension for JDeveloper, which makes it a bit easier to work with the Oracle Business Rules Language, RL Language within JDeveloper. Read more about it on OTN at: &lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/rules/howto.html"&gt;http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/rules/howto.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-114370182936471640?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/114370182936471640/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/03/rl-language-rules-extension-for.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114370182936471640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114370182936471640'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/03/rl-language-rules-extension-for.html' title='RL Language Rules Extension for JDeveloper'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-114344970685964635</id><published>2006-03-27T10:49:00.000+02:00</published><updated>2011-10-06T21:41:33.100+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>Callout from within Oracle Business Rules</title><content type='html'>Within Oracle Business Rules you sometimes need to make callouts to an external Object within the action part of your rule. This is very easy to achieve. Suppose that you have a class with an external method similar to:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  package myPackage;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  public class CallOut {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   public CallOut() { }&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      public void test(String myVariable) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           System.out.println("Callout from Rules with argument: " + myVariable);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and you would like to call upon this method from within the action part of a rule. The first thing you need to do is also to import this class into your dictionary. Once done, you need to define a new RLFunction. This function needs to have 2 variables defined, one for the class itself, and one for the argument. The argument should have the argument type String, while the class needs to have the Type CallOut, or whatever your class is named. Within the function body you then define the actual function like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    TestCallOut.test(message);&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now you have a Rules function that you cal call upon from the action part of any rule within your ruleset(s), like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   Call callOut( Passenger.name, new CallOut () )&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The RL code that is generated for such a task will look like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   function callOut(String message, myPackage.CallOut TestCallOut)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      //RL literal statement&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      TestCallOut.test(message);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   }// DM.callOut&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;for the function, this will be defined in the DM ruleset. The call will look like:&lt;br /&gt;&lt;Pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   rule myRule&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      priority = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      if&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       fact myPackage.SomeFactObject v0_SomeFactObject &amp;&amp;amp; (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         (v0_SomeFactObject.anAttribute &lt;&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         DM.callOut(v0_SomeFactObject.someArgument, new myPackage.CallOut());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  } //end rule myRule;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I hope this will have shown you how-to make a callout from Oracle Business Rules to a method within an Object.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-114344970685964635?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/114344970685964635/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/03/callout-from-within-oracle-business.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114344970685964635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114344970685964635'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/03/callout-from-within-oracle-business.html' title='Callout from within Oracle Business Rules'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-114241143369269624</id><published>2006-03-15T09:27:00.000+01:00</published><updated>2008-12-08T10:40:36.455+01:00</updated><title type='text'>JDeveloper Subversion Extension EA1 Available on OTN</title><content type='html'>Oracle is providing a Subversion Extension for JDeveloper 10.1.3. It is officially available from OTN at this URL:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/subversion/subversion.html"&gt;http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/subversion/subversion.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To install it, just follow the provided installation instructions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-114241143369269624?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/114241143369269624/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/03/jdeveloper-subversion-extension-ea1.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114241143369269624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/114241143369269624'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/03/jdeveloper-subversion-extension-ea1.html' title='JDeveloper Subversion Extension EA1 Available on OTN'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-113990895646705108</id><published>2006-02-14T10:12:00.000+01:00</published><updated>2011-10-06T21:41:33.101+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>Installing Rule Author on a standalone OC4J 10.1.3</title><content type='html'>It is possible to install the Rule Author on a standalone OC4J 10.1.3. Below is one way of achieving this.&lt;br /&gt;&lt;br /&gt;1. Copy the ruleauthor.ear from a AS installation on Linux, located in &lt;ORACLE_HOME&gt;/rules/webapps to the windows machine, for example to d:\tmp\ruleauthor.ear&lt;br /&gt;&lt;br /&gt;2. Startup a standalone OC4J 10.1.3 on the windows machine.&lt;br /&gt;&lt;br /&gt;3. Deploy the Rule Author to it using:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;java -jar admin.jar ormi://localhost:23791 oc4jadmin &lt;admin-password&gt; &lt;br /&gt;     -deploy -file D:/tmp/ruleauthor.ear -deploymentName ruleauthor&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;java -jar admin.jar ormi://localhost:23791 oc4jadmin &lt;admin-password&gt; &lt;br /&gt;     -bindWebApp ruleauthor ruleauthor default-web-site ruleauthor&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4. Add the default user, goto http://localhost:8888/em/ and follow the steps given in  the Oracle Business Rules User's Guide, section 2.1:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download-uk.oracle.com/docs/cd/B25221_01/web.1013/b15986/guistart.htm#sthref76 "&gt;http://download-uk.oracle.com/docs/cd/B25221_01/web.1013/b15986/guistart.htm#sthref76 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;don't forget to restart the ruleautor application after defining the user.&lt;br /&gt;&lt;br /&gt;5. Now you can use the Rule Author at the URL http://localhost:8888/ruleauthor/RuleHome.uix by using the user created in previous step.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-113990895646705108?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/113990895646705108/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/02/installing-rule-author-on-standalone.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/113990895646705108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/113990895646705108'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/02/installing-rule-author-on-standalone.html' title='Installing Rule Author on a standalone OC4J 10.1.3'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-113923923970422057</id><published>2006-02-06T16:13:00.000+01:00</published><updated>2011-10-06T21:41:33.101+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><category scheme='http://www.blogger.com/atom/ns#' term='toplink'/><title type='text'>Combining TopLink with Oracle Business Rules</title><content type='html'>This sample will show you how you retrieve some objects by using TopLink and then use Oracle Business Rules to do some selection upon these objects. I am not using neither a file based nor a WebDAV based rule repository for this sample, instead I create the ruleset on the fly.&lt;br /&gt;&lt;br /&gt;Suppose you have a table, PERSON, that has the following structure:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  PERSON&lt;br /&gt;  ------&lt;br /&gt;  PID      NUMBER&lt;br /&gt;  NAME     VARCHAR2(32)&lt;br /&gt;  SEX    CHAR(1)&lt;br /&gt;  EYECOLOR VARCHAR2(8)&lt;br /&gt;  INCOME   NUMBER&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and this is mapped to a Person object which has corresponding fields and accessors. I will also assume that you have setup a TopLink mapping between the table and the object.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, we first need to retrieve the objects from the DB, assuming we are working with a 2-tier here, we do this as follows:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  SessionManager sessionManager = SessionManager.getManager();&lt;br /&gt;  Session session = sessionManager.getSession("default");&lt;br /&gt;  Vector v = session.readAllObjects(Person.class);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This will read all persons in the database and put them into a Vector. Now, we have a vector, v, that holds our persons. The next step is to initiate the RuleSession, as mentioned before, this is done on the fly with one simple rule:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  RuleSession rs = new RuleSession();&lt;br /&gt;  String rset = &lt;br /&gt;  "ruleset main {" +&lt;br /&gt;  "   import ruleexample1.bo.Person;" +&lt;br /&gt;  "   rule blueEyeFemaleWithIncomeOver40000 {" +&lt;br /&gt;  "     if (fact Person p &amp;&amp; p.getEye_color().equals(\"Blue\") &amp;&amp; p.getSex().equals(\"F\") &amp;&amp; p.getIncome()&amp;gt;40000 ) {" +&lt;br /&gt;  "       println(p.getName() + \" is a female with blue eyes and an income over 400000.\");" +&lt;br /&gt;  "     }" +&lt;br /&gt;  "   }" +&lt;br /&gt;  "}";&lt;br /&gt;  rs.executeRuleset(rset);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;this rule will fire for females with blue eyes and has an income over 40000. Once done, we can assign the persons as facts, this is done by:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  for (int i=0;i&amp;lt;v.size();i++) {&lt;br /&gt;    rs.callFunctionWithArgument( "assert", (Person)v.elementAt(i) );&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;once the facts are in place, we can run this by calling:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  rs.callFunction( "run" );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That's it! This will print out a list of objects that matches the conditions set out in the rule set.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-113923923970422057?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/113923923970422057/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/02/combining-toplink-with-oracle-business.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/113923923970422057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/113923923970422057'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/02/combining-toplink-with-oracle-business.html' title='Combining TopLink with Oracle Business Rules'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-113896916981487537</id><published>2006-02-03T13:17:00.000+01:00</published><updated>2011-10-06T21:41:33.102+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>Functions in Oracle Business Rules RL Language</title><content type='html'>The Oracle Business Rules RL Language syntax is very similar to Java, so it should be very easy for a Java programmer to get a grasp on the syntax quickly. If you have a background working with Jess, you will however notice that the syntax differs a bit. I will give a quick demonstration on the differences concerning functions.&lt;br /&gt;&lt;br /&gt;In Jess you create a function like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  Jess&gt; (deffunction max (?x ?y)&lt;br /&gt;    (if (&gt; ?x ?y) then&lt;br /&gt;        (return ?x)&lt;br /&gt;    else&lt;br /&gt;        (return ?y)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and you call upon it with the following statement:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  Jess&gt; (printout t "The biggest number of 5 and 7 is: " (max 5 7) "." crlf)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In RL Language you create a similar function like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  RL&gt; function max(long x, long y) returns long {&lt;br /&gt;        if (x&lt;=y) { return y; }&lt;br /&gt;        else { return x; }&lt;br /&gt;      }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and you call upon it with the following statement:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  RL&gt; println("The biggest number of 5 and 7 is: " + max(5,7) + ".");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So, as you can see, with respect to functions, Jess and RL Language looks quite the same, however, there are syntactical differences for the programmer to be aware of.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-113896916981487537?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/113896916981487537/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/02/functions-in-oracle-business-rules-rl.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/113896916981487537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/113896916981487537'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/02/functions-in-oracle-business-rules-rl.html' title='Functions in Oracle Business Rules RL Language'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-113887418745100369</id><published>2006-02-02T10:49:00.000+01:00</published><updated>2011-10-06T21:41:33.102+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><title type='text'>Oracle Business Rules not Installed by Default</title><content type='html'>I downloaded and installed the Oracle AS 10.1.3 today in order to get going with the Oracle Business Rules. As indicated on the OTN page it says that this should be included with the installation. It is included, but the Rule Author it is not installed by default.&lt;br /&gt;&lt;br /&gt;So, once you have installed the Oracle AS 10.1.3, you also need to deploy the ruleauthor.ear file to the OC4J instance where you want your Rule Author to run. The file is located in the &lt;ORACLE_HOME&gt;/rules/webapps directory.&lt;br /&gt;&lt;br /&gt;Once deployed, the Rule Author came up nicely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-113887418745100369?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/113887418745100369/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/02/oracle-business-rules-not-installed-by.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/113887418745100369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/113887418745100369'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/02/oracle-business-rules-not-installed-by.html' title='Oracle Business Rules not Installed by Default'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21854841.post-113887315259443049</id><published>2006-02-02T10:37:00.000+01:00</published><updated>2006-02-02T10:39:12.593+01:00</updated><title type='text'>Started Blog</title><content type='html'>Started this blog on the 2nd of February 2006.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21854841-113887315259443049?l=beautifulwaste.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://beautifulwaste.blogspot.com/feeds/113887315259443049/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://beautifulwaste.blogspot.com/2006/02/started-blog.html#comment-form' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/113887315259443049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21854841/posts/default/113887315259443049'/><link rel='alternate' type='text/html' href='http://beautifulwaste.blogspot.com/2006/02/started-blog.html' title='Started Blog'/><author><name>Stellan</name><uri>http://www.blogger.com/profile/00182110536198498491</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
