<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Olaf Heimburger&apos;s Blog</title>
      <link>http://blogs.oracle.com/olaf/</link>
      <description></description>
      <language>en</language>
      <copyright>Copyright 2009</copyright>
      <lastBuildDate>Thu, 05 Nov 2009 15:00:53 +0100</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

      
      <item>
         <title>Book Review: Getting Started with Oracle SOA Suite 11g R1</title>
         <description><![CDATA[
  <p><a href="http://www.oracle.com/technology/software/products/middleware/htdocs/111110_fmw.html">Oracle Fusion Middleware 11g (OFM 11g)</a> is a big product stack. Books on this product stack are rare and could focus on many specific parts of it. To get started with this stack you have to decide which parts you chose. This books gets you started with the SOA Suite part of OFM 11g</p>
  <h3>The Authors</h3>
  <p>This book is written by a team of Oracle SOA Suite product managers, namely Heidi Buelow, Demed L'Her, Manas Deb, Prasen Palvankar, and Jayaram Kasi.</p>
  <h3>The Book</h3>
  <p>To get started with the Oracle SOA Suite 11g R1 one can chose many ways. An easy one is by developing a sample application that covers nearly all possible areas of the whole product. This is exactly the approach of this book. Conceptually it is divided in three parts.</p>
  <h3>Part 1</h3>
  <p>This first part introduces you to the product in general. It starts with the SOA evolution in chapter 1 and finishes with a product architecture overview. in chapter 2.</p>
  <h3>Part 2</h3>
  <p>The second part starts with an introductory chapter to the sample application and  the remaining chapters of the book and how to read/use them. This is not quite new, as nearly every book does this, but the diagrams used herein are very helpful. After you have finished the SOA Suite installation as described in chapter 4, you are ready to go for the remaining 6 chapters. These cover WS Binding, DB Adapter and Mediator, File Adapter, BPEL PM, Human Workflow, Rules, and finally JMS Adapter. When you finish this part, chapter by chapter in sequence, you have a complete application to demo to your peers. </p>
  <h3>Part 3</h3>
  <p>The last part contains 9 tutorials on Service Bus, Lifecycle, Testing, Exception Handling, Security, BAM, Events, Service Data Objects (SDO) and B2B. You can use them with the sample application in any order you like.</p>
  <h3>Recommendation</h3>
  <p>This book is mainly written for the newbies. You learn how to use the Oracle SOA Suite 11g and its parts. That's it. Introductions to concepts or standards are included, but are very minimal, not to distract you from the real stuff. If you need a proper understanding of the more advanced details you should refer to the product documentation.</p>
  <p>On the other hand, this book has some outstanding but hidden gems to offer. These gems are, for example, one of the best and most concise picture to explain the difference between  JMS Queues and Topics, or how to remove the software you have just installed.</p>
  <p>It is always a tough decision which book and approach to chose for learning and referencing. Personally I prefer books that could be used for reference later. This is often very hard for a tutorial book. Some of these tutorial books could also serve as a reference. I consider this book as one that could serve as one that points me in the right direction when I lost track of some parts during my busy work.</p>
  <p>Since Oracle SOA Suite 11g will be sooner or later updated, this book will as well. Packt Publishing offers free PDF eBook upgrades. This is a really nice concept.</p>
  <h3>The Details</h3>
  <p><strong>Title</strong> <a href="http://www.packtpub.com/getting-started-with-oracle-soa-suite-11g-r1/book">Getting Started with Oracle SOA Suite 11g R1</a><br />
    <strong>Authors</strong> Heidi Buelow, Demed L'Her, Manas Deb, Prasen Palvankar, and Jayaram Kasi<br />
    <strong>Paperback</strong> 468 pages<br />
    <strong>ISBN 13</strong> 978-1-847199-78-2<br/>
  </p>
  ]]></description>
         <link>http://blogs.oracle.com/olaf/2009/11/book_review_getting_started_wi.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/11/book_review_getting_started_wi.html</guid>
        
        
         <pubDate>Thu, 05 Nov 2009 15:00:53 +0100</pubDate>
      </item>
      
      <item>
         <title>Revisited: Including a Class-Path In Your MANIFEST.MF</title>
         <description><![CDATA[
  <p>In January 2008 I wrote about putting additional information into your Manifest.mf (<a href="http://blogs.oracle.com/olaf/2008/01/jdev_including_a_classpath_in.html">see original entry</a>). Recently a colleague told me that this does not work as expected in JDeveloper 11.1.1.1.0.</p>
  <p>A short investigation showed that JDeveloper 11.1.1.1.0 does two things while going through the deployment process.</p>
  <ol>
    <li>It checks the correctness of the tag and its usage.</li>
    <li>It expects a value in the same line as the tag.</li>
    </ol>
  <p>The first  is nice and necessary to avoid any surprises. The second is a bit surprising if you follow my advise in having a separate line per <strong><em>Class-Path</em></strong> element. To get it work as in the original post, you need to be sure that every multi-line tag entry must have the form <strong><em>&lt;tag&gt;: &lt;first_value&gt;</em></strong> in the first line. For example:</p>
  <p style="background-color: #CCCCCC">Class-Path: ./lib<br />
   &#160; commons-lang.jar
    <br />
    &#160;
etc.    <br/>
  </p>
]]></description>
         <link>http://blogs.oracle.com/olaf/2009/10/revisited_including_a_class-pa.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/10/revisited_including_a_class-pa.html</guid>
        
        
         <pubDate>Wed, 21 Oct 2009 17:19:42 +0100</pubDate>
      </item>
      
      <item>
         <title>OFM 11g: Starting WebLogic Server with opmnctl</title>
         <description><![CDATA[
  <p>There are many ways to start the Oracle WebLogic Server 10.3. or higher. The most common is to use the provided script and off you go. To automate this, I usually use scripts and include them in the normal System V boot process as implemented in Linux or Solaris.</p>
  <h2>A Common Way for Unix-based Systems</h2>
  <p>Here is a script, I'm using very often:</p>
  <p style="background-color: #CCCCCC">#!/bin/sh<br />
    ORACLE_HOME=/opt/oracle/product/wls/10.3.1<br />
    DOMAINS_HOME=$ORACLE_HOME/user_projects/domains<br />
    DOMAINS=&quot;test login&quot;<br />
    <br />
    start() {<br />
&#160;&#160; for i in $DOMAINS<br />
&#160;&#160; do<br />
&#160;&#160;&#160;&#160; export WLS_REDIRECT_LOG=$DOMAINS_HOME/$i/wls_${i}_$$.log<br />
&#160;&#160;&#160;&#160; eval $DOMAINS_HOME/$i/bin/startWebLogic.sh &amp; <br />
&#160;&#160; done <br />
    }<br />
    <br />
    stop() {<br />
&#160;&#160; for i in $DOMAINS<br />
&#160;&#160; do<br />
&#160;&#160;&#160;&#160; $DOMAINS_HOME/$i/bin/stopWebLogic.sh<br />
&#160;&#160; done <br />
}<br />
    <br />
    case   &quot;$1&quot; in<br />
&#160;&#160;
    start)<br />
&#160;&#160;&#160;&#160;
    start<br />
&#160;&#160;&#160;&#160;
    ;;<br />
&#160;&#160;
    stop)<br />
