« November 2007 | Main | January 2008 »

December 2007 Archives

December 3, 2007

Deploying JHeadstart applications to OC4J 10.1.3.2 or higher

While deploying your JHeadstart application to OC4J 10.1.3.2 or higher, are you experiencing error messages like the following?

  • Operation failed with error: org/apache/log4j/Category
  • No appenders could be found for logger (com.sun.faces.config.ConfigureListener)
  • oracle.oc4j.admin.internal.DeployerException: java.lang.ExceptionInInitializerError
  • org.apache.commons.logging.LogConfigurationException: No suitable Log constructor [Ljava.lang.Class;@900079 for org.apache.commons.logging.impl.Log4JLogger (Caused by java.lang.NoClassDefFoundError: org/apache/log4j/Category)
This occurs because OC4J 10.1.3.2 and higher has defined a common shared library for apache.commons.logging, but this library has a dependency on log4j classes, which are not available in that shared library. Having log4j.jar in your EAR file does not help, because when called from a shared library, the classloader expects them to be available in the shared classpath instead of in the application-specific classpath. See OC4J bug 5871305 and Note 460448.1 in MetaLink for more information.

The workaround is to exclude apache.commons.logging from the shared library for your application: update orion-application.xml with the lines
<imported-shared-libraries> 
<remove-inherited name="apache.commons.logging"/>
</imported-shared-libraries>
Then create a JDeveloper deployment profile as follows:
  1. Run the ADF Runtime Installer
  2. In the ViewController project,
    create a new WAR Deployment Profile (File | New | General | Deployment
    Profiles | WAR File).
  3. In the deployment profile properties, go
    to WAR Options, and select Compress Archive.
  4. If you
    use Subversion,
    go to all Filters categories, then to Patterns, and exclude **/.svn/
Farbod posted his solution to deploying a JHeadstart application from JDeveloper 10.1.3.3 to OC4J 10.1.3.3 on the JDeveloper OTN Forum. Check out his steps to successfully deploy a JHeadstart application.

Ignore runtime warning AdfFacesFilter to avoid IllegalStateException

If you get an error

java.lang.IllegalStateException: AdfFacesContext was already released or had never been attached.

while the underlying error is something else, then check your web.xml. Do you have the following filter mapping?

    <filter-mapping>
        <filter-name>adfFaces</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

Then remove or comment out this mapping. This results in seeing the original stack trace if a runtime problem occurs. However, it also means that you will get runtime warnings like

WARNING The AdfFacesFilter has not been installed. ADF Faces requires this filter for proper execution.

If these warnings are caused only by removing this particular filter mapping, you can safely ignore them. You probably have filter mappings to the AdfFacesFilter for *.jsp and *.jspx, which takes care of applying the filter at the appropriate time. Having these runtime warnings is better than not seeing the underlying error in case of a problem!

December 11, 2007

Supported Browsers for ADF Faces

I was looking for a list which browsers are compatible with ADF Faces 10.1.3. I couldn't find it, but Shay Shmeltzer sent me this URL for the ADF Faces Release Notes. Now I could see why I couldn't find it before: I should have searched for "User Agents" instead of "Browsers"!

Update: the same information can also be found in the ADF Developer's Guide for Forms/4GL Developers, at section 11.1 - Introduction to ADF Faces. This guide is also available in the JDeveloper Online Help. So if you search for ADF Faces and User Agents, you can also find it there.

December 14, 2007

Oracle Unified Method (OUM) free for Certified and Advantage Partners!

Last month I got several e-mails from customers and partners asking about the availability of Oracle Unified Method (OUM).  For the ones that are not familiar with OUM here is the short intro.

The Oracle®
Unified Method (OUM) can help you develop and implement technology-based business
solutions with precise development and rapid deployment. You can tailor OUM
to support your specific project situation. With its ready-made templates, guidelines,
and scalable work breakdown structure, OUM provides the programmatic tools you
need to manage the risks associated with your information technology-based projects.
OUM supports the complete range of technology projects including deep support
for Service Oriented Architecture (SOA), Enterprise Integration, Custom Software,
Identity Management (IdM), and Governance, Risk and Compliance (GRC).

The good news is that Oracle Unified Methods is freely available for Certified Advantage Partners and Certified Partners. For more information on how to download the method please follow this link to the Oracle Partner Network (OPN). You need an account to get access.
We are in the works of making OUM available to all customers and partners. More information will follow on this blog.

To familiarize yourself with OUM we provide a one day workshop on request. If you are interested in such a workshop please send an e-mail to idevcoe_nl@oracle.com.

Ton van Kooten

December 19, 2007

The Added Value of JHeadstart

We just published the JHeadstart Feature List on the JHeadstart Product Center on OTN.
It includes an impressively long list of all the runtime features that can be generated, and also discusses the features and benefits for the developer. In contacts with customers and partners, we sometimes feel that the benefits of an agile development approach enabled by using JHeadstart are underestimated.  The feature list document attempts to summarize these benefits.

Some people question the added value of JHeadstart when JDeveloper release 11 will be available. From a feature perspective, this can be answered as follows: three main JHeadstart features, advanced search, (cascading) single-select List of Values, and wizard style pages will be much easier to build with JDeveloper 11.
Building these features without JHeadstart in JDeveloper 10.1.3.2 is very complex and time-consuming. So, yes, the amount of time saved by using JHeadstart to build these features is less, so you could say JHeadstart adds less value there. But that's not the whole story.
For a start, we take it as a compliment that major JHeadstart features have been recognized as being useful and powerful enough to get better declarative support in ADF. This confirms our message that JHeadstart is founded on ADF best practices collected on a daily basis by Oracle Consulting and other JHeadstart users worldwide.
Secondly, the easier a feature can be built manually, the easier we can generate it, and the easier you as a developer can modify it. For example, the JHeadstart runtime code that implements the sophisticated List of Values functionality in 10.1.3.2, is pretty complex. With release 11 we hope we can dramatically simplify that code. Less and simpler code is better for everybody: less bugs and easier to maintain, extend and override.
Thirdly, with 15 years of experience in building application generation technology, we know that the more powerful the underlying framework (either Designer/Forms or ADF) is, the more advanced features we can generate. New JDeveloper 11 features like page templating, page fragments, regions, new rich UI components, and ADF task flows open a range of new opportunities for JHeadstart 11. We have not finalized the list of new features yet, agile as we are :-), but here are some ideas we have:

  • Leverage the new UI components by adding numerous group layout styles, and item display types.
  • Add generator switches that allow you to generate one group or a
    collection of groups as an ADF region with bounded task flow. You can
    then assemble the final pages of your composite web 2.0 application by dragging
    and dropping WebCenter components, as well as JHeadstart-generated
    regions onto the same page. In other words, you can use JHeadstart to
    generate a library of reusable UI components. 
  • Support for data controls based on other technologies than ADF Business Components.
  • Tree and Tree-Table Layouts in List of Values
  • Report launch form for BI Publisher
  • Add persistable drag and drop support. Drag and drop in web pages is one thing, but you typically need to write some code to persist the drag and drop action to the database. JHeadstart can provide this code for you, just like we do today with the shuttle functionality.
  • Integrate JHeadstart permission-based security with ADF Model security. In release 11 the ADF Model security becomes "pluggable", which means we should be able to use JHeadstart permissions to authorize access to ADF model bindings.
Do you have additional ideas?  Let us know!

To summarize, we think the added value of JHeadstart will only increase with release 11!

Finally, as explained in the feature list and demoed at Oracle Open World, migrating to JDeveloper 11 is easiest when you start using JHeadstart today!

About December 2007

This page contains all entries posted to JHeadstart Blog in December 2007. They are listed from oldest to newest.

November 2007 is the previous archive.

January 2008 is the next archive.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type and Oracle