Month: March 2014

How to launch the Oracle Forms Builder 11g

Yesterday I had the privilege of installing Oracle Forms on a Linux machine and then attempting to get the Forms Builder application running. Searching for documentation on how to do this was impossible, all I found where a lot of links to articles asking for help because it wouldn’t start.

The errors that I was getting while trying to launch Forms Builder where:

FRM-91111: Internal Error: window system startup failure.
FRM-10039: Unable to start up the Form Builder.

Below are the commands that I entered to get it working on my Oracle SOA Virtual Box VM downloaded from Oracle. I took this base install box and then installed Forms using their documentation.

To launch Forms Builder open a terminal window and type the following:
Note /oracle/middleware was my middleware install location for forms and I had created a Oracle_FRHome1 in there when installing Forms. /oracle/javahome/ was where Oracle put their JDK on the VM, if your server is different then you’ll need to make sure you change these paths to your JDK location. These are referred to in PATH, LD_LIBRARY_PATH and JAVA_HOME.

cd /oracle/middleware/Oracle_FRHome1/asinst_1/bin
export ORACLE_HOME=/oracle/middleware/Oracle_FRHome1
export PATH=/oracle/middleware/Oracle_FRHome1/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/oracle/javahome/jdk1.6.0_29/jre/lib/amd64/native_threads/
export FORMS_BUILDER_CLASSPATH=$ORACLE_HOME/jlib
export NLS_LANG=
export MW_HOME=/oracle/middleware/
export JAVA_HOME=/oracle/javahome/jdk1.6.0_29/
export PATH=/oracle/javahome/jdk1.6.0_29/bin/:$PATH
./frmbld.sh

Verify these values are correctly set by typing echo $ORACLE_HOME etc. and type java -version to verify that the correct java is being used.

Critical Note: The part that differs here from all the other blogs on this issue is that I am running the script frmbld.sh in /oracle/middleware/Oracle_FRHome1/asinst_1/bin/ rather than the actual application file which is just frmbld and located somewhere else.

“Development Lifecycle for Taskflows in WebCenter Portal” whitepaper guidance notes

Whilst following the white paper from Oracle on the “Development lifecycle in Oracle WebCenter Portal” I came across a significant issue for new users of WebCenter which was a missing project for the tutorial.

It stated in the introduction that there are applications shipped with the whitepaper but I couldn’t find them and neither could Oracle Support. To get going in the meantime I created my own “GenericWebService” project that satisfied the requirements of the tutorial. This is available here.

Alternatively, follow the steps below to create it yourself.

Missing connection.xml file
Section 3a: Create a Web Service Proxy Facade – On page 28 the whitepaper says to update the connection.xml file with the contents in yellow in the page above. However, for my application that I had created I didn’t have a connection.xml file for some reason. To resolve this I closed the GenericServiceConsumer application, went to the GenericServiceConsumer\.adf\META-INF folder and created a new file called connection.xml. On re-opening the GenericServiceConsumer project the file was then available and I could paste the conents below into it.

<?xml version = '1.0' encoding = 'UTF-8'?>
<References xmlns="http://xmlns.oracle.com/adf/jndi">
  <Reference name="GenericUserWebServiceConnection"
             className="oracle.adf.model.connection.webservice.impl.WebServiceConnectionImpl"
             manageInOracleEnterpriseManager="true" deployable="true" xmlns="">
    <Factory className="oracle.adf.model.connection.webservice.api.WebServiceConnectionFactory"/>
    <RefAddresses>
      <XmlRefAddr addrType="WebServiceConnection">
        <Contents>
          <wsconnection description="http://localhost:7101/GenericWebService-UserWebService-context-root/UserServiceWS?WSDL"
                        service="{http://oracle.com/}UserServicePort"/>
        </Contents>
      </XmlRefAddr>
    </RefAddresses>
  </Reference>
</References>

Nullpointer Exception
I also had a nullpointer exception thrown when I first started up the taskflow in the JSF page. This was probably because of the home made web service project that I created above. It wasn’t a SOAP based web service and therefore the URL was wrong in the connection.xml file.

You will notice that mine above contains the URL http://localhost:7101/GenericWebService-UserWebService-context-root/UserServiceWS?WSDL whereas the whitepaper’s URL is http://localhost:8888/GenericWebService-UserWebService-context-root/UserServiceSoap12HttpPort?WSDL

Proxy Server pitfalls with JDeveloper!

If you are using JDeveloper with a proxy server then you may already be familiar that you need to go into Tools->Preferences->Web Browser and Proxy to setup your proxy server. For me this is required so that I can download extensions into JDeveloper.

I then began to have issues when I was trying to setup my JDeveloper connection to my VM application server that hosts WebCenter. I filled all of the details out correctly however, the connection test output returned failure when testing JSR-160. See output below.