&#160;&#160;&#160;&#160;
    stop<br />
&#160;&#160;&#160;&#160;
    ;;<br />
&#160;&#160;
    status)<br />
&#160;&#160;&#160;&#160;
    status<br />
&#160;&#160;&#160;&#160;
    ;;<br />
&#160;&#160;
    restart)<br />
&#160;&#160;&#160;&#160;
    stop<br />
&#160;&#160;&#160;&#160;
    start<br />
&#160;&#160;&#160;&#160;
    ;;<br />
&#160;&#160;
    *)<br />
&#160;&#160;&#160;&#160;
    echo $&quot;Usage: $0 {start|stop|restart|status}&quot;<br />
&#160;&#160;&#160;&#160;
    exit 1<br />
    esac<br />
    <br />
  </p>
  <h2>Platform Neutral: Leverage opmn</h2>
  <p>In OFM 11g the opmn Process Management Systems is still in use. If your architecture includes an opmn installation it would be a waste of resources to use shell scripts to start all your bits and pieces.</p>
  <p>One specific architecture is the typical &quot;<em>JEE Application Server behind Apache</em>&quot; one. Apache uses a mod plugin to redirect the requests to the configured JEE application server. mod_oc4j is a typical example for older Oracle AS versions. With OFM 11g Oracle HTTP Server (OHS) comes a mod_wls_ohs that does the same for the OHS-WebLogic combination.</p>
  <p>The only requirement is to start both parts in a good order to service all requests from the very beginning. You can achieve this with a good combination of the above mentioned shell scripts. Or you could add new entries to your <em>opmn.conf</em>.</p>
  <p>Here is a sample entry for a single WebLogic domain:</p>
  <p style="background-color: #CCCCCC"> <span style="background-color: #CCCCCC">&lt;ias-component id=&quot;wls-login&quot; status=&quot;enabled&quot; id-matching=&quot;false&quot;&gt;<br />
&lt;environment&gt;<br />
&lt;variable id=&quot;WLS_REDIRECT_LOG&quot;<br />
value=&quot;/opt/oracle/product/fmw/11.1.1.1/user_projects/domains/login/wls.log&quot;<br />
append=&quot;false&quot;/&gt;<br />
&lt;/environment&gt;<br />
&lt;process-type id=&quot;WLS&quot; module-id=&quot;CUSTOM&quot;&gt;<br />
&lt;start timeout=&quot;3000&quot; /&gt;<br />
&lt;stop timeout=&quot;3000&quot; /&gt;
  </span><span style="background-color: #CCCCCC"><br />
