Tuesday, 21 July 2009

Installing Oracle Forms 11

In this post I will describe the process of installing Forms 11g. In this previous post: Download Oracle Forms 11g Software I described where the software could be downloaded.
After extracting the two downloaded files ..disk1_1of2 and ..disk1_2of2 I got 4 (;-)) disk directories (disk1, disk2, disk3 and disk4).

I doubleclicked the setup.exe in the root of the disk1 folder. The following splash screen popped up:

After a while the following screen pops-up:

The interface of the installatation of Oracle Forms (and Reports and Discoverer) has signifantly changed. Step 1 out of 16….

Before proceeding make sure you have installed the web logic server. I installed Jdeveloper 11g before so I already had the weblogic server installed.
The oc4j that I used for running Oracle Forms 10g on my laptop is no longer supported. The same goes for Oracle Jinitiator: No longer supported. Instead off that you have to use the sun java plugin (also owned by Oracle now).

Choose the correct installation type.

Checking prerequisites….

Choose the Oracle Middleware location. This is where I installed the middleware home of Jdeveloper 11g

Choose the correct components. I want to install Oracle Forms and Reports including the correct server components.

And after accepting the defaults in the following steps I finally could choose [Finish] and the installation starts.

After half an hour of installation I reached 100%, but I was not able to push the [Finish] button. What is happening? In the left window I see that after the installation process the configuration process should start. But all I see is Setup Completed. After staring some minutes to the screen I suddenly see that the 100% progress decreases to 97%???>

The installer installs a Oneoff patch which probably was downloaded before from the internet. This is new, in earlier versions you could install Oracle Forms without having a connection to the internet. You had to monitor metalink to see if there any patches and had to install them separately. I am wondering if there is an option in Forms Builder to check for updates, like there is in Jdeveloper!

After installing the OneOff Patch the configuration is started.

After 90 minutes the installation is finished. Let’s see if I can start forms builder. In the start menu it is listed under Oracle Classic instance. (on OTN it is called traditional.....)

And it works.

Unfortunately I see no option check for updates.

Monday, 20 July 2009

Oracle Thin JDBC with tnsnames

Today I had to change my java project in a way that it uses Tnsnames for database resolving instead of a jdbc-url.

I googled around and found my answer here. This solution works with the jdbc-drivers from Oracle 10.2 onwards.

The solution basically is that you set the java system property "TNS_ADMIN". This can be done in two ways:
  1. By giving it as a java command line paramater: -Doracle.net.tns_admin=<tns_admin_home> eg.-Doracle.net.tns_admin=c:\\oracle\\OracleXE\\app\\oracle\\product\\10.2.0\\server\\NETWORK\\ADMIN
  2. Or setting from the code with the statement: System.setProperty("oracle.net.tns_admin", "<tns_admin_home>");

Example for the second option:
public final static String ORA_NET_TNS_ADMIN = "oracle.net.tns_admin";
// fetch tnsAdmin from a property file. Here hard-coded as an example:
public String tnsAdmin = "c:\\oracle\\OracleXE\\app\\oracle\\product\\10.2.0\\server\\NETWORK\\ADMIN";
For an XE database for example the jdbc-url will be: jdbc:oracle:thin:@xe

The TNS_ADMIN property has to be set with the location/folder where the tnsnames.ora can be found. Not with the full-path to the tnsnames.ora.
I tried this with the database drivers from jdeveloper10.1.3.4 (ojdbc14.jar). But apparently they are from the 10.1 era. It does work with the one delivered with SqlDeveloper 1.5.x (ojdbc5.jar).

Thursday, 16 July 2009

Download Oracle Forms 11g Software

This day I decided to install Oracle Forms 11G on my laptop. First step:
Download the software. Usually this is the easiest part. Just go to otn
go to Developer Tools and choose traditional tools.

Following a few links I got to the following page:

So far so good. Normally I would get suspicious (Fusion Middleware??) but the phrase (contains forms 11.1.1.) gave me confidence.
Next page:

Now I was confused. In my opnion Oracle Forms is a development tool, but the For Development section says: Jdeveloper+ADF. Where can I download Oracle Forms? As there was only one valid option (forms is not for deployment ?) I decided to download and install

