<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Whitehorses Blog &#187; Miscellaneous</title>
	<atom:link href="http://blog.whitehorses.nl/category/miscellaneous/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.whitehorses.nl</link>
	<description>Oracle, Java and SOA expertise - Lean thinking, Agile working</description>
	<lastBuildDate>Sat, 07 Jan 2012 19:37:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Devoxx 2011 &#8211; The Groovy Ecosystem</title>
		<link>http://blog.whitehorses.nl/2011/12/14/devoxx-2011-the-groovy-ecosystem/</link>
		<comments>http://blog.whitehorses.nl/2011/12/14/devoxx-2011-the-groovy-ecosystem/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 20:47:25 +0000</pubDate>
		<dc:creator>Roger Goossens</dc:creator>
				<category><![CDATA[Enterprise Java]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[gradle]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[griffon]]></category>
		<category><![CDATA[groovy]]></category>

		<guid isPermaLink="false">http://blog.whitehorses.nl/?p=2573</guid>
		<description><![CDATA[My last talk at Devoxx was the one that perhaps i enjoyed the most and one that I was really impressed by. A lot of neat products based on Groovy were discussed in this talk. They had a lot in common. Besides all being based on Groovy, they also have a very simple installation procedure [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>My last talk at Devoxx was the one that perhaps i enjoyed the most and one that I was really impressed by. A lot of neat products based on Groovy were discussed in this talk. They had a lot in common. Besides all being based on Groovy, they also have a very simple installation procedure in common: just download the product, unzip it, and add the executable to the PATH variable. And voilá, you have a command line tool at your disposal linked to the product you downloaded.</p>
<p>The talk was presented by Andres Almiray. All the products he discussed, he demoed by using a text editor and a command line (and sometimes a web browser), which was pretty cool. It furthermore emphasized the simplicity of working with the different products. Like Andres did in his presentation, I will focus this blog on Grails, Griffon and Gradle and only give a short summary of the other products.</p>
<h3>Grails</h3>
<p>First up was maybe the most widely known product in the Groovy eco-system. <a href="http://grails.org/">Grails</a> is a high-productivity web application framework based on Spring, Hibernate and Sitemesh. It&#8217;s a widely used framework and currently there are over 600 plugins available for Grails, facilitating the addition of custom functionality (like file uploading or integration with soap or rest services) to your web application.</p>
<p>With Grails you bring Rapid Application Web Development to the table. In no time Andres got a CRUD application up an running.</p>
<p>First he created a basic Grails application</p>
<pre class="brush: bash">$ grails create-app devoxx</pre>
<p>Next, he added some domain classes</p>
<pre class="brush: bash">$ grails create-domain-class Author
$ grails create-domain-class Book</pre>
<p>This created the <em>Author.groovy</em> and <em>Book.groovy</em> class files.</p>
<p>The relation between the two classes Andres added manually by adding the following line of code to the <em>Author</em> class:</p>
<pre class="brush: groovy">static hasMany [books:Book]</pre>
<p>With the domain classes in order, we can now create 2 controller classes <em>AuthorController</em> and <em>BookController</em>:</p>
<pre class="brush: ruby">$ grails create-controller Author
$ grails create-controller Book</pre>
<p>Now, to enable auto-generation of the view layer of the application based on the domain classes, we have to enable a feature called scaffolding. The following line of code added to the <em>AuthorController</em> takes care of this:</p>
<pre class="brush: groovy">static scaffold = true</pre>
<p>Now all is in place for running the application:</p>
<pre class="brush: bash">$ grails run-app</pre>
<p>With scaffolding in place all the views for the CRUD app get auto-generated (as .<em>gsp</em> pages). The <em>run-app</em> command furthermore packages the application and bootstraps TomCat. Now you can reach the application at the following url: http://localhost:8080/devoxx/author.</p>
<p>One additional benefit of using these basic commands to rapidly generate a prototype is that every generated class gets to appear in its own default package, given that Grails is based on the configuration by exception paradigm. Scaffolding is based on templates and all these templates can be customized to fit your needs.</p>
<p>After the basics Andres shows some additional Grails features. All of them very easy to add to the application:</p>
<ul>
<li>Adding constraints to domain classes (Grails error messages support i18n);</li>
<li>Creating a taglib: $<em> grails create-taglib</em>;</li>
<li>Launching the Grails <em>console</em>, an interactive playground, similar to the Groovy console: $<em> grails console</em></li>
<li>The grails <em>war</em> command: $ <em>grails war</em>;</li>
<li>Installing the Grails REST plugin: $ <em>grails install-plugin rest;</em></li>
<li>Creating and packaging a custom plugin: $<em> grails create-plugin</em> / $ <em>grails package-plugin</em>.</li>
</ul>
<h3>Griffon</h3>
<p><a href="http://griffon.codehaus.org/">Griffon</a> is similar to Grails. It&#8217;s a high productivity framework for building Desktop applications. Griffon is a relatively new framework. It already has nearly 200 plugins available though.</p>
<p>A lot of the commands in Griffon are similar to the commands used in Grails. Here are some useful commands:</p>
<pre class="brush: bash">$ griffon create-app devoxx
$ griffon run-app
$ griffon run-applet
$ griffon run-webstart</pre>
<p>Views are by convention filed under the <em>view</em> directory in a Griffon project and are named &#8230;View.groovy. Griffon uses bindings to couple fields or properties in the view layer to bean properties in the model layer. Here are some code snippets to illustrate:</p>
<p>DevoxxModel.groovy</p>
<pre class="brush: groovy">@Bindable String input
@Bindable String output</pre>
<p>DevoxxController.groovy</p>
<pre class="brush: groovy">def copy = {
  // model gets injected by Griffon
  model.output = model.input
}</pre>
<p>DevoxxView.groovy</p>
<pre class="brush: groovy">textField(text:bind(target:model,targetProperty:'input'))
textField(text:bind(source:model,targetProperty:'output'))</pre>
<p>The controller copy method copies the input property of the model to the output property. Both properties are bound in the view to text fields.</p>
<p>One of the key concerns that&#8217;s difficult to manage in Swing applications is threading. And this is something in which Griffon really shines. For example if you have a controller method you want to execute in a thread separate from the UI Thread, you add the following annotation:</p>
<pre class="brush: groovy">@Threading(Threading.Policy.OUTSIDE_UITHREAD)</pre>
<p>As an alternative you can make use of the following Griffon methods to execute pieces of code in the threaded manner you want:</p>
<ul>
<li>execAsync: execute the code in the UI Thread asynchronously;</li>
<li>execSync: execute the code in the UI Thread synchronously;</li>
<li>execOutside: execute the code outside the UI Thread.</li>
</ul>
<p>Griffon also supports an event mechanism. You can launch an event called Devoxx and include a list of parameters with the following Griffon code:</p>
<pre class="brush: groovy">app.event('Devoxx',[1,2,3])</pre>
<p>Like the exec method, there&#8217;s also a variant for asynchronous events (<em>app.eentAsync</em>) and one for outside events (<em>app.eventOutside)</em>.</p>
<p>A possible event handler could look like this:</p>
<pre class="brush: groovy">def onDevoxx = { n1,n2,n3 -&gt;
println: "Devoxx $n1,$n2,$n3"
}</pre>
<p>A lot of the create- commands from Griffon also let you generate artifacts in Java instead of Groovy. Simply add <em>fileType=java</em> to the command. One interesting, though not very surprising, fact to note is that the Java files are a lot bigger compared to the same files generated in Groovy.</p>
<h3>Gaelyk</h3>
<p><a href="http://gaelyk.appspot.com/">Gaelyk</a> is a lightweight Groovy toolkit for <a title="Google App Engine Java" href="http://code.google.com/appengine/">Google App Engine Java</a>. Google App Engine is a so called Platform As A Service and provides a Java 6 Runtime Environment.</p>
<h3>Gradle</h3>
<p><a href="http://www.gradle.org/">Gradle</a> is a Groovy alternative to <a title="Maven" href="http://maven.apache.org/">Maven</a>. It&#8217;s a tool for building applications. It uses Groovy DSL (Domain Specific Language) instead of XML and adheres to specific Maven conventions.</p>
<p>This is an example of a simple Gradle build file for a java project (compare that to a simple Maven file):</p>
<p><strong>build.gradle</strong></p>
<pre class="brush: groovy">apply plugin: 'java'</pre>
<p>This is a build file for a java project that uses the same default conventions as Maven does (like java source files are by default placed in the <em>src/main/java</em> directory).<br />
To build a project based on this build file, simply type:</p>
<pre class="brush: bash">$ gradle build</pre>
<p>When you issue this command, Gradle bootstraps and builds the project. When you issue the command a next time and there are no changes, Gradle is able to recognize this and doesn&#8217;t perform an unnecessary second build. You still lose the amount of time needed for bootstrapping Gradle. There&#8217;s also an experimental daemon available, so you can go without even the bootstrapping time. Gradle, like Maven, uses configuration by exception. So, like Maven, you can do without the default structure of a project is that doesn&#8217;t fit your needs. But you have to add additional configuration code to your build file.</p>
<p>Dependency management in Gradle by default uses Maven repositories. For example, to add a compile dependency for <em>commons-lang</em>, your build file would need these additional lines of code:</p>
<pre class="brush: groovy">repositories {
    mavenCentral()
}

dependencies {
    compile 'commons-lang:commons-lang:2.6'
}</pre>
<p>To view a list of dependencies for the current project you can issue the following Gradle command:</p>
<pre class="brush: bash">$ gradle dependencies</pre>
<p>Multiprojects in Gradle are very easy. Assume you have a multi project with two projects <em>multi-core</em> and <em>multi-ext</em>, where <em>multi-ext</em> is dependent on <em>multi-core</em>. You first add a <em>settings.gradle</em> file next to the <em>build.gradle</em> file for the <em>root</em> project:<br />
<strong>settings.gradle</strong></p>
<pre class="brush: groovy">include 'multi-core'
include 'multi-ext'</pre>
<p>Next you add a dependency on <em>multi-core</em> in the <em>build.gradle</em> file of the <em>multi-ext</em> project. And that&#8217;s all there is to it. When you now build the <em>multi-ext</em> project, the <em>multi-core</em> project also gets build. Changes to the <em>multi-core</em> project are also picked up when rebuilding the <em>multi-ext</em> project.</p>
<p>To build a pom file for your current project, issue the following command:</p>
<pre class="brush: bash">$ gradle install</pre>
<p>Like Maven, you can define properties in Gradle in a <em>gradle.properties</em> file.</p>
<p>The open source projects Grails and Griffon both use Gradle as their build tool.</p>
<h3>Gant</h3>
<p><a href="http://gant.codehaus.org/">Gant</a> is a Groovy version of <a title="Ant" href="http://ant.apache.org/">Ant</a>. You have the power of Ant at your disposal but in a Groovy way, thus without the bloated xml.</p>
<h3>easyb</h3>
<p><a href="http://www.easyb.org/">easyb</a> is a behavior driven development (BDD) framework. Stories and specifications are written in Groovy. It is comparable to <a>JBehave</a>, which does the same in Java.</p>
<h3>Spock</h3>
<p><a href="http://code.google.com/p/spock/">Spock</a> is a testing and specification framework for Java and Groovy applications.</p>
<h3>CodeNarc</h3>
<p><a href="http://codenarc.sourceforge.net/">CodeNarc</a> is an equivalent to the java tools <a title="findBugs" href="http://findbugs.sourceforge.net/">findBugs</a> and <a title="checkstyle" href="checkstyle">checkstyle</a>. It&#8217;s a tool for analyzing Groovy code and detecting bugs, coding malpractices and the like. There are plugins available for Grails, Griffon and Gradle.</p>
<h3>GPars</h3>
<p><a href="http://gpars.codehaus.org/">Gpars</a> lastly is a framework aimed to simplify concurrency programming in Java or Groovy.</p>
<h3>References</h3>
<ul>
<li><a title="Slides" href="http://www.slideshare.net/aalmiray/devoxx-the-groovy-ecosystem">Devoxx Slides</a></li>
<li><a title="Griffon slides" href="http://www.slideshare.net/ecspike/introduction-to-griffon">Griffon Slides</a></li>
<li><a title="Grails in Action" href="http://www.manning.com/gsmith/">Grails in Action</a></li>
<li><a title="Griffon in Action" href="http://www.manning.com/almiray/">Griffon in Action</a></li>
<li><a title="GroovyMag" href="http://www.groovymag.com/">GroovyMag</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.whitehorses.nl/2011/12/14/devoxx-2011-the-groovy-ecosystem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>REST-style services using Apex Listener</title>
		<link>http://blog.whitehorses.nl/2011/04/08/rest-style-services-using-apex-listener/</link>
		<comments>http://blog.whitehorses.nl/2011/04/08/rest-style-services-using-apex-listener/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 20:51:55 +0000</pubDate>
		<dc:creator>Maarten van Luijtelaar</dc:creator>
				<category><![CDATA[Integration, SOA & BPM]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Oracle tools]]></category>
		<category><![CDATA[Apex]]></category>
		<category><![CDATA[Apex Listener]]></category>
		<category><![CDATA[Resource Templates]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://blog.whitehorses.nl/?p=2157</guid>
		<description><![CDATA[Exposing your PL/SQL procedures to the outside world is nothing new. Using either mod_plsql or dbms_epg one could easily access those procedures through an URL including some parameters to dynamically generate xml, or some other type of resource. But, if you wanted to provide a true REST-style service you might run out of options. mod_plsql [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Exposing your PL/SQL procedures to the outside world is nothing new. Using either mod_plsql or dbms_epg one could easily access those procedures through an URL including some parameters to dynamically generate xml, or some other type of resource.</p>
<p>But, if you wanted to provide a true REST-style service you might run out of options. mod_plsql wasn&#8217;t designed to do this. It only treats URL&#8217;s having parameters, which need to  correspond with your PL/SQL procedure&#8217;s parameters. Other than that, there&#8217;s no such thing as a &#8220;HTTPRequest&#8221; in PL/SQL, which means no reading posted data directly.</p>
<p>So, if you want your service to accept raw postdata, the solution is to use Resource Templates which can be configured within the Apex Listener.<br />
When you have the listener up and running, go to the administration site by navigating to <a href="http://server:port/apex/listenerAdmin">http://server:port/apex/listenerAdmin</a>. Here you will find the Resource Templates tab.</p>
<p>The idea here is to add a specific location to your server and configure handlers, which correspond to  HTTP operations like PUT, POST, GET, DELETE.<br />
For instance , specifing an URI template like getsomeresource/{identifier} automatically maps the &#8220;identifier&#8221; part of the URL as a variable when calling a SQL statement or a PL/SQL block. Keep in mind that none, one, or more of these variables can be specified in the template, but no optional parameters can be configured.</p>
<p>If you need some additional info like the value of the Accept-Language header sent by a browser as part of the request, you can manualy map these to variables by providing a varaiable name and an alias. The alias corresponds with is the actual name of the header you want to capture.  Using this variable you can generate language specific resources.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/04/ApexResourceTemplate1.jpg"><img class="alignnone size-medium wp-image-2159" title="ApexResourceTemplate1" src="http://blog.whitehorses.nl/wp-content/uploads/2011/04/ApexResourceTemplate1-300x182.jpg" alt="" width="300" height="182" /></a></p>
<p>In our case, we just want to provide a service on a specific location where some data will be posted to for further processing.<br />
So we create an URI template &#8220;processdata&#8221; with no further variables. The handler will ofcourse be of type POST.<br />
We need to specify a resource generation strategy, in our case a PL/SQL block.<br />
Here we can have direct access to the POST&#8217;s content body and content type send by the requestor using special, built-in variables.</p>
<p>declare<br />
begin<br />
:status := pkg_resource.process(:contentType,:body);<br />
end;</p>
<p>Note that the &#8220;status&#8221; variable must be mapped to a parameter with a built-in alias value X-APEX-STATUS-CODE. This takes care of sending back the actual HTTP status code in the response header like 201: &#8220;resource created&#8221;. In this case the status code is the return value of the pkg_resource.process function. In case something goes wrong processing, you can return an appropriate code. For a full list of HTTP status codes see : <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html</a>.<br />
Also note that there&#8217;s no need to map the body and content type variables, it&#8217;s been taken care of already for you. The &#8220;body&#8221; will be passed to the PL/SQL procedure as a blob so you can process the data yourself.</p>
<p>Using Apex Listener&#8217;s resource templates allow you to generate content based on SQL queries and PL/SQL blocks, returning csv, custom output and JSON representations, so plenty of options to provide REST-style services to expose your database and make integration with other processes or services easier.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.whitehorses.nl/2011/04/08/rest-style-services-using-apex-listener/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eliminating duplicates</title>
		<link>http://blog.whitehorses.nl/2011/03/03/eliminating-duplicates/</link>
		<comments>http://blog.whitehorses.nl/2011/03/03/eliminating-duplicates/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 13:33:21 +0000</pubDate>
		<dc:creator>Martin Schapendonk</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[duplicates]]></category>
		<category><![CDATA[rowid]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.whitehorses.nl/?p=2128</guid>
		<description><![CDATA[Today I was confronted with the following situation: a table with two columns that contained IDs. The content was more or less something like this: ID ALIAS 1 2 2 1 1 3 2 2 I had to eliminate the records that pointed to themselves (i.e. ID = ALIAS), because it&#8217;s a bit silly to [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Today I was confronted with the following situation: a table with two columns that contained IDs. The content was more or less something like this:</p>
<pre class="brush: text">ID ALIAS
1  2
2  1
1  3
2  2</pre>
<p>I had to eliminate the records that pointed to themselves (i.e. ID = ALIAS), because it&#8217;s a bit silly to say that you&#8217;re an alias of yourself.</p>
<p>I also had to eliminate the records that were essentially duplicates. In this example, the record &#8220;2, 1&#8243; is functionally the same record as &#8220;1, 2&#8243; and thus I didn&#8217;t need it.</p>
<p>Could this be solved using SQL only? I suspected it, but couldn&#8217;t find a solution fast enough. I called in the help of my colleagues and within minutes <a href="http://www.whitehorses.nl/team/martin-schaap">Martin Schaap</a> helped me out:</p>
<pre class="brush: sql">select id, alias
from t
where id &lt;&gt; alias -- that was the easy part
and not exists ( -- here comes the hard part
  select 1
  from t
  where id = t.alias
  and alias = t.id
  and rowid &gt; t.rowid
);</pre>
<p>Thanks Martin!</p>
<p>UPDATE: one day later, <a href="http://www.whitehorses.nl/team/frank-dorst">Frank Dorst</a> (yes, that&#8217;s right, our &#8220;I once was a developer&#8221; CTO) also sent me an elegant, working solution:</p>
<pre class="brush: sql">select distinct least(id, alias), greatest(id, alias)
from t
where id &lt;&gt; alias;</pre>
<p>Kudos to you too, Frank (you still got it <img src='http://blog.whitehorses.nl/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.whitehorses.nl/2011/03/03/eliminating-duplicates/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Installing AIA on SOA Suite 11g R1 PS3 Developer release</title>
		<link>http://blog.whitehorses.nl/2011/02/19/installing-aia-on-soa-suite-11g-r1-ps3-developer-release/</link>
		<comments>http://blog.whitehorses.nl/2011/02/19/installing-aia-on-soa-suite-11g-r1-ps3-developer-release/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 13:32:22 +0000</pubDate>
		<dc:creator>Edwin Biemond</dc:creator>
				<category><![CDATA[Integration, SOA & BPM]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Oracle platform]]></category>
		<category><![CDATA[Oracle tools]]></category>
		<category><![CDATA[11g]]></category>
		<category><![CDATA[AIA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle Fusion Middleware]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[SOA Suite]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://blog.whitehorses.nl/?p=2109</guid>
		<description><![CDATA[In this blogpost I will help you installing the new version of Application Integration Architecture Foundation Pack, which is part of the FMW 11G R1 PS3 ( 11.1.1.4.0)  release.  In a previous blogpost I already explained how to do this on PS2. With the PS3 version you will see, that Oracle improved the installation compared [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>In this blogpost I will help you installing the new version of Application Integration Architecture Foundation Pack, which is part of the FMW 11G R1 PS3 ( 11.1.1.4.0)  release.  In a <a href="http://blog.whitehorses.nl/2010/10/05/installing-application-integration-architecture-on-soa-suite-11g-r1-ps2/">previous blogpost</a> I already explained how to do this on PS2. With the PS3 version you will see, that Oracle improved the installation compared to PS2  and combined with the developer release of SOA Suite PS3 ( the memory footprint is less ) the PS3 version is a big improvement.</p>
<p>Before you can start you need to have a working SOA Suite Ps3 Weblogic domain.  I choose for  the SOA Suite for developers, in this case I have one AdminServer which runs it all.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_1.png"><img class="alignnone size-medium wp-image-2110" title="aia_ps3_1" src="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_1-300x216.png" alt="" width="300" height="216" /></a></p>
<p>The second thing you need to check in the Weblogic console, if all the Resource Adapters are installed and running. In my case I need to target the OracleApps Adapter to the AdminServer.</p>
<p>Download the<a href="http://www.oracle.com/technetwork/middleware/foundation-pack/downloads/fpdownloads-152617.html"> AIA Foundation Pack</a>. The AIA Service Constructor can be downloaded from JDeveloper, so you can skip this for now. Extract the software and start the installation.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_2.png"><img class="alignnone size-medium wp-image-2112" title="aia_ps3_2" src="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_2-300x255.png" alt="" width="300" height="255" /></a></p>
<p>You need to create a new AIA Oracle Home , AIAInstance name and use the JDK of your SOA Suite Middleware home.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_3.png"><img class="alignnone size-medium wp-image-2113" title="aia_ps3_3" src="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_3-300x255.png" alt="" width="300" height="255" /></a></p>
<p>Start the SOA Suite Adminserver and provide these Weblogic details in this screen</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_4.png"><img class="alignnone size-medium wp-image-2114" title="aia_ps3_4" src="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_4-300x255.png" alt="" width="300" height="255" /></a></p>
<p>AIA got its own database schema, provide the details and the sys user / password.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_5.png"><img class="alignnone size-medium wp-image-2115" title="aia_ps3_5" src="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_5-300x255.png" alt="" width="300" height="255" /></a></p>
<p>Provide the MDS database schema details of your SOA Suite Domain</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_6.png"><img class="alignnone size-medium wp-image-2116" title="aia_ps3_6" src="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_6-300x255.png" alt="" width="300" height="255" /></a></p>
<p>You can skip the Oracle Enterprise Repository screen</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_7.png"><img class="alignnone size-medium wp-image-2117" title="aia_ps3_7" src="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_7-300x255.png" alt="" width="300" height="255" /></a></p>
<p>Here the installation begins, when a step fails you can retry the step , sometimes an another retry is enough and when it fails again you need to take a look at the logs.  You can find these logs in your new  AIA HOME + aia_instances + AIA Instance Name + logs.  When you can&#8217;t fix the problem then you can look at the AIA ANT files, these are in the config folder of your AIA Instance Name and try to do it manually.</p>
<p>Next step is to give the Weblogic users the required  AIA roles / groups. Go the Weblogic console and in the myrealm security realms you can add some users and add them to a AIA Role like AIALifecycleUser, AIALifecycleDeveloper and AIAApplicationUser ( CAVS)</p>
<p>Open a browser and go to <a href="http://localhost:7001/AIA/faces/aiaHomeLogin.jspx">http://XXXX:7001/AIA/faces/aiaHomeLogin.jspx</a> to see if eveything is working, In PS3 even the setup page is working.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_8.png"><img class="alignnone size-medium wp-image-2119" title="aia_ps3_8" src="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_8-300x90.png" alt="" width="300" height="90" /></a></p>
<p>The last step is to configure JDeveloper 11g PS3, Go to the JDeveloper update screen and select the AIA Service Constructor.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_9.png"><img class="alignnone size-medium wp-image-2120" title="aia_ps3_9" src="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_9-300x225.png" alt="" width="300" height="225" /></a></p>
<p>And add the aia.jar to the SOA part of the JDeveloper preferences window, located in jdeveloper/lib folder.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_10.png"><img class="alignnone size-medium wp-image-2121" title="aia_ps3_10" src="http://blog.whitehorses.nl/wp-content/uploads/2011/02/aia_ps3_10-300x237.png" alt="" width="300" height="237" /></a></p>
<p>That&#8217;s all</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.whitehorses.nl/2011/02/19/installing-aia-on-soa-suite-11g-r1-ps3-developer-release/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Whitehorses Achieves Oracle PartnerNetwork Specialization for Oracle Service-Oriented Architecture [Press release]</title>
		<link>http://blog.whitehorses.nl/2011/02/15/whitehorses-achieves-oracle-partnernetwork-specialization-for-oracle-service-oriented-architecture-press-release/</link>
		<comments>http://blog.whitehorses.nl/2011/02/15/whitehorses-achieves-oracle-partnernetwork-specialization-for-oracle-service-oriented-architecture-press-release/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 21:59:59 +0000</pubDate>
		<dc:creator>Frank Dorst</dc:creator>
				<category><![CDATA[Integration, SOA & BPM]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[opn]]></category>
		<category><![CDATA[Oracle PartnerNetwork]]></category>
		<category><![CDATA[Service-Oriented Architecture]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[SOA Specialized]]></category>

		<guid isPermaLink="false">http://blog.whitehorses.nl/?p=2101</guid>
		<description><![CDATA[Whitehorses, a Gold level member of Oracle PartnerNetwork (OPN) has achieved OPN Specialized status for Oracle Service-Oriented Archictecture (SOA). ]]></description>
			<content:encoded><![CDATA[<p></p><p><strong>Nieuwegein, February 2011 – Whitehorses, a Gold level member of Oracle PartnerNetwork (OPN) has achieved OPN Specialized status for Oracle Service-Oriented Architecture (SOA). </strong></p>
<p>To achieve a Specialized status, Oracle partners are required to meet a stringent set of requirements that are based on the needs and priorities of the customer and partner community. By achieving a Specialized distinction, Whitehorses has been recognized by Oracle for its expertise in delivering services specifically around Oracle SOA Suite 11g through competency development, business results and proven success. Oracle SOA Suite 11g is an integrated, best-of-breed suite that helps customers rapidly design and assemble, deploy and manage, highly agile and adaptable business applications.</p>
<p>Frank Dorst, CTO of Whitehorses: &#8220;We strongly believe in the power of IT. Information technology makes real change possible and that does not always have to mean huge investments. We distinguish ourselves by clearly defined improvement projects, with involvement of both IT and business in which collaboration with customers is essential. Achieving Specialization is our confirmation that we are doing well. It continues our long relationship with Oracle and gives our customers the confidence to work with a qualified party. &#8221;</p>
<p>&#8220;Whitehorses has proven knowledge and experience to meet OPN Specialization status in Oracle SOA Suite 11g,&#8221; said Bas Diepen, senior manager of Alliances and Channels at Oracle. &#8220;They know how to keep changes small and simple, no matter how big projects are. We are pleased that the investment they have made in gaining knowledge and Oracle skills, is now reflected in achieving this Specialized status.&#8221;</p>
<p>Whitehorses, founded in 2001, specializes in integrating systems, processes and data with an expertise in Oracle and Java Platform, Enterprise Edition (Java EE). By addressing the problems in the infrastructure directly in small, manageable steps Whitehorses helps companies improve their business. To do so they make innovative use of IT and have a clear focus on achieving visible results.</p>
<p>&#8212;&#8212;</p>
<p><strong>About Oracle PartnerNetwork</strong><br />
Oracle PartnerNetwork (OPN) Specialized is the latest version of Oracle&#8217;s partner program that provides partners with tools to better develop, sell and implement Oracle solutions. OPN Specialized offers resources to train and support specialized knowledge of Oracle products and solutions and has evolved to recognize Oracle&#8217;s growing product portfolio, partner base and business opportunity. Key to the latest enhancements to OPN is the ability for partners to differentiate through Specializations. Specializations are achieved through competency development, business results, expertise and proven success. To find out more visit the <a title="Oracle PartnerNetwork Online" href="http://www.oracle.com/partners" target="_blank">Oracle PartnerNetwork website</a>.</p>
<p><strong>About Whitehorses</strong><br />
Whitehorses enables businesses and organizations to be agile. Through innovative use of information, they help clients to perform better and to adapt more easily to change. Founded in 2001, they work within a people-oriented culture with a positive vision of information technology. They offer a special blend of the best professionals, modern technology and a smart, targeted approach. Whitehorses specializes in the Oracle platform and use Enterprise Java and other innovative technologies.</p>
<p><strong>Trademarks</strong><br />
Oracle and Java are registered trademarks of Oracle and/or its affiliates.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.whitehorses.nl/2011/02/15/whitehorses-achieves-oracle-partnernetwork-specialization-for-oracle-service-oriented-architecture-press-release/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Connecting to a NTLM Web Service using a Java Servlet</title>
		<link>http://blog.whitehorses.nl/2011/01/23/using-a-servlet-to-connect-to-ntlm-web-service/</link>
		<comments>http://blog.whitehorses.nl/2011/01/23/using-a-servlet-to-connect-to-ntlm-web-service/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 12:23:34 +0000</pubDate>
		<dc:creator>Jos Nieuwenhuis</dc:creator>
				<category><![CDATA[Enterprise Java]]></category>
		<category><![CDATA[Integration, SOA & BPM]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[httpclient]]></category>
		<category><![CDATA[httpcomponents]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[ntlm]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://blog.whitehorses.nl/?p=2040</guid>
		<description><![CDATA[This blog post explains about using a servlet which converts HTTP calls into HTTPS calls with NTLM. The servlet takes care of the NTLM handshake. I use it for connecting to an externally hosted webservice which uses NTLM authentication. This servlet functions as if it is a normal web service (without NTLM and HTTPS).]]></description>
			<content:encoded><![CDATA[<p></p><p>Connecting to a <strong>NTLM</strong> web service can be troublesome. This blog post shows the source code of a servlet which converts HTTP calls into HTTPS calls with NTLM. The servlet takes care of the NTLM handshake. </p>
<p>For a customer I needed to create a BPEL process which needed information from a web service that uses NTLM. There are many ways to solve this problem. My colleague used an Authenticator: <a href="http://biemond.blogspot.com/2009/04/jax-ws-web-service-proxy-client-and.html" target="_blank">JAX-WS web service proxy client and HTTP authentication</a>. I followed a different approach. I used the Apache HttpComponents libraries. The idea is to call a servlet as if it is the actual web service. It can be used from any application: e.g. BPEL process or soapUI. The application can be deployed on any servlet container, e.g. Apache Tomcat or OC4J.</p>
<p><img style="border: 0; margin: 0px;" src="http://blog.whitehorses.nl/wp-content/uploads/2011/01/ntlm-1.png" alt="NTLM Serlvlet" width="537" height="77" /></p>
<p>So, what is NTLM? NTLM is a Microsoft authentication protocol. Sometimes this protocol is used by applications delevoped using the Microsoft .Net Framework. The protocol involves a handshake in several steps. NTLM is a proprietary protocol, but it is fairly well documented. How to implement NTLM in a Java client? The answer is Apache HttpComponents. The latest version of Apache HttpComponents (version 4.1 GA) has full support for NTLMv1, NTLMv2, and NTLM2 Session authentication. </p>
<p>Since SOAP usually means sending XML over HTTP Post a Servlet can be used to handle these requests. There is no need to modify the contents of the HTTP Post Message. When handling a SOAP request, just remember to copy the HTTP Headers.</p>
<p>The servlet is part of a web application which contains only one class: <strong>NTLMProxyServlet</strong>. The libraries of Apache HttpComponents (version 4.1 GA) should be included in the war file. Do not forget to map an URL to the servlet in the deployment descriptor (web.xml).</p>
<p>The code of the doPost method of the class NTLMProxyServlet (implements HttpServlet) is shown below. Please replace the  hardcoded values for host, domain, user, url, password:</p>
<pre class="brush: java;">
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setCharacterEncoding("utf-8");
    PrintWriter out = response.getWriter();

    if(httpclient == null){
        httpclient = new DefaultHttpClient();
        httpclient.getAuthSchemes().register(
                "NTLM", new NTLMSchemeFactory());
        httpclient.getCredentialsProvider().setCredentials(
                new AuthScope("host", 443, "domain"),
                new NTCredentials("user", "password", "host", "domain"));
        httpclient.getParams().setParameter(
                CoreProtocolPNames.USE_EXPECT_CONTINUE, Boolean.FALSE);
        httpclient.getParams().setParameter(
                CoreProtocolPNames.PROTOCOL_VERSION,
                HttpVersion.HTTP_1_1);
        httpclient.getParams().setParameter(
                CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8");
    }

    HttpPost httppost = new HttpPost(
            "https://host/webservices/getdata.asmx");
    InputStream in = null;

    try {
        in = request.getInputStream();
        Writer writer = new StringWriter();
        char[] buffer = new char[1024];
        Reader reader = new BufferedReader(
                new InputStreamReader(in, "UTF-8"));
        int n;
        while ((n = reader.read(buffer)) != -1) {
            writer.write(buffer, 0, n);
        }
        httppost.setEntity(new StringEntity(writer.toString()));

        Enumeration headernames = request.getHeaderNames();
        while (headernames.hasMoreElements()) {
            String headerName = (String) headernames.nextElement();
            String headerValue = request.getHeader(headerName);
            httppost.setHeader(headerName, headerValue);
        }
        Header h1 = httppost.getFirstHeader(HTTP.CONTENT_LEN);
        if (h1 != null) {
            httppost.removeHeader(h1);
        }
        Header h2 = httppost.getFirstHeader(HTTP.TARGET_HOST);
        if (h2 != null) {
            httppost.removeHeader(h2);
        }
        httppost.setHeader(HTTP.TARGET_HOST, "host");

        HttpResponse httpresponse = httpclient.execute(
                new HttpHost("host", 443, "https"),
                httppost,
                new BasicHttpContext());
        HttpEntity output = httpresponse.getEntity();

        Header[] headers = httpresponse.getAllHeaders();

        for (Header header : headers) {
            if (!header.getName().equals(HTTP.CONTENT_LEN)) {
                response.setHeader(header.getName(),
                        header.getValue());
            }
        }

        if (output != null) {
            out.write(EntityUtils.toString(output));
        }
    } catch (Exception e) {
        e.printStackTrace(out);
    } finally {
        in.close();
        out.flush();
        out.close();
    }
}
private DefaultHttpClient httpclient = null;</pre>
<p>If the target server uses self-signed SSL certificates you might want to apply the code in <a href="http://theskeleton.wordpress.com/2010/07/24/avoiding-the-javax-net-ssl-sslpeerunverifiedexception-peer-not-authenticated-with-httpclient/"  target="_blank">Avoiding the “javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated” with HttpClient</a>. </p>
<p>In order to use use the servlet make a local copy of the WSDL of the target web service and change the port address into the URL of the servlet, e.g.:</p>
<pre  class="brush: xml;">
&lt;wsdl:definitions&gt;
  [...]
  &lt;wsdl:service name="TargetWS"&gt;
    &lt;wsdl:port name="TargetWSSoap12" binding="tns:TargetWSSoap12"&gt;
      &lt;soap12:address location="http://localhost:8080/NTLMProxyApp/NTLMProxyServlet" /&gt;
    &lt;/wsdl:port&gt;
  &lt;/wsdl:service&gt;
&lt;/wsdl:definitions&gt;
</pre>
<p>Use this modified copy of the WSDL in your BPEL process of SoapUI project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.whitehorses.nl/2011/01/23/using-a-servlet-to-connect-to-ntlm-web-service/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>C is the new G &#8211; Next Oracle major release will be called12c</title>
		<link>http://blog.whitehorses.nl/2010/09/20/c-is-the-new-g-next-oracle-major-release-will-be-called12c/</link>
		<comments>http://blog.whitehorses.nl/2010/09/20/c-is-the-new-g-next-oracle-major-release-will-be-called12c/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 18:51:38 +0000</pubDate>
		<dc:creator>Frank Dorst</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Oracle platform]]></category>
		<category><![CDATA[11g]]></category>
		<category><![CDATA[12c]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Exalogic]]></category>
		<category><![CDATA[OOW10]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://blog.whitehorses.nl/?p=1915</guid>
		<description><![CDATA[After some rumors earlier, today we saw the first mention of 12c on an official Oracle presentation. C as in Cloud that is. There is a big emphasis on Cloud this OpenWorld. With Exalogic Oracle releases a &#8220;Private Cloud in a Box&#8221; and yesterday Larry announced that Oracle is going to offer public cloud services on [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>After some rumors earlier, today we saw the first mention of 12c on an official Oracle presentation. C as in Cloud that is.</p>
<p>There is a big emphasis on Cloud this OpenWorld. With Exalogic Oracle releases a &#8220;Private Cloud in a Box&#8221; and yesterday Larry announced that Oracle is going to offer public cloud services on Linux and Solaris as well.</p>
<p>So we&#8217;ll be hearing a lot of cloud from Oracle in the next couple of years.</p>
<p>C is the new G &#8211; Cloud is the new Grid.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.whitehorses.nl/2010/09/20/c-is-the-new-g-next-oracle-major-release-will-be-called12c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Specialization and more specialization at the OpenWorld Partner meeting</title>
		<link>http://blog.whitehorses.nl/2010/09/20/specialization-and-more-specialization-at-the-openworld-partner-meeting/</link>
		<comments>http://blog.whitehorses.nl/2010/09/20/specialization-and-more-specialization-at-the-openworld-partner-meeting/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 15:43:47 +0000</pubDate>
		<dc:creator>Frank Dorst</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[bpm]]></category>
		<category><![CDATA[exadata]]></category>
		<category><![CDATA[OOW10]]></category>
		<category><![CDATA[opn]]></category>
		<category><![CDATA[Social BPM]]></category>
		<category><![CDATA[specialized]]></category>

		<guid isPermaLink="false">http://blog.whitehorses.nl/?p=1912</guid>
		<description><![CDATA[Sunday, the first official day of Oracle OpenWorld is traditionallyPartner Network Day. A whole day of sessions is planned for Oracle Partners visiting the conference. This year the topic was specialization and almost nothing else. ]]></description>
			<content:encoded><![CDATA[<p></p><div id="attachment_1913" class="wp-caption alignright" style="width: 300px">
	<a href="http://blog.whitehorses.nl/wp-content/uploads/2010/09/This-Way-1024x533.jpg"><img class="size-medium wp-image-1913" title="This Way for Oracle OpenWorld and JavaOne" src="http://blog.whitehorses.nl/wp-content/uploads/2010/09/This-Way-1024x533-300x156.jpg" alt="This Way for Oracle OpenWorld and JavaOne " width="300" height="156" /></a>
	<p class="wp-caption-text">This Way for Oracle OpenWorld and JavaOne </p>
</div>
<p>Sunday, the first official day of Oracle OpenWorld is traditionallyPartner Network Day. A whole day of sessions is planned for Oracle Partners &#8211; 10,000 only in the EMEA region &#8211;   visiting the conference.</p>
<p>This year the topic was specialization and almost nothing else. Oracle wants their partners to specialize in parts of the total product offering. That makes sense, almost no company is large enough to be able to implement everything  Oracle has to sell.</p>
<p>For active partners the specialization message should not be news. Actually, I must say I&#8217;ve heard it all before.  There&#8217;s now a new Platinum Partner Level for global partners with over 30 specialization. That does not apply to me and frankly goes a bit against the whole concept of specializing..</p>
<p>There was a whole lot of emphasis on the hardware / software combination as well. And almost a call to action to become Exadata specialized.</p>
<p>I did enjoy the presentation by Oracle&#8217;s Andrew Sutherland,  sr. VP for middleware in EMEA, during the EMAE breakout sessions. He  pointed out a number of high priority business challenges organizations in our region must address:</p>
<ul>
<li>Realize Process Automation from a business perspective</li>
<li>Improve Data Center Efficiency to Public Cloud standards</li>
<li>Implement Information Democracy with application-embedded real-time intelligence for everybody</li>
<li>Support Social, less structured Processes by combining process management and collaboration</li>
</ul>
<p>Interesting material to discuss also with our clients. I do see real value.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.whitehorses.nl/2010/09/20/specialization-and-more-specialization-at-the-openworld-partner-meeting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting ready for Oracle OpenWorld 2010</title>
		<link>http://blog.whitehorses.nl/2010/07/28/getting-ready-for-oracle-openworld-2010/</link>
		<comments>http://blog.whitehorses.nl/2010/07/28/getting-ready-for-oracle-openworld-2010/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 11:40:45 +0000</pubDate>
		<dc:creator>Frank Dorst</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[OOW]]></category>
		<category><![CDATA[OOW10]]></category>
		<category><![CDATA[Oracle ACE]]></category>
		<category><![CDATA[Oracle OpenWorld]]></category>

		<guid isPermaLink="false">http://blog.whitehorses.nl/?p=1843</guid>
		<description><![CDATA[Oracle OpenWorld, the largest and most important Oracle conference of the year, will flood San Francisco from 19 until the 23 September. Whitehorses will be represented there by our two Oracle ACE professionals.]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.oracle.com/us/openworld/" target="_blank"><img src="http://www.whitehorses.nl/sites/default/files/kameleon/afbeeldingen/nieuws/openworld.gif" alt="Register for Oracle OpenWorld 2010" align="right" /></a>Oracle OpenWorld, the largest and most important Oracle conference of the year, is getting close. From the 19th until the 23rd of September tens of thousands of IT professionals, business partners and customers will gather in San Francisco to learn, meet and share. And this year, the city will be even more crowded because the JavaOne conference and Oracle Develop are there at the same time.</p>
<p>Whitehorses will be present at OpenWorld 2010, like we were in the previous years. This year our two Oracle ACE’s, <a href="http://www.whitehorses.nl/team/edwin-biemond">Edwin Biemond</a> and <a href="http://www.whitehorses.nl/team/douwe-pieter-van-den-bos">Douwe Pieter van den Bos</a>, will present and hosts sessions. I will be there as well to hear more about the direction and future strategies within our middleware, SOA/BPM and integration focus.</p>
<p>We will actively update this blog with our findings. Subscribe to our <a href="http://feeds.feedburner.com/whitehorses/blog-posts" target="_blank">RSS feed</a> and follow us on Twitter (<a href="http://twitter.com/whitehorsesnl" target="_blank">@whitehorsesnl</a>, <a href="http://twitter.com/omebos" target="_blank">@omebos</a>, <a href="http://twitter.com/biemond" target="_blank">@biemond</a>, <a href="http://twitter.com/frank_dorst" target="_blank">@frank_dorst</a>) for the latest info. In the mean time, you can read <a href="http://blog.whitehorses.nl/tag/oow09/">our posts from last year</a> and <a class="dutchflag" href="http://www.whitehorses.nl/nieuws/oow08">2008</a>.</p>
<p>Let us know if you’ll be there in the comments or by e-mail. We’d love to meet you in San Francisco.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.whitehorses.nl/2010/07/28/getting-ready-for-oracle-openworld-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Chrome for developers</title>
		<link>http://blog.whitehorses.nl/2010/06/11/google-chrome-for-developers/</link>
		<comments>http://blog.whitehorses.nl/2010/06/11/google-chrome-for-developers/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 10:37:26 +0000</pubDate>
		<dc:creator>Peter van der Neut</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://blog.whitehorses.nl/?p=1745</guid>
		<description><![CDATA[Google Chrome is becoming a very popular browser and attracting more users every month as you can see on w3cschools.com. As a developer I used to work mainly with Mozilla Firefox because of the great developer extensions Web Developer Toolbar and Firebug. But Google Chrome is also for the developer and even better, it&#8217;s built [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><strong>Google Chrome</strong> is becoming a very popular browser and attracting more users every month as you can see on <a href="http://www.w3schools.com/browsers/browsers_stats.asp">w3cschools.com</a>. As a developer I used to work mainly with Mozilla Firefox because of the great developer extensions Web Developer Toolbar and Firebug. But Google Chrome is also for the developer and even better, it&#8217;s built in. You can access the Developer tools of Google Chrome via the menu or via the shortcut Ctrl+Shift+I.<br />
<br />
<a href="http://blog.whitehorses.nl/wp-content/uploads/2010/06/chrome0.jpg"><img src="http://blog.whitehorses.nl/wp-content/uploads/2010/06/chrome0.jpg" alt="" title="Developer tools menu" width="507" height="329" class="alignnone size-full wp-image-1746" /></a></p>
<p>Now the Developer tools window is shown. It has a few categories, I&#8217;ll show the ones I use most. The first one is Resources, it gives information on the resources used by the page and you can order them by time or size. </p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2010/06/chrome11.jpg"><img src="http://blog.whitehorses.nl/wp-content/uploads/2010/06/chrome11.jpg" alt="" title="Resources" width="500" height="382" class="alignnone size-full wp-image-1752" /></a></p>
<p>The second one is Scripts. Here you can see all the scripts used on the page and the best part and even debug the scripts.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2010/06/chrome21.jpg"><img src="http://blog.whitehorses.nl/wp-content/uploads/2010/06/chrome21.jpg" alt="" title="Scripts" width="500" height="382" class="alignnone size-full wp-image-1753" /></a></p>
<p>Last but not least is the Console. This displays the Javascript errors and warnings that occur on the page.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2010/06/chrome31.jpg"><img src="http://blog.whitehorses.nl/wp-content/uploads/2010/06/chrome31.jpg" alt="" title="Console" width="500" height="382" class="alignnone size-full wp-image-1751" /></a></p>
<p>If you want the Developer tools to display in the same window as your browser, simply click the window icon in the bottom left of the screen and it will dock to the main window.</p>
<p><a href="http://blog.whitehorses.nl/wp-content/uploads/2010/06/chrome4.jpg"><img src="http://blog.whitehorses.nl/wp-content/uploads/2010/06/chrome4.jpg" alt="" title="Docked window" width="500" height="318" class="alignnone size-full wp-image-1750" /></a></p>
<p>So if you are using Google Chrome as your browser and developing web pages, be sure to check out the Developer tools.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.whitehorses.nl/2010/06/11/google-chrome-for-developers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