&lt;process-set id=&quot;WLS&quot; restart-on-death=&quot;true&quot; numprocs=&quot;1&quot;&gt;<br />
&lt;module-data&gt;<br />
&lt;category id=&quot;start-parameters&quot;&gt;<br />
&lt;data id=&quot;start-executable&quot;<br />
value=&quot;/opt/oracle/product/fmw2/11.1.1.1/user_projects/domains/login/bin/startWebLogic.sh&quot;/&gt;<br />
&lt;/category&gt;<br />
&lt;category id=&quot;stop-parameters&quot;&gt;<br />
&lt;data id=&quot;stop-executable&quot;<br />
value=&quot;/opt/oracle/product/fmw2/11.1.1.1/user_projects/domains/login/bin/stopWebLogic.sh&quot;/&gt;<br />
&lt;/category&gt;<br />
&lt;/module-data&gt;<br />
&lt;/process-set&gt;<br />
&lt;/process-type&gt;<br />
&lt;/ias-component&gt;</span><br />
  </p>
  <h2>Quiz</h2>
  <p>When you have implemented OFM 11g in some way, you have noticed some changes in the file structure. Where do we find the opmn.xml in OFM 11g (eg in the Web Tier installation)? Please post your suggestions as comment.</p>
]]></description>
         <link>http://blogs.oracle.com/olaf/2009/09/ofm_11g_starting_weblogic_serv.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/09/ofm_11g_starting_weblogic_serv.html</guid>
        
        
         <pubDate>Thu, 24 Sep 2009 14:24:46 +0100</pubDate>
      </item>
      
      <item>
         <title>Book Review: Oracle SOA Suite Developer&apos;s Guide</title>
         <description><![CDATA[<p>Things can get strange over time. While waiting for the release of the Oracle Fusion Middleware 11g, the OTN Forums never stopped asking for ways to learn Oracle SOA Suite. Although the product documentation is huge and could occupy many MBs of your hard disk drive, it still is a difficult read and it never tells you how to start with the SOA Suite.</p>
  <h3>The Authors</h3>
  <p>The <em>Oracle SOA Suite Developer's Guide</em> was written by Matt Wright and Antony Reynolds, two SOA Suite practitioners from the first release of the Oracle SOA Suite.</p>
  <h3>How to start a book on SOA Suite?</h3>
  <p>Although SOA promises to make things much easier, any implementation of SOA will be a complex beast of technologies. The Oracle SOA Suite is no exception from the rule. For the uninitiated this complexity makes it very difficult to find the right entry point to SOA and the SOA Suite product.</p>
  <p>The first brilliant step was the decision of the authors, not to publish the installation of SOA Suite but keep it online. This way it could be adjusted to the latest release if needed. Brilliant, because it saves us from reading a useless chapter while the product and the installation get better.</p>
  <h3>Part 1: Getting Started</h3>
  <p>The first part helps you to get started with the SOA Suite. It sets the scene and explains which components have been chosen and which have been omitted and why. This part consists of eight chapters and shows how to write the first service, how to service-enable existing applications, loosely coupling of services, using BPEL to build composite services, implementing business rules apart from the parts of the complete service, incorporating human services, and, finally, building a dashboard using BAM.</p>
  <p>Throughout this part, you will be introduced to the best parts of the SOA Suite and how to combine them. You get an understanding how they work together and why you should use them for the task. Another good decision was to use Oracle Service Bus instead of Oracle Enterprise Service Bus, as both will sooner or later diverge into a single implementation. On the other hand this decision makes the design time more complex, as OSB and BPEL use different tooling to accomplish the task.</p>
  <h3>Part 2: Developing a Sample Application</h3>
  <p>The major part of the book is written around an on-line auction application. Equipped with the knowledge of the components introduced in Part 1, the authors guide you through the concepts that make the distinction between a good and a bad implementation. These concepts include Service Contracts, Business Services, Validation, Error handling, Message Interaction and Workflow Patterns, and the Importance of Bindings.</p>
  <p>In this part I really like the <em>Designing the Service Contract</em> chapter. It not only propagates the "Contract First" Principle but also goes very deep into XML Schema Definition creation and usage details. And it serves as a good example how the authors provide a plethora of tips and tricks throughout the book. This one is full of tips and tricks for a good design and how to avoid most of the traps and pitfalls in designing a good service contract. (I really missed the <em>maxOccurs="999"</em> bug, though)</p>
  <h3>Part 3: Deployment</h3>
  <p>The last part consists of three chapters for <em>Packaging and Deployment</em>, <em>Testing Composite Applications</em>, and <em>Security and Management Policies</em>. Although the <em>Packaging and Deployment</em> chapter seems to be of most interest for the SOA Suite community,  I would have put the <em>Testing</em> chapter before it. Testing as early as possible saves time and money. The <em>Security and Management Policies</em> chapter concentrates on Oracle Web Service Manager (OWSM), a good piece of software that feels a bit   strange in the whole SOA Suite as it is neither SOA nor Security. Anyway, it makes good sense as this technology is much more integrated into the OFM 11g stack and combines the ease of implementation of the 10.1.3 web service security interceptors as well as the centralized management of policies.</p>
  <h3>Part 4: The Missing Chapter</h3>
  <p>The Oracle SOA Suite Developer's Guide is full of useful and good hints and practices. But I miss the consistent concept of making the reader aware of them. Sometimes these are highlight by the electric bulb icon and sometimes these are just within the normal sections of the normal text. You read, understand and memorize them but you might not find them again easily. You have to rely on your own dog ears, notes or other kinds of markings. This is cumbersome, and an overview or an index for finding them quickly would be great.</p>
  <h3>What you don't get</h3>
  <p>Although this book is a treasure of tips and tricks and common wisdom, it does not tell you all the nifty details of all the standards used within the SOA Suite. If you are interested to learn more about them, you need other sources. </p>
  <h3>Recommendation</h3>
  <p>If you need to learn how to develop applications for the Oracle SOA Suite, I highly recommend this book. If you are a seasoned SOA Suite practitioner you should take a look at it and find out which of the best practices you still don't know.</p>
  <h3>Book Details</h3>
  <p><strong>Title</strong> <a href="http://www.packtpub.com/developers-guide-for-oracle-soa-suite-10gr3/book">Oracle SOA Suite Developer's Guide</a><br />
    <strong>Authors </strong>Antony Reynolds<strong>, </strong>Matt Wright<strong><br />
    Paperback</strong> 652 pages<br />
    <strong>ISBN</strong> 1847193552<br />
    <strong>ISBN 13</strong> 978-1-847193-55-1<br />
  </p>
  ]]></description>
         <link>http://blogs.oracle.com/olaf/2009/08/book_review_oracle_soa_suite_d.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/08/book_review_oracle_soa_suite_d.html</guid>
        
        
         <pubDate>Mon, 31 Aug 2009 21:23:25 +0100</pubDate>
      </item>
      
      <item>
         <title>OFM 11g: Install OAM 10.1.4.3 (32-bit) on 64-bit RedHat  AS 5</title>
         <description><![CDATA[<p>When you want to install Oracle Access Manager 10.1.4.3 on a 64-bit platform, you will instantly notice that there is no 64-bit version available. Here is how to go ahead with the 32-bit version of Oracle Access Manager.</p>
        <h3>Use the 32-bit Environment</h3>
        <p>The installer of Oracle Access Manager do not work on a 64-bit environment. On RedHat AS 5 you can "switch" to the 32-bit architecture by starting a new bash with <strong>linux32 bash</strong>. Until you close this new shell you will be in 32-bit world.</p>
        <h3>Use the OFM 11g Web Tier 32-bit</h3>
        <p>Because the web server plugins for <strong>PolicyManager</strong> and <strong>WebPass</strong> are available as <strong>32-bit</strong> versions only, you need to install the <strong>OHS 11g</strong> from the <strong>OFM 11g Web Tier</strong> distribution. Unfortunately, this will not go through smoothly and will sooner or later stop in one of the makefiles (<em>*.mk)</em> which link the executables.</p>
  <p>When you encounter one of these (possible candidates are  <em>$OHS_HOME/rdbms/lib/ins_rdbms.mk</em>, <em>$OHS_HOME/network/lib/env_network.mk</em>, 
    or <em>$OHS_HOME/webcache/lib/env_calypso.mk</em>)
    <strong>do not stop the installer!</strong> <strong>I mean it.</strong></p>
  <p>You can now scan the makefile in question for a command line containing <strong>gcc</strong>. To link a 32-bit executable, the command line must have the <strong>-m32</strong> flag set. If this is missing, simply replace <strong>gcc</strong> with <strong>gcc -m32</strong>.</p>
  <p>When you finished these small obstacles, the rest of the installation of Oracle Access Manager should continue smoothly.</p>
  <h3>A Word on WebGate</h3>
  <p>When you configure your web server with the <strong>PolicyManager</strong> and <strong>WebPass</strong> it is a good practice to install <strong>WebGate</strong> as well. But, don't get confused by the <strong>64-bit WebGate</strong>.This should not be installed for the web server containing <strong>PolicyManager</strong> and <strong>WebPass</strong>. Use the <strong>32-bit</strong> version of <strong>WebGate</strong> and everything is fine.<br/>
                  </p>
]]></description>
         <link>http://blogs.oracle.com/olaf/2009/08/ofm_11g_install_oam_10143_32-b.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/08/ofm_11g_install_oam_10143_32-b.html</guid>
        
        
         <pubDate>Thu, 27 Aug 2009 19:38:55 +0100</pubDate>
      </item>
      
      <item>
         <title>June, 5th: Environmental Day</title>
         <description><![CDATA[<p>Sitting at home, reading about the recession in the papers, seeing it in the news, all this makes you angry and restless. But what if this is just a fraction of the real life?</p>
  <p>Today is <strong>Environmental Day</strong> all over the world! What does this mean to me and to you? Well, I don't have the answer but this web site might give you an idea:</p>
  <blockquote>
    <p> <em>"We are living in exceptional times. Scientists tell us that we have 10  years to change the way we live, avert the depletion of natural  resources and the catastrophic evolution of the Earth's climate.<br />
        <br />
The  stakes are high for us and our children. Everyone should take part in  the effort, and HOME has been conceived to take a message of  mobilization out to every human being."</em></p>
    </blockquote>
  <p><strong>Go and visit <a href="http://www.home-2009.com">HOME</a></strong><em><br />
                </em>        <br/>
                </p>
]]></description>
         <link>http://blogs.oracle.com/olaf/2009/06/june_5th_environmental_day.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/06/june_5th_environmental_day.html</guid>
        
        
         <pubDate>Fri, 05 Jun 2009 15:06:40 +0100</pubDate>
      </item>
      
      <item>
         <title>Book Review: Business Process Driven SOA using BPMN and BPEL</title>
         <description><![CDATA[<p>One of my last projects was for the Public Services and it felt that these people tend to live for business processes by definition. But while we went on with the project requirements, a team mate showed the whole team what he did for a former project with similar requirements. It was a single diagram done with the BPMN notation and it covered a pretty thorough picture of  the requirements and process dependencies.</p>
  <p>BPMN is not just another modelling language for Business Process Modelling but the one orgininally build for this purpose. It is less technical then UML, includes support for timed execution of process steps and can help to run a simulation of the whole process in a tool.</p>
  <p>The book by Matjaz B. Juric and Kapil Pant is a good starting point to learn BPMN for your project and get the right focus to it. While chapters 1 and 2 introduce you to the need of a proper modelling technique for SOAs, chapters 3 and 4 explain the BPMN language in more detail, present all available constructs as well as patterns and advanced techniques for better use of BPMN. Chapters 5 and 6 complete the book by showing how BPMN could and should be used in SOA / BPEL projects.</p>
  <p>Compared to the UML books on my book-shelf, this one is a refreshingly small, easy to read and quickly to understand and apply. If you are a highly technical person, you might be quickly bored, but with a less technical more process oriented background you can get quickly up to speed with those tech guys. Likewise both types of readers can reach the same level of understanding with a fairly easy modelling language and can better work in a powerful team.</p>
  <h2>Book Details</h2>
  <p><strong><a href="http://www.packtpub.com/business-process-driven-SOA-using-BPMN-and-BPEL/book" target="_blank">Business Process Driven SOA using BPMN and BPEL</a></strong>, <em>Matjaz B. Juric and Kapil Pant</em>, 311 Pages, ISBN 978-1-84719-146-5, Packt Publishing, www.packtpub.com<br/>
            </p>
]]></description>
         <link>http://blogs.oracle.com/olaf/2009/05/book_review_business_process_d.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/05/book_review_business_process_d.html</guid>
        
        
         <pubDate>Sun, 17 May 2009 20:52:17 +0100</pubDate>
      </item>
      
      <item>
         <title>Book Review: Processing XML documents with Oracle JDeveloper 11g</title>
         <description><![CDATA[<p>Although is very often not considered as the IDE of choice, JDeveloper is a wonderful and productive tool chest for everyone. When I found Deepak Vohra's book about <em>XML processing with JDeveloper</em>, I was instantly convinced as I know Deepak Vohra as an author on the <em>Oracle Technology Network</em>.</p>
  <p>In its book he covers a broad range of XML document processing techniques within JDeveloper. In 14 chapters you will find almost everything that you might need for your XML processing. Very naturally it starts with <em>XML document reading and writing</em>. Once you finished that piece of work, requirements get more sophisticated and <em>XML Schema definition and validation</em> are needed for the documents of the same type. Voila, chapters 2 and 3 are there to read about it. And so it goes on, topics like <em>XPath</em> and <em>XSLT transformations</em> are followed by the <em>JSTL XML Tag Library</em>. <em>DOM Level 3 Load and Save</em> and <em>Validation</em> follow. A chapter on <em>JAXB 2.0</em> concludes the first part of the book which introduces all basic techniques to work with XML.</p>
  <p>The last five chapters show typical usage scenarios of these techniques. Chapter <em>Comparing XML Documents</em> is just the warm up phase for the next two chapters about <em>XML Conversion</em> to different output formats (chapter 11: <em>PDF</em> and chapter 12 for <em>Excel</em>). The last two chapters cover <em>Storing XML in Oracle Berkeley DB XML</em> while the last chapter gives you an appetizer for <em>Oracle XML Publisher</em>.</p>
  <p>This book presents you a quick and easy learning path through the functionality offered by JDeveloper and the included Oracle XML Development Kit. You can start at every chapter you want. They are self-contained and do not require a cover to cover reading. Likewise the author does not bother to teach you XML, XSD, and XSLT from the ground up and in every detail. You just get enough information to set the scene and wet your appetite for more information.</p>
  <p><em><strong>The downside of the book are the code samples</strong></em>. Almost every code sample is just there to demonstrate how things work, but should not be considered as a blueprint for your product. I saw resource leaks, hardly maintainable code due to ignoring DRY style (Don't Repeat Yourself) or different type usage conventions (import vs fully qualified class names). Proper code formatting with indentation, usage of blanks or curly braces, or common sense of factoring for repeated code parts would have made the book superb.</p>
  <p>Having said that, it is <strong><em>quite a good book</em></strong> in nearly every aspect. It leads you quickly to the point of the topic and does not waste your time with chapter-long introductions. You can start quickly and improve your knowledge as you go.</p>
  <h2>Book Details</h2>
  <p><strong><a href="http://www.packtpub.com/processing-xml-documents-with-oracle-jdeveloper-11g/book" target="_blank">Processing XML documents with Oracle JDeveloper 11g</a></strong>, <em>Deepak Vohra</em>, 370 pages, ISBN 978-1-847196-66-8, Packt Publishing, www.packtpub.com<br/>
                </p>
]]></description>
         <link>http://blogs.oracle.com/olaf/2009/05/book_review_processing_xml_doc.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/05/book_review_processing_xml_doc.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">JDEV</category>
        
        
         <pubDate>Sun, 17 May 2009 20:48:16 +0100</pubDate>
      </item>
      
      <item>
         <title>Java Performance: The Return of the Usual Suspects (Updated)</title>
         <description><![CDATA[<p>After some years of Java development, one should expect that all lessons are learned and good code is the norm. Yes, really, but this isn't  the case. As I work in different projects and reading many books, I am still surprised how often you will find the same  ways for doing things wrong.</p>
  <h2>Create Unnecessary Objects</h2>
  <p>One of the easiest errors you can do, is to create unnecessary objects. Yes, honestly. There is one famous class in the whole Java environment that can only have <strong>two</strong> real values. These values are provided as constant values and the only reasonable ones everybody should use as objects of this class. I am talking of the <strong>Boolean</strong> class. True and false are the only instance and are provided as constant values <strong>Boolean.TRUE</strong> and <strong>Boolean.FALSE</strong>. Unfortunately, this class also has a public constructor <strong>Boolean(boolean value)</strong>. This constructor leads to really unnecessary code <strong>new Boolean(true)</strong> or <strong>new Boolean(false)</strong>. If you see this in your code, it is time to speak with the author and introduce some code inspection tools like <strong>FindBugs</strong> or <strong>PMD</strong>.</p>
  <h2>Use of StringBuffer</h2>
  <p>In JDK 1.0 times, <strong>StringBuffer</strong> was a reasonable approach to boost performance for String concatenation. It still is an alternative, but <strong>StringBuilder</strong> is a better one. The <strong>worst thing</strong> you can do is to <strong>concatenate string literals</strong> (aka constant strings) with <strong>StringBuffer.append()</strong>. Because you are working with <strong>literals</strong> use the <strong>+ operator</strong>. It gives <strong>the compiler the chance to optimize</strong> the concatenation <strong>during compile time</strong> and <strong>not</strong> to leverage the effect to the <strong>runtime</strong>.</p>
  <h2>Method Calls in Loop Conditions</h2>
  <p>It is really tempting to use the "<em>size</em>" methods of the collection classes (anything like <strong>size()</strong>, <strong>length()</strong>, <strong>rowCount()</strong>, etc.). But <strong>before you use</strong> them in a loop condition like <strong>for(int i = 0; i < array.size(); ++i)</strong>, take a step back and think about it again. Do you <strong>just iterate</strong> over it to find something? Or do you <strong>modify</strong> it in the loop? If the content of the collection will not be modified you should use a construct like <strong>for(int i = 0, size = array.size(); i < size; ++i)</strong>. This is <strong>much faster</strong>, especially when the method is synchronized.</p>
  <h2>Repeated Access of the Same Object Through a Method</h2>
  <p>Very often, in a loop you find code to access the same object  through the same method more then once. This makes your code hard to read, less maintainable, and slower. Imagine this method call is synchronized, what an avoidable bottleneck. Of course, you check the method before writing the code, but this does not help for ever. The next version of the API might use a synchronized method. Anyway, to improve the readability, maintainability and performance of the loop, you can <strong>introduce a temporary variable</strong>, call the method and use the variable throughout the loop. Here is some code:</p>
  <blockquote>
    <p>// Bad<br />
      for (int i = 0, size = array.size(); i &lt; size; ++i) {<br />
     &#160;&#160; doSomething(array.get(i));<br />  
     &#160;&#160; doSomethingElse(array.get(i)); 
      <br />
      }  </p>
    <p>// Better<br />
      for (int i = 0, size = array.size(); i &lt; size; ++i) {<br />
     &#160;&#160; Object obj = array.get(i);<br />
     &#160;&#160; doSomething(obj);<br />
     &#160;&#160; doSomethingElse(obj);<br />
      }</p>
    </blockquote>
  <p>Sure, these two line loop isn't really challenging, but image loops with more lines and line lengths with more then 80 characters...</p>
  <h2>JDBC DriverManager vs DataSource</h2>
  <p>Another classic. Use of JDBC in a server environment is much different than in a simple demo environment. You should <strong>avoid</strong> the <strong>DriverManager</strong> API (for example, not allowed in Java EE) as this does not allow you to provide connection pools as with a <strong>DataSource</strong> and very often the wrong class loader is used.</p>
  <h2>Closing JDBC Resources</h2>
  <p>Although some JDBC drivers support implicit closing of JDBC resources it is still a recommended practice to close the JDBC resources in <strong>the right order</strong> at <strong>the right place</strong> in your code and <strong>explicitly</strong>. The right order is <strong>ResultSet</strong>, <strong>PreparedStatement</strong>, <strong>Statement</strong>, and <strong>Connection</strong>. The <strong>right place</strong> for issuing this code is the <strong>finally</strong> clause of your <strong>try-catch-finally</strong> block. Do not reinvent the wheel for this, use the <a href="http://commons.apache.org/dbutils"><strong>Apache Commons DbUtils</strong></a> library. </p>
  <h2>Use the Correct ClassLoader</h2>
  <p>The usage of the ClassLoader in Java is very often the only way to get resources loaded. Using the correct ClassLoader is essential for a perfect running application. The best way to use the correct ClassLoader is by using the <strong>Context ClassLoader</strong>. You can access it through <strong>Thread.currentThread.getContextClassLoader()</strong></p>
  <h2>Don't Repeat Yourself - DRY</h2>
  <p>You can write the worst code in every programming language. If you write your code, always ask yourself, whether you have <strong>seen this code before</strong>, if so, try to <strong>refactor</strong> both pieces to common code and find ways to put custom code in it. Repetition is boring and introduces errors and problems.</p>
  <h2>Common Wisdom</h2>
  <p>This is just the tip of the iceberg. You can get much more interesting points to check your code against from very good references:</p>
  <ul>
    <li><a href="http://blogs.oracle.com/olaf/2007/10/"><strong>Resource Leaks Made Easy</strong></a></li>
    <li><a href="http://books.google.co.uk/books?id=ka2VUBqHiWkC&dq=Joshua+Bloch&printsec=frontcover&source=an&hl=en&ei=TXr0SeemKNzMjAe0zdi3DA&sa=X&oi=book_result&ct=result&resnum=4"><strong>Joshua Bloch, Effective Java, 2nd Edition</strong></a></li>
    <li><a href="http://books.google.co.uk/books?id=BwpRAAAAMAAJ&dq=Joshua+Bloch&source=an&hl=en&ei=TXr0SeemKNzMjAe0zdi3DA&sa=X&oi=book_result&ct=result&resnum=5&pgis=1"><strong>Joshua Bloch, Neal Gafter, Java Puzzlers: Traps, Pitfalls, and Corner Cases</strong></a><br/>
    </li>
    </ul>
  ]]></description>
         <link>http://blogs.oracle.com/olaf/2009/04/java_performance_the_return_of.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/04/java_performance_the_return_of.html</guid>
        
        
         <pubDate>Wed, 29 Apr 2009 08:12:43 +0100</pubDate>
      </item>
      
      <item>
         <title>Upgrading your WebLogic to ADF 11.1.1.0.2 </title>
         <description><![CDATA[
<p>One of the first questions that come up with the JDev /ADF 11.1.1.0.2 release is how to upgrade your WebLogic 10.3 to it. Here is my solution:</p>
  <ol>
    <li>Open the <strong>Uninstaller</strong> of your WebLogic installation</li>
    <li>Select <strong>JDeveloper 11g (11.1.1.0.x) Studio Edition 11.1.1.0</strong></li>
    <li>Uncheck everything under <strong>WebLogic Server</strong></li>
    <li>Click <strong>Next</strong> to finish the deinstallation. If you're interested you can click on the Details button to see what has be uninstalled.</li>
    <li>Now open the <strong>JDev 11.1.1.0.2 Installer</strong></li>
    <li>Select the <strong>WebLogic</strong> home where to install the new ADF version</li>
    <li>Now <strong>deselect everything</strong> and <strong>select</strong> the <strong>Application Development Framework Runtime</strong> only. <em>Note: This will also select the JDeveloper and ADF folder again.</em></li>
    <li>To avoid class loading issues, rebuild all your EAR files.</li>
    </ol>
  <p>Enjoy.</p>
  <p><strong>Note:</strong> You will find the <strong>Uninstaller</strong> either as <strong>$WLSHOME/wlserver_10.3/uninstall/uninstall.sh</strong> or <strong>%WLSHOME%\wlserver_10.3\uninstall\uninstall.cmd</strong>. On a headless server (like a Linux or Unix-based system) you may need to set the <strong>DISPLAY</strong> variable to an <strong>X Server</strong> like <strong>VNC</strong> or <strong>Xming</strong>. (Assuming that <strong>$WLSHOME</strong> or <strong>%WLSHOME%</strong> is your home directory for the WebLogic Server 10.3. installation.)<br/>
  </p>
]]></description>
         <link>http://blogs.oracle.com/olaf/2009/04/upgrading_your_weblogic_to_adf_3.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/04/upgrading_your_weblogic_to_adf_3.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ADF</category>
        
        
         <pubDate>Mon, 06 Apr 2009 22:03:37 +0100</pubDate>
      </item>
      
      <item>
         <title>JDeveloper 11.1.1.0.2 Released!</title>
         <description><![CDATA[
  <p>Over the weekend the latest bug fix release of JDeveloper 11g (11.1.1.0.2 or Build 5205) was released on <a href="http://www.oracle.com/technology/software/products/jdev/htdocs/soft11.html">OTN</a>. Go and get it while it's hot.
    </p>
  ]]></description>
         <link>http://blogs.oracle.com/olaf/2009/04/jdeveloper_111102_released.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/04/jdeveloper_111102_released.html</guid>
        
        
         <pubDate>Mon, 06 Apr 2009 06:43:26 +0100</pubDate>
      </item>
      
      <item>
         <title>Who to Blame for the Crisis?</title>
         <description><![CDATA[<p>If you are lucky to live and work in the industry for some decades, you will notice that every crisis follows a similar pattern:</p>
  <ol>
    <li><em><strong>Total Surprise, Total Shock </strong></em>- Oh my god, how could this happen? Everybody was working like hell in a "rock solid" company with a "rock solid foundation".</li>
    <li><em><strong>That was expected</strong></em> - There is always someone, who expected it, and always someone who is able to blame someone.</li>
    <li><em><strong>Blame Someone Else</strong></em> - Finally, after the first shocks and blames are gone, someone starts to blame things or ideas or technologies, just to become the <em>World's Next Hero</em>.</li>
    </ol>
  <h2>Today's Victim</h2>
  <p>Today's victim is ... (drum roll) ... SOA. I don't advocate for any opinion, just read these few links to make up your mind. The truth is somewhere in the middle.</p>
  <ul>
    <li> <a href="http://apsblog.burtongroup.com/2009/01/soa-is-dead-long-live-services.html"> SOA is Dead, Long Live Services</a></li>
    <li><a href="http://www.infoq.com/news/2009/01/is-soa-dead">DZone Article: Is SOA Dead?</a></li>
    <li><a href="http://blogs.citytechinc.com/sjohnson/?p=36">SOA? No.</a></li>
    <li><a href="http://blogs.progress.com/soa_infrastructure/2009/01/goodbye-soa-we-hardly-knew-you.html">Goodbye SOA, we hardly knew you</a></li>
    <li><a href="http://blog.dhananjaynene.com/2009/01/soa-aint-dead-but-it-certainly-is-transforming/">SOA ain't dead but it certainly is transforming</a></li>
    <li><a href="http://apsblog.burtongroup.com/2008/12/soa-vs-soi.html">SOA vs SOI</a></li>
    <li><a href="http://www.soacenter.com/?p=172">SOA is Dead, Long Live Whatever</a></li>
    <li><a href="http://blogs.oracle.com/davidchappell/2009/01/soa_is_alive_and_well_no_matte_1.html">SOA is alive and well no matter what its called</a></li>
  </ul>
  <h2>Morale</h2>
  <p>The step from Hero to Zero is small. The gap between both is huge and not everybody is able to realize or accept these dangers. If you decide to be <em>World's Next Hero</em>, be prepared and good luck. There is always room enough for more then one hero.</p>
  <h2>What about me?</h2>
  <p>Well, no changes. I'm still following my own mantra, live to have fun and don't stop to be curious about the inner workings of the ideas that keep the world spinning...<br/>
                </p>
]]></description>
         <link>http://blogs.oracle.com/olaf/2009/01/who_to_blame_for_the_crisis.html</link>
         <guid>http://blogs.oracle.com/olaf/2009/01/who_to_blame_for_the_crisis.html</guid>
        
        
         <pubDate>Thu, 08 Jan 2009 09:19:14 +0100</pubDate>
      </item>
      
      <item>
         <title>ADF in Action (11g): Prepare Yourself for the UI</title>
         <description><![CDATA[
<h2>A Simple Test Application</h2>
  <p>Before we start to develop the UI, we test the deployment of a simple <strong>Hello World ADF Faces</strong> application. This helps to find possible errors and problems very early. OK, here we go.</p>
  <ol>
    <li>To make things easy we start with a new application. In your JDeveloper 11g <strong>Application Navigator</strong> go to the list of applications and select the <strong>New Application ...</strong> entry from the drop down.</li>
    <li>In the  <strong>Create Generic Application</strong> wizard, set the <strong>Application Name</strong> to <strong>ADFHelloWorld</strong>. Select the <strong>Application Template:</strong> <strong>Generic Application</strong> and click on <strong>Next</strong>.</li>
    <li>Now enter <strong>HelloWorld</strong> for the <strong>Project Name</strong> and click on <strong>Finish</strong>.</li>
    <li>Select the HelloWorld project and open the Context Menu, and chose <strong>New...</strong></li>
    <li>In the <strong>All Technologies</strong> tab scroll down until you find <strong>JSF, </strong>select it, select <strong>JSF Page</strong> from the <strong>Items</strong> area, and click <strong>OK</strong>.</li>
    <li>In the <strong>Create JSF Page</strong> window, set the <strong>File Name</strong> to <strong>helloworld.jspx</strong>, for <strong>Use Page Template</strong> select <strong>/oracle/templates/threeColumnTemplate.jspx</strong>, check <strong>Create as XML Document (*.jspx)</strong>, and click on <strong>OK.</strong></li>
    <li>Open the <strong>Component Palette</strong> and select <strong>ADF Faces</strong> from the drop down box.</li>
    <li>In the <strong>Common Components</strong> accordion find the <strong>Output Text </strong>component and drag it to the <strong>center</strong> area in the <strong>helloworld.jspx.</strong></li>
    <li>Find the <strong>Output Text Property Inspector</strong> and set the <strong>Value</strong> to <strong>Hello World!</strong> Expand <strong>Style</strong> and set the <strong>Size</strong> to <strong>xx-large.</strong></li>
    <li>To see the results in a browser, select the <strong>helloworld.jspx</strong>, open the <strong>Context Menu</strong> and select <strong>Run</strong></li>
    </ol>
  <h2>Deploy to WebLogic 10.3</h2>
  <p>During development we use the integrated WebLogic server and everything works fine. But will the same be true for a standalone WebLogic 10.3 server? Not necessarly. We have to do some steps before we can successfully deploy to the WebLogic server.</p>
  <p>During installation of JDeveloper 11g you might have noticed that you can select an existing WebLogic server installation directory. This is necessary to install the ADF runtime to the WebLogic server in question.</p>
  <ol>
    <li>Start the JDeveloper 11g Installation Wizzard.</li>
    <li>In <strong>Choose  Middleware Home Directory</strong> select <strong>Use an existing Middleware Home</strong> and select the home directory of your WebLogic server.</li>
    <li>In <strong>Choose Products and Components</strong> uncheck everything <strong>but Application Development Framework Runtime</strong> </li>
    <li>The wizard will install all the necessary libraries in a <strong>jdeveloper</strong> directory underneath your <strong>Middleware Home</strong></li>
    <li>With the <strong>WebLogic Domain Wizard</strong> <strong>create</strong>  a new domain or <strong>update</strong> an existing domain with the <strong>Application Development Framework</strong> included.</li>
  </ol>
  <p>Are we ready? No, unfortunately not. We have to do create a Deployment Profile to be able to deploy it and also need to setup an Application Server connection.</p>
  <h3>The Deployment Profile </h3>
  <p>Creating an Deployment Profile has not changed. But we mention all the steps again. </p>
  <ol>
    <li>Select the <strong>HelloWorld</strong> project, open the <strong>Context Menu</strong> and select the <strong>New</strong> entry. </li>
    <li>In the <strong>New Gallery</strong> scroll up to the <strong>General</strong> group and find the <strong>Deployment Profiles</strong> sub group.</li>
    <li>From <strong>Items</strong> select the <strong> WAR File</strong> entry and click <strong>OK</strong></li>
    <li>Use <strong>helloworld</strong> as <strong>Deployment Profile Name</strong></li>
    <li>In the <strong>Edit WAR Deployment Profile Properties</strong> window select <strong>Specify Java EE Webb Context Root</strong> and set it to <strong>helloworld</strong>. Click <strong>OK</strong>.   </li>
  </ol>
  <h3>The Weblogic Deployment Descriptor</h3>
  <p>It is necessary to enable the JSF and JSTL libraries with a WebLogic-specific deployment descriptor. For this case we use the deployment descriptor for the web application:</p>
  <ol>
    <li>Select the <strong>HelloWorld</strong> project, open the <strong>Context Menu</strong> and select the <strong>New</strong> entry.</li>
    <li>In the <strong>New Gallery</strong>  scroll to the <strong>General</strong> group and find the <strong>Deployment Descriptors</strong> sub group.</li>
    <li>From <strong>Items</strong> select <strong>WebLogic Deployment Descriptor</strong>, click <strong>OK, </strong> select <strong>weblogic.xml</strong> and click <strong>OK</strong> </li>
    <li>Open the <strong>weblogic.xml</strong> and make sure it looks like this:</li>
  </ol>
  <table width="100%" border="0">
    <tr valign="top">
      <td bgcolor="#CCCCCC">&lt;?xml version=&quot;1.0&quot; ?&gt;<br />
&lt;weblogic-web-app xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;<br />
xsi:schemaLocation=&quot;http://www.bea.com/ns/weblogic/weblogic-web-app.xsd&quot;<br />
xmlns=&quot;http://www.bea.com/ns/weblogic/weblogic-web-app&quot;&gt;<br />
 &#160; &lt;library-ref&gt;<br />
&#160; &#160; &lt;library-name&gt;jstl&lt;/library-name&gt;<br />
 &#160; &lt;/library-ref&gt;<br />
 &#160; &lt;library-ref&gt;<br />
 &#160;
&#160; &lt;library-name&gt;jsf&lt;/library-name&gt;<br />
&#160; &lt;/library-ref&gt;<br />
&lt;/weblogic-web-app&gt;</td>
    </tr>
  </table>
  <br />
    <h3>The Application Server Connection</h3>
  <p>As mentioned in previous posts, JDev 11g offers us two options to specify <strong>Connections</strong> to various server types. Unfortunately, the application-specific option for <strong>Application Server Connections</strong> is not available. These are only available as <strong>IDE Connections</strong>.</p>
  <ol>
    <li>Open the <strong>Resource Palette</strong> and expand the <strong>IDE Connections</strong> accordion.</li>
    <li>Click on the <strong>Folder with Star</strong> icon and select <strong>New Connection &gt; Application Server</strong></li>
    <li>Follow the wizard to specify all the information requested. Do not forget to <strong>Test</strong> the connection. </li>
  </ol>
  <h3>Deploy the Sample</h3>
  <p>Great, we are now ready to deploy the sample application.</p>
  <ol>
    <li>Select the <strong>HelloWorld</strong> project, open the <strong>Context Menu</strong>, select <strong>Deploy</strong>, select <strong>helloworld</strong>, select <strong>to</strong> and find the application server connection you have just created.</li>
    <li>You can now run the application by pointing your browser to the URL <strong>http://hostname:7001/helloworld/faces/helloworld.jspx</strong> </li>
    </ol>
  <h3>Caveat</h3>
  <p>Sometimes the deployment does not work as expected. I have encountered these:</p>
  <ol>
    <li><strong>Remote WLS servers</strong> - You have to create a WAR or an EAR file, copy it to the remote server and deploy it through the WLS Console (<strong>http://hostname:7001/console</strong>)</li>
    <li><strong>WLS on Windows</strong> - Sometimes the deployment on a standalone WLS 10.3 on Windows XP doesn't work correctly. I am investigating this and will post a solution. </li>
  </ol>
  ]]></description>
         <link>http://blogs.oracle.com/olaf/2008/11/adf_in_action_11g_prepare_your.html</link>
         <guid>http://blogs.oracle.com/olaf/2008/11/adf_in_action_11g_prepare_your.html</guid>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
         <pubDate>Mon, 03 Nov 2008 13:22:03 +0100</pubDate>
      </item>
      
      <item>
         <title>JDev 11g: Packaging Libraries at EAR Level</title>
         <description><![CDATA[  <p>Many users have problems to use their libraries in their applications. But sometimes a working solution is too obvious to be noticed. </p>
  <p> To include all the libraries you need for your project in an EAR file: </p>
  <ol>
    <li> Create a package project called <strong>common-libs</strong> and put all the libraries in a directory included in the <strong>Project Source Path</strong>. Don't use the <strong>src</strong> directory but <strong>lib</strong> at the same hierarchy level. Add this new directory to the <strong>Project Source Paths</strong>. </li>
    <li> Open the <strong>Application Properties</strong> </li>
    <li> Create a deployment profile for the EAR file. </li>
    <li> To include the libraries within the EAR file we have two options to include the libraries are available: either put into <strong>APP-INF/lib</strong> or <strong>a directory of your choice</strong> (eg. lib). In the <strong>Deployment Profile</strong> select <strong>Application Assembly</strong>, tick the check box of every JAR file you need and enter the directory name (<strong>APP-INF/lib</strong> or <strong>lib</strong>) in the <strong>Path in EAR</strong> text field at the bottom. <strong>This must be done for every JAR file!</strong></li>
    <li> If you do not want to use <strong>APP_INF/lib</strong> you need to create an <strong>application.xml</strong> for the application. Open the <strong>Application Resources</strong> accordion and expand <strong>Descriptors</strong> and <strong>META-INF</strong> to see which Deployment Descriptors are available. On <strong>Descriptors</strong>, chose <strong>New JEE Deployment Descriptor...</strong> from the <strong>Context Menu</strong> and select <strong>application.xml</strong>. In the newly created <strong>application.xml</strong> insert the tag <strong>&lt;library-directory&gt;lib&lt;/library-directory&gt;</strong>. </li>
    <li> From the <strong>Application</strong> <strong>Menu</strong> select <strong>Deploy to EAR File</strong> to check the contents before deploying it to the server. </li>
  </ol>
  <p><br/>
      </p>
]]></description>
         <link>http://blogs.oracle.com/olaf/2008/10/jdev_11g_packaging_libraries_a.html</link>
         <guid>http://blogs.oracle.com/olaf/2008/10/jdev_11g_packaging_libraries_a.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ADF</category>
        
        
         <pubDate>Fri, 31 Oct 2008 12:40:32 +0100</pubDate>
      </item>
      
      <item>
         <title>Nice JDev 11g Feature: EAR Packaging</title>
         <description><![CDATA[
  <p><em>While working on the samples for JDeveloper hands-on workshops and on the </em>ADF in Action<em> series, I stumbled into this nice feature...</em></p>
  <h2>EAR Packaging with JDeveloper 11g</h2>
  <p> In previous releases of JDeveloper a number of different strategies have been used to ensure a proper EAR file packaging. Very common is the usage of Ant or Maven scripts, because these are useful for daily builds.</p>
  <h2>Background</h2>
  <p>The JDeveloper IDE has the concept of Applications and Projects, if we translate Application to Enterprise Application and Project to Module, we are right in the Java EE nomenclature and can easily understand how to create an Enterprise Application Archive (EAR) with modules like Web Application (WAR), Enterprise JavaBeans (EJB JAR) and so on. With this background information we are able to locate the necessary deployment profiles for each part of the final application.</p>
  <p>Each project has its own deployment profile, eg WAR file for a web application or JAR file for a library project. But if you want to put everything together, where do find it?</p>
  <h2>The Application Deployment Profile</h2>
  <p>Exactly, the application itself   will hold the  deployment profile for the EAR file. To find it we need to go to the <strong>Application Properties</strong>. <strong>Application Properties</strong>? Where are they? They are located at the Application Level:</p>
  <ol>
    <li> Open the <strong>Application Navigator</strong></li>
    <li>The topmost element is a drop down box with the names of the applications in your IDE. Right next to the drop down box you find the application menu. Click on it and open the <strong> Menu</strong>. There, at the end of the menu you will find the entry <strong>Application Properties</strong>! Select it and you will open the <strong>Application Properties</strong> window.</li>
    <li>Select the <strong>Deployment</strong> entry to go to the <strong>Deployment Profiles</strong> overview. On the first time it is empty.</li>
    <li>To create a deployment profile, you must click on the <strong>New...</strong> button. The <strong>Create Deployment Profile</strong> window appears and you can select the <strong>Archive Type</strong>. On this level only the type <strong>EAR File</strong> is avaiblable and useful.</li>
    <li>Give the profile a <strong>Name</strong> and click <strong>OK</strong>.</li>
    <li>Once created you are able to edit the <strong>EAR Profile Properties</strong>.</li>
    </ol>
  <h2>Edit the Appliction  Deployment Profile</h2>
  <p>The <strong>Edit EAR Deployment Profile  Properties</strong> window allows you to edit the <strong>Application Assembly</strong>, ie. which modules, er project results, are part of your EAR file, or the <strong>Filter Groups</strong>.</p>
  <h2>Bonus: Locate and Edit the Application Deployment Descriptors</h2>
  <p>To locate and edit the <strong>Application Deployment Descriptors</strong> you have to expand the <strong>Application Resources</strong> accordion in the <strong>Application Navigator</strong>. The <strong>Descriptors</strong> group contains all the deployment descriptors used at the EAR level. If you want to add a Java EE or product specific deployment descriptor click on <strong>META-INF</strong> and open the <strong>Context Menu</strong>. It will contain the three entries <strong>New JEE Deployment Descriptor</strong>, <strong>New Oracle Deployment Descriptor</strong> and <strong>New Weblogic Deployment Descriptor</strong>. All three open a window to select the specific deployment descriptors from.</p>
  <p><em>Enjoy</em>.</p>
  <p>&#160; </p>
  <p><br/>
  </p>
]]></description>
         <link>http://blogs.oracle.com/olaf/2008/10/nice_jdev_11g_feature_ear_pack.html</link>
         <guid>http://blogs.oracle.com/olaf/2008/10/nice_jdev_11g_feature_ear_pack.html</guid>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
         <pubDate>Fri, 31 Oct 2008 11:42:24 +0100</pubDate>
      </item>
      
   </channel>
</rss>