Testing JSR-160 Runtime … failed.
Cannot establish connection.
Testing JSR-160 DomainRuntime … skipped.
Testing JSR-88 … skipped.
Testing JSR-88-LOCAL … skipped.
Testing JNDI … skipped.
Testing JSR-160 Edit … skipped.
Testing HTTP … success.
Testing Server MBeans Model … skipped.

This issue was down to the proxy server settings. I attempted to configure the proxy settings in JDeveloper to ignore my VM, so it didn’t go through the proxy server, I tried disabling the proxy server. Neither of these worked.

What I needed to do was disable the proxy server settings in JDeveloper and then restart it! Only once I had restarted did the disabling of the proxy work.

The downside of JDeveloper here, is I now need to turn the proxy settings on whenever I need to download/check the extensions but then disable it whenever I need to deploy to my VM Application Server!

What do all the ADF/JDeveloper configuration files do?

One thing that is particularly overwhelming when starting out with WebCenter is the number of configuration files used. My background is from working on JSF based applications, particularly Richfaces. Some of the files are common but a lot aren’t and the question in my mind so often was, “What on earth is this file doing?”

This post covers a number of useful links that I have come across during my reading that explain the purpose of all the diffent configuration files.

What configuration files should I know about?
http://docs.oracle.com/cd/E23943_01/webcenter.1111/e10148/jpsdg_quick_start.htm#CIAJFHEE

Configuration files touched when manually migrating a project.
http://docs.oracle.com/cd/E23943_01/webcenter.1111/e10148/jpsdg_app_migration.htm#CHDCFHAD

Web User Interface Configuration
http://docs.oracle.com/cd/E25054_01/web.1111/b31973/ap_config.htm#CEGGGEEF

ADF Meta Files
http://docs.oracle.com/cd/E23943_01/web.1111/b31974/appendixa.htm#ADFFD1418

More Files
http://docs.oracle.com/cd/E23943_01/webcenter.1111/e10148/jpsdg_files.htm#BABHFBIE

Files affected when developing and why
http://docs.oracle.com/cd/E23943_01/webcenter.1111/e10148/jpsdg_team.htm#autoId3

Customising WebCenter Portal Spaces

This post is aimed at providing a summary of what is required and what is available when developers want to customise their WebCenter Portal: Spaces application (Renamed to WebCenter Portal from 11.1.1.8). It doesn’t go into detail, however, does provide useful links to the Oracle documentation on where to go for further details.

There are a couple of options available to developers if they want to customise Spaces within WebCenter.

  • Browser – If adding spaces, tweaking/selecting templates customising portals, spaces and pages with respect to content.
  • JDeveloper – If you want to deploy additional shared libraries, include custom code or tasksflows. You can also edit skins, page templates and navigations in JDeveloper too.
  • In order to customise any Spaces in JDeveloper you’ll need to download the DesignWebCenterSpaces project available here for version 11.1.1.6. This consists of a JDeveloper application which contains two projects “WebCenterSpacesExtensionLibrary” and “WebCenterSpacesResources”.

    WebCenterSpacesExtensionLibrary (11.1.1.6)
    On the Weblogic server there is already an empty extended.spaces.webapp.war and the WebCenterSpacesExtensionLibrary project in this application allows the developer to add and build a new extended.spaces.webapp.war.

    WebCenterSpacesExtensionLibrary (11.1.1.8)
    There is a zip file in this page that you’ll need for customising skins and page templates. Search for DesignWebCenterSpaces_11.1.1.8.0.zip download that and open the application in JDeveloper to get going.

    This project essentially contains a weblogic.xml that you can insert the shared library declarations into.

    Creating your own extended.spaces.webapp.war informs WebCenter Portal: Spaces that you are deploying customisations that the server needs to make available.

    Important Note – It is best practice to deploy your extended.spaces.webapp.war in addition to the one that comes with the server. As long as the version in the Manifest.MF file in the war is greater then this will take precedence. Keeping the original ensures that if needed you can go back to the base configuration.

    WebCenterSpacesResources
    This project contains resource customisations, e.g. custom skins, page templates, page styles, navigations etc. It provides a single project that enables the developer to customise the look and feel of Spaces and allows you to make these changes from within JDeveloper. As a starting point you can export your existing application to get it’s templates and then make incremental changes to that rather than trying to start from scratch.

    How to enable iterative development in JDeveloper (Hot Deploy)

    Hot Deploy, FastSwap or interative development can be enabled easily on your WebCenter project in JDeveloper.

  • In JDeveloper click on the menu button just above your Project panel on the left hand side, select Application Properties…
  • Expand the Run list item and select “WebCenter Portal”
  • You should see the screen below. Just click on “Enable Iteractive Development” if it is not already checked, and click OK.

    Interative Development Configuration Dialog

    Interative Development Configuration Dialog

    This will enable the hot deploy of changes to JSPX, CSS etc. saving you the time to redeploy and restart the server. There is a performance hit, but for development purposes this is perfect because the performance hit is negligable during development and prevent the time wasted from server restarts.