Oracle JDeveloper 11g Rel 1 ( (JDeveloper + ADF)

After download and install I got exactly what Oracle said I would get: Jdeveloper + ADF. No Oracle Forms. (Afterwards this was ok, I had not installed Jdeveloper11g yet)
After some surfing on OTN I could not found another download area with Oracle Forms so I decided to navigate back to the fusion middleware page. Finally I decided to push the download button in the For Deployment section and to my big surprise there was a link to download Oracle Forms:

I probably was not the only one that could not find the software. See Jan Carlin's blog:


Monday, 13 July 2009

SoaSuite 11g Launched

Last Friday (july 10th) I went to the Fusion Middleware 11g introduction in De Meern, the Netherlands. Unfortunately I must say it was a bit of a bummer. I changed workingdays with my wife, since I found it a major introduction. At least partly due to all the recent acquisitions and forthcoming integrations, expecially with the nice BEA "gadgets", we've waited for 2 years, I think.
So I expected a huge party, with lots of drinks, cakes, decorations, nice gadgets, good speeches, in-depth tech demos and good-looking girls.
Well ok, it's a world-wide recession. And I know that Oracle is saving all their money to buy nice "new" companies to help us better. So that's for all the drinks, cakes, decorations, nice gatdgets and good-looking girls. Leaves us with the good speeches and in-depth tech demos, I mean the ones with the features we did not see allready in the previews.
Well the morning speeches were pretty ok, for executive briefings they might be considered good. Allthough quite some time was spent explaining that the demo's were actually pre-recorded flash-demo's. With the guarantee that it was recorded with real live production software.
But unfortunately the afternoon demo's were done by a very good guy, I'm sure, but he did not know much more about SoaSuite then the demo's and slides he studied.

So I did some digging up myself. That is, I was provided with some info by some good contacts, and I did some reading between the lines.
Most of the stuff about BPEL, Mediator, OSB, you probably allready know or have seen using the previews. I think people like Marc Kelderman and Lucas Jellema, can tell better than me.

But what pretty much is snowed under, are the B2B-capabilities or e-Commerce. Where Oracle's Integration B2B in 10g was a separate product, running on a 10gR2 app-server, B2B 11g is integrated with SoaSuite 11g.
As I can see it (I haven't had the change to to play with it), B2B is now sort of a binding in SoaSuite. This means that in stead of having to enqueue and dequeue messages on an AQ queue to have them transported with B2B, you can now couple your message-exchanges with Mediator.
Everything is tied together with a so-called Execution Context ID, so also B2B message-exchanges. And that's pretty neat since you can now track down a whole message change from B2b, via Mediator to BPEL PM and back. Since in 10g it was a seperate product, you had to correlate B2B messages to BPEL Processes yourself. We used to do that by putting the B2B-message-id on one of the BPEL PM indices.

The UI got a facelift too, getting it inline with the other AS consoles. Alltough in the demo's friday it occurred to me that the UI of Enterprise Manager/GridControl is stiil the same as the "old" AS UI's. B2B looks like Oracle ESB 10g, and FMW AS Control looks like the Weblogic consoles. So I think there is some work to do getting all the consoles in-line.

I got experienced with Integration B2B using the ebXML adapter. I got to know this one pretty in-depth. And I think ebXML is a very powerfull protocol. I have on my wishlist to create a HelloWorld E2E message flow with SoaSuite including ebXML between two machines.
One of the features on the wishlist was a CPA/CPP import/export utility. CPP stands for Collaboration Protocol Profile, which is an XML document that describes the ebXML capabilities of a partner. CPA is Collaboration Protocal Agreement and it describes the the parts of the CPP that two partners use with eachother: which message exchanges are allowed/agreed between two trading partners. I'm asured that these capabilities are upcoming (I hope I don't dissapoint my sources). That's also good news because this makes the configuration of B2B a lot easier.
Just import a CPA and you should be pretty much done. I expect only to have to deploy the agreement.

Another thing that caught my eye in the roadmaps is that in the upcoming releases B2B/eCommerce is included in AIA PIP's.

So although the dissapointing event of friday, I'm looking forward to be able to spare some time playing with SoaSuite 11g.

Tuesday, 7 July 2009

Jdeveloper under 64-bit OpenSuse 11.1

Recently I upgraded my laptop to OpenSuse 11.1. I'm running the 64 bit (x86_64) variant of the distribution. So I had to install jDeveloper again. It's one of the few Oracle tools, besides SqlDeveloper that I don't run in a VM, but directly on the host. This is simple: installing jDeveloper is not much more than unzipping the archive.

Since it's out for a while, and I also upgraded my SoaSuite to, I tried the jDeveloper. And where runs smoothly on 64-bit linux, jDeveloper won't. It complaints about having the wrong version of Java Hotspot or not being able to determine the right version.

I've search around for quite sometime, but yesterday I found a solution here.Thanks Nghiem. He wrote it for Ubuntu 8.10 X86_64, but it applies to every Linux X86_64. But at least OpenSuse 11.1.

What you need to do is to edit the jdev.conf, which you can find at <jdev_home>/jdev/bin/jdev.conf.

There you have to set the Java home, which has to be 64-bit:
# Directive SetJavaHome is not required by default, except for the base
# install, since the launcher will determine the JAVA_HOME. On Windows
# it looks in ..\..\jdk, on UNIX it looks in the PATH by default.
SetJavaHome /usr/lib64/jvm/java-1.5.0

Mark that jDeveloper is certified only for Java 1.5.

Then you have to unset the HotSpot (Java-Client) usage, by unsetting the SetJavaVM option:
# The Windows launcher will attempt to use client (hotspot) by default,
# unless a VM is specified below with the following directive. On UNIX
# we use whatever is listed first in the $(JAVA_HOME)/jre/lib/jvm.cfg file.
#SetJavaVM hotspot

After that running the jdev script in the <jdev_home>/jdev/bin folder will bring up jDeveloper

According to Nghiem you can run into the problem of having a blank screen at startup. He suggested that it has something to do with a bug in his Java 1.5 version, that should be solved in Java 1.6 update 10. I did not run into that problem. But he solved it with adding the following line to the jdev startup script:
export AWT_TOOLKIT=MToolkit

Add it as the first line in the script (actually the second line, since the first comment-line is about denoting the shell). Save it and run it. I added it to try, but it broke my startup. So I uncommented it again. For me it worked without it.

Last week SoaSuite 11g is introduced. Next friday I go to the introduction event for Oracle partners. But SoaSuite 10.1.3 is used by many customers and I take it that most of them won't upgrade in short notice. Most SoaSuite trajects already run for quite a while and adding new functionality has higher priority than upgrading to the new release. And SoaSuite 10.1.3 has become a quite mature Soa environment. So I think it will be around for quite a while, so this tip might also be usefull for some time.

Monday, 6 July 2009

Logging and Properties in Weblogic

I was busy with developing a webservice to be deployed on Websphere. In fact it is the same service that brought me to get introduced in Sun's Metro & Glassfish. It's going to get a list of tasks for a user out of BPM Suite. So maybe I write an article soon about that too.

About deploying a Metro-webservice to Weblogic I wrote this article. But the webservice needs a configuration file with properties related to connecting to BPM-Suite. And I use log4j as a logging framework and it would be helpfull to see my webservice's logging in Weblogic too.

For getting the property file read within weblogic there are several options. But the best one is to get it loaded from the classpath. Having it loaded as a FileInputStream is not handy, because you need an absolute or relative path to the file. Absolute is not handy because puts strict constraints on the location of the file. A relative path is better, but with a application server you probably don't know from which base-folder it is started. So a classpath location is better. I used a propertyloader that is described here.
It turns out that root folder of the Weblogic domain you're running is a proper place to locate your property file. But you could extend the classpath with the domain's-config folder.
Changing the classpath can be done in the setDomainEnv.cmd (Windows) or setDomainEnv.sh (Unix/Linux) scripts. Look for "SET THE CLASSPATH". The classpath is build up from different pieces. You can edit the pieces earlier in the script or the classpath setting itsself, depending on what you find the proper place.

Weblogic 10.3 by default makes use of JDK based logging. To use Log4J you need to do several steps:
  • Add log4j libraries: put the log4j-1.2.15.jar (got it from an Apache Axis distribution, but you can also download it directly from Apache) in the *weblogic-domain-home*/lib folder.
  • Add weblogic wllog4j.jar from *weblogic-server-home*\server\lib\ to the *weblogic-domain-home*/lib folder. (otherwise you get the error: java.lang.ClassNotFoundException: weblogic.logging.log4j.JDKLog4jAdapterFactory
  • Set log4j-logging in Weblogic, following this doc.
  • You can also add the property -Dweblogic.log.Log4jLoggingEnabled=true to the 'set JAVA_PROPERTIES' line in the setDomainEnv script.
  • Then you might want to have your own log4j.properties file loaded. That is possible by setting the environment variable LOG4J_CONFIG_FILE to the location of your property file.
Restart your weblogic domain to get the settings effective. w