A Tale of Two Installs
A regular question I get asked is what is the difference between the different SOA Suite installs and which is best for me. I thought I would address that question in this entry. The short answer is that one is intended for developers and the other is intended for production deployments. However that over simplifies things.
When starting the SOA installer we are faced with a choice between Basic Install and Advanced Install. The basic install provides us with very few options of how we want things to be. On the other hand it gives us most of what we want in a useful configuration.
The basic install option will install and configure the following components :
- OPMN - Oracle Process Manager and Notification Server
This is responsible for starting and stopping other processes, monitoring processes for failure and if necessary restarting them. It also tracks the current topology of the processes.
- OC4J - Oracle Containers for J2EE
This is the Java container that is used to run the rest of the SOA Suite functionality. In the basic install there is a single OC4J instance called home. Remember that an OC4J instance is effectively a configuration unit that provides a J2EE container with a set of applications and may execute on multiple JVMs. This instance hosts the following SOA Suite components
- Oracle Lite - embedded database for use as a repository. Note that this is on Windows only, if installing on Unix/Linux then you will be asked to specify an external database in a similar way to the advanced install.
OC4J will listen directly for HTTP requests from browsers using its built in HTTP listener.
The basic install option allows you little choice in how things are set up. The advanced install gives more options, allowing you to install
- SOA Suite with a web server
- just a web server
- just a J2EE server
- or a web server and J2EE server without SOA Suite
If installing SOA Suite it also requires an external database to act as the repository. When installing SOA Suite it creates two OC4J instances called home and oc4j_soa. The home container will normally run the application server control and Java SSO components. The oc4j_soa instance will have the same components as in the basic install but normally the AS control and the Java SSO will not be active in this instance.
The advanced install SOA Suite option also provides the Oracle HTTP Server (OHS) to act as the web server.
So which option should I install and why? Lets look at different scenarios for each install.
Simple Developer Install
If I need a development environment then the Basic Install
offers the smallest footprint and the fewest moving parts. Everything needed is installed as part of the one click install process. Oracle Lite can be used for simple data storage but it is missing many of the advanced features of a a full Oracle Database and is only single user. Don't get hung up on the single user nature of Oracle Lite though, because in this case the single user is the OC4J home container! Any serious database work will still need an external database. I have not tried to repoint the basic install at a full Oracle database, I would like to try this some time, basically it would mean installing the repository into a new database (see Marc Keldermans blog
for a succinct summary of how to do this) and then modifying the data sources in OC4J to point to the new database repository.
Advanced Developer Install
If I need access to an Oracle database then I can either perform a Basic Install
and use an additional Oracle database or I can do an Advanced Install
and have the repository in the the same database as the rest of my application is using.
For production use it is absolutely essential to use a database other than Oracle Lite. The only fully supported way to achieve this is to use the Advanced Install
option. If the installation is going to be accessed by the web from outside the firewall it is also imperative to use the Advanced Install
option as all Oracles penetration testing is done with this configuration rather than against the embedded HTTP Server in OC4J. If necessary the footprint of the Advanced Install can be reduced by not running the OC4J home instance.
The different SOA installs have somewhat different architectures but clear intended usage. A Basic Install is really only intended for development use whilst an Advanced Install can be used for development, testing or production. Understanding how the architecture is put together will hopefully help you make intelligent informed choices about the configurations you require